mirror of
https://github.com/lightpanda-io/browser.git
synced 2026-10-28 08:36:17 +08:00
Merge branch 'main' into zig-0.17
# Conflicts: # src/browser/StyleManager.zig
This commit is contained in:
commit
01a703f7e2
48 files changed
+3917
-3040
No files matched your search
+2503
-2435
File diff suppressed because it is too large.
Load diff
+122
-143
@@ -1,7 +1,4 @@
|
||||
__clang_call_terminate
|
||||
_ZSt9terminatev
|
||||
_ZSt13get_terminatev
|
||||
_ZSt11__terminatePFvvE
|
||||
_ZSt15get_new_handlerv
|
||||
__cxa_get_globals
|
||||
__cxa_get_globals_fast
|
||||
@@ -83,16 +80,6 @@ _ZNSt10bad_typeidD1Ev
|
||||
_ZNSt10bad_typeidD0Ev
|
||||
_ZNKSt10bad_typeid4whatEv
|
||||
__cxa_pure_virtual
|
||||
_ZNSt11logic_errorD0Ev
|
||||
_ZNKSt11logic_error4whatEv
|
||||
_ZNSt15underflow_errorD2Ev
|
||||
_ZNSt15underflow_errorD1Ev
|
||||
_ZNSt14overflow_errorD2Ev
|
||||
_ZNSt14overflow_errorD1Ev
|
||||
_ZNSt13runtime_errorD2Ev
|
||||
_ZNSt13runtime_errorD1Ev
|
||||
_ZNSt11range_errorD2Ev
|
||||
_ZNSt11range_errorD1Ev
|
||||
_ZNSt13runtime_errorD0Ev
|
||||
_ZNKSt13runtime_error4whatEv
|
||||
_ZNSt16invalid_argumentD0Ev
|
||||
@@ -717,7 +704,8 @@ _ZNSt4__Cr13basic_filebufIcNS_11char_traitsIcEEED0Ev
|
||||
_ZNSt4__Cr13basic_filebufIcNS_11char_traitsIcEEE15__make_mdstringEj
|
||||
_ZNSt4__Cr13basic_filebufIcNS_11char_traitsIcEEE9underflowEv
|
||||
_ZNSt4__Cr16__throw_bad_castB9sqe240000Ev
|
||||
_ZTv0_n24_NSt4__Cr19basic_istringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEED0Ev
|
||||
_ZNSt4__Cr13basic_filebufIcNS_11char_traitsIcEEE9pbackfailEi
|
||||
_ZNSt4__Cr13basic_filebufIcNS_11char_traitsIcEEE8overflowEi
|
||||
_ZNSt4__Cr14basic_ifstreamIcNS_11char_traitsIcEEED1Ev
|
||||
_ZNSt4__Cr14basic_ifstreamIcNS_11char_traitsIcEEED0Ev
|
||||
_ZTv0_n24_NSt4__Cr14basic_ifstreamIcNS_11char_traitsIcEEED1Ev
|
||||
@@ -812,6 +800,7 @@ _ZNSt4__Cr7collateIcED1Ev
|
||||
_ZNSt4__Cr7collateIcED0Ev
|
||||
_ZNKSt4__Cr7collateIcE10do_compareEPKcS3_S3_S3_
|
||||
_ZNKSt4__Cr7collateIcE12do_transformEPKcS3_
|
||||
_ZNKSt4__Cr7collateIcE7do_hashEPKcS3_
|
||||
_ZNKSt4__Cr7num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE23__do_get_floating_pointIeEES4_S4_S4_RNS_8ios_baseERjRT_
|
||||
_ZNKSt4__Cr7num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_getES4_S4_RNS_8ios_baseERjRPv
|
||||
_ZNSt4__Cr9__num_getIcE19__stage2_float_prepERNS_8ios_baseEPcRcS5_
|
||||
@@ -835,7 +824,6 @@ _ZNKSt4__Cr7num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_putES4
|
||||
_ZNKSt4__Cr7num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_putES4_RNS_8ios_baseEwb
|
||||
_ZNKSt4__Cr7num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_putES4_RNS_8ios_baseEwl
|
||||
_ZNKSt4__Cr7num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEE17__do_put_integralIlEES4_S4_RNS_8ios_baseEwT_
|
||||
_ZNKSt4__Cr7num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEE17__do_put_integralIyEES4_S4_RNS_8ios_baseEwT_
|
||||
_ZNKSt4__Cr7num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_putES4_RNS_8ios_baseEwd
|
||||
_ZNKSt4__Cr7num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEE23__do_put_floating_pointIdEES4_S4_RNS_8ios_baseEwT_PKc
|
||||
_ZNKSt4__Cr7num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_putES4_RNS_8ios_baseEwe
|
||||
@@ -959,8 +947,6 @@ _ZNKSt4__Cr20__time_get_c_storageIwE7__weeksEv
|
||||
_ZNSt4__CrL11init_wweeksEv
|
||||
_ZNKSt4__Cr20__time_get_c_storageIcE8__monthsEv
|
||||
_ZNSt4__CrL11init_monthsEv
|
||||
_ZNSt4__Cr7codecvtIwc11__mbstate_tED2Ev
|
||||
_ZNSt4__Cr7codecvtIwc11__mbstate_tED1Ev
|
||||
_ZNSt4__Cr7num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEED0Ev
|
||||
_ZNSt4__Cr7num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEED0Ev
|
||||
_ZNSt4__Cr7num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEED0Ev
|
||||
@@ -1426,6 +1412,7 @@ _ZN2v84base2OS18SignalCodeMovingGCEv
|
||||
_ZN2v84base2OS22AdjustSchedulingParamsEv
|
||||
_ZN2v84base2OS11RemapSharedEPvS2_m
|
||||
_ZN2v84base20SignalSafeMapsParser4NextEv
|
||||
_ZN2v84base25GetSharedLibraryAddressesEP8_IO_FILE
|
||||
_ZNSt4__Cr6vectorIN2v84base2OS20SharedLibraryAddressENS_9allocatorIS4_EEE24__emplace_back_slow_pathB9sqn240000IJRA128_KcRmRKmEEEPS4_DpOT_
|
||||
_ZNSt4__Cr6vectorIN2v84base2OS20SharedLibraryAddressENS_9allocatorIS4_EEE20__throw_length_errorB9sqn240000Ev
|
||||
_ZZN2v84base12_GLOBAL__N_128KernelSupportsRemapDontUnmapEvENK3$_0clEv
|
||||
@@ -2627,7 +2614,7 @@ _ZN2v88internal11FactoryBaseINS0_12LocalFactoryEE31NewSharedFunctionInfoForLiter
|
||||
_ZN2v88internal11FactoryBaseINS0_12LocalFactoryEE21NewSharedFunctionInfoENS0_17MaybeDirectHandleINS0_6StringEEENS4_INS0_10HeapObjectEEENS0_7BuiltinEiNS_4base11StrongAliasINS0_17AdaptArgumentsTagEbEENS0_12FunctionKindE
|
||||
_ZN2v88internal11FactoryBaseINS0_12LocalFactoryEE23CloneSharedFunctionInfoENS0_12DirectHandleINS0_18SharedFunctionInfoEEE
|
||||
_ZN2v88internal11FactoryBaseINS0_12LocalFactoryEE28NewSharedFunctionInfoWrapperENS0_12DirectHandleINS0_18SharedFunctionInfoEEE
|
||||
_ZN2v88internal11FactoryBaseINS0_12LocalFactoryEE19NewRawOneByteStringEjNS0_14AllocationTypeENS0_14AllocationHintE
|
||||
_ZN2v88internal11FactoryBaseINS0_12LocalFactoryEE15NewPreparseDataEii
|
||||
_ZN2v88internal11FactoryBaseINS0_12LocalFactoryEE19NewRawTwoByteStringEjNS0_14AllocationTypeENS0_14AllocationHintE
|
||||
_ZN2v88internal11FactoryBaseINS0_12LocalFactoryEE13NewConsStringENS0_12DirectHandleINS0_6StringEEES6_ibNS0_14AllocationTypeE
|
||||
_ZN2v88internal11FactoryBaseINS0_12LocalFactoryEE11SmiToStringENS0_6TaggedINS0_3SmiEEENS0_15NumberCacheModeE
|
||||
@@ -3558,6 +3545,7 @@ _ZN4absl18container_internal14DestructNonSooERNS0_12CommonFieldsEmmPFvPvS3_EPFvS
|
||||
_ZN4absl18container_internal24PrepareInsertSmallNonSooERNS0_12CommonFieldsERKNS0_15PolicyFunctionsENS_11FunctionRefIFmmEEE
|
||||
_ZN4absl18container_internal19GetRefForEmptyClassERNS0_12CommonFieldsE
|
||||
_ZN4absl18container_internal34ResizeAllocatedTableWithSeedChangeERNS0_12CommonFieldsERKNS0_15PolicyFunctionsEm
|
||||
_ZN4absl18container_internal12_GLOBAL__N_132ResizeEmptyNonAllocatedTableImplERNS0_12CommonFieldsERKNS0_15PolicyFunctionsEmmb
|
||||
_ZNSt4__Cr6vectorIN5cppgc14HeapStatistics14PageStatisticsENS_9allocatorIS3_EEE24__emplace_back_slow_pathB9sqn240000IJEEEPS3_DpOT_
|
||||
_ZNSt4__Cr6vectorIN5cppgc14HeapStatistics14PageStatisticsENS_9allocatorIS3_EEE20__throw_length_errorB9sqn240000Ev
|
||||
_ZNSt4__Cr34__uninitialized_allocator_relocateB9sqn240000INS_9allocatorIN5cppgc14HeapStatistics14PageStatisticsEEEPS4_EEvRT_T0_S9_S9_
|
||||
@@ -3864,8 +3852,7 @@ _ZN2v88internal9Assembler5testwENS0_8RegisterENS0_9ImmediateE
|
||||
_ZN2v88internal9Assembler5testwENS0_7OperandENS0_9ImmediateE
|
||||
_ZN2v88internal9Assembler5testwENS0_7OperandENS0_8RegisterE
|
||||
_ZN2v88internal9Assembler5fld_dENS0_7OperandE
|
||||
_ZN2v88internal9Assembler7popcntlENS0_8RegisterENS0_7OperandE
|
||||
_ZN2v88internal9Assembler5pauseEv
|
||||
_ZN2v88internal9Assembler6fstp_dENS0_7OperandE
|
||||
_ZN2v88internal9Assembler6movupsENS0_11XMMRegisterES2_
|
||||
_ZN2v88internal9Assembler6movupsENS0_11XMMRegisterENS0_7OperandE
|
||||
_ZN2v88internal9Assembler6movupsENS0_7OperandENS0_11XMMRegisterE
|
||||
@@ -4025,7 +4012,6 @@ _ZNSt4__Cr6vectorIN2v88internal13VirtualMemoryENS_9allocatorIS3_EEE12emplace_bac
|
||||
_ZN2v88internal21DelayedCounterUpdates9AddSampleEMNS0_8CountersEFPNS0_9HistogramEvEi
|
||||
_ZN2v88internal8Counters27wasm_module_num_code_spacesEv
|
||||
_ZN2v88internal4wasm17WasmCodeAllocator23AllocateForCodeInRegionEPNS1_12NativeModuleEmNS_4base13AddressRegionE
|
||||
_ZN2v88internal4wasm12NativeModule12SetWireBytesENS_4base11OwnedVectorIKhEE
|
||||
_ZNK2v88internal4wasm12NativeModule6LookupEm
|
||||
_ZN2v88internal4wasm12NativeModuleD2Ev
|
||||
_ZN2v88internal4wasm12NativeModuleD1Ev
|
||||
@@ -4040,7 +4026,6 @@ _ZN2v88internal4wasm15WasmCodeManager32EstimateNativeModuleMetaDataSizeEPKNS1_10
|
||||
_ZN2v88internal4wasm15WasmCodeManager29HasMemoryProtectionKeySupportEv
|
||||
_ZN2v88internal4wasm15WasmCodeManager15NewNativeModuleENS1_19WasmEnabledFeaturesENS1_20WasmDetectedFeaturesENS1_18CompileTimeImportsEmNSt4__Cr10shared_ptrIKNS1_10WasmModuleEEE
|
||||
_ZNK2v88internal4wasm12NativeModule14SampleCodeSizeEPNS0_8CountersE
|
||||
_ZN2v88internal4wasm12NativeModule8FreeCodeENS_4base6VectorIKPNS1_8WasmCodeEEE
|
||||
_ZNK2v88internal4wasm12NativeModule31GetNumberOfCodeSpacesForTestingEv
|
||||
_ZN2v88internal4wasm12NativeModule16GetNamesProviderEv
|
||||
_ZNK2v88internal4wasm15WasmCodeManager10LookupCodeEm
|
||||
@@ -4073,6 +4058,7 @@ _ZNSt4__Cr6__treeIN2v84base13AddressRegionENS3_16StartAddressLessENS_9allocatorI
|
||||
_ZNSt4__Cr25__try_key_extraction_implB9sqn240000IN2v84base13AddressRegionENS_4pairINS_15__tree_iteratorIS3_PNS_11__tree_nodeIS3_PvEElEEbEEZNS_6__treeIS3_NS3_16StartAddressLessENS_9allocatorIS3_EEE21__emplace_hint_uniqueB9sqn240000IJS3_EEESB_NS_21__tree_const_iteratorIS3_S9_lEEDpOT_EUlRKS3_OS3_E_ZNSH_IJS3_EEESB_SJ_SM_EUlSP_E_S3_TnNS_9enable_ifIXsr7is_sameIT_u14__remove_constIu20__remove_reference_tIT3_EEEE5valueEiE4typeELi0EEET0_NS_14__priority_tagILm1EEET1_T2_OSU_
|
||||
_ZNSt4__Cr12__hash_tableINS_17__hash_value_typeIPN2v88internal4wasm12NativeModuleENS_6vectorIPNS4_8WasmCodeENS_9allocatorIS9_EEEEEENS_22__unordered_map_hasherIS6_NS_4pairIKS6_SC_EENS_4hashIS6_EENS_8equal_toIS6_EEEENS_21__unordered_map_equalIS6_SH_SL_SJ_EENSA_ISH_EEED2B9sqn240000Ev
|
||||
_ZZNSt4__Cr12__hash_tableINS_17__hash_value_typeIPN2v88internal4wasm12NativeModuleENS_6vectorIPNS4_8WasmCodeENS_9allocatorIS9_EEEEEENS_22__unordered_map_hasherIS6_NS_4pairIKS6_SC_EENS_4hashIS6_EENS_8equal_toIS6_EEEENS_21__unordered_map_equalIS6_SH_SL_SJ_EENSA_ISH_EEE16__emplace_uniqueB9sqn240000IJRKNS_21piecewise_construct_tENS_5tupleIJRSG_EEENSV_IJEEEEEENSF_INS_15__hash_iteratorIPNS_11__hash_nodeISD_PvEEEEbEEDpOT_ENKUlSW_SU_OSX_OSY_E_clB9sqn240000ESW_SU_S19_S1A_
|
||||
_ZNSt4__Cr12__hash_tableINS_17__hash_value_typeIPN2v88internal4wasm12NativeModuleENS_6vectorIPNS4_8WasmCodeENS_9allocatorIS9_EEEEEENS_22__unordered_map_hasherIS6_NS_4pairIKS6_SC_EENS_4hashIS6_EENS_8equal_toIS6_EEEENS_21__unordered_map_equalIS6_SH_SL_SJ_EENSA_ISH_EEE11__do_rehashB9sqn240000ILb1EEEvm
|
||||
_ZN2v88internal12trap_handler19RegisterHandlerDataEmmmPKNS1_23TrappingInstructionDataE
|
||||
_ZN2v88internal12trap_handler18ReleaseHandlerDataEi
|
||||
_ZN2v88internal12trap_handler21RegisterCoveredMemoryEmm
|
||||
@@ -4141,7 +4127,6 @@ _ZN2v88internal4wasm29GetWasmStackEntryWrapperCacheEv
|
||||
_ZN2v88internal4wasm10WasmEngine13RemoveIsolateEPNS0_7IsolateE
|
||||
_ZN2v88internal4wasm10WasmEngine26RemoveIsolateFromCurrentGCEPNS0_7IsolateE
|
||||
_ZN2v88internal4wasm10WasmEngine26PotentiallyFinishCurrentGCEv
|
||||
_ZN2v88internal4wasm10WasmEngine22NewUnownedNativeModuleENS1_19WasmEnabledFeaturesENS1_20WasmDetectedFeaturesENS1_18CompileTimeImportsENSt4__Cr10shared_ptrIKNS1_10WasmModuleEEEm
|
||||
_ZN2v88internal4wasm10WasmEngine24UseNativeModuleInIsolateEPNS1_12NativeModuleEPNS0_7IsolateE
|
||||
_ZN2v88internal4wasm18GetWasmCodeManagerEv
|
||||
_ZNSt4__Cr6vectorINS_10shared_ptrIN2v88internal4wasm12NativeModuleEEENS_9allocatorIS6_EEE12emplace_backB9sqn240000IJRS6_EEESB_DpOT_
|
||||
@@ -4247,6 +4232,7 @@ _ZNSt4__Cr12__hash_tableINS_17__hash_value_typeIPN2v88internal7IsolateENS_10uniq
|
||||
_ZNSt4__Cr12__hash_tableINS_17__hash_value_typeIPN2v88internal4wasm12NativeModuleENS4_12_GLOBAL__N_116WeakScriptHandleEEENS_22__unordered_map_hasherIS6_NS_4pairIKS6_S8_EENS_4hashIS6_EENS_8equal_toIS6_EEEENS_21__unordered_map_equalIS6_SD_SH_SF_EENS_9allocatorISD_EEE4findB9sqn240000IS6_EENS_15__hash_iteratorIPNS_11__hash_nodeIS9_PvEEEERKT_
|
||||
_ZZNSt4__Cr12__hash_tableINS_17__hash_value_typeIiN2v88internal4wasm10WasmEngine11IsolateInfo18CodeToLogPerScriptEEENS_22__unordered_map_hasherIiNS_4pairIKiS7_EENS_4hashIiEENS_8equal_toIiEEEENS_21__unordered_map_equalIiSC_SG_SE_EENS_9allocatorISC_EEE16__emplace_uniqueB9sqn240000IJRKNS_21piecewise_construct_tENS_5tupleIJOiEEENSR_IJEEEEEENSA_INS_15__hash_iteratorIPNS_11__hash_nodeIS8_PvEEEEbEEDpOT_ENKUlRSB_SQ_OST_OSU_E_clB9sqn240000ES15_SQ_S16_S17_
|
||||
_ZNSt4__Cr12__hash_tableINS_17__hash_value_typeIiN2v88internal4wasm10WasmEngine11IsolateInfo18CodeToLogPerScriptEEENS_22__unordered_map_hasherIiNS_4pairIKiS7_EENS_4hashIiEENS_8equal_toIiEEEENS_21__unordered_map_equalIiSC_SG_SE_EENS_9allocatorISC_EEE11__do_rehashB9sqn240000ILb1EEEvm
|
||||
_ZZNSt4__Cr12__hash_tableINS_17__hash_value_typeIiN2v88internal4wasm10WasmEngine11IsolateInfo18CodeToLogPerScriptEEENS_22__unordered_map_hasherIiNS_4pairIKiS7_EENS_4hashIiEENS_8equal_toIiEEEENS_21__unordered_map_equalIiSC_SG_SE_EENS_9allocatorISC_EEE16__emplace_uniqueB9sqn240000IJRKNS_21piecewise_construct_tENS_5tupleIJRSB_EEENSR_IJEEEEEENSA_INS_15__hash_iteratorIPNS_11__hash_nodeIS8_PvEEEEbEEDpOT_ENKUlSS_SQ_OST_OSU_E_clB9sqn240000ESS_SQ_S15_S16_
|
||||
_ZNSt4__Cr12__hash_tableIPN2v88internal4wasm8WasmCodeENS_4hashIS5_EENS_8equal_toIS5_EENS_9allocatorIS5_EEE6removeB9sqn240000ENS_21__hash_const_iteratorIPNS_11__hash_nodeIS5_PvEEEE
|
||||
_ZNSt4__Cr12__hash_tableINS_17__hash_value_typeIPN2v88internal4wasm12NativeModuleENS_10unique_ptrINS4_10WasmEngine16NativeModuleInfoENS_14default_deleteIS9_EEEEEENS_22__unordered_map_hasherIS6_NS_4pairIKS6_SC_EENS_4hashIS6_EENS_8equal_toIS6_EEEENS_21__unordered_map_equalIS6_SH_SL_SJ_EENS_9allocatorISH_EEE6removeB9sqn240000ENS_21__hash_const_iteratorIPNS_11__hash_nodeISD_PvEEEE
|
||||
_ZNSt4__Cr12__hash_tableIPN2v88internal4wasm8WasmCodeENS_4hashIS5_EENS_8equal_toIS5_EENS_9allocatorIS5_EEE4findB9sqn240000IS5_EENS_15__hash_iteratorIPNS_11__hash_nodeIS5_PvEEEERKT_
|
||||
@@ -4341,6 +4327,7 @@ _ZN2v88internal15CodeEventLoggerD1Ev
|
||||
_ZN2v88internal15CodeEventLoggerD0Ev
|
||||
_ZN2v88internal15CodeEventLogger15CodeCreateEventENS0_16LogEventListener7CodeTagENS0_12DirectHandleINS0_12AbstractCodeEEEPKc
|
||||
_ZN2v88internal15CodeEventLogger15CodeCreateEventENS0_16LogEventListener7CodeTagENS0_12DirectHandleINS0_12AbstractCodeEEENS4_INS0_4NameEEE
|
||||
_ZN2v88internal15CodeEventLogger10NameBuffer10AppendNameENS0_6TaggedINS0_4NameEEE
|
||||
_ZN2v88internal12V8FileLogger20UncheckedStringEventEPKcS3_
|
||||
_ZN2v88internal8Profiler3RunEv
|
||||
_ZN2v88internal12V8FileLogger9TickEventEPNS0_10TickSampleEb
|
||||
@@ -4430,7 +4417,6 @@ _ZN2v88internal6String11WriteToFlatItEEvNS0_6TaggedIS1_EEPT_jjRKNS0_31SharedStri
|
||||
_ZN2v88internal6String11WriteToFlatIhEEvNS0_6TaggedIS1_EEPT_jjRKNS0_31SharedStringAccessGuardIfNeededE
|
||||
_ZN2v88internal6String12WriteToFlat2IhEEvPT_NS0_6TaggedINS0_10ConsStringEEEjjRKNS0_31SharedStringAccessGuardIfNeededERKNS0_25PerThreadAssertScopeEmptyILb0EJLNS0_19PerThreadAssertTypeE1ELSC_2EEEE
|
||||
_ZN2v88internal6String12WriteToFlat2ItEEvPT_NS0_6TaggedINS0_10ConsStringEEEjjRKNS0_31SharedStringAccessGuardIfNeededERKNS0_25PerThreadAssertScopeEmptyILb0EJLNS0_19PerThreadAssertTypeE1ELSC_2EEEE
|
||||
_ZN2v88internal6String9PrintUC16EPNS0_12StringStreamEii
|
||||
_ZN2v88internal6String9PrintUC16ERNSt4__Cr13basic_ostreamIcNS2_11char_traitsIcEEEEii
|
||||
_ZN2v88internal6String12ToArrayIndexEm
|
||||
_ZN2v88internal6String18SlowGetFlatContentERKNS0_25PerThreadAssertScopeEmptyILb0EJLNS0_19PerThreadAssertTypeE1ELS3_2EEEERKNS0_31SharedStringAccessGuardIfNeededE
|
||||
@@ -4479,7 +4465,7 @@ _ZNK2v88internal21ExternalTwoByteString8GetCharsEv
|
||||
_ZN2v88internal6String9VisitFlatINS0_21StringCharacterStreamEEENS0_6TaggedINS0_10ConsStringEEEPT_NS4_IS1_EEjRKNS0_31SharedStringAccessGuardIfNeededE
|
||||
_ZN2v88internal11RelocatableD0Ev
|
||||
_ZN2v88internal11Relocatable21PostGarbageCollectionEv
|
||||
_ZN2v88internal12StringSearchIttE13InitialSearchEPS2_NS_4base6VectorIKtEEi
|
||||
_ZN2v84base11SmallVectorIiLm32ENSt4__Cr9allocatorIiEEE11FreeStorageEv
|
||||
_ZN2v88internal12StringSearchIttE24BoyerMooreHorspoolSearchEPS2_NS_4base6VectorIKtEEi
|
||||
_ZN2v88internal12StringSearchIttE23PopulateBoyerMooreTableEv
|
||||
_ZN2v88internal12StringSearchIttE16BoyerMooreSearchEPS2_NS_4base6VectorIKtEEi
|
||||
@@ -4857,7 +4843,7 @@ _ZN2v88internal24UnreachableObjectsFilter14MarkingVisitorD2Ev
|
||||
_ZN2v88internal24UnreachableObjectsFilter14MarkingVisitorD0Ev
|
||||
_ZN2v88internal24UnreachableObjectsFilter14MarkingVisitor13VisitPointersENS0_6TaggedINS0_10HeapObjectEEENS0_20CompressedObjectSlotES6_
|
||||
_ZN2v88internal24UnreachableObjectsFilter14MarkingVisitor13VisitPointersENS0_6TaggedINS0_10HeapObjectEEENS0_25CompressedMaybeObjectSlotES6_
|
||||
_ZNSt4__Cr12__hash_tableINS_17__hash_value_typeIPN2v88internal8BasePageENS_10unique_ptrINS_13unordered_setINS3_6TaggedINS3_10HeapObjectEEENS3_6Object6HasherENS_8equal_toISA_EENS_9allocatorISA_EEEENS_14default_deleteISH_EEEEEENS_22__unordered_map_hasherIS5_NS_4pairIKS5_SK_EENS2_4base4hashIS5_EENSD_IS5_EEEENS_21__unordered_map_equalIS5_SP_ST_SS_EENSF_ISP_EEE11__do_rehashB9sqn240000ILb1EEEvm
|
||||
_ZN2v88internal24UnreachableObjectsFilter14MarkingVisitor29VisitInstructionStreamPointerENS0_6TaggedINS0_4CodeEEENS0_27OffHeapCompressedObjectSlotINS0_29ExternalCodeCompressionSchemeEEE
|
||||
_ZNSt4__Cr12__destroy_atB9sqn240000INS_4pairIKPN2v88internal8BasePageENS_10unique_ptrINS_13unordered_setINS3_6TaggedINS3_10HeapObjectEEENS3_6Object6HasherENS_8equal_toISB_EENS_9allocatorISB_EEEENS_14default_deleteISI_EEEEEEEEvPT_
|
||||
_ZZNSt4__Cr12__hash_tableIN2v88internal6TaggedINS2_10HeapObjectEEENS2_6Object6HasherENS_8equal_toIS5_EENS_9allocatorIS5_EEE16__emplace_uniqueB9sqn240000IJRKS5_EEENS_4pairINS_15__hash_iteratorIPNS_11__hash_nodeIS5_PvEEEEbEEDpOT_ENKUlSF_SF_E_clB9sqn240000ESF_SF_
|
||||
_ZNSt4__Cr12__hash_tableIN2v88internal6TaggedINS2_10HeapObjectEEENS2_6Object6HasherENS_8equal_toIS5_EENS_9allocatorIS5_EEE11__do_rehashB9sqn240000ILb1EEEvm
|
||||
@@ -4961,6 +4947,7 @@ _ZN2v88internal23FixedWeakBodyDescriptorILi4ELi8ELi8EE11IterateBodyINS0_12_GLOBA
|
||||
_ZN2v88internal11CodeWrapper14BodyDescriptor11IterateBodyINS0_12_GLOBAL__N_137PromotedPageRecordMigratedSlotVisitorEEEvNS0_6TaggedINS0_3MapEEENS6_INS0_10HeapObjectEEEiPT_
|
||||
_ZN2v88internal24FixedRangeBodyDescriptorILi12ELi20EE11IterateBodyINS0_12_GLOBAL__N_137PromotedPageRecordMigratedSlotVisitorEEEvNS0_6TaggedINS0_3MapEEENS6_INS0_10HeapObjectEEEiPT_
|
||||
_ZN2v88internal24FixedRangeBodyDescriptorILi12ELi16EE11IterateBodyINS0_12_GLOBAL__N_137PromotedPageRecordMigratedSlotVisitorEEEvNS0_6TaggedINS0_3MapEEENS6_INS0_10HeapObjectEEEiPT_
|
||||
_ZN2v88internal25SuffixRangeBodyDescriptorILi8EE11IterateBodyINS0_12_GLOBAL__N_137PromotedPageRecordMigratedSlotVisitorEEEvNS0_6TaggedINS0_3MapEEENS6_INS0_10HeapObjectEEEiPT_
|
||||
_ZN2v88internal12IrRegExpData14BodyDescriptor11IterateBodyINS0_12_GLOBAL__N_137PromotedPageRecordMigratedSlotVisitorEEEvNS0_6TaggedINS0_3MapEEENS6_INS0_10HeapObjectEEEiPT_
|
||||
_ZN2v88internal10RegExpData14BodyDescriptor11IterateBodyINS0_12_GLOBAL__N_137PromotedPageRecordMigratedSlotVisitorEEEvNS0_6TaggedINS0_3MapEEENS6_INS0_10HeapObjectEEEiPT_
|
||||
_ZN2v88internal14WasmImportData14BodyDescriptor11IterateBodyINS0_12_GLOBAL__N_137PromotedPageRecordMigratedSlotVisitorEEEvNS0_6TaggedINS0_3MapEEENS6_INS0_10HeapObjectEEEiPT_
|
||||
@@ -5222,6 +5209,8 @@ _ZN2v84base30EmulatedVirtualAddressSubspaceC2EPNS_19VirtualAddressSpaceEmmm
|
||||
_ZN2v84base30EmulatedVirtualAddressSubspaceC1EPNS_19VirtualAddressSpaceEmmm
|
||||
_ZN2v84base30EmulatedVirtualAddressSubspaceD2Ev
|
||||
_ZN2v84base30EmulatedVirtualAddressSubspaceD1Ev
|
||||
_ZN2v84base30EmulatedVirtualAddressSubspaceD0Ev
|
||||
_ZN2v84base30EmulatedVirtualAddressSubspace13SetRandomSeedEl
|
||||
_ZNSt4__Cr31__partition_with_equals_on_leftB9sqe240000INS_17_ClassicAlgPolicyEPdRNS_6ranges4lessEEET0_S6_S6_T1_
|
||||
_ZNSt4__Cr18__bitset_partitionB9sqe240000INS_17_ClassicAlgPolicyEPdNS_6ranges4lessEEENS_4pairIT0_bEES6_S6_T1_
|
||||
_ZNSt4__Cr27__insertion_sort_incompleteB9sqe240000INS_17_ClassicAlgPolicyENS_6ranges4lessEPdEEbT1_S5_T0_
|
||||
@@ -5261,7 +5250,6 @@ _ZNK2v88internal29OptimizingCompileTaskExecutor11CompileTask17GetMaxConcurrencyE
|
||||
_ZN4heap4base5Stack24SetMarkerAndCallbackImplIZN2v88internal9LocalHeap28ExecuteMainThreadWhileParkedIZNS4_27OptimizingCompileDispatcher28WaitUntilCompilationJobsDoneEvE3$_0EEvT_EUlvE_EEvPS1_PvPKv
|
||||
_ZNSt4__Cr5dequeIPN2v88internal22TurbofanCompilationJobENS_9allocatorIS4_EEE5eraseB9sqn240000ENS_16__deque_iteratorIS4_PKS4_RS9_PKSA_lLl0EEESE_
|
||||
_ZNSt4__Cr27__for_each_segment_backwardB9sqn240000INS_16__deque_iteratorIPN2v88internal22TurbofanCompilationJobEPS5_RS5_PS6_lLl0EEEZNKS_20__move_backward_implINS_17_ClassicAlgPolicyEEclB9sqn240000IS9_S9_TnNS_9enable_ifIX25__is_segmented_iterator_vIT_EEiE4typeELi0EEENS_15__in_out_resultISF_T0_EESF_SF_SJ_EUlS6_S6_E_EEvSF_SF_SJ_
|
||||
_ZNSt4__Cr14__split_bufferIPPN2v88internal22TurbofanCompilationJobENS_9allocatorIS5_EENS_29__split_buffer_pointer_layoutEE13emplace_frontB9sqn240000IJS5_EEEvDpOT_
|
||||
_ZNSt4__Cr14__split_bufferIPPN2v88internal22TurbofanCompilationJobENS_9allocatorIS5_EENS_29__split_buffer_pointer_layoutEE13emplace_frontB9sqn240000IJRS5_EEEvDpOT_
|
||||
_ZN2v88internal8Compiler21GetSharedFunctionInfoINS0_7IsolateEEENS0_12DirectHandleINS0_18SharedFunctionInfoEEEPNS0_15FunctionLiteralENS4_INS0_6ScriptEEEPT_
|
||||
_ZN2v88internal8Compiler21GetSharedFunctionInfoINS0_12LocalIsolateEEENS0_12DirectHandleINS0_18SharedFunctionInfoEEEPNS0_15FunctionLiteralENS4_INS0_6ScriptEEEPT_
|
||||
@@ -5327,6 +5315,7 @@ _ZN2v88internal12_GLOBAL__N_123ScriptCompileTimerScopeC2EPNS0_7IsolateENS_14Scri
|
||||
_ZN2v88internal12_GLOBAL__N_123ScriptCompileTimerScopeD2Ev
|
||||
_ZN2v88internal8Compiler38GetSharedFunctionInfoForStreamedScriptEPNS0_7IsolateENS0_6HandleINS0_6StringEEERKNS0_13ScriptDetailsEPNS0_19ScriptStreamingDataEPNS0_15IsCompiledScopeEPNS_14ScriptCompiler18CompilationDetailsE
|
||||
_ZN2v88internal8Compiler19CompileOptimizedOSREPNS0_7IsolateENS0_12DirectHandleINS0_10JSFunctionEEENS0_14BytecodeOffsetENS0_15ConcurrencyModeENS0_8CodeKindE
|
||||
_ZN2v88internal8Compiler29DisposeTurbofanCompilationJobEPNS0_7IsolateEPNS0_22TurbofanCompilationJobE
|
||||
_ZN2v88internal8Compiler28FinalizeMaglevCompilationJobEPNS0_6maglev20MaglevCompilationJobEPNS0_7IsolateE
|
||||
_ZN2v88internal12_GLOBAL__N_125AbortMaglevCompilationJobEPNS0_7IsolateENS0_12DirectHandleINS0_10JSFunctionEEENS0_14BytecodeOffsetENS0_13BailoutReasonE
|
||||
_ZN2v88internal8Compiler17PostInstantiationEPNS0_7IsolateENS0_12DirectHandleINS0_10JSFunctionEEEPNS0_15IsCompiledScopeE
|
||||
@@ -5343,6 +5332,7 @@ _ZN2v88internal7ScannerD2Ev
|
||||
_ZN2v88internal10ParserBaseINS0_6ParserEED2Ev
|
||||
_ZN2v84base11SmallVectorINS_8internal16FuncNameInferrer4NameELm8ENSt4__Cr9allocatorIS4_EEE11FreeStorageEv
|
||||
_ZNKSt4__Cr19__hash_map_iteratorINS_15__hash_iteratorIPNS_11__hash_nodeINS_17__hash_value_typeIiN2v88internal6TaggedINS5_9ScopeInfoEEEEEPvEEEEEptB9sqn240000Ev
|
||||
_ZZNSt4__Cr12__hash_tableINS_17__hash_value_typeIiN2v88internal6TaggedINS3_9ScopeInfoEEEEENS_22__unordered_map_hasherIiNS_4pairIKiS6_EENS_4hashIiEENS_8equal_toIiEEEENS_21__unordered_map_equalIiSB_SF_SD_EENS_9allocatorISB_EEE16__emplace_uniqueB9sqn240000IJRKNS_21piecewise_construct_tENS_5tupleIJOiEEENSQ_IJEEEEEENS9_INS_15__hash_iteratorIPNS_11__hash_nodeIS7_PvEEEEbEEDpOT_ENKUlRSA_SP_OSS_OST_E_clB9sqn240000ES14_SP_S15_S16_
|
||||
_ZZNSt4__Cr12__hash_tableINS_17__hash_value_typeIiN2v88internal6HandleINS3_9ScopeInfoEEEEENS_22__unordered_map_hasherIiNS_4pairIKiS6_EENS_4hashIiEENS_8equal_toIiEEEENS_21__unordered_map_equalIiSB_SF_SD_EENS_9allocatorISB_EEE16__emplace_uniqueB9sqn240000IJRKNS_21piecewise_construct_tENS_5tupleIJOiEEENSQ_IJEEEEEENS9_INS_15__hash_iteratorIPNS_11__hash_nodeIS7_PvEEEEbEEDpOT_ENKUlRSA_SP_OSS_OST_E_clB9sqn240000ES14_SP_S15_S16_
|
||||
_ZNSt4__Cr12__hash_tableINS_17__hash_value_typeIiN2v88internal6HandleINS3_9ScopeInfoEEEEENS_22__unordered_map_hasherIiNS_4pairIKiS6_EENS_4hashIiEENS_8equal_toIiEEEENS_21__unordered_map_equalIiSB_SF_SD_EENS_9allocatorISB_EEE11__do_rehashB9sqn240000ILb1EEEvm
|
||||
_ZN2v88internal28ConstantPoolPointerForwarder15VerifyScopeInfoENS0_6TaggedINS0_9ScopeInfoEEES4_
|
||||
@@ -5877,7 +5867,7 @@ _ZN4heap4base8WorklistIN2v88internal6TaggedINS3_18SharedFunctionInfoEEELt64EE5Lo
|
||||
_ZNK4heap4base8WorklistIN2v88internal6TaggedINS3_18SharedFunctionInfoEEELt64EE5Local10NewSegmentEv
|
||||
_ZN2v88internal18SharedFunctionInfo14BodyDescriptor11IterateBodyINS0_18MainMarkingVisitorEEEvNS0_6TaggedINS0_3MapEEENS5_INS0_10HeapObjectEEEiPT_
|
||||
_ZN2v88internal25SmallOrderedHashTableImplINS0_19SmallOrderedHashMapEE14BodyDescriptor11IterateBodyINS0_18MainMarkingVisitorEEEvNS0_6TaggedINS0_3MapEEENS7_INS0_10HeapObjectEEEiPT_
|
||||
_ZN2v88internal33UncompiledDataWithoutPreparseData14BodyDescriptor11IterateBodyINS0_18MainMarkingVisitorEEEvNS0_6TaggedINS0_3MapEEENS5_INS0_10HeapObjectEEEiPT_
|
||||
_ZN2v88internal25SmallOrderedHashTableImplINS0_19SmallOrderedHashSetEE14BodyDescriptor11IterateBodyINS0_18MainMarkingVisitorEEEvNS0_6TaggedINS0_3MapEEENS7_INS0_10HeapObjectEEEiPT_
|
||||
_ZN2v88internal36UncompiledDataWithPreparseDataAndJob14BodyDescriptor11IterateBodyINS0_18MainMarkingVisitorEEEvNS0_6TaggedINS0_3MapEEENS5_INS0_10HeapObjectEEEiPT_
|
||||
_ZN2v88internal40UncompiledDataWithoutPreparseDataWithJob14BodyDescriptor11IterateBodyINS0_18MainMarkingVisitorEEEvNS0_6TaggedINS0_3MapEEENS5_INS0_10HeapObjectEEEiPT_
|
||||
_ZN2v88internal19ProtectedFixedArray14BodyDescriptor11IterateBodyINS0_18MainMarkingVisitorEEEvNS0_6TaggedINS0_3MapEEENS5_INS0_10HeapObjectEEEiPT_
|
||||
@@ -5976,7 +5966,6 @@ _ZN2v88internal13JSArrayBuffer14BodyDescriptor11IterateBodyINS0_25RecordMigrated
|
||||
_ZN2v88internal27JSDataViewOrRabGsabDataView14BodyDescriptor11IterateBodyINS0_25RecordMigratedSlotVisitorEEEvNS0_6TaggedINS0_3MapEEENS5_INS0_10HeapObjectEEEiPT_
|
||||
_ZN2v88internal6JSDate14BodyDescriptor11IterateBodyINS0_25RecordMigratedSlotVisitorEEEvNS0_6TaggedINS0_3MapEEENS5_INS0_10HeapObjectEEEiPT_
|
||||
_ZN2v88internal18BodyDescriptorBase23IterateJSObjectBodyImplINS0_25RecordMigratedSlotVisitorEEEvNS0_6TaggedINS0_3MapEEENS4_INS0_10HeapObjectEEEiiPT_
|
||||
_ZN2v88internal12IrRegExpData14BodyDescriptor11IterateBodyINS0_25RecordMigratedSlotVisitorEEEvNS0_6TaggedINS0_3MapEEENS5_INS0_10HeapObjectEEEiPT_
|
||||
_ZN2v88internal10RegExpData14BodyDescriptor11IterateBodyINS0_25RecordMigratedSlotVisitorEEEvNS0_6TaggedINS0_3MapEEENS5_INS0_10HeapObjectEEEiPT_
|
||||
_ZN2v88internal14WasmImportData14BodyDescriptor11IterateBodyINS0_25RecordMigratedSlotVisitorEEEvNS0_6TaggedINS0_3MapEEENS5_INS0_10HeapObjectEEEiPT_
|
||||
_ZN2v88internal20WasmCapiFunctionData14BodyDescriptor11IterateBodyINS0_25RecordMigratedSlotVisitorEEEvNS0_6TaggedINS0_3MapEEENS5_INS0_10HeapObjectEEEiPT_
|
||||
@@ -6246,6 +6235,7 @@ _ZN2v88internal6Object15ConvertToStringINS0_6HandleEQsr3stdE16is_convertible_vIT
|
||||
_ZN2v88internal6Object14ConvertToIndexINS0_12DirectHandleEQsr3stdE16is_convertible_vIT_IS1_ENS3_IS1_EEEEENS4_INS0_5UnionIJNS0_3SmiENS0_10HeapNumberEEEEE9MaybeTypeEPNS0_7IsolateES5_NS0_15MessageTemplateE
|
||||
_ZN2v88internal6Object14ConvertToIndexINS0_6HandleEQsr3stdE16is_convertible_vIT_IS1_ENS0_12DirectHandleIS1_EEEEENS4_INS0_5UnionIJNS0_3SmiENS0_10HeapNumberEEEEE9MaybeTypeEPNS0_7IsolateES5_NS0_15MessageTemplateE
|
||||
_ZN2v88internal6Object12BooleanValueINS0_7IsolateEEEbNS0_6TaggedIS1_EEPT_
|
||||
_ZN2v88internal6Object12BooleanValueINS0_12LocalIsolateEEEbNS0_6TaggedIS1_EEPT_
|
||||
_ZN2v88internal10HeapObject16RehashBasedOnMapINS0_12LocalIsolateEEEvPT_
|
||||
_ZN2v88internal6Object9ShareSlowINS0_12DirectHandleEQsr3stdE16is_convertible_vIT_IS1_ENS3_IS1_EEEEENS5_9MaybeTypeEPNS0_7IsolateES4_INS0_10HeapObjectEENS0_11ShouldThrowE
|
||||
_ZN2v88internal6Object9ShareSlowINS0_6HandleEQsr3stdE16is_convertible_vIT_IS1_ENS0_12DirectHandleIS1_EEEEENS5_9MaybeTypeEPNS0_7IsolateES4_INS0_10HeapObjectEENS0_11ShouldThrowE
|
||||
@@ -6688,6 +6678,7 @@ _ZN2v88internal14JSGlobalObject22InvalidatePropertyCellENS0_12DirectHandleIS1_EE
|
||||
_ZN2v88internal14JSGlobalObject27HasRestrictedGlobalPropertyEPNS0_7IsolateENS0_12DirectHandleIS1_EENS4_INS0_4NameEEE
|
||||
_ZN2v88internal6JSDate3NewEPNS0_7IsolateENS0_12DirectHandleINS0_10JSFunctionEEENS4_INS0_10JSReceiverEEEd
|
||||
_ZN2v88internal6JSDate8SetValueEPNS0_7IsolateEd
|
||||
_ZN2v88internal6JSDate11SetNanValueEv
|
||||
_ZN2v88internal25PropertyCallbackArguments21CallIndexedDescriptorEPNS0_7IsolateENS0_12DirectHandleINS0_15InterceptorInfoEEEj
|
||||
_ZN2v88internal25PropertyCallbackArguments19CallNamedDescriptorEPNS0_7IsolateENS0_12DirectHandleINS0_15InterceptorInfoEEENS4_INS0_4NameEEE
|
||||
_ZN2v88internal25PropertyCallbackArguments17CallIndexedGetterEPNS0_7IsolateENS0_12DirectHandleINS0_15InterceptorInfoEEEj
|
||||
@@ -6717,7 +6708,6 @@ _ZN2v88internal9ScopeInfo6CreateINS0_7IsolateEEENS0_6HandleIS1_EEPT_PNS0_4ZoneEP
|
||||
_ZN2v88internal20SourceTextModuleInfo3NewINS0_7IsolateEEENS0_12DirectHandleIS1_EEPT_PNS0_4ZoneEPNS0_26SourceTextModuleDescriptorE
|
||||
_ZN2v88internal20NameToIndexHashTable3AddINS0_7IsolateEEENS0_6HandleIS1_EEPT_S5_NS0_12DirectHandleINS0_4NameEEEi
|
||||
_ZN2v88internal9ScopeInfo6CreateINS0_12LocalIsolateEEENS0_6HandleIS1_EEPT_PNS0_4ZoneEPNS0_5ScopeENS0_17MaybeDirectHandleIS1_EENS0_12FunctionKindE
|
||||
_ZN2v88internal12_GLOBAL__N_126NameToIndexHashTableEqualsENS0_6TaggedINS0_20NameToIndexHashTableEEES4_
|
||||
_ZN2v88internal9ScopeInfo18CreateForWithScopeEPNS0_7IsolateENS0_17MaybeDirectHandleIS1_EE
|
||||
_ZNK2v88internal9ScopeInfo7IsEmptyEv
|
||||
_ZNK2v88internal9ScopeInfo10scope_typeEv
|
||||
@@ -7307,6 +7297,14 @@ _ZN2v88internal10WasmStruct14BodyDescriptor11IterateBodyINS0_24ConcurrentMarking
|
||||
_ZN2v88internal13JSArrayBuffer14BodyDescriptor11IterateBodyINS0_24ConcurrentMarkingVisitorEEEvNS0_6TaggedINS0_3MapEEENS5_INS0_10HeapObjectEEEiPT_
|
||||
_ZN2v88internal59JSAPIObjectWithEmbedderSlotsOrJSSpecialObjectBodyDescriptor41IterateJSAPIObjectWithEmbedderSlotsHeaderINS0_24ConcurrentMarkingVisitorEEEvNS0_6TaggedINS0_3MapEEENS4_INS0_10HeapObjectEEEiPT_
|
||||
_ZN2v88internal18BodyDescriptorBase23IterateJSObjectBodyImplINS0_24ConcurrentMarkingVisitorEEEvNS0_6TaggedINS0_3MapEEENS4_INS0_10HeapObjectEEEiiPT_
|
||||
_ZNK2v88internal18MarkingVisitorBaseINS0_24ConcurrentMarkingVisitorEE23ShouldFlushBaselineCodeENS0_6TaggedINS0_10JSFunctionEEE
|
||||
_ZN2v88internal10JSFunction14BodyDescriptor11IterateBodyINS0_24ConcurrentMarkingVisitorEEEvNS0_6TaggedINS0_3MapEEENS5_INS0_10HeapObjectEEEiPT_
|
||||
_ZN2v88internal8JSRegExp14BodyDescriptor11IterateBodyINS0_24ConcurrentMarkingVisitorEEEvNS0_6TaggedINS0_3MapEEENS5_INS0_10HeapObjectEEEiPT_
|
||||
_ZN2v88internal26JSSynchronizationPrimitive14BodyDescriptor11IterateBodyINS0_24ConcurrentMarkingVisitorEEEvNS0_6TaggedINS0_3MapEEENS5_INS0_10HeapObjectEEEiPT_
|
||||
_ZN2v88internal12JSTypedArray14BodyDescriptor11IterateBodyINS0_24ConcurrentMarkingVisitorEEEvNS0_6TaggedINS0_3MapEEENS5_INS0_10HeapObjectEEEiPT_
|
||||
_ZN2v88internal16WasmGlobalObject14BodyDescriptor11IterateBodyINS0_24ConcurrentMarkingVisitorEEEvNS0_6TaggedINS0_3MapEEENS5_INS0_10HeapObjectEEEiPT_
|
||||
_ZN2v88internal18WasmInstanceObject14BodyDescriptor11IterateBodyINS0_24ConcurrentMarkingVisitorEEEvNS0_6TaggedINS0_3MapEEENS5_INS0_10HeapObjectEEEiPT_
|
||||
_ZN2v88internal15WasmTableObject14BodyDescriptor11IterateBodyINS0_24ConcurrentMarkingVisitorEEEvNS0_6TaggedINS0_3MapEEENS5_INS0_10HeapObjectEEEiPT_
|
||||
_ZN2v88internal4Code14BodyDescriptor11IterateBodyINS0_24ConcurrentMarkingVisitorEEEvNS0_6TaggedINS0_3MapEEENS5_INS0_10HeapObjectEEEiPT_
|
||||
_ZN2v88internal23ProtectedWeakFixedArray14BodyDescriptor11IterateBodyINS0_24ConcurrentMarkingVisitorEEEvNS0_6TaggedINS0_3MapEEENS5_INS0_10HeapObjectEEEiPT_
|
||||
_ZN2v88internal14AtomRegExpData14BodyDescriptor11IterateBodyINS0_24ConcurrentMarkingVisitorEEEvNS0_6TaggedINS0_3MapEEENS5_INS0_10HeapObjectEEEiPT_
|
||||
@@ -7491,6 +7489,7 @@ _ZN2v88internal16WasmModuleObject3NewEPNS0_7IsolateENSt4__Cr10shared_ptrINS0_4wa
|
||||
_ZN2v88internal16WasmModuleObject32ExtractUtf8StringFromModuleBytesEPNS0_7IsolateENS_4base6VectorIKhEENS0_4wasm12WireBytesRefENS0_17InternalizeStringENS4_11StrongAliasINS0_13SharedFlagTagEbEE
|
||||
_ZN2v88internal16WasmModuleObject19GetModuleNameOrNullEPNS0_7IsolateENS0_12DirectHandleIS1_EE
|
||||
_ZN2v88internal16WasmModuleObject21GetFunctionNameOrNullEPNS0_7IsolateENS0_12DirectHandleIS1_EEj
|
||||
_ZN2v88internal16WasmModuleObject18GetRawFunctionNameEi
|
||||
_ZNSt4__Cr12__hash_tableINS_17__hash_value_typeIiNS_10shared_ptrIN2v88internal4wasm17WasmWrapperHandleEEEEENS_22__unordered_map_hasherIiNS_4pairIKiS7_EENS_4hashIiEENS_8equal_toIiEEEENS_21__unordered_map_equalIiSC_SG_SE_EENS_9allocatorISC_EEE13__move_assignB9sqn240000ERSM_NS_17integral_constantIbLb1EEE
|
||||
_ZN2v88internal6detail10DestructorINS0_12BackingStoreEEEvPv
|
||||
_ZZNSt4__Cr12__hash_tableINS_17__hash_value_typeIiNS_10shared_ptrIN2v88internal4wasm17WasmWrapperHandleEEEEENS_22__unordered_map_hasherIiNS_4pairIKiS7_EENS_4hashIiEENS_8equal_toIiEEEENS_21__unordered_map_equalIiSC_SG_SE_EENS_9allocatorISC_EEE16__emplace_uniqueB9sqn240000IJRiS7_EEENSA_INS_15__hash_iteratorIPNS_11__hash_nodeIS8_PvEEEEbEEDpOT_ENKUlRSB_SO_OS7_E_clB9sqn240000ESZ_SO_S10_
|
||||
@@ -7506,6 +7505,17 @@ _ZNSt4__Cr6vectorIN2v88internal6HandleINS2_5UnionIJNS2_8JSObjectENS2_21CppHeapEx
|
||||
_ZN2v88internal6BigInt4ZeroINS0_7IsolateEEENS0_6HandleIS1_EEPT_NS0_14AllocationTypeE
|
||||
_ZN2v88internal6BigInt4ZeroINS0_12LocalIsolateEEENS0_6HandleIS1_EEPT_NS0_14AllocationTypeE
|
||||
_ZN2v88internal6BigInt10FromObjectINS0_12DirectHandleEQsr3stdE16is_convertible_vIT_INS0_6ObjectEENS3_IS5_EEEEENS4_IS1_E9MaybeTypeEPNS0_7IsolateES6_
|
||||
_ZN2v88internal45MutableBigInt_BitwiseXorNegNegAndCanonicalizeEmmm
|
||||
_ZN2v88internal45MutableBigInt_BitwiseXorPosNegAndCanonicalizeEmmm
|
||||
_ZN2v88internal38MutableBigInt_LeftShiftAndCanonicalizeEmml
|
||||
_ZN2v88internal22RightShiftResultLengthEmjl
|
||||
_ZN2v88internal39MutableBigInt_RightShiftAndCanonicalizeEmmlj
|
||||
_ZN2v86bigint18MultiplySchoolbookENS0_8RWDigitsENS0_6DigitsES2_
|
||||
_ZN2v88internal13BigIntLiteralINS0_7IsolateEEENS0_11MaybeHandleINS0_6BigIntEEEPT_PKc
|
||||
_ZN2v88internal20StringToBigIntHelperINS0_7IsolateEE9GetResultEv
|
||||
_ZN2v88internal20StringToBigIntHelperINS0_7IsolateEED2Ev
|
||||
_ZN2v88internal13BigIntLiteralINS0_12LocalIsolateEEENS0_11MaybeHandleINS0_6BigIntEEEPT_PKc
|
||||
_ZN2v88internal20StringToBigIntHelperINS0_12LocalIsolateEE9GetResultEv
|
||||
_ZN2v88internal20StringToBigIntHelperINS0_12LocalIsolateEED2Ev
|
||||
_ZN2v88internal18ConvertUpTo9DigitsEjPc
|
||||
_ZN2v88internal17StringToIntHelper8ParseIntEv
|
||||
@@ -7820,7 +7830,7 @@ _ZN2v88internal12DeserializerINS0_12LocalIsolateEE13ReadNewObjectINS0_21SlotAcce
|
||||
_ZN2v88internal12DeserializerINS0_12LocalIsolateEE11ReadBackrefINS0_21SlotAccessorForHandleIS2_EEEEihT_
|
||||
_ZN2v88internal12DeserializerINS0_12LocalIsolateEE19ReadReadOnlyHeapRefINS0_21SlotAccessorForHandleIS2_EEEEihT_
|
||||
_ZN2v88internal12DeserializerINS0_12LocalIsolateEE13ReadRootArrayINS0_21SlotAccessorForHandleIS2_EEEEihT_
|
||||
_ZN2v88internal12DeserializerINS0_12LocalIsolateEE25ReadSharedHeapObjectCacheINS0_24SlotAccessorForRootSlotsEEEihT_
|
||||
_ZN2v88internal12DeserializerINS0_12LocalIsolateEE22ReadStartupObjectCacheINS0_21SlotAccessorForHandleIS2_EEEEihT_
|
||||
_ZN2v88internal12DeserializerINS0_12LocalIsolateEE14ReadNewMetaMapINS0_24SlotAccessorForRootSlotsEEEihT_
|
||||
_ZN2v88internal12DeserializerINS0_12LocalIsolateEE25ReadExtendedMapBitfieldExINS0_24SlotAccessorForRootSlotsEEEihT_
|
||||
_ZN2v88internal12DeserializerINS0_12LocalIsolateEE21ReadExternalReferenceINS0_24SlotAccessorForRootSlotsEEEihT_
|
||||
@@ -7926,7 +7936,6 @@ _ZN2v88internal13JSArrayBuffer5SetupENS_4base11StrongAliasINS0_13SharedFlagTagEb
|
||||
_ZN2v88internal13JSArrayBuffer15CreateExtensionEPNS0_7IsolateENSt4__Cr10shared_ptrINS0_12BackingStoreEEE
|
||||
_ZN2v88internal13JSArrayBuffer6DetachENS0_12DirectHandleIS1_EEbNS2_INS0_6ObjectEEE
|
||||
_ZN2v88internal13JSArrayBuffer14DetachInternalENS0_12DirectHandleIS1_EEbPNS0_7IsolateE
|
||||
_ZN2v88internal12JSTypedArray17DefineOwnPropertyEPNS0_7IsolateENS0_12DirectHandleIS1_EENS4_INS0_6ObjectEEEPNS0_18PropertyDescriptorENS_5MaybeINS0_11ShouldThrowEEE
|
||||
_ZNK2v88internal12JSTypedArray22GetLengthOrOutOfBoundsERb
|
||||
_ZNK2v88internal12JSTypedArray4typeEv
|
||||
_ZNK2v88internal12JSTypedArray12element_sizeEv
|
||||
@@ -8111,6 +8120,7 @@ _ZN2v88internal19TransitionsAccessor19NumberOfTransitionsEv
|
||||
_ZN2v88internal19TransitionsAccessor23HasPrototypeTransitionsEv
|
||||
_ZN2v88internal19TransitionsAccessor28EnsureHasFullTransitionArrayEPNS0_7IsolateENS0_12DirectHandleINS0_3MapEEE
|
||||
_ZN2v88internal19TransitionsAccessor30TraverseTransitionTreeInternalERKNSt4__Cr8functionIFvNS0_6TaggedINS0_3MapEEEEEEPNS0_25PerThreadAssertScopeEmptyILb0EJLNS0_19PerThreadAssertTypeE1ELSC_2EEEE
|
||||
_ZN2v88internal19TransitionsAccessor29HasIntegrityLevelTransitionToENS0_6TaggedINS0_3MapEEEPNS2_INS0_6SymbolEEEPNS0_18PropertyAttributesE
|
||||
_ZN2v88internal13DependentCode14InsertWeakCodeEPNS0_7IsolateENS0_6HandleIS1_EENS_4base5FlagsINS1_15DependencyGroupEjjEENS0_12DirectHandleINS0_4CodeEEE
|
||||
_ZN2v88internal13DependentCode25MarkCodeForDeoptimizationEPNS0_7IsolateENS_4base5FlagsINS1_15DependencyGroupEjjEE
|
||||
_ZN2v88internal13DependentCode26DeoptimizeDependencyGroupsEPNS0_7IsolateENS_4base5FlagsINS1_15DependencyGroupEjjEE
|
||||
@@ -8818,6 +8828,7 @@ _ZN2v88internal5Debug5BreakEPNS0_15JavaScriptFrameENS0_12DirectHandleINS0_10JSFu
|
||||
_ZN2v88internal5Debug15EnsureBreakInfoENS0_6HandleINS0_18SharedFunctionInfoEEE
|
||||
_ZN2v88internal5Debug32PrepareFunctionForDebugExecutionENS0_12DirectHandleINS0_18SharedFunctionInfoEEE
|
||||
_ZN2v88internal5Debug15TryGetDebugInfoENS0_6TaggedINS0_18SharedFunctionInfoEEE
|
||||
_ZN2v88internal5Debug24IsBreakOnInstrumentationENS0_6HandleINS0_9DebugInfoEEERKNS0_13BreakLocationE
|
||||
_ZN2v88internal5Debug22SetBreakPointForScriptENS0_6HandleINS0_6ScriptEEENS0_12DirectHandleINS0_6StringEEEPiS8_
|
||||
_ZN2v88internal5Debug31RecordWasmScriptWithBreakpointsENS0_12DirectHandleINS0_6ScriptEEE
|
||||
_ZN2v88internal5Debug35FindInnermostContainingFunctionInfoENS0_6HandleINS0_6ScriptEEEi
|
||||
@@ -8831,17 +8842,6 @@ _ZN2v88internal5Debug41SetInstrumentationBreakpointForWasmScriptENS0_12DirectHan
|
||||
_ZN2v88internal5Debug29RemoveBreakpointForWasmScriptENS0_12DirectHandleINS0_6ScriptEEEi
|
||||
_ZN2v88internal5Debug18ClearAllDebugInfosERKNSt4__Cr8functionIFvNS0_6HandleINS0_9DebugInfoEEEEEE
|
||||
_ZN2v88internal5Debug16FloodWithOneShotENS0_6HandleINS0_18SharedFunctionInfoEEEb
|
||||
_ZN2v88internal5Debug12IsBlackboxedENS0_12DirectHandleINS0_18SharedFunctionInfoEEE
|
||||
_ZN2v88internal5Debug22ChangeBreakOnExceptionENS0_18ExceptionBreakTypeEb
|
||||
_ZN2v88internal5Debug18IsBreakOnExceptionENS0_18ExceptionBreakTypeE
|
||||
_ZN2v88internal5Debug26SetBreakOnNextFunctionCallEv
|
||||
_ZN2v88internal5Debug28ClearBreakOnNextFunctionCallEv
|
||||
_ZN2v88internal5Debug13PrepareStepInENS0_12DirectHandleINS0_10JSFunctionEEE
|
||||
_ZN2v88internal5Debug31PrepareStepInSuspendedGeneratorEv
|
||||
_ZN2v88internal5Debug18PrepareStepOnThrowEv
|
||||
_ZN2v88internal5Debug23GetSourceBreakLocationsEPNS0_7IsolateENS0_12DirectHandleINS0_18SharedFunctionInfoEEE
|
||||
_ZN2v88internal5Debug19DiscardBaselineCodeENS0_6TaggedINS0_18SharedFunctionInfoEEE
|
||||
_ZN2v88internal5Debug12BreakAtEntryENS0_6TaggedINS0_18SharedFunctionInfoEEE
|
||||
_ZN2v88internal5Debug7OnThrowENS0_12DirectHandleINS0_6ObjectEEEb
|
||||
_ZN2v88internal5Debug11OnExceptionENS0_12DirectHandleINS0_6ObjectEEENS0_17MaybeDirectHandleINS0_9JSPromiseEEENS_5debug13ExceptionTypeEb
|
||||
_ZN2v88internal5Debug15OnPromiseRejectENS0_12DirectHandleINS0_6ObjectEEES4_
|
||||
@@ -9053,6 +9053,7 @@ _ZNK2v88internal9WasmFrame25GetInnermostFunctionIndexEv
|
||||
_ZNK2v88internal9WasmFrame14is_inspectableEv
|
||||
_ZNK2v88internal9WasmFrame7contextEv
|
||||
_ZNK2v88internal9WasmFrame9SummarizeENS_4base11StrongAliasINS0_18AllowAllocationTagEbEE
|
||||
_ZN2v88internal9WasmFrame29LookupExceptionHandlerInTableEv
|
||||
_ZN2v88internal12_GLOBAL__N_119PrintFunctionSourceEPNS0_12StringStreamENS0_6TaggedINS0_18SharedFunctionInfoEEE
|
||||
_ZNK2v88internal10EntryFrame7IterateEPNS0_11RootVisitorE
|
||||
_ZNK2v88internal15JavaScriptFrame7IterateEPNS0_11RootVisitorE
|
||||
@@ -9118,6 +9119,8 @@ _ZN2v84base16LazyInstanceImplINS_8internal7ICStatsENS0_32StaticallyAllocatedInst
|
||||
_ZN2v84base11SmallVectorINS_8internal15TranslatedFrameELm3ENSt4__Cr9allocatorIS3_EEE11FreeStorageEv
|
||||
_ZN2v84base11SmallVectorINS_8internal15TranslatedValueELm8ENSt4__Cr9allocatorIS3_EEE11FreeStorageEv
|
||||
_ZN2v88internal4Code30GetBaselinePCForBytecodeOffsetEiNS1_20BytecodeToPCPositionENS0_6TaggedINS0_13BytecodeArrayEEE
|
||||
_ZN2v84base11SmallVectorINS_8internal12FrameSummaryELm3ENSt4__Cr9allocatorIS3_EEE18grow_and_push_backES3_
|
||||
_ZN2v84base11SmallVectorINS_8internal12FrameSummaryELm3ENSt4__Cr9allocatorIS3_EEE4GrowEv
|
||||
_ZN2v88internal24DeoptTranslationIterator10NextOpcodeEv
|
||||
_ZN2v88internal24DeoptTranslationIterator16EnterBeginOpcodeEv
|
||||
_ZN2v88internal24DeoptTranslationIterator15SeekNextJSFrameEv
|
||||
@@ -9158,8 +9161,6 @@ _ZN2v88internal12AbstractCode10osr_offsetEv
|
||||
_ZNK2v88internal13BytecodeArray14SourcePositionEi
|
||||
_ZNK2v88internal13BytecodeArray23SourceStatementPositionEi
|
||||
_ZN2v88internal13BytecodeArray9PrintJsonERNSt4__Cr13basic_ostreamIcNS2_11char_traitsIcEEEE
|
||||
_ZN2v84base11JSONEscapedC2INS_8internal6TaggedINS3_6ObjectEEEEERKT_
|
||||
_ZN2v88internal13BytecodeArray11DisassembleERNSt4__Cr13basic_ostreamIcNS2_11char_traitsIcEEEE
|
||||
_ZN2v88internal13BytecodeArray11DisassembleENS0_6HandleIS1_EERNSt4__Cr13basic_ostreamIcNS4_11char_traitsIcEEEE
|
||||
_ZN2v88internal13BytecodeArray15CopyBytecodesToENS0_6TaggedIS1_EE
|
||||
_ZN2v88internal11interpreter21BytecodeArrayIterator24GetEmbeddedOperationHintINS0_24CompareOperationFeedbackEEENS1_26EmbeddedFeedbackHintTraitsIT_E4HintEv
|
||||
@@ -9239,8 +9240,6 @@ _ZN2v88internallsERNSt4__Cr13basic_ostreamIcNS1_11char_traitsIcEEEENS0_7Runtime1
|
||||
_ZN2v88internal12_GLOBAL__N_127IntrinsicFunctionIdentifier5MatchEPvS3_
|
||||
_ZN2v84base19TemplateHashMapImplIPvS2_NS0_26HashEqualityThenKeyMatcherIS2_PFbS2_S2_EEENS0_23DefaultAllocationPolicyEE9InsertNewERKS2_j
|
||||
_ZN2v84base19TemplateHashMapImplIPvS2_NS0_26HashEqualityThenKeyMatcherIS2_PFbS2_S2_EEENS0_23DefaultAllocationPolicyEE6ResizeEv
|
||||
_ZZNSt4__Cr6vectorIN2v88internal13CoverageBlockENS_9allocatorIS3_EEE12emplace_backB9sqn240000IJRKiS9_RKjEEERS3_DpOT_ENKUlvE0_clB9sqn240000Ev
|
||||
_ZNSt4__Cr6vectorIN2v88internal13CoverageBlockENS_9allocatorIS3_EEE20__throw_length_errorB9sqn240000Ev
|
||||
_ZZNSt4__Cr6vectorIN2v88internal13CoverageBlockENS_9allocatorIS3_EEE12emplace_backB9sqn240000IJjjRKjEEERS3_DpOT_ENKUlvE0_clB9sqn240000Ev
|
||||
_ZN2v88internal14LookupIterator5StartILb1EEEvv
|
||||
_ZNK2v88internal14LookupIterator23GetRootForNonJSReceiverEv
|
||||
@@ -9307,6 +9306,7 @@ _ZN2v88internal12_GLOBAL__N_120ElementsAccessorBaseINS1_29FastPackedSmiElementsA
|
||||
_ZN2v88internal12_GLOBAL__N_120ElementsAccessorBaseINS1_29FastPackedSmiElementsAccessorENS1_18ElementsKindTraitsILNS0_12ElementsKindE0EEEE12HasAccessorsENS0_6TaggedINS0_8JSObjectEEE
|
||||
_ZN2v88internal12_GLOBAL__N_120ElementsAccessorBaseINS1_29FastPackedSmiElementsAccessorENS1_18ElementsKindTraitsILNS0_12ElementsKindE0EEEE16NumberOfElementsEPNS0_7IsolateENS0_6TaggedINS0_8JSObjectEEE
|
||||
_ZN2v88internal12_GLOBAL__N_120ElementsAccessorBaseINS1_29FastPackedSmiElementsAccessorENS1_18ElementsKindTraitsILNS0_12ElementsKindE0EEEE9SetLengthEPNS0_7IsolateENS0_12DirectHandleINS0_7JSArrayEEEj
|
||||
_ZN2v88internal12_GLOBAL__N_120ElementsAccessorBaseINS1_29FastPackedSmiElementsAccessorENS1_18ElementsKindTraitsILNS0_12ElementsKindE0EEEE21CollectElementIndicesENS0_12DirectHandleINS0_8JSObjectEEENS8_INS0_14FixedArrayBaseEEEPNS0_14KeyAccumulatorE
|
||||
_ZN2v88internal12_GLOBAL__N_120ElementsAccessorBaseINS1_29FastPackedSmiElementsAccessorENS1_18ElementsKindTraitsILNS0_12ElementsKindE0EEEE3PopEPNS0_7IsolateENS0_12DirectHandleINS0_7JSArrayEEE
|
||||
_ZN2v88internal12_GLOBAL__N_120ElementsAccessorBaseINS1_29FastPackedSmiElementsAccessorENS1_18ElementsKindTraitsILNS0_12ElementsKindE0EEEE5ShiftEPNS0_7IsolateENS0_12DirectHandleINS0_7JSArrayEEE
|
||||
_ZN2v88internal12_GLOBAL__N_120ElementsAccessorBaseINS1_29FastPackedSmiElementsAccessorENS1_18ElementsKindTraitsILNS0_12ElementsKindE0EEEE9NormalizeEPNS0_7IsolateENS0_12DirectHandleINS0_8JSObjectEEE
|
||||
@@ -9325,6 +9325,7 @@ _ZN2v88internal12_GLOBAL__N_120ElementsAccessorBaseINS1_29FastPackedSmiElementsA
|
||||
_ZN2v88internal12_GLOBAL__N_120ElementsAccessorBaseINS1_29FastPackedSmiElementsAccessorENS1_18ElementsKindTraitsILNS0_12ElementsKindE0EEEE11ReconfigureEPNS0_7IsolateENS0_12DirectHandleINS0_8JSObjectEEENSA_INS0_14FixedArrayBaseEEENS0_13InternalIndexENSA_INS0_6ObjectEEENS0_18PropertyAttributesE
|
||||
_ZN2v88internal12_GLOBAL__N_120ElementsAccessorBaseINS1_29FastPackedSmiElementsAccessorENS1_18ElementsKindTraitsILNS0_12ElementsKindE0EEEE6DeleteEPNS0_7IsolateENS0_12DirectHandleINS0_8JSObjectEEENS0_13InternalIndexE
|
||||
_ZN2v88internal12_GLOBAL__N_120ElementsAccessorBaseINS1_29FastPackedSmiElementsAccessorENS1_18ElementsKindTraitsILNS0_12ElementsKindE0EEEE12CopyElementsEPNS0_7IsolateENS0_6TaggedINS0_8JSObjectEEEjS5_NS0_12DirectHandleINS0_14FixedArrayBaseEEEjj
|
||||
_ZN2v88internal8JSObject19initialize_elementsEv
|
||||
_ZN2v88internal12_GLOBAL__N_120ElementsAccessorBaseINS1_28FastHoleySmiElementsAccessorENS1_18ElementsKindTraitsILNS0_12ElementsKindE1EEEE11ReconfigureEPNS0_7IsolateENS0_12DirectHandleINS0_8JSObjectEEENSA_INS0_14FixedArrayBaseEEENS0_13InternalIndexENSA_INS0_6ObjectEEENS0_18PropertyAttributesE
|
||||
_ZN2v88internal12_GLOBAL__N_120ElementsAccessorBaseINS1_28FastHoleySmiElementsAccessorENS1_18ElementsKindTraitsILNS0_12ElementsKindE1EEEE6DeleteEPNS0_7IsolateENS0_12DirectHandleINS0_8JSObjectEEENS0_13InternalIndexE
|
||||
_ZN2v88internal12_GLOBAL__N_120ElementsAccessorBaseINS1_28FastHoleySmiElementsAccessorENS1_18ElementsKindTraitsILNS0_12ElementsKindE1EEEE12CopyElementsEPNS0_7IsolateENS0_6TaggedINS0_8JSObjectEEEjS5_NS0_12DirectHandleINS0_14FixedArrayBaseEEEjj
|
||||
@@ -9390,7 +9391,6 @@ _ZN2v88internal12_GLOBAL__N_120ElementsAccessorBaseINS1_31FastHoleyObjectElement
|
||||
_ZN2v88internal12_GLOBAL__N_120ElementsAccessorBaseINS1_31FastHoleyObjectElementsAccessorENS1_18ElementsKindTraitsILNS0_12ElementsKindE3EEEE9SetLengthEPNS0_7IsolateENS0_12DirectHandleINS0_7JSArrayEEEj
|
||||
_ZN2v88internal12_GLOBAL__N_120ElementsAccessorBaseINS1_31FastHoleyObjectElementsAccessorENS1_18ElementsKindTraitsILNS0_12ElementsKindE3EEEE21CollectElementIndicesENS0_12DirectHandleINS0_8JSObjectEEENS8_INS0_14FixedArrayBaseEEEPNS0_14KeyAccumulatorE
|
||||
_ZN2v88internal12_GLOBAL__N_120ElementsAccessorBaseINS1_31FastHoleyObjectElementsAccessorENS1_18ElementsKindTraitsILNS0_12ElementsKindE3EEEE22CollectValuesOrEntriesEPNS0_7IsolateENS0_12DirectHandleINS0_8JSObjectEEENSA_INS0_10FixedArrayEEEjbPjNS0_14PropertyFilterE
|
||||
_ZN2v88internal12_GLOBAL__N_120ElementsAccessorBaseINS1_31FastHoleyObjectElementsAccessorENS1_18ElementsKindTraitsILNS0_12ElementsKindE3EEEE4FillEPNS0_7IsolateENS0_12DirectHandleINS0_8JSObjectEEENSA_INS0_6ObjectEEEmm
|
||||
_ZN2v88internal12_GLOBAL__N_120ElementsAccessorBaseINS1_31FastHoleyObjectElementsAccessorENS1_18ElementsKindTraitsILNS0_12ElementsKindE3EEEE13IncludesValueEPNS0_7IsolateENS0_12DirectHandleINS0_8JSObjectEEENSA_INS0_6ObjectEEEmm
|
||||
_ZN2v88internal12_GLOBAL__N_120ElementsAccessorBaseINS1_31FastHoleyObjectElementsAccessorENS1_18ElementsKindTraitsILNS0_12ElementsKindE3EEEE12IndexOfValueEPNS0_7IsolateENS0_12DirectHandleINS0_8JSObjectEEENSA_INS0_6ObjectEEEmm
|
||||
_ZN2v88internal12_GLOBAL__N_120ElementsAccessorBaseINS1_31FastHoleyObjectElementsAccessorENS1_18ElementsKindTraitsILNS0_12ElementsKindE3EEEE16LastIndexOfValueENS0_12DirectHandleINS0_8JSObjectEEENS8_INS0_6ObjectEEEm
|
||||
@@ -9488,7 +9488,7 @@ _ZN2v88internal6Module13ResolveExportEPNS0_7IsolateENS0_6HandleIS1_EENS0_12Direc
|
||||
_ZN2v88internal6Module11InstantiateEPNS0_7IsolateENS0_6HandleIS1_EENS_5LocalINS_7ContextEEERKNS1_20UserResolveCallbacksE
|
||||
_ZN2v88internal6Module18PrepareInstantiateEPNS0_7IsolateENS0_12DirectHandleIS1_EENS_5LocalINS_7ContextEEERKNS1_20UserResolveCallbacksE
|
||||
_ZN2v88internal6Module17FinishInstantiateEPNS0_7IsolateENS0_6HandleIS1_EEPNS0_15ZoneForwardListINS4_INS0_16SourceTextModuleEEEEEPjPNS0_4ZoneEjSB_
|
||||
_ZN2v88internal10ErrorUtils30HasErrorStackSymbolOwnPropertyEPNS0_7IsolateENS0_12DirectHandleINS0_8JSObjectEEE
|
||||
_ZN2v88internal6Module8EvaluateEPNS0_7IsolateENS0_6HandleIS1_EE
|
||||
_ZN2v88internal10ErrorUtils21GetErrorStackPropertyEPNS0_7IsolateENS0_12DirectHandleINS0_10JSReceiverEEE
|
||||
_ZN2v88internal10ErrorUtils17SetFormattedStackEPNS0_7IsolateENS0_12DirectHandleINS0_8JSObjectEEENS4_INS0_5UnionIJNS0_3SmiENS0_10HeapNumberENS0_6BigIntENS0_6StringENS0_6SymbolENS0_7BooleanENS0_4NullENS0_9UndefinedENS0_10JSReceiverEEEEEE
|
||||
_ZN2v88internal10ErrorUtils17CaptureStackTraceEPNS0_7IsolateENS0_12DirectHandleINS0_8JSObjectEEENS0_13FrameSkipModeENS0_6HandleINS0_6ObjectEEE
|
||||
@@ -9516,20 +9516,6 @@ _ZN2v88internal24IncrementalStringBuilder6ExtendEv
|
||||
_ZN2v88internal24IncrementalStringBuilder6FinishEv
|
||||
_ZN2v88internal24IncrementalStringBuilder12AppendStringENS0_12DirectHandleINS0_6StringEEE
|
||||
_ZN2v88internal24IncrementalStringBuilder18AppendStringCappedENS0_12DirectHandleINS0_6StringEEEj
|
||||
_ZN2v88internal8baseline22BytecodeOffsetIteratorC2ENS0_6HandleINS0_16TrustedByteArrayEEENS3_INS0_13BytecodeArrayEEE
|
||||
_ZN2v88internal8baseline22BytecodeOffsetIteratorC1ENS0_6HandleINS0_16TrustedByteArrayEEENS3_INS0_13BytecodeArrayEEE
|
||||
_ZN2v88internal8baseline22BytecodeOffsetIterator22UpdatePointersCallbackEPv
|
||||
_ZN2v88internal8baseline22BytecodeOffsetIteratorC2ENS0_6TaggedINS0_16TrustedByteArrayEEENS3_INS0_13BytecodeArrayEEE
|
||||
_ZN2v88internal8baseline22BytecodeOffsetIteratorC1ENS0_6TaggedINS0_16TrustedByteArrayEEENS3_INS0_13BytecodeArrayEEE
|
||||
_ZN2v88internal8baseline22BytecodeOffsetIteratorD2Ev
|
||||
_ZN2v88internal8baseline22BytecodeOffsetIteratorD1Ev
|
||||
_ZN2v88internal15WasmValueObject3NewEPNS0_7IsolateENS0_12DirectHandleINS0_6StringEEENS4_INS0_6ObjectEEE
|
||||
_ZN2v88internal12_GLOBAL__N_120GetOrCreateDebugMapsEPNS0_7IsolateE
|
||||
_ZN2v88internal15WasmValueObject3NewEPNS0_7IsolateERKNS0_4wasm9WasmValueE
|
||||
_ZN2v88internal12_GLOBAL__N_114GetRefTypeNameEPNS0_7IsolateENS0_4wasm18CanonicalValueTypeE
|
||||
_ZN2v88internal11StructProxy6CreateEPNS0_7IsolateENS0_12DirectHandleINS0_10WasmStructEEE
|
||||
_ZN2v88internal10ArrayProxy6CreateEPNS0_7IsolateENS0_12DirectHandleINS0_9WasmArrayEEE
|
||||
_ZN2v88internal4wasm17value_type_reader16ValidateHeapTypeINS1_7Decoder17FullValidationTagEEEbPS4_PKhPKNS1_10WasmModuleENS1_8HeapTypeE
|
||||
_ZN2v88internal4wasm26WasmModuleSignatureStorage17ExpandAndAllocateEmm
|
||||
_ZN2v88internal4wasm26WasmModuleSignatureStorage19AllocateMoreStorageEm
|
||||
_ZNSt4__Cr6vectorIhNS_9allocatorIhEEE20__throw_length_errorB9sqn240000Ev
|
||||
@@ -9588,6 +9574,7 @@ _ZNK7simdutf7haswell14implementation23utf8_length_from_latin1EPKcm
|
||||
_ZNK7simdutf7haswell14implementation22utf8_length_from_utf32EPKDim
|
||||
_ZNK7simdutf7haswell14implementation23utf16_length_from_utf32EPKDim
|
||||
_ZNK7simdutf7haswell14implementation22utf32_length_from_utf8EPKcm
|
||||
_ZNK7simdutf7haswell14implementation16base64_to_binaryEPKcmPcNS_14base64_optionsENS_27last_chunk_handling_optionsE
|
||||
_ZNK7simdutf8westmere14implementation27binary_to_base64_with_linesEPKcmPcmNS_14base64_optionsE
|
||||
_ZNK7simdutf8westmere14implementation4findEPKcS3_c
|
||||
_ZNK7simdutf8westmere14implementation4findEPKDsS3_Ds
|
||||
@@ -9791,6 +9778,7 @@ u_getUnicodeProperties_78
|
||||
u_isalnumPOSIX_78
|
||||
u_isJavaSpaceChar_78
|
||||
u_isWhitespace_78
|
||||
u_isblank_78
|
||||
utrie2_openFromSerialized_78
|
||||
utrie2_close_78
|
||||
utrie2_isFrozen_78
|
||||
@@ -9866,8 +9854,6 @@ _ZN2v88internal4wasm12CanonicalSigC1EmmPKNS1_18CanonicalValueTypeENS1_18Canonica
|
||||
_ZNK2v88internal4wasm12CanonicalSig7Builder3GetENS1_18CanonicalTypeIndexE
|
||||
_ZN2v88internal4wasm9WasmError11FormatErrorEPKcP13__va_list_tag
|
||||
_ZN2v88internal4wasm12_GLOBAL__N_115VPrintFToStringEPNSt4__Cr12basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEmPKcP13__va_list_tag
|
||||
_ZN2v88internal22ManagedObjectFinalizerERKNS_16WeakCallbackInfoIvEE
|
||||
_ZN2v88internal12_GLOBAL__N_132ManagedObjectFinalizerSecondPassERKNS_16WeakCallbackInfoIvEE
|
||||
_ZN2v88internal19CppGCManagedWrapper19UpdateEstimatedSizeEmPNS0_7IsolateE
|
||||
_ZN2v88internal15Utf8DecoderBaseINS0_11Utf8DecoderEEC2ENS_4base6VectorIKhEE
|
||||
_ZN2v88internal15Utf8DecoderBaseINS0_11Utf8DecoderEEC1ENS_4base6VectorIKhEE
|
||||
@@ -9899,7 +9885,6 @@ _ZN2v88internal4wasm9DebugInfo13GetStackDepthEmPNS0_7IsolateE
|
||||
_ZN2v88internal4wasm9DebugInfo13GetStackValueEimmmPNS0_7IsolateE
|
||||
_ZN2v88internal4wasm9DebugInfo20GetFunctionAtAddressEmPNS0_7IsolateE
|
||||
_ZN2v88internal4wasm13DebugInfoImpl13SetBreakpointEiiPNS0_7IsolateE
|
||||
_ZN2v88internal4wasm13DebugInfoImpl19UpdateReturnAddressEPNS0_9WasmFrameEPNS1_8WasmCodeENS1_12_GLOBAL__N_114ReturnLocationE
|
||||
_ZN2v88internal4wasm13DebugInfoImpl10IsAtReturnEPNS0_9WasmFrameE
|
||||
_ZN2v88internal4wasm13DebugInfoImpl20FloodWithBreakpointsEPNS0_9WasmFrameENS1_12_GLOBAL__N_114ReturnLocationE
|
||||
_ZZNSt4__Cr12__hash_tableINS_17__hash_value_typeIPN2v88internal7IsolateENS3_4wasm13DebugInfoImpl19PerIsolateDebugDataEEENS_22__unordered_map_hasherIS5_NS_4pairIKS5_S8_EENS_4hashIS5_EENS_8equal_toIS5_EEEENS_21__unordered_map_equalIS5_SD_SH_SF_EENS_9allocatorISD_EEE16__emplace_uniqueB9sqn240000IJRKNS_21piecewise_construct_tENS_5tupleIJOS5_EEENSS_IJEEEEEENSB_INS_15__hash_iteratorIPNS_11__hash_nodeIS9_PvEEEEbEEDpOT_ENKUlRSC_SR_OSU_OSV_E_clB9sqn240000ES16_SR_S17_S18_
|
||||
@@ -9917,7 +9902,7 @@ _ZN2v85debug20GetBigIntStringValueEPNS_7IsolateENS_5LocalINS_6BigIntEEE
|
||||
_ZN2v85debug12_GLOBAL__N_133GetBigIntStringPresentationHandleEPNS_8internal7IsolateENS2_12DirectHandleINS2_6BigIntEEE
|
||||
_ZN2v85debug20GetBigIntDescriptionEPNS_7IsolateENS_5LocalINS_6BigIntEEE
|
||||
_ZN2v85debug18GetDateDescriptionENS_5LocalINS_4DateEEE
|
||||
_ZNK2v85debug6Script13SetBreakpointENS_5LocalINS_6StringEEEPNS0_8LocationEPi
|
||||
_ZN2v85debug22GetFunctionDescriptionENS_5LocalINS_8FunctionEEE
|
||||
_ZNK2v85debug6Script28SetInstrumentationBreakpointEPi
|
||||
_ZN2v85debug6Script20RemoveWasmBreakpointEi
|
||||
_ZN2v85debug16RemoveBreakpointEPNS_7IsolateEi
|
||||
@@ -10008,8 +9993,6 @@ _ZN2v85debug12SetIsolateIdEPNS_7IsolateEm
|
||||
_ZN2v85debug16PropertyIterator6CreateENS_5LocalINS_7ContextEEENS2_INS_6ObjectEEEb
|
||||
_ZN2v88internal21DebugPropertyIterator7AdvanceEv
|
||||
_ZNSt4__Cr11__introsortB9sqn240000INS_17_ClassicAlgPolicyERPFbRKN2v88internal13BreakLocationES6_EPS4_Lb0EEEvT1_SB_T0_NS_15iterator_traitsISB_E15difference_typeEb
|
||||
_ZZNSt4__Cr6vectorIN2v85debug10WasmScript12DebugSymbolsENS_9allocatorIS4_EEE12emplace_backB9sqn240000IJS4_EEERS4_DpOT_ENKUlvE0_clB9sqn240000Ev
|
||||
_ZNSt4__Cr6vectorIN2v85debug10WasmScript12DebugSymbolsENS_9allocatorIS4_EEE20__throw_length_errorB9sqn240000Ev
|
||||
_ZNSt4__Cr6vectorIN2v86GlobalINS1_5debug6ScriptEEENS_9allocatorIS5_EEE24__emplace_back_slow_pathB9sqn240000IJRPNS1_7IsolateENS1_5LocalIS4_EEEEEPS5_DpOT_
|
||||
_ZNSt4__Cr6vectorIN2v86GlobalINS1_5debug6ScriptEEENS_9allocatorIS5_EEE20__throw_length_errorB9sqn240000Ev
|
||||
_ZNSt4__Cr26__split_buffer_size_layoutINS_14__split_bufferIN2v86GlobalINS2_5debug6ScriptEEENS_9allocatorIS6_EES0_EES6_S8_E10__relocateB9sqn240000ERPS6_RmSD_
|
||||
@@ -10040,6 +10023,8 @@ _ZN2v88internal9DateCacheD2Ev
|
||||
_ZN2v88internal9DateCacheD0Ev
|
||||
_ZN2v88internal9DateCache30GetDaylightSavingsOffsetFromOSEl
|
||||
_ZN2v88internal9DateCache14EquivalentTimeEl
|
||||
_ZN2v88internal29SmallStringOptimizedAllocatorILm128EED0Ev
|
||||
_ZN2v88internal29SmallStringOptimizedAllocatorILm128EE8allocateEj
|
||||
_ZNK2v88internal6String9IsEqualToILNS1_12EqualityTypeE0EcEEbNS_4base6VectorIKT0_EEPNS0_12LocalIsolateE
|
||||
_ZN2v88internal24IcuBreakIteratorWithTextC2ENSt4__Cr10unique_ptrIN6icu_7813BreakIteratorENS2_14default_deleteIS5_EEEE
|
||||
_ZN2v88internal24IcuBreakIteratorWithTextC1ENSt4__Cr10unique_ptrIN6icu_7813BreakIteratorENS2_14default_deleteIS5_EEEE
|
||||
@@ -10062,9 +10047,6 @@ _ZN2v88internal4Intl14BuildLocaleSetERKNSt4__Cr6vectorINS2_12basic_stringIcNS2_1
|
||||
_ZN2v88internal12_GLOBAL__N_116ValidateResourceEN6icu_786LocaleEPKcS5_
|
||||
_ZN2v88internal4Intl13ToLanguageTagERKN6icu_786LocaleE
|
||||
_ZN2v88internal4Intl20LegacyUnwrapReceiverEPNS0_7IsolateENS0_12DirectHandleINS0_10JSReceiverEEENS4_INS0_10JSFunctionEEEb
|
||||
_ZN2v88internal4Intl38ValidateAndCanonicalizeUnicodeLocaleIdEPNS0_7IsolateENSt4__Cr17basic_string_viewIcNS4_11char_traitsIcEEEE
|
||||
_ZNSt4__Cr12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2INS_17basic_string_viewIcS2_EETnNS_9enable_ifIXaa35__can_be_converted_to_string_view_vIcS2_T_Entsr7is_sameIu14__remove_cvrefISA_ES5_EE5valueEiE4typeELi0EEERKSA_RKS4_
|
||||
_ZN2v88internal4Intl22CanonicalizeLocaleListEPNS0_7IsolateENS0_12DirectHandleINS0_6ObjectEEEb
|
||||
_ZN2v88internal4Intl14CompareStringsEPNS0_7IsolateERKN6icu_788CollatorENS0_12DirectHandleINS0_6StringEEESA_NS1_21CompareStringsOptionsE
|
||||
_ZN2v88internal4Intl23AsciiCollationWeightsL1Ev
|
||||
_ZN2v88internal4Intl23AsciiCollationWeightsL3Ev
|
||||
@@ -10077,6 +10059,7 @@ _ZN2v88internal12_GLOBAL__N_118AvailableTimeZonesEPNS0_7IsolateE
|
||||
_ZN2v88internal12_GLOBAL__N_114AvailableUnitsEPNS0_7IsolateE
|
||||
_ZN2v88internal7Factory24NewStringFromStaticCharsILm4EEENS0_6HandleINS0_6StringEEERAT__KcNS0_14AllocationTypeE
|
||||
_ZN2v88internal4Intl18SupportedLocalesOfEPNS0_7IsolateEPKcRKNSt4__Cr3setINS6_12basic_stringIcNS6_11char_traitsIcEENS6_9allocatorIcEEEENS6_4lessISD_EENSB_ISD_EEEENS0_12DirectHandleINS0_6ObjectEEESM_
|
||||
_ZN2v88internal4Intl16IsValidCollationERKN6icu_786LocaleERKNSt4__Cr12basic_stringIcNS6_11char_traitsIcEENS6_9allocatorIcEEEE
|
||||
_ZN2v88internal4Intl13ResolveLocaleEPNS0_7IsolateERKNSt4__Cr3setINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEENS4_4lessISB_EENS9_ISB_EEEERKNS4_6vectorISB_SE_EENS1_13MatcherOptionESH_
|
||||
_ZN2v88internal4Intl9NormalizeEPNS0_7IsolateENS0_12DirectHandleINS0_6StringEEENS4_INS0_6ObjectEEE
|
||||
_ZN2v88internal7Factory24NewStringFromStaticCharsILm21EEENS0_6HandleINS0_6StringEEERAT__KcNS0_14AllocationTypeE
|
||||
@@ -10114,7 +10097,7 @@ _ZNSt4__Cr10__function13__policy_funcIFbPKcEE11__call_funcB9sqn240000IZN2v88inte
|
||||
_ZNSt4__Cr10__function13__policy_funcIFNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPKcEE12__empty_funcB9sqn240000EPKNS0_16__policy_storageES9_
|
||||
_ZNSt4__Cr10__function13__policy_funcIFbPKcEE12__empty_funcB9sqn240000EPKNS0_16__policy_storageES3_
|
||||
_ZN2v88internal12_GLOBAL__N_118BuildLocaleMatcherEPNS0_7IsolateERKNSt4__Cr3setINS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEENS4_4lessISB_EENS9_ISB_EEEEP10UErrorCode
|
||||
_ZZNSt4__Cr6__treeINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEENS_4lessIS6_EENS4_IS6_EEE16__emplace_uniqueB9sqn240000IJRKS6_EEENS_4pairINS_15__tree_iteratorIS6_PNS_11__tree_nodeIS6_PvEElEEbEEDpOT_ENKUlSD_SD_E_clB9sqn240000ESD_SD_
|
||||
_ZN2v88internal12_GLOBAL__N_116ParseBCP47LocaleERKNSt4__Cr12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEE
|
||||
_ZNSt4__Cr6vectorINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEENS4_IS6_EEE18__assign_with_sizeB9sqn240000INS_17_ClassicAlgPolicyEPKS6_SC_EEvT0_T1_l
|
||||
_ZNSt4__Cr20__shared_ptr_emplaceB9sqn240000IN6icu_786number24LocalizedNumberFormatterENS_9allocatorIS3_EEED0Ev
|
||||
_ZNSt4__Cr20__shared_ptr_emplaceB9sqn240000IN6icu_786number24LocalizedNumberFormatterENS_9allocatorIS3_EEE16__on_zero_sharedEv
|
||||
@@ -10174,7 +10157,6 @@ uprv_tzset_78
|
||||
uprv_timezone_78
|
||||
uprv_tzname_clear_cache_78
|
||||
uprv_tzname_78
|
||||
u_versionFromString_78
|
||||
_ZN6icu_7810CharStringC2EOS0_
|
||||
_ZN6icu_7810CharStringC1EOS0_
|
||||
_ZN6icu_7810CharStringaSEOS0_
|
||||
@@ -10238,6 +10220,8 @@ _ZN6icu_7811StringPieceC1ERKS0_ii
|
||||
_ZN6icu_7811StringPiece3setEPKc
|
||||
_ZN6icu_7811StringPiece4findES0_i
|
||||
_ZN6icu_7811StringPiece7compareES0_
|
||||
_ZN6icu_78eqERKNS_11StringPieceES2_
|
||||
u_strToUTF32WithSub_78
|
||||
_ZL14toUpperOrTitleiPFiPvaES_PPKDsia
|
||||
ucase_toFullTitle_78
|
||||
ucase_fold_78
|
||||
@@ -10393,7 +10377,6 @@ _ZN6icu_786Locale14createFromNameEPKc
|
||||
_ZN6icu_786Locale15createCanonicalEPKc
|
||||
_ZN6icu_786Locale7getRootEv
|
||||
_ZN6icu_786Locale14getLocaleCacheEv
|
||||
_ZN6icu_7812_GLOBAL__N_113AliasReplacer28replaceTransformedExtensionsERNS_10CharStringES3_R10UErrorCode
|
||||
_ZN6icu_7812_GLOBAL__N_19AliasData7cleanupEv
|
||||
_ZN6icu_7817UniqueCharStringsD2Ev
|
||||
_ZN6icu_7817UniqueCharStrings3addEPKDsR10UErrorCode
|
||||
@@ -10454,6 +10437,7 @@ _ZN6icu_787UVectorC2EPFvPvEPFa8UElementS4_ER10UErrorCode
|
||||
_ZN6icu_787UVectorC1EPFvPvEPFa8UElementS4_ER10UErrorCode
|
||||
_ZN6icu_787UVectorD2Ev
|
||||
_ZN6icu_787UVectorD1Ev
|
||||
_ZN6icu_787UVector17removeAllElementsEv
|
||||
_ZL20doLoadFromCommonDataaPKcS0_S0_S0_S0_S0_S0_PFaPvS0_S0_PK9UDataInfoES1_P10UErrorCodeS8_
|
||||
_ZN6icu_7817UDataPathIteratorD2Ev
|
||||
_ZL14openCommonDataPKciP10UErrorCode
|
||||
@@ -10521,6 +10505,7 @@ _ZN6icu_7813LocaleBuilder9setRegionENS_11StringPieceE
|
||||
_ZN6icu_7813LocaleBuilder10setVariantENS_11StringPieceE
|
||||
_ZN6icu_7813LocaleBuilder14setLanguageTagENS_11StringPieceE
|
||||
_ZN6icu_7813LocaleBuilder23setUnicodeLocaleKeywordENS_11StringPieceES1_
|
||||
_ZN6icu_7813LocaleBuilder15clearExtensionsEv
|
||||
_ZN6icu_7821RuleCharacterIterator11skipIgnoredEi
|
||||
_ZN6icu_7819CharacterProperties24getInclusionsForPropertyE9UPropertyR10UErrorCode
|
||||
_ZN12_GLOBAL__N_122getInclusionsForSourceE15UPropertySourceR10UErrorCode
|
||||
@@ -10540,6 +10525,9 @@ _ZL15defaultContainsRK14BinaryPropertyi9UProperty
|
||||
_ZL13isBidiControlRK14BinaryPropertyi9UProperty
|
||||
_ZL10isMirroredRK14BinaryPropertyi9UProperty
|
||||
_ZL27hasFullCompositionExclusionRK14BinaryPropertyi9UProperty
|
||||
_ZL13isJoinControlRK14BinaryPropertyi9UProperty
|
||||
_ZL26caseBinaryPropertyContainsRK14BinaryPropertyi9UProperty
|
||||
_ZL11isNormInertRK14BinaryPropertyi9UProperty
|
||||
_ZN6icu_7822FormattedStringBuilder6spliceEiiRKNS_13UnicodeStringEiiNS0_5FieldER10UErrorCode
|
||||
_ZN6icu_7822FormattedStringBuilder6insertEiRKS0_R10UErrorCode
|
||||
_ZN6icu_7822FormattedStringBuilder15writeTerminatorER10UErrorCode
|
||||
@@ -10574,6 +10562,8 @@ _ZNK6icu_786number4impl15CurrencySymbols21getIntlCurrencySymbolER10UErrorCode
|
||||
_ZNK6icu_786number4impl15CurrencySymbols13getPluralNameENS_14StandardPlural4FormER10UErrorCode
|
||||
_ZNK6icu_786number4impl15CurrencySymbols22hasEmptyCurrencySymbolEv
|
||||
_ZN6icu_786number4impl15resolveCurrencyERKNS1_23DecimalFormatPropertiesERKNS_6LocaleER10UErrorCode
|
||||
_ZN6icu_786number4impl13PatternParser18parseToPatternInfoERKNS_13UnicodeStringERNS1_17ParsedPatternInfoER10UErrorCode
|
||||
_ZN6icu_786number4impl17ParsedPatternInfo14consumePatternERKNS_13UnicodeStringER10UErrorCode
|
||||
_ZNK6icu_786number4impl24NumberRangeFormatterImpl11formatRangeERNS1_25UFormattedNumberRangeDataERNS1_10MicroPropsES6_R10UErrorCode
|
||||
_ZNK6icu_786number4impl24NumberRangeFormatterImpl19formatApproximatelyERNS1_25UFormattedNumberRangeDataENS1_15DecimalQuantityERNS1_10MicroPropsES7_R10UErrorCode
|
||||
_ZNK6icu_786number4impl24NumberRangeFormatterImpl17formatSingleValueERNS1_25UFormattedNumberRangeDataERNS1_10MicroPropsES6_R10UErrorCode
|
||||
@@ -10619,7 +10609,6 @@ _ZNK2v88internal27Utf8ExternalStreamingStream5CloneEv
|
||||
_ZNK2v88internal27Utf8ExternalStreamingStream15can_access_heapEv
|
||||
_ZN14Utf8DfaDecoder6DecodeEhPNS_5StateEPj
|
||||
_ZNSt4__Cr6vectorIN2v88internal27Utf8ExternalStreamingStream5ChunkENS_9allocatorIS4_EEE24__emplace_back_slow_pathB9sqn240000IJRPKhRmRNS3_14StreamPositionEEEEPS4_DpOT_
|
||||
_ZZNSt4__Cr6vectorIN2v814ScriptCompiler28FlexibleExternalSourceStream5ChunkENS_9allocatorIS4_EEE12emplace_backB9sqn240000IJS4_EEERS4_DpOT_ENKUlvE0_clB9sqn240000Ev
|
||||
_ZNSt4__Cr6vectorIN2v814ScriptCompiler28FlexibleExternalSourceStream5ChunkENS_9allocatorIS4_EEE20__throw_length_errorB9sqn240000Ev
|
||||
_ZN2v88internal23BufferedCharacterStreamINS0_20ExternalStringStreamEED2Ev
|
||||
_ZN2v88internal23BufferedCharacterStreamINS0_20ExternalStringStreamEED0Ev
|
||||
@@ -11127,7 +11116,7 @@ _ZN2v88internal21SourceRangeAstVisitorC1EmPNS0_10ExpressionEPNS0_14SourceRangeMa
|
||||
_ZN2v88internal21SourceRangeAstVisitor10VisitBlockEPNS0_5BlockE
|
||||
_ZN2v88internal19AstTraversalVisitorINS0_21SourceRangeAstVisitorEE10VisitBlockEPNS0_5BlockE
|
||||
_ZN2v88internal21SourceRangeAstVisitor32MaybeRemoveLastContinuationRangeEPNS0_8ZoneListIPNS0_9StatementEEE
|
||||
_ZN2v88internal19AstTraversalVisitorINS0_29AstFunctionLiteralIdReindexerEE12VisitCallNewEPNS0_7CallNewE
|
||||
_ZN2v88internal21SourceRangeAstVisitor20VisitSwitchStatementEPNS0_15SwitchStatementE
|
||||
_ZN2v88internal19AstTraversalVisitorINS0_29AstFunctionLiteralIdReindexerEE21VisitConditionalChainEPNS0_16ConditionalChainE
|
||||
_ZN2v88internal19AstTraversalVisitorINS0_29AstFunctionLiteralIdReindexerEE16VisitConditionalEPNS0_11ConditionalE
|
||||
_ZNK2v88internal9PreParser13GetIdentifierEv
|
||||
@@ -11372,6 +11361,8 @@ _ZN2v88internal6regexp12_GLOBAL__N_110ParserImplIhLNS2_9ParseModeE0EE17ParseOcta
|
||||
_ZN2v88internal6regexp12_GLOBAL__N_110ParserImplIhLNS2_9ParseModeE0EE28TryParseCharacterClassEscapeEjNS2_18InClassEscapeStateEPNS0_8ZoneListINS1_14CharacterRangeEEEPNS0_7ZoneMapINS_4base6VectorIKjEEPNS1_4TreeENS1_24CharacterClassStringLessEEEPNS0_4ZoneEb
|
||||
_ZN2v88internal4Zone3NewINS0_6regexp15ClassSetOperandEJRPNS0_8ZoneListINS3_14CharacterRangeEEERPNS0_7ZoneMapINS_4base6VectorIKjEEPNS3_4TreeENS3_24CharacterClassStringLessEEEEEEPT_DpOT0_
|
||||
_ZN2v88internal6regexp12_GLOBAL__N_110ParserImplIhLNS2_9ParseModeE0EE23ParseNamedBackReferenceEPNS2_7BuilderILS4_0EEEPNS2_11ParserStateILS4_0EEE
|
||||
_ZN2v88internal6regexp12_GLOBAL__N_110ParserImplIhLNS2_9ParseModeE0EE20ParseCharacterEscapeENS2_18InClassEscapeStateEPb
|
||||
_ZN2v88internal6regexp12_GLOBAL__N_110ParserImplIhLNS2_9ParseModeE0EE23ParseIntervalQuantifierEPiS6_
|
||||
_ZN2v88internal6regexp12_GLOBAL__N_17BuilderILNS2_9ParseModeE0EE19AddQuantifierToAtomEiiiNS1_10Quantifier14QuantifierTypeE
|
||||
_ZN2v88internal6regexp12_GLOBAL__N_17BuilderILNS2_9ParseModeE0EE10FlushTermsEv
|
||||
_ZN2v88internal6regexp12_GLOBAL__N_111TextBuilderILNS2_9ParseModeE0EE9FlushTextEv
|
||||
@@ -11390,18 +11381,6 @@ _ZN2v88internal6regexp12_GLOBAL__N_110ParserImplIhLNS2_9ParseModeE0EE14ParseHexE
|
||||
_ZN2v88internal6regexp12_GLOBAL__N_110ParserImplIhLNS2_9ParseModeE0EE20ParseClassSetOperandEPKNS2_7BuilderILS4_0EEEPNS2_19ClassSetOperandTypeEPNS0_8ZoneListINS1_14CharacterRangeEEEPNS0_7ZoneMapINS_4base6VectorIKjEEPNS1_4TreeENS1_24CharacterClassStringLessEEEPj
|
||||
_ZN2v88internal6regexp12_GLOBAL__N_110ParserImplIhLNS2_9ParseModeE0EE29AddMaybeSimpleCaseFoldedRangeEPNS0_8ZoneListINS1_14CharacterRangeEEES7_
|
||||
_ZN2v88internal6regexp12_GLOBAL__N_110ParserImplIhLNS2_9ParseModeE0EE16ParseClassEscapeEPNS0_8ZoneListINS1_14CharacterRangeEEEPNS0_4ZoneEbPjPb
|
||||
_ZN2v88internal6regexp12_GLOBAL__N_110ParserImplIhLNS2_9ParseModeE0EE22ParseClassSetCharacterEv
|
||||
_ZN2v88internal6regexp12_GLOBAL__N_111TextBuilderILNS2_9ParseModeE0EE8ToRegExpEv
|
||||
_ZN2v88internal6regexp12_GLOBAL__N_111TextBuilderILNS2_9ParseModeE0EE19AddUnicodeCharacterEj
|
||||
_ZZNSt4__Cr6__treeINS_12__value_typeIN2v84base6VectorIKjEEPNS2_8internal6regexp4TreeEEENS_19__map_value_compareIS6_NS_4pairIKS6_SA_EENS8_24CharacterClassStringLessEEENS7_13ZoneAllocatorISF_EEE16__emplace_uniqueB9sqn240000IJNS4_IjEERSA_EEENSD_INS_15__tree_iteratorISB_PNS_11__tree_nodeISB_PvEElEEbEEDpOT_ENKUlOSM_SN_E_clB9sqn240000ESY_SN_
|
||||
_ZNSt4__Cr6__treeINS_12__value_typeIN2v84base6VectorIKjEEPNS2_8internal6regexp4TreeEEENS_19__map_value_compareIS6_NS_4pairIKS6_SA_EENS8_24CharacterClassStringLessEEENS7_13ZoneAllocatorISF_EEE12__find_equalB9sqn240000ISF_EENSD_IPNS_15__tree_end_nodeIPNS_16__tree_node_baseIPvEEEERSQ_EERKT_
|
||||
_ZN2v88internal6regexp12_GLOBAL__N_111TextBuilderILNS2_9ParseModeE0EE17AddTrailSurrogateEt
|
||||
_ZN2v88internal6regexp12_GLOBAL__N_111TextBuilderILNS2_9ParseModeE0EE12AddCharacterEt
|
||||
_ZN2v88internal8ZoneListINS0_6regexp14CharacterRangeEE6AddAllENS_4base6VectorIKS3_EEPNS0_4ZoneE
|
||||
_ZN2v88internal4Zone3NewINS0_8ZoneListIPNS0_6regexp4TreeEEEJiPS1_EEEPT_DpOT0_
|
||||
_ZN2v88internal8ZoneListIPNS0_6regexp4TreeEE3AddERKS4_PNS0_4ZoneE
|
||||
_ZN2v88internal6regexp12_GLOBAL__N_110ParserImplIhLNS2_9ParseModeE0EE20ParseClassSetOperandEPKNS2_7BuilderILS4_0EEEPNS2_19ClassSetOperandTypeE
|
||||
_ZN2v88internal4Zone3NewINS0_6regexp18ClassSetExpressionEJNS4_13OperationTypeERbRKbRPNS0_8ZoneListIPNS3_4TreeEEEEEEPT_DpOT0_
|
||||
_ZN2v88internal4Zone3NewINS0_6regexp18ClassSetExpressionEJNS4_13OperationTypeERbS6_RPNS0_8ZoneListIPNS3_4TreeEEEEEEPT_DpOT0_
|
||||
_ZN2v88internal6regexp12_GLOBAL__N_110ParserImplIhLNS2_9ParseModeE0EE15ScanForCapturesENS2_18InClassEscapeStateE
|
||||
_ZN2v88internal6regexp12_GLOBAL__N_112_GLOBAL__N_123LookupPropertyValueNameILNS2_9ParseModeE0EEENS2_14ClassSetResultIXT_EEE9UPropertyPKcbPNS0_8ZoneListINS1_14CharacterRangeEEEPNS0_7ZoneMapINS_4base6VectorIKjEEPNS1_4TreeENS1_24CharacterClassStringLessEEENSG_5FlagsINS1_4FlagEiiEEPNS0_4ZoneE
|
||||
@@ -11578,6 +11557,7 @@ _ZN2v88internal6regexp20UnicodeRangeSplitter8AddRangeENS1_14CharacterRangeE
|
||||
_ZN2v88internal6regexp14CharacterRange25AddUnicodeCaseEquivalentsEPNS0_8ZoneListIS2_EEPNS0_4ZoneE
|
||||
_ZN2v88internal6regexp14CharacterRange12CanonicalizeEPNS0_8ZoneListIS2_EE
|
||||
_ZN2v88internal6regexp11ClassRanges10ToNodeImplEPNS1_8CompilerEPNS1_4NodeE
|
||||
_ZN2v88internal6regexp14CharacterRange6NegateEPKNS0_8ZoneListIS2_EEPS4_PNS0_4ZoneE
|
||||
_ZN2v88internal6regexp9Assertion10ToNodeImplEPNS1_8CompilerEPNS1_4NodeE
|
||||
_ZN2v88internal6regexp12_GLOBAL__N_129BoundaryAssertionAsLookaroundEPNS1_8CompilerEPNS1_4NodeENS1_9Assertion4TypeE
|
||||
_ZN2v88internal4Zone3NewINS0_6regexp10ChoiceNodeEJiNS_4base5FlagsINS3_4FlagEiiEERPS1_EEEPT_DpOT0_
|
||||
@@ -11614,6 +11594,8 @@ _ZN2v88internal6regexp8AnalysisIJNS1_12_GLOBAL__N_119AssertionPropagatorENS3_21E
|
||||
_ZN2v88internal6regexp8AnalysisIJNS1_12_GLOBAL__N_119AssertionPropagatorENS3_21EatsAtLeastPropagatorEEE14VisitAssertionEPNS1_13AssertionNodeE
|
||||
_ZN2v88internal6regexp8AnalysisIJNS1_12_GLOBAL__N_119AssertionPropagatorENS3_21EatsAtLeastPropagatorEEE9VisitTextEPNS1_8TextNodeE
|
||||
_ZN2v88internal6regexp8AnalysisIJNS1_12_GLOBAL__N_119AssertionPropagatorENS3_21EatsAtLeastPropagatorEEE22VisitUnanchoredAdvanceEPNS1_21UnanchoredAdvanceNodeE
|
||||
_ZN2v88internal6regexp20RegExpMacroAssemblerC2EPNS0_7IsolateEPNS0_4ZoneENS2_4ModeE
|
||||
_ZN2v88internal6regexp20RegExpMacroAssembler7LogCodeEPNS0_7IsolateENS0_12DirectHandleINS0_4CodeEEENS5_INS0_10RegExpDataEEENS_4base5FlagsINS1_4FlagEiiEE
|
||||
_ZN2v88internal6regexp20RegExpMacroAssembler21SkipUntilOneOfMasked3ERKNS2_25SkipUntilOneOfMasked3ArgsE
|
||||
_ZN2v88internal6regexp26NativeRegExpMacroAssembler20CheckStackGuardStateEPNS0_7IsolateEiNS0_6RegExp10CallOriginEPmNS0_6TaggedINS0_17InstructionStreamEEES7_PPKhSD_m
|
||||
_ZN2v88internal6regexp26NativeRegExpMacroAssembler5MatchENS0_12DirectHandleINS0_12IrRegExpDataEEENS3_INS0_6StringEEEbPiiiPNS0_7IsolateE
|
||||
@@ -11654,18 +11636,6 @@ _ZN2v88internal6regexp5StackD1Ev
|
||||
_ZN2v88internal6regexp5Stack3NewEv
|
||||
_ZN2v88internal6regexp5Stack6DeleteEPS2_
|
||||
_ZN2v88internal6regexp5Stack14EnsureCapacityEm
|
||||
_ZN2v88internal6regexp14BuildIgnoreSetEv
|
||||
_ZN2v88internal6regexp11CaseFolding9IgnoreSetEv
|
||||
_ZN2v88internal6regexp18BuildSpecialAddSetEv
|
||||
_ZN2v88internal6regexp11CaseFolding13SpecialAddSetEv
|
||||
_ZN2v84base16LazyInstanceImplINS_8internal6regexp13IgnoreSetDataENS0_32StaticallyAllocatedInstanceTraitIS4_EENS0_21DefaultConstructTraitIS4_EENS0_23ThreadSafeInitOnceTraitENS0_18LeakyInstanceTraitIS4_EEE12InitInstanceEPv
|
||||
_ZN2v84base16LazyInstanceImplINS_8internal6regexp17SpecialAddSetDataENS0_32StaticallyAllocatedInstanceTraitIS4_EENS0_21DefaultConstructTraitIS4_EENS0_23ThreadSafeInitOnceTraitENS0_18LeakyInstanceTraitIS4_EEE12InitInstanceEPv
|
||||
_ZN6icu_7810UnicodeSet9closeOverEi
|
||||
_ZN6icu_7810UnicodeSet24closeOverCaseInsensitiveEb
|
||||
_ZN6icu_7810UnicodeSet24closeOverAddCaseMappingsEv
|
||||
_ZN6icu_78L8_set_addEP4USeti
|
||||
_ZN6icu_78L13_set_addRangeEP4USetii
|
||||
_ZN6icu_78L14_set_addStringEP4USetPKDsi
|
||||
_ZN6icu_7812_GLOBAL__N_122maybeOnlyCaseSensitiveERKNS_10UnicodeSetERS1_
|
||||
_ZN2v88internal6regexp11ErrorStringENS1_5ErrorE
|
||||
_ZN2v88internal21JSRegExpResultIndices12BuildIndicesEPNS0_7IsolateENS0_12DirectHandleINS0_15RegExpMatchInfoEEENS4_INS0_10RegExpDataEEE
|
||||
@@ -11739,7 +11709,6 @@ _ZN2v88internal6regexp18ExperimentalRegExp10IsCompiledENS0_12DirectHandleINS0_12
|
||||
_ZN2v88internal6regexp18ExperimentalRegExp7CompileEPNS0_7IsolateENS0_12DirectHandleINS0_12IrRegExpDataEEE
|
||||
_ZN2v88internal6regexp12_GLOBAL__N_111CompileImplEPNS0_7IsolateENS0_12DirectHandleINS0_12IrRegExpDataEEE
|
||||
_ZN2v88internal6regexp18ExperimentalRegExp7ExecRawEPNS0_7IsolateENS0_6RegExp10CallOriginENS0_6TaggedINS0_12IrRegExpDataEEENS7_INS0_6StringEEEPiii
|
||||
_ZN4absl19functional_internal12InvokeObjectIRKZN2v88internal6regexp23RegExpMacroAssemblerX6421SkipUntilOneOfMasked3ERKNS4_20RegExpMacroAssembler25SkipUntilOneOfMasked3ArgsEE3$_0vJNS3_8RegisterESD_EEET0_NS0_7VoidPtrEDpNS0_8ForwardTIT1_E4typeE
|
||||
_ZN2v88internal18MacroAssemblerBaseC2EPNS0_7IsolateERKNS0_16AssemblerOptionsENS_4base11StrongAliasINS0_21CodeObjectRequiredTagEbEENSt4__Cr10unique_ptrINS0_15AssemblerBufferENSB_14default_deleteISD_EEEE
|
||||
_ZN2v88internal18MacroAssemblerBaseC2EPNS0_7IsolateENSt4__Cr7variantIJPNS0_4ZoneEPNS0_19AccountingAllocatorEEEENS0_16AssemblerOptionsENS_4base11StrongAliasINS0_21CodeObjectRequiredTagEbEENS4_10unique_ptrINS0_15AssemblerBufferENS4_14default_deleteISH_EEEE
|
||||
_ZN2v88internal18MacroAssemblerBase12BuiltinEntryENS0_7BuiltinE
|
||||
@@ -12259,6 +12228,7 @@ _ZN2v88internal12_GLOBAL__N_120SimpleCreateFunctionEPNS0_7IsolateENS0_12DirectHa
|
||||
_ZN2v88internal7Genesis18CreateIteratorMapsENS0_12DirectHandleINS0_10JSFunctionEEE
|
||||
_ZN2v88internal12_GLOBAL__N_123InstallFunctionAtSymbolEPNS0_7IsolateENS0_12DirectHandleINS0_8JSObjectEEENS4_INS0_6SymbolEEEPKcNS0_7BuiltinEiNS_4base11StrongAliasINS0_17AdaptArgumentsTagEbEENS0_18PropertyAttributesE
|
||||
_ZN2v88internal12_GLOBAL__N_123CreateNonConstructorMapEPNS0_7IsolateENS0_12DirectHandleINS0_3MapEEENS4_INS0_8JSObjectEEEPKc
|
||||
_ZN2v88internal7Genesis23CreateAsyncIteratorMapsENS0_12DirectHandleINS0_10JSFunctionEEE
|
||||
_ZN2v88internal7Genesis16CreateNewGlobalsENS_5LocalINS_14ObjectTemplateEEENS0_12DirectHandleINS0_13JSGlobalProxyEEE
|
||||
_ZN2v88internal12_GLOBAL__N_137CreateFunctionForBuiltinWithPrototypeEPNS0_7IsolateENS0_12DirectHandleINS0_6StringEEENS0_7BuiltinENS4_INS0_5UnionIJNS0_10JSReceiverENS0_4NullENS0_4HoleEEEEEENS0_12InstanceTypeEiiNS0_11MutableModeEiNS_4base11StrongAliasINS0_17AdaptArgumentsTagEbEE
|
||||
_ZN2v88internal7Genesis17HookUpGlobalProxyENS0_12DirectHandleINS0_13JSGlobalProxyEEE
|
||||
@@ -12269,8 +12239,6 @@ _ZN2v88internal12_GLOBAL__N_115InstallFunctionEPNS0_7IsolateENS0_12DirectHandleI
|
||||
_ZN2v88internalL32InstallWithIntrinsicDefaultProtoEPNS0_7IsolateENS0_12DirectHandleINS0_10JSFunctionEEEi
|
||||
_ZN2v88internal12Bootstrapper27InitializeLazyPartOfContextENS0_12DirectHandleINS0_13NativeContextEEENS0_7Context5FieldE
|
||||
_ZN2v88internal7Genesis16InitializeGlobalENS0_12DirectHandleINS0_14JSGlobalObjectEEENS2_INS0_10JSFunctionEEE
|
||||
_ZN2v88internal12_GLOBAL__N_121InitializeJSArrayMapsEPNS0_7IsolateENS0_12DirectHandleINS0_7ContextEEENS4_INS0_3MapEEE
|
||||
_ZN2v88internal12_GLOBAL__N_126SetConstructorInstanceTypeEPNS0_7IsolateENS0_12DirectHandleINS0_10JSFunctionEEENS0_12InstanceTypeE
|
||||
_ZN2v88internal12_GLOBAL__N_128InstallFunctionWithBuiltinIdEPNS0_7IsolateENS0_12DirectHandleINS0_8JSObjectEEEPKcNS0_7BuiltinEiNS_4base11StrongAliasINS0_17AdaptArgumentsTagEbEE
|
||||
_ZN2v88internal12_GLOBAL__N_125InstallTrueValuedPropertyEPNS0_7IsolateENS0_12DirectHandleINS0_8JSObjectEEEPKc
|
||||
_ZN2v88internal12_GLOBAL__N_118InstallToStringTagEPNS0_7IsolateENS0_12DirectHandleINS0_8JSObjectEEENS4_INS0_6StringEEE
|
||||
@@ -12309,7 +12277,6 @@ _ZN2v88internal12_GLOBAL__N_119SimpleInstallGetterEPNS0_7IsolateENS0_12DirectHan
|
||||
_ZN2v84base19TemplateHashMapImplIPvS2_NS0_18KeyEqualityMatcherIS2_EENS0_23DefaultAllocationPolicyEE6ResizeEv
|
||||
_ZN2v88internal11GCExtension25GetNativeFunctionTemplateEPNS_7IsolateENS_5LocalINS_6StringEEE
|
||||
_ZN2v88internal11GCExtension2GCERKNS_20FunctionCallbackInfoINS_5ValueEEE
|
||||
_ZN2v88internal12_GLOBAL__N_17AsyncGC11RunInternalEv
|
||||
_ZThn32_N2v88internal12_GLOBAL__N_17AsyncGCD1Ev
|
||||
_ZThn32_N2v88internal12_GLOBAL__N_17AsyncGCD0Ev
|
||||
_ZN2v88internal12HeapProfilerC2EPNS0_4HeapE
|
||||
@@ -12416,8 +12383,6 @@ _ZN2v88internal19AllocationTraceTreeC1Ev
|
||||
_ZN2v88internal17AllocationTracker12FunctionInfoC2Ev
|
||||
_ZN2v88internal17AllocationTracker12FunctionInfoC1Ev
|
||||
_ZN2v88internal17AddressToTraceMap11RemoveRangeEmm
|
||||
_ZNK2v88internal19CppGraphBuilderImpl20IsReachableFromStackERKN5cppgc8internal16HeapObjectHeaderE
|
||||
_ZN2v88internal20GraphBuildingVisitorD2Ev
|
||||
_ZN2v88internal20GraphBuildingVisitorD0Ev
|
||||
_ZN2v88internal20GraphBuildingVisitor5VisitEPKvN5cppgc15TraceDescriptorE
|
||||
_ZN2v88internal20GraphBuildingVisitor9VisitWeakEPKvN5cppgc15TraceDescriptorEPFvRKNS4_14LivenessBrokerES3_ES3_
|
||||
@@ -12473,7 +12438,6 @@ _ZN2v84base11SmallVectorIPNS_8internal9LocalHeapELm4ENSt4__Cr9allocatorIS4_EEE4G
|
||||
_ZN2v84base11SmallVectorIPNS_8internal9LocalHeapELm4ENSt4__Cr9allocatorIS4_EEE4GrowEm
|
||||
_ZN4heap4base5Stack24SetMarkerAndCallbackImplIZN2v88internal9LocalHeap18ExecuteWhileParkedIZNS4_16IsolateSafepoint9LockMutexEPS5_E3$_0EEvT_EUlvE_EEvPS1_PvPKv
|
||||
_ZN4heap4base5Stack43SetMarkerForBackgroundThreadAndCallbackImplIZN2v88internal9LocalHeap18ExecuteWhileParkedIZNS4_16IsolateSafepoint9LockMutexEPS5_E3$_0EEvT_EUlvE_EEvPS1_PvPKv
|
||||
_ZNSt4__Cr12__hash_tableINS_17__hash_value_typeIPN2v88internal20SamplingHeapProfiler6SampleENS_10unique_ptrIS5_NS_14default_deleteIS5_EEEEEENS_22__unordered_map_hasherIS6_NS_4pairIKS6_SA_EENS_4hashIS6_EENS_8equal_toIS6_EEEENS_21__unordered_map_equalIS6_SF_SJ_SH_EENS_9allocatorISF_EEE6removeB9sqn240000ENS_21__hash_const_iteratorIPNS_11__hash_nodeISB_PvEEEE
|
||||
_ZNSt4__Cr5dequeIN2v817AllocationProfile4NodeENS_9allocatorIS3_EEE19__add_back_capacityB9sqn240000Ev
|
||||
_ZNSt4__Cr14__split_bufferIPN2v817AllocationProfile4NodeENS_9allocatorIS4_EENS_29__split_buffer_pointer_layoutEE12emplace_backB9sqn240000IJRS4_EEEvDpOT_
|
||||
_ZNSt4__Cr14__split_bufferIPN2v817AllocationProfile4NodeENS_9allocatorIS4_EENS_29__split_buffer_pointer_layoutEE12emplace_backB9sqn240000IJS4_EEEvDpOT_
|
||||
@@ -12488,6 +12452,7 @@ _ZN2v88internal16FileOutputStreamD0Ev
|
||||
_ZN2v812OutputStream12GetChunkSizeEv
|
||||
_ZN2v88internal26ExternalizeStringExtension11BuildSourceEPcm
|
||||
_ZN2v88internal26ExternalizeStringExtension25GetNativeFunctionTemplateEPNS_7IsolateENS_5LocalINS_6StringEEE
|
||||
_ZN2v88internal26ExternalizeStringExtension11ExternalizeERKNS_20FunctionCallbackInfoINS_5ValueEEE
|
||||
_ZN2v88internal19StatisticsExtension11GetCountersERKNS_20FunctionCallbackInfoINS_5ValueEEE
|
||||
_ZN2v88internal19StatisticsExtensionD0Ev
|
||||
_ZN2v88internal23TriggerFailureExtension25GetNativeFunctionTemplateEPNS_7IsolateENS_5LocalINS_6StringEEE
|
||||
@@ -12503,12 +12468,6 @@ _ZN2v88internal18ScriptContextTable3AddEPNS0_7IsolateENS0_6HandleIS1_EENS0_12Dir
|
||||
_ZN2v88internal7Context10InitializeEPNS0_7IsolateE
|
||||
_ZN2v88internal18ScriptContextTable6LookupENS0_12DirectHandleINS0_6StringEEEPNS0_20VariableLookupResultE
|
||||
_ZNK2v88internal7Context22is_declaration_contextEv
|
||||
_ZNK2v88internal7Context19declaration_contextEv
|
||||
_ZNK2v88internal7Context15closure_contextEv
|
||||
_ZNK2v88internal7Context16extension_objectEv
|
||||
_ZNK2v88internal7Context18extension_receiverEv
|
||||
_ZNK2v88internal7Context6moduleEv
|
||||
_ZN2v88internal7Context6LookupENS0_6HandleIS1_EENS2_INS0_6StringEEENS0_18ContextLookupFlagsEPiPNS0_18PropertyAttributesEPNS0_18InitializationFlagEPNS0_12VariableModeEPb
|
||||
_ZN2v88internal7Context3GetENS0_12DirectHandleIS1_EEiPNS0_7IsolateE
|
||||
_ZN2v88internal7Context3SetENS0_12DirectHandleIS1_EEiNS2_INS0_6ObjectEEEPNS0_7IsolateE
|
||||
_ZN2v88internal11ContextCell13set_smi_valueENS0_6TaggedINS0_3SmiEEE
|
||||
@@ -12542,13 +12501,6 @@ _ZN2v812_GLOBAL__N_131WebAssemblyInstantiateStreamingERKNS_20FunctionCallbackInf
|
||||
_ZN2v88internal6WasmJs20InstallMemoryControlEPNS0_7IsolateENS0_12DirectHandleINS0_13NativeContextEEENS4_INS0_8JSObjectEEE
|
||||
_ZN2v88internal6WasmJs27InstallJSPromiseIntegrationEPNS0_7IsolateENS0_12DirectHandleINS0_13NativeContextEEENS4_INS0_8JSObjectEEE
|
||||
_ZN2v812_GLOBAL__N_120WebAssemblyPromisingERKNS_20FunctionCallbackInfoINS_5ValueEEE
|
||||
_ZN2v88internal6WasmJs30CompileTimeImportsFromArgumentENS0_12DirectHandleINS0_6ObjectEEEPNS0_7IsolateENS0_4wasm19WasmEnabledFeaturesE
|
||||
_ZNSt4__Cr10shared_ptrIN2v88internal4wasm25CompilationResultResolverEED2Ev
|
||||
_ZN2v812_GLOBAL__N_112_GLOBAL__N_124AsyncCompilationResolverC2EPNS_7IsolateENS_5LocalINS_7ContextEEENS5_INS_7Promise8ResolverEEE
|
||||
_ZN2v88internal7Isolate14native_contextEv
|
||||
_ZN2v812_GLOBAL__N_130GetAndCopyFirstArgumentAsBytesERKNS_20FunctionCallbackInfoINS_5ValueEEEmPNS_8internal4wasm12ErrorThrowerE
|
||||
_ZN2v812_GLOBAL__N_112_GLOBAL__N_124AsyncCompilationResolver22OnCompilationSucceededENS_8internal12DirectHandleINS3_16WasmModuleObjectEEE
|
||||
_ZN2v812_GLOBAL__N_112_GLOBAL__N_124AsyncCompilationResolver19OnCompilationFailedENS_8internal12DirectHandleINS3_5UnionIJNS3_3SmiENS3_10HeapNumberENS3_6BigIntENS3_6StringENS3_6SymbolENS3_7BooleanENS3_4NullENS3_9UndefinedENS3_10JSReceiverEEEEEE
|
||||
_ZNSt4__Cr19__partial_sort_implB9sqn240000INS_17_ClassicAlgPolicyERZN2v88internal4wasm17LiftoffStackSlots15SortInPushOrderEvEUlRKNS5_4SlotES8_E_PS6_SB_EET1_SC_SC_T2_OT0_
|
||||
_ZN2v88internal4wasm12ParallelMove15TransferToStackEiRKNS1_15LiftoffVarStateE
|
||||
_ZN2v88internal4wasm12ParallelMove12ExecuteMovesEv
|
||||
@@ -12639,6 +12591,7 @@ _ZN2v88internal14MacroAssembler9Cvtlsi2ssENS0_11XMMRegisterENS0_7OperandE
|
||||
_ZN2v88internal14MacroAssembler9Cvtqsi2ssENS0_11XMMRegisterENS0_8RegisterE
|
||||
_ZN2v88internal14MacroAssembler9Cvtqsi2ssENS0_11XMMRegisterENS0_7OperandE
|
||||
_ZN2v88internal14MacroAssembler9Cvtqsi2sdENS0_11XMMRegisterENS0_8RegisterE
|
||||
_ZN2v88internal14MacroAssembler9Cvtqsi2sdENS0_11XMMRegisterENS0_7OperandE
|
||||
_ZN2v88internal14MacroAssembler10Cvttsd2uiqENS0_8RegisterENS0_7OperandEPNS0_5LabelE
|
||||
_ZN2v88internal14MacroAssembler10Cvttsd2uiqENS0_8RegisterENS0_11XMMRegisterEPNS0_5LabelE
|
||||
_ZN2v88internal14MacroAssembler9Cvttsd2uiENS0_8RegisterENS0_7OperandEPNS0_5LabelE
|
||||
@@ -12658,7 +12611,6 @@ _ZN2v88internal14MacroAssembler9I64x2ShrSENS0_11XMMRegisterES2_NS0_8RegisterES2_
|
||||
_ZN2v88internal14MacroAssembler8I64x2MulENS0_11XMMRegisterES2_S2_S2_S2_
|
||||
_ZN2v88internal14MacroAssembler11I8x16PopcntENS0_11XMMRegisterES2_NS0_8RegisterES2_S2_
|
||||
_ZN2v88internal20SharedMacroAssemblerINS0_14MacroAssemblerEE19I8x16PopcntPreAvx10ENS0_11XMMRegisterES4_S4_S4_NS0_8RegisterE
|
||||
_ZN2v88internal14MacroAssembler9F64x4QfmsENS0_11YMMRegisterES2_S2_S2_S2_
|
||||
_ZN2v88internal14MacroAssembler22I32x8DotI8x32I7x32AddSENS0_11YMMRegisterES2_S2_S2_S2_S2_
|
||||
_ZN2v88internal14MacroAssembler16I32x8TruncF32x8UENS0_11YMMRegisterES2_S2_S2_
|
||||
_ZN2v88internal14MacroAssembler5NegpdENS0_11YMMRegisterES2_S2_
|
||||
@@ -12757,7 +12709,6 @@ _ZN2v88internal9Accessors20FunctionGetArgumentsEPNS0_15JavaScriptFrameEi
|
||||
_ZN2v88internal12_GLOBAL__N_117GetFrameArgumentsEPNS0_7IsolateEPNS0_28JavaScriptStackFrameIteratorEi
|
||||
_ZN2v88internal9Accessors26GetLegacyFunctionArgumentsEPNS0_7IsolateENS0_12DirectHandleINS0_10JSFunctionEEE
|
||||
_ZN2v88internal9Accessors23GetLegacyFunctionCallerEPNS0_7IsolateENS0_12DirectHandleINS0_10JSFunctionEEE
|
||||
_ZN2v88internal8compiler10turboshaft10OperationTINS2_22NewArgumentsElementsOpEE18PrintOptionsHelperIJNS0_19CreateArgumentsTypeEiEJLm0ELm1EEEEvRNSt4__Cr13basic_ostreamIcNS8_11char_traitsIcEEEERKNS8_5tupleIJDpT_EEENS8_16integer_sequenceImJXspT0_EEEE
|
||||
_ZN2v88internal8compiler10turboshaft10OperationTINS2_10NewArrayOpEE18PrintOptionsHelperIJNS4_4KindENS0_14AllocationTypeEEJLm0ELm1EEEEvRNSt4__Cr13basic_ostreamIcNS9_11char_traitsIcEEEERKNS9_5tupleIJDpT_EEENS9_16integer_sequenceImJXspT0_EEEE
|
||||
_ZN2v88internal8compiler10turboshaft10OperationTINS2_18StringComparisonOpEE18PrintOptionsHelperIJNS4_4KindEEJLm0EEEEvRNSt4__Cr13basic_ostreamIcNS8_11char_traitsIcEEEERKNS8_5tupleIJDpT_EEENS8_16integer_sequenceImJXspT0_EEEE
|
||||
_ZN2v88internal8compiler10turboshaft10OperationTINS2_32TransitionAndStoreArrayElementOpEE18PrintOptionsHelperIJNS4_4KindENS0_11MaybeHandleINS0_3MapEEESA_EJLm0ELm1ELm2EEEEvRNSt4__Cr13basic_ostreamIcNSB_11char_traitsIcEEEERKNSB_5tupleIJDpT_EEENSB_16integer_sequenceImJXspT0_EEEE
|
||||
@@ -12800,7 +12751,6 @@ _GLOBAL__I_000100
|
||||
_ZN2v88internal8compiler10turboshaftlsERNSt4__Cr13basic_ostreamIcNS3_11char_traitsIcEEEENS2_27MaybeRegisterRepresentationE
|
||||
_ZN2v88internal8compiler10turboshaftlsERNSt4__Cr13basic_ostreamIcNS3_11char_traitsIcEEEENS2_20MemoryRepresentationE
|
||||
_ZN2v88internal8compiler10turboshaft8WordTypeILm32EE5RangeEjjPNS0_4ZoneE
|
||||
_ZNK2v88internal8compiler10turboshaft4Type14AllocateOnHeapEPNS0_7FactoryE
|
||||
_ZN2v84base11SmallVectorIjLm8ENSt4__Cr9allocatorIjEEE11FreeStorageEv
|
||||
_ZN2v84base11SmallVectorIjLm8ENSt4__Cr9allocatorIjEEE18grow_and_push_backEj
|
||||
_ZN2v84base11SmallVectorIjLm8ENSt4__Cr9allocatorIjEEE4GrowEv
|
||||
@@ -12850,6 +12800,7 @@ _ZN2v88internal8compiler18WasmGraphAssembler6IsNullEPNS1_4NodeENS0_4wasm9ValueTy
|
||||
_ZN2v88internal8compiler18WasmGraphAssembler9IsNotNullEPNS1_4NodeENS0_4wasm9ValueTypeE
|
||||
_ZN2v88internal8compiler18WasmGraphAssembler13AssertNotNullEPNS1_4NodeENS0_4wasm9ValueTypeENS1_6TrapIdE
|
||||
_ZN2v88internal8compiler18WasmGraphAssembler20WasmAnyConvertExternEPNS1_4NodeE
|
||||
_ZN2v88internal8compiler18WasmGraphAssembler20WasmExternConvertAnyEPNS1_4NodeE
|
||||
_ZZN2v88internal6maglev12_GLOBAL__N_130GenerateTransitionElementsKindINS1_32TransitionElementsKindOrCheckMapEEEvPNS1_15MaglevAssemblerEPT_NS0_8RegisterES9_NS_4base6VectorIKNS0_8compiler6MapRefEEESD_NS1_12ZoneLabelRefENSt4__Cr8optionalIS9_EEENUlS6_S9_S9_NS1_16RegisterSnapshotESD_bSG_SJ_E_8__invokeES6_S9_S9_SK_SD_bSG_SJ_
|
||||
_ZN2v88internal6maglev6detail20DeferredCodeInfoImplIZNS1_12_GLOBAL__N_130GenerateTransitionElementsKindINS1_32TransitionElementsKindOrCheckMapEEEvPNS1_15MaglevAssemblerEPT_NS0_8RegisterESB_NS_4base6VectorIKNS0_8compiler6MapRefEEESF_NS1_12ZoneLabelRefENSt4__Cr8optionalISB_EEEUlS8_SB_SB_NS1_16RegisterSnapshotESF_bSI_SL_E_E8GenerateES8_
|
||||
_ZN2v88internal6maglev15MaglevAssembler13GetDeoptLabelINS1_32TransitionElementsKindOrCheckMapEEEPNS0_5LabelEPT_NS0_16DeoptimizeReasonE
|
||||
@@ -12872,7 +12823,6 @@ _ZN2v88internal11interpreter20StoreLookupSlotFlags15GetLanguageModeEh
|
||||
_ZN2v88internal11interpreter20StoreLookupSlotFlags20IsLookupHoistingModeEh
|
||||
_ZN2v88internal6maglev15MaglevAssembler8AllocateENS1_16RegisterSnapshotENS0_8RegisterEiNS0_14AllocationTypeENS0_19AllocationAlignmentE
|
||||
_ZN2v88internal6maglev15MaglevAssembler8AllocateENS1_16RegisterSnapshotENS0_8RegisterES4_NS0_14AllocationTypeENS0_19AllocationAlignmentE
|
||||
_ZNSt4__Cr6vectorIhNS_9allocatorIhEEE18__insert_with_sizeB9sqn240000INS_17_ClassicAlgPolicyEPhS6_EENS_11__wrap_iterIS6_EENS7_IPKhEET0_T1_l
|
||||
_ZN2v84base11SmallVectorIhLm32ENSt4__Cr9allocatorIhEEE4GrowEm
|
||||
_ZN2v84base11SmallVectorIhLm32ENSt4__Cr9allocatorIhEEE11FreeStorageEv
|
||||
_ZN2v88internal7Version9GetStringENS_4base6VectorIcEE
|
||||
@@ -12899,6 +12849,7 @@ _ZN5cppgc8internal9NameTraitIN2v88internal4wasm23WasmMemoryMapDescriptorEE7GetNa
|
||||
_ZN2v88internal26Runtime_WasmWasmToJSObjectEiPmPNS0_7IsolateE
|
||||
_ZN2v88internal26Runtime_WasmJSToWasmObjectEiPmPNS0_7IsolateE
|
||||
_ZN2v88internal22Runtime_WasmMemoryGrowEiPmPNS0_7IsolateE
|
||||
_ZN2v88internal33Runtime_TrapHandlerThrowWasmErrorEiPmPNS0_7IsolateE
|
||||
_ZNSt4__Cr12__hash_tableINS_17__hash_value_typeIiN2v88internal6HandleINS3_6ObjectEEEEENS_22__unordered_map_hasherIiNS_4pairIKiS6_EENS_4hashIiEENS_8equal_toIiEEEENS_21__unordered_map_equalIiSB_SF_SD_EENS_9allocatorISB_EEE11__do_rehashB9sqn240000ILb1EEEvm
|
||||
_ZN2v88internal4wasm11StackMemory19GetCentralStackViewEPNS0_7IsolateE
|
||||
_ZN2v88internal4wasm11StackMemory23UpdateCentralStackLimitEPNS0_7IsolateE
|
||||
@@ -13082,7 +13033,6 @@ _ZN2v88internal30Runtime_CreateIterResultObjectEiPmPNS0_7IsolateE
|
||||
_ZN2v88internal26Runtime_CreateDataPropertyEiPmPNS0_7IsolateE
|
||||
_ZN2v88internal38Runtime_SetOwnPropertyIgnoreAttributesEiPmPNS0_7IsolateE
|
||||
_ZN2v88internal38Runtime_GetOwnPropertyDescriptorObjectEiPmPNS0_7IsolateE
|
||||
_ZN2v88internal27Runtime_SwissTableFindEntryEiPmPNS0_7IsolateE
|
||||
_ZN2v88internal24Runtime_SwissTableUpdateEiPmPNS0_7IsolateE
|
||||
_ZN2v88internal24Runtime_SwissTableDeleteEiPmPNS0_7IsolateE
|
||||
_ZN2v88internal24Runtime_SwissTableEqualsEiPmPNS0_7IsolateE
|
||||
@@ -13095,7 +13045,6 @@ _ZN2v88internal40Runtime_CheckFastIterableToListPrototypeEiPmPNS0_7IsolateE
|
||||
_ZN2v88internal11PropertyKeyC2INS0_6ObjectENS0_6HandleEQsr3stdE16is_convertible_vIT0_IT_ENS0_12DirectHandleIS6_EEEEEPNS0_7IsolateES7_
|
||||
_ZN2v88internal12_GLOBAL__N_144CollectPrivateMethodsAndAccessorsFromContextEPNS0_7IsolateENS0_12DirectHandleINS0_7ContextEEENS4_INS0_6StringEEENS0_6HandleINS0_6ObjectEEENS0_12IsStaticFlagEPNSt4__Cr6vectorINS0_13PrivateMemberENSD_9allocatorISF_EEEE
|
||||
_ZZNSt4__Cr6vectorIN2v88internal13PrivateMemberENS_9allocatorIS3_EEE12emplace_backB9sqn240000IJS3_EEERS3_DpOT_ENKUlvE0_clB9sqn240000Ev
|
||||
_ZN2v88internal12BackingStore21GrowWasmMemoryInPlaceEPNS0_7IsolateEmm
|
||||
_ZNK2v88internal12BackingStore29BroadcastSharedWasmMemoryGrowEPNS0_7IsolateE
|
||||
_ZN2v88internal26GlobalBackingStoreRegistry29BroadcastSharedWasmMemoryGrowEPNS0_7IsolateEPKNS0_12BackingStoreE
|
||||
_ZN2v88internal12BackingStore29RemoveSharedWasmMemoryObjectsEPNS0_7IsolateE
|
||||
@@ -13115,6 +13064,8 @@ _ZNSt4__Cr10__function8__policy13__large_cloneB9sqn240000IZN2v88internal12Backin
|
||||
_ZNSt4__Cr10__function8__policy15__large_destroyB9sqn240000IZN2v88internal12BackingStore35TryAllocateAndPartiallyCommitMemoryEPNS4_7IsolateEmmmmmNS4_14WasmMemoryFlagENS3_4base11StrongAliasINS4_13SharedFlagTagEbEENSA_INS4_18HasGuardRegionsTagEbEEE3$_0EEvPv
|
||||
_ZNSt4__Cr10__function13__policy_funcIFbvEE11__call_funcB9sqn240000IZN2v88internal12BackingStore35TryAllocateAndPartiallyCommitMemoryEPNS6_7IsolateEmmmmmNS6_14WasmMemoryFlagENS5_4base11StrongAliasINS6_13SharedFlagTagEbEENSC_INS6_18HasGuardRegionsTagEbEEE3$_1EEbPKNS0_16__policy_storageE
|
||||
_ZNSt4__Cr10__function8__policy13__large_cloneB9sqn240000IZN2v88internal12BackingStore35TryAllocateAndPartiallyCommitMemoryEPNS4_7IsolateEmmmmmNS4_14WasmMemoryFlagENS3_4base11StrongAliasINS4_13SharedFlagTagEbEENSA_INS4_18HasGuardRegionsTagEbEEE3$_1EEPvPKv
|
||||
_ZNSt4__Cr10__function8__policy15__large_destroyB9sqn240000IZN2v88internal12BackingStore35TryAllocateAndPartiallyCommitMemoryEPNS4_7IsolateEmmmmmNS4_14WasmMemoryFlagENS3_4base11StrongAliasINS4_13SharedFlagTagEbEENSA_INS4_18HasGuardRegionsTagEbEEE3$_1EEvPv
|
||||
_ZNSt4__Cr12__hash_tableINS_17__hash_value_typeIPKvNS_8weak_ptrIN2v88internal12BackingStoreEEEEENS_22__unordered_map_hasherIS3_NS_4pairIKS3_S8_EENS_4hashIS3_EENS_8equal_toIS3_EEEENS_21__unordered_map_equalIS3_SD_SH_SF_EENS_9allocatorISD_EEE4findB9sqn240000IS3_EENS_15__hash_iteratorIPNS_11__hash_nodeIS9_PvEEEERKT_
|
||||
_ZN2v88internal42Builtin_AsyncDisposableStackPrototypeAdoptEiPmPNS0_7IsolateE
|
||||
_ZN2v88internal42Builtin_AsyncDisposableStackPrototypeDeferEiPmPNS0_7IsolateE
|
||||
_ZN2v88internal41Builtin_AsyncDisposableStackPrototypeMoveEiPmPNS0_7IsolateE
|
||||
@@ -13189,6 +13140,7 @@ _ZN2v88internal10JsonParserIhE14BuildJsonArrayEm
|
||||
_ZN2v84base11SmallVectorINS_8internal6HandleINS2_6ObjectEEELm16ENSt4__Cr9allocatorIS5_EEE6resizeEmQsr3stdE21default_initializableIT_E
|
||||
_ZN2v88internal11HandleScope14CloseAndEscapeINS0_6ObjectENS0_6HandleEQsr3stdE16is_convertible_vIT0_IT_ENS0_12DirectHandleIS6_EEEEES7_S7_
|
||||
_ZN2v88internal10JsonParserIhE15BuildJsonObjectILb0EEENS0_6HandleINS0_8JSObjectEEERKNS2_16JsonContinuationENS0_12DirectHandleINS0_3MapEEE
|
||||
_ZN2v84base11SmallVectorINS_8internal12JsonPropertyELm16ENSt4__Cr9allocatorIS3_EEE6resizeEmQsr3stdE21default_initializableIT_E
|
||||
_ZN2v88internal21JsonParseInternalizer23InternalizeJsonPropertyILNS1_11ReviverModeE1EEENS0_11MaybeHandleINS0_6ObjectEEENS0_12DirectHandleINS0_10JSReceiverEEENS7_INS0_6StringEEES6_NS7_IS5_EE
|
||||
_ZN2v88internal21JsonParseInternalizer15RecurseAndApplyILNS1_11ReviverModeE0EEEbNS0_6HandleINS0_10JSReceiverEEENS4_INS0_6StringEEENS4_INS0_6ObjectEEESA_
|
||||
_ZN2v84base11SmallVectorINS_8internal6HandleINS2_6ObjectEEELm16ENSt4__Cr9allocatorIS5_EEE11FreeStorageEv
|
||||
@@ -13231,7 +13183,6 @@ _ZN2v88internal15JsonStringifierC2EPNS0_7IsolateE
|
||||
_ZN2v88internal15JsonStringifierC1EPNS0_7IsolateE
|
||||
_ZN2v88internal15JsonStringifier9StringifyENS0_6HandleINS0_5UnionIJNS0_3SmiENS0_10HeapNumberENS0_6BigIntENS0_6StringENS0_6SymbolENS0_7BooleanENS0_4NullENS0_9UndefinedENS0_10JSReceiverEEEEEESE_NS2_INS0_6ObjectEEE
|
||||
_ZN2v88internal15JsonStringifier18InitializeReplacerENS0_6HandleINS0_5UnionIJNS0_3SmiENS0_10HeapNumberENS0_6BigIntENS0_6StringENS0_6SymbolENS0_7BooleanENS0_4NullENS0_9UndefinedENS0_10JSReceiverEEEEEE
|
||||
_ZN2v88internal43Builtin_ObjectPrototypePropertyIsEnumerableEiPmPNS0_7IsolateE
|
||||
_ZN2v88internal30Builtin_ObjectDefinePropertiesEiPmPNS0_7IsolateE
|
||||
_ZN2v88internal28Builtin_ObjectDefinePropertyEiPmPNS0_7IsolateE
|
||||
_ZN2v88internal26Builtin_ObjectDefineGetterEiPmPNS0_7IsolateE
|
||||
@@ -13246,7 +13197,6 @@ _ZN2v88internal22Builtin_ObjectIsFrozenEiPmPNS0_7IsolateE
|
||||
_ZN2v88internal22Builtin_ObjectIsSealedEiPmPNS0_7IsolateE
|
||||
_ZN2v88internal39Builtin_ObjectGetOwnPropertyDescriptorsEiPmPNS0_7IsolateE
|
||||
_ZN2v88internal18Builtin_ObjectSealEiPmPNS0_7IsolateE
|
||||
_ZN2v88internal12CppGCManagedIN6icu_7813BreakIteratorEE6CreateEPNS0_7IsolateEmNSt4__Cr10shared_ptrIS3_EENS0_14AllocationTypeE
|
||||
_ZN2v88internal11JSSegmenter15ResolvedOptionsEPNS0_7IsolateENS0_12DirectHandleIS1_EE
|
||||
_ZN2v88internal6detail10DestructorIN6icu_7813BreakIteratorEEEvPv
|
||||
_ZNSt4__Cr20__shared_ptr_pointerB9sqn240000IPN6icu_7813BreakIteratorENS_14default_deleteIS2_EENS_9allocatorIS2_EEED0Ev
|
||||
@@ -13281,6 +13231,7 @@ _ZN2v88internal17StartupSerializerC1EPNS0_7IsolateENS_4base5FlagsINS0_8Snapshot1
|
||||
_ZN2v88internal17StartupSerializerD2Ev
|
||||
_ZN2v88internal17StartupSerializerD1Ev
|
||||
_ZN2v88internal17StartupSerializerD0Ev
|
||||
_ZN2v88internal17StartupSerializer19SerializeObjectImplENS0_6HandleINS0_10HeapObjectEEENS0_22SerializerDeserializer8SlotTypeE
|
||||
_ZN2v88internal17ContextSerializer33SerializeObjectWithEmbedderFieldsINS0_17EmbedderDataArrayEPFNS_11StartupDataEibNS_28SerializeContextDataCallbackENS_5LocalINS_7ContextEEEES5_S8_EEvNS0_6HandleIT_EEiT0_T1_T2_
|
||||
_ZNSt4__Cr6vectorIbNS_9allocatorIbEEE9push_backB9sqn240000ERKb
|
||||
_ZZNSt4__Cr6vectorIN2v811StartupDataENS_9allocatorIS2_EEE12emplace_backB9sqn240000IJS2_EEERS2_DpOT_ENKUlvE0_clB9sqn240000Ev
|
||||
@@ -13291,8 +13242,6 @@ _ZN2v88internal10MathRandom12ResetContextENS0_6TaggedINS0_7ContextEEE
|
||||
_ZN2v88internal10MathRandom29InitializeAndMaybeRefillCacheEPNS0_7IsolateEm
|
||||
_ZN2v88internal21DescriptorLookupCache5ClearEv
|
||||
_ZN2v88internal17ReadOnlyPromotion7PromoteEPNS0_7IsolateERKNS0_14SafepointScopeERKNS0_25PerThreadAssertScopeEmptyILb0EJLNS0_19PerThreadAssertTypeE1ELS8_2EEEE
|
||||
_ZN2v88internal12_GLOBAL__N_121ReadOnlyPromotionImpl21UpdatePointersVisitorD0Ev
|
||||
_ZN2v88internal12_GLOBAL__N_121ReadOnlyPromotionImpl21UpdatePointersVisitor13VisitPointersENS0_6TaggedINS0_10HeapObjectEEENS0_20CompressedObjectSlotES7_
|
||||
_ZN2v88internal12_GLOBAL__N_121ReadOnlyPromotionImpl21UpdatePointersVisitor13VisitPointersENS0_6TaggedINS0_10HeapObjectEEENS0_25CompressedMaybeObjectSlotES7_
|
||||
_ZN2v88internal12_GLOBAL__N_121ReadOnlyPromotionImpl21UpdatePointersVisitor29VisitInstructionStreamPointerENS0_6TaggedINS0_4CodeEEENS0_27OffHeapCompressedObjectSlotINS0_29ExternalCodeCompressionSchemeEEE
|
||||
_ZN2v88internal12_GLOBAL__N_121ReadOnlyPromotionImpl21UpdatePointersVisitor20VisitExternalPointerENS0_6TaggedINS0_10HeapObjectEEENS0_19ExternalPointerSlotE
|
||||
@@ -13486,7 +13435,6 @@ _ZN2v88internal8baseline16BaselineCompiler21VisitTestUndetectableEv
|
||||
_ZN2v88internal8baseline16BaselineCompiler13VisitTestNullEv
|
||||
_ZN2v88internal8baseline16BaselineCompiler18VisitTestUndefinedEv
|
||||
_ZN2v88internal8baseline16BaselineCompiler15VisitTestTypeOfEv
|
||||
_ZN2v88internal8baseline16BaselineCompiler21VisitGetNamedPropertyEv
|
||||
_ZN2v88internal8baseline16BaselineCompiler30VisitGetNamedPropertyFromSuperEv
|
||||
_ZN2v88internal8baseline16BaselineCompiler21VisitGetKeyedPropertyEv
|
||||
_ZN2v88internal8baseline16BaselineCompiler31VisitGetEnumeratedKeyedPropertyEv
|
||||
@@ -13501,6 +13449,7 @@ _ZN2v88internal8baseline16BaselineCompiler22VisitStaInArrayLiteralEv
|
||||
_ZN2v88internal8baseline16BaselineCompiler36VisitDefineKeyedOwnPropertyInLiteralEv
|
||||
_ZN2v88internal8baseline16BaselineCompiler27VisitSetPrototypePropertiesEv
|
||||
_ZN2v88internal8baseline16BaselineCompiler20VisitSetPrivateFieldEv
|
||||
_ZN2v88internal8baseline16BaselineCompiler8VisitAddEv
|
||||
_ZN2v88internal8baseline16BaselineCompiler41VisitFindNonDefaultConstructorOrConstructEv
|
||||
_ZN2v88internal8baseline16BaselineCompiler20VisitCallAnyReceiverEv
|
||||
_ZN2v88internal8baseline16BaselineCompiler17VisitCallPropertyEv
|
||||
@@ -13594,6 +13543,7 @@ _ZN2v88internal8baseline17BaselineAssembler17LdaModuleVariableENS0_8RegisterEij
|
||||
_ZN2v88internal8baseline16BaselineCompiler11CallRuntimeIJNS0_6TaggedINS0_3SmiEEEEEEvNS0_7Runtime10FunctionIdEDpT_
|
||||
_ZN2v88internal8baseline17BaselineAssembler17StaModuleVariableENS0_8RegisterES3_ij
|
||||
_ZN2v88internal8baseline16BaselineCompiler11CallRuntimeIJNS0_11interpreter8RegisterES5_NS0_8RegisterENS0_6TaggedINS0_3SmiEEENS0_7OperandENS7_INS0_11TaggedIndexEEEEEEvNS0_7Runtime10FunctionIdEDpT_
|
||||
_ZN2v88internal8baseline16BaselineCompiler11CallBuiltinILNS0_7BuiltinE545EJNS0_8RegisterENS0_6TaggedINS0_3SmiEEEiEEEvDpT0_
|
||||
_ZN2v88internal8baseline16BaselineCompiler9BuildCallILNS0_19ConvertReceiverModeE1EJNS0_11interpreter8RegisterES6_EEEvjjDpT0_
|
||||
_ZN2v88internal8baseline16BaselineCompiler9BuildCallILNS0_19ConvertReceiverModeE1EJNS0_11interpreter8RegisterES6_S6_EEEvjjDpT0_
|
||||
_ZN2v88internal8baseline16BaselineCompiler9BuildCallILNS0_19ConvertReceiverModeE0EJNS0_9RootIndexENS0_11interpreter12RegisterListEEEEvjjDpT0_
|
||||
@@ -14313,8 +14263,6 @@ _ZN2v88internal21LazyCompileDispatcherD1Ev
|
||||
_ZN2v88internal21LazyCompileDispatcher7EnqueueEPNS0_12LocalIsolateENS0_6HandleINS0_18SharedFunctionInfoEEENSt4__Cr10unique_ptrINS0_20Utf16CharacterStreamENS7_14default_deleteIS9_EEEE
|
||||
_ZNK2v88internal21LazyCompileDispatcher10IsEnqueuedENS0_12DirectHandleINS0_18SharedFunctionInfoEEE
|
||||
_ZN2v88internal21LazyCompileDispatcher31WaitForJobIfRunningOnBackgroundEPNS1_3JobERKNS_4base9LockGuardINS4_5MutexEEE
|
||||
_ZN2v88internal21LazyCompileDispatcher7JobTask3RunEPNS_11JobDelegateE
|
||||
_ZNK2v88internal21LazyCompileDispatcher7JobTask17GetMaxConcurrencyEm
|
||||
_ZZNSt4__Cr6vectorIPN2v88internal21LazyCompileDispatcher3JobENS_9allocatorIS5_EEE12emplace_backB9sqn240000IJRKS5_EEERS5_DpOT_ENKUlvE0_clB9sqn240000Ev
|
||||
_ZNSt4__Cr6vectorIPN2v88internal21LazyCompileDispatcher3JobENS_9allocatorIS5_EEE20__throw_length_errorB9sqn240000Ev
|
||||
_ZNSt4__Cr10__function13__policy_funcIFvdEE11__call_funcB9sqn240000IZN2v88internal21LazyCompileDispatcher29ScheduleIdleTaskFromAnyThreadERKNS5_4base9LockGuardINS8_5MutexEEEE3$_0EEvPKNS0_16__policy_storageEd
|
||||
@@ -14350,11 +14298,6 @@ _ZN2v88internal38Runtime_StoreLookupSlot_SloppyHoistingEiPmPNS0_7IsolateE
|
||||
_ZN2v88internal47Runtime_StoreGlobalNoHoleCheckForReplLetOrConstEiPmPNS0_7IsolateE
|
||||
_ZN2v88internal12_GLOBAL__N_113DeclareGlobalEPNS0_7IsolateENS0_12DirectHandleINS0_14JSGlobalObjectEEENS0_6HandleINS0_6StringEEENS7_INS0_6ObjectEEENS0_18PropertyAttributesEbNS1_17RedeclarationTypeE
|
||||
_ZN2v88internal12_GLOBAL__N_117DeclareEvalHelperEPNS0_7IsolateENS0_6HandleINS0_6StringEEENS4_INS0_6ObjectEEE
|
||||
_ZN2v88internal13DependentCode26DeoptimizeDependencyGroupsINS0_9ScopeInfoEEEvPNS0_7IsolateENS0_6TaggedIT_EENS_4base5FlagsINS1_15DependencyGroupEjjEE
|
||||
_ZN2v88internal12_GLOBAL__N_118GetCallerArgumentsEPNS0_7IsolateE
|
||||
_ZN2v88internal12_GLOBAL__N_114LoadLookupSlotEPNS0_7IsolateENS0_6HandleINS0_6StringEEENS0_11ShouldThrowEPNS4_INS0_6ObjectEEE
|
||||
_ZN2v88internal12_GLOBAL__N_115StoreLookupSlotEPNS0_7IsolateENS0_6HandleINS0_7ContextEEENS4_INS0_6StringEEENS0_12DirectHandleINS0_6ObjectEEENS0_12LanguageModeENS0_18ContextLookupFlagsE
|
||||
_ZN2v88internal12StderrStreamD1Ev
|
||||
_ZN2v88internal12StderrStreamD0Ev
|
||||
_ZTv0_n24_N2v88internal12StderrStreamD1Ev
|
||||
_ZTv0_n24_N2v88internal12StderrStreamD0Ev
|
||||
@@ -14454,6 +14397,23 @@ _ZN2v88internal18PretenuringHandler39PretenureAllocationSiteOnNextCollectionENS0
|
||||
_ZN2v88internal18PretenuringHandler5resetEv
|
||||
_ZZNSt4__Cr12__hash_tableINS_17__hash_value_typeIN2v88internal6TaggedINS3_14AllocationSiteEEEmEENS_22__unordered_map_hasherIS6_NS_4pairIKS6_mEENS3_6Object6HasherENS_8equal_toIS6_EEEENS_21__unordered_map_equalIS6_SB_SF_SD_EENS_9allocatorISB_EEE16__emplace_uniqueB9sqn240000IJNS9_IS6_iEEEEENS9_INS_15__hash_iteratorIPNS_11__hash_nodeIS7_PvEEEEbEEDpOT_ENKUlRSA_OSN_E_clB9sqn240000ESY_SZ_
|
||||
_ZNSt4__Cr12__hash_tableINS_17__hash_value_typeIN2v88internal6TaggedINS3_14AllocationSiteEEEmEENS_22__unordered_map_hasherIS6_NS_4pairIKS6_mEENS3_6Object6HasherENS_8equal_toIS6_EEEENS_21__unordered_map_equalIS6_SB_SF_SD_EENS_9allocatorISB_EEE14__erase_uniqueB9sqn240000IS6_EEmRKT_
|
||||
_ZNSt4__Cr12__hash_tableINS_17__hash_value_typeIN2v88internal6TaggedINS3_14AllocationSiteEEEmEENS_22__unordered_map_hasherIS6_NS_4pairIKS6_mEENS3_6Object6HasherENS_8equal_toIS6_EEEENS_21__unordered_map_equalIS6_SB_SF_SD_EENS_9allocatorISB_EEE6removeB9sqn240000ENS_21__hash_const_iteratorIPNS_11__hash_nodeIS7_PvEEEE
|
||||
_ZNSt4__Cr10__function13__policy_funcIFvN2v88internal6TaggedINS3_14AllocationSiteEEEEE11__call_funcB9sqn240000IZNS3_18PretenuringHandler26ProcessPretenuringFeedbackEmE3$_0EEvPKNS0_16__policy_storageEOS6_
|
||||
_ZN2v88internal29Runtime_BigIntCompareToNumberEiPmPNS0_7IsolateE
|
||||
_ZN2v88internal29Runtime_BigIntCompareToStringEiPmPNS0_7IsolateE
|
||||
_ZN2v88internal27Runtime_BigIntEqualToBigIntEiPmPNS0_7IsolateE
|
||||
_ZN2v88internal27Runtime_BigIntEqualToNumberEiPmPNS0_7IsolateE
|
||||
_ZN2v88internal27Runtime_BigIntEqualToStringEiPmPNS0_7IsolateE
|
||||
_ZN2v88internal22Runtime_BigIntToNumberEiPmPNS0_7IsolateE
|
||||
_ZN2v88internal16Runtime_ToBigIntEiPmPNS0_7IsolateE
|
||||
_ZN2v88internal29Runtime_ToBigIntConvertNumberEiPmPNS0_7IsolateE
|
||||
_ZN2v88internal26Runtime_BigIntExponentiateEiPmPNS0_7IsolateE
|
||||
_ZN2v88internal21Runtime_BigIntUnaryOpEiPmPNS0_7IsolateE
|
||||
_ZN2v88internal34Runtime_ThrowUnsupportedSuperErrorEiPmPNS0_7IsolateE
|
||||
_ZN2v88internal40Runtime_ThrowConstructorNonCallableErrorEiPmPNS0_7IsolateE
|
||||
_ZN2v88internal33Runtime_ThrowStaticPrototypeErrorEiPmPNS0_7IsolateE
|
||||
_ZN2v88internal36Runtime_ThrowSuperAlreadyCalledErrorEiPmPNS0_7IsolateE
|
||||
_ZN2v88internal27Runtime_ThrowSuperNotCalledEiPmPNS0_7IsolateE
|
||||
_ZN2v88internal32Runtime_ThrowNotSuperConstructorEiPmPNS0_7IsolateE
|
||||
_ZN2v88internal19Runtime_DefineClassEiPmPNS0_7IsolateE
|
||||
_ZN2v88internal21Runtime_LoadFromSuperEiPmPNS0_7IsolateE
|
||||
@@ -14547,7 +14507,6 @@ _ZN2v88internal2IC22UpdateMegamorphicCacheENS0_12DirectHandleINS0_3MapEEENS2_INS
|
||||
_ZN2v88internal2IC20TryHealMonomorphicICERKNS0_17MaybeObjectHandleE
|
||||
_ZN2v88internal2IC8SetCacheENS0_12DirectHandleINS0_4NameEEERKNS0_17MaybeObjectHandleE
|
||||
_ZN2v88internal6LoadIC14ComputeHandlerEPNS0_14LookupIteratorE
|
||||
_ZN2v88internal11KeyedLoadIC17UpdateLoadElementENS0_12DirectHandleINS0_10HeapObjectEEENS0_19KeyedAccessLoadModeE
|
||||
_ZN2v88internal11KeyedLoadIC18LoadElementHandlerENS0_12DirectHandleINS0_3MapEEENS0_19KeyedAccessLoadModeENS0_17MaybeDirectHandleIS3_EE
|
||||
_ZN2v88internal12_GLOBAL__N_126AddOneReceiverMapIfMissingEPNS0_15MapsAndHandlersENS0_6HandleINS0_3MapEEE
|
||||
_ZN2v88internal11KeyedLoadIC30LoadElementPolymorphicHandlersEPNS0_15MapsAndHandlersES3_NS0_19KeyedAccessLoadModeE
|
||||
@@ -14574,7 +14533,6 @@ _ZN2v88internal12KeyedStoreIC18UpdateStoreElementENS0_6HandleINS0_3MapEEENS0_20K
|
||||
_ZN2v88internal12KeyedStoreIC19StoreElementHandlerENS0_12DirectHandleINS0_3MapEEENS0_20KeyedAccessStoreModeENS0_17MaybeDirectHandleINS0_5UnionIJNS0_3SmiENS0_4CellEEEEEE
|
||||
_ZN2v88internal12KeyedStoreIC31StoreElementPolymorphicHandlersEPNS0_15MapsAndHandlersENS0_20KeyedAccessStoreModeE
|
||||
_ZN2v88internal12KeyedStoreIC5StoreENS0_6HandleINS0_5UnionIJNS0_3SmiENS0_10HeapNumberENS0_6BigIntENS0_6StringENS0_6SymbolENS0_7BooleanENS0_4NullENS0_9UndefinedENS0_10JSReceiverEEEEEENS2_INS0_6ObjectEEENS0_12DirectHandleISF_EE
|
||||
_ZN2v88internal19Runtime_LoadIC_MissEiPmPNS0_7IsolateE
|
||||
_ZN2v88internal32Runtime_LoadIC_Miss_FromBaselineEiPmPNS0_7IsolateE
|
||||
_ZN2v88internal40Runtime_PatchLoadICUninitializedBaselineEiPmPNS0_7IsolateE
|
||||
_ZN2v88internal40Runtime_GetStringLengthAndUpdateFeedbackEiPmPNS0_7IsolateE
|
||||
@@ -14634,6 +14592,26 @@ _ZN2v88internal7ICStats5BeginEv
|
||||
_ZN2v88internal7ICStats3EndEv
|
||||
_ZN2v88internal7ICStats4DumpEv
|
||||
_ZNK2v88internal6ICInfo19AppendToTracedValueEPNS_7tracing11TracedValueE
|
||||
_ZN2v88internal27Runtime_VarargStackOverflowEiPmPNS0_7IsolateE
|
||||
_ZN2v88internal39Runtime_ThrowSymbolAsyncIteratorInvalidEiPmPNS0_7IsolateE
|
||||
_ZN2v88internal26Runtime_TerminateExecutionEiPmPNS0_7IsolateE
|
||||
_ZN2v88internal23Runtime_ThrowRangeErrorEiPmPNS0_7IsolateE
|
||||
_ZN2v88internal22Runtime_ThrowTypeErrorEiPmPNS0_7IsolateE
|
||||
_ZN2v88internal30Runtime_ThrowTypeErrorIfStrictEiPmPNS0_7IsolateE
|
||||
_ZN2v88internal39Runtime_ThrowInvalidTypedArrayAlignmentEiPmPNS0_7IsolateE
|
||||
_ZN2v88internal37Runtime_UnwindAndFindExceptionHandlerEiPmPNS0_7IsolateE
|
||||
_ZN2v88internal26Runtime_PropagateExceptionEiPmPNS0_7IsolateE
|
||||
_ZN2v88internal27Runtime_ThrowReferenceErrorEiPmPNS0_7IsolateE
|
||||
_ZN2v88internal42Runtime_ThrowAccessedUninitializedVariableEiPmPNS0_7IsolateE
|
||||
_ZN2v88internal16Runtime_NewErrorEiPmPNS0_7IsolateE
|
||||
_ZN2v88internal20Runtime_NewTypeErrorEiPmPNS0_7IsolateE
|
||||
_ZN2v88internal25Runtime_NewReferenceErrorEiPmPNS0_7IsolateE
|
||||
_ZN2v88internal32Runtime_ThrowInvalidStringLengthEiPmPNS0_7IsolateE
|
||||
_ZN2v88internal38Runtime_ThrowIteratorResultNotAnObjectEiPmPNS0_7IsolateE
|
||||
_ZN2v88internal31Runtime_ThrowThrowMethodMissingEiPmPNS0_7IsolateE
|
||||
_ZN2v88internal34Runtime_ThrowSymbolIteratorInvalidEiPmPNS0_7IsolateE
|
||||
_ZN2v88internal21Runtime_ThrowNoAccessEiPmPNS0_7IsolateE
|
||||
_ZN2v88internal27Runtime_ThrowNotConstructorEiPmPNS0_7IsolateE
|
||||
_ZN2v88internal30Runtime_ThrowTargetNonFunctionEiPmPNS0_7IsolateE
|
||||
_ZN2v88internal18Runtime_StackGuardEiPmPNS0_7IsolateE
|
||||
_ZN2v88internal36Runtime_HandleNoHeapWritesInterruptsEiPmPNS0_7IsolateE
|
||||
@@ -14771,7 +14749,6 @@ _ZN2v88internal27Runtime_CreatePrivateSymbolEiPmPNS0_7IsolateE
|
||||
_ZN2v88internal32Runtime_CreatePrivateBrandSymbolEiPmPNS0_7IsolateE
|
||||
_ZN2v88internal31Runtime_CreatePrivateNameSymbolEiPmPNS0_7IsolateE
|
||||
_ZN2v88internal31Runtime_SymbolDescriptiveStringEiPmPNS0_7IsolateE
|
||||
_ZN2v88internal65Runtime_JSFinalizationRegistryRegisterWeakCellWithUnregisterTokenEiPmPNS0_7IsolateE
|
||||
_ZN2v88internal33Runtime_JSWeakRefAddToKeptObjectsEiPmPNS0_7IsolateE
|
||||
_ZN2v88internal22JSFinalizationRegistry35RegisterWeakCellWithUnregisterTokenENS0_12DirectHandleIS1_EENS2_INS0_8WeakCellEEEPNS0_7IsolateE
|
||||
_ZN2v86bigint13ProcessorImpl20get_and_clear_statusEv
|
||||
@@ -14784,7 +14761,6 @@ _ZN2v86bigint9Processor11ModuloLargeERNS0_8RWDigitsERNS0_6DigitsES5_
|
||||
_ZN2v86bigint13ProcessorImpl21CachedMod_MakeInverseERNS0_6DigitsE
|
||||
_ZN2v86bigint9Processor21CachedMod_MakeInverseERNS0_6DigitsE
|
||||
_ZN2v86bigint13ProcessorImpl17MultiplyKaratsubaENS0_8RWDigitsENS0_6DigitsES3_
|
||||
_ZN2v84base6Bignum17AssignPowerUInt16Eti
|
||||
_ZN2v84base6Bignum21DivideModuloIntBignumERKS1_
|
||||
_ZN2v84base6Bignum13SubtractTimesERKS1_i
|
||||
_ZN2v84base6Bignum7CompareERKS1_S3_
|
||||
@@ -14968,6 +14944,7 @@ _ZN2v88internal9Scavenger25RememberPromotedEphemeronENS0_6TaggedINS0_18Ephemeron
|
||||
_ZNSt4__Cr6vectorINS_13unordered_mapIN2v88internal6TaggedINS3_10HeapObjectEEENS4_INS3_3MapEEENS3_6Object6HasherENS_8equal_toIS6_EENS_9allocatorINS_4pairIKS6_S8_EEEEEENSD_ISI_EEE12emplace_backB9sqn240000IJSI_EEERSI_DpOT_
|
||||
_ZN4heap4base8WorklistIPN2v88internal11MutablePageELt64EE5Local7PublishEv
|
||||
_ZN4heap4base8WorklistIN2v88internal9Scavenger24ScavengedObjectListEntryELt256EE5Local7PublishEv
|
||||
_ZN2v88internal9Scavenger20PromoteIfLargeObjectENS0_6TaggedINS0_10HeapObjectEEE
|
||||
_ZN2v88internal9Scavenger25EvacuateShortcutCandidateINS0_18FullHeapObjectSlotEEEN4heap4base18SlotCallbackResultENS0_6TaggedINS0_3MapEEET_NS7_INS0_10ConsStringEEENS_4base11StrongAliasINS0_17HeapObjectSizeTagEjEE
|
||||
_ZN2v88internal9Scavenger35EvacuateInPlaceInternalizableStringINS0_18FullHeapObjectSlotEEEN4heap4base18SlotCallbackResultENS0_6TaggedINS0_3MapEEET_NS7_INS0_6StringEEENS_4base11StrongAliasINS0_17HeapObjectSizeTagEjEENS0_12ObjectFieldsE
|
||||
_ZN2v88internal12_GLOBAL__N_124RememberedSetEntryNeededINS0_18FullHeapObjectSlotEEEN4heap4base18SlotCallbackResultEPNS0_4HeapET_
|
||||
@@ -15025,6 +15002,7 @@ _ZThn32_N2v88internal31FinalizationRegistryCleanupTaskD1Ev
|
||||
_ZThn32_N2v88internal31FinalizationRegistryCleanupTaskD0Ev
|
||||
_ZNSt4__Cr10__function13__policy_funcIFvN2v88internal6TaggedINS3_10HeapObjectEEENS3_20CompressedObjectSlotES6_EE11__call_funcB9sqn240000IZNS3_31FinalizationRegistryCleanupTask11RunInternalEvE3$_0EEvPKNS0_16__policy_storageEOS6_OS7_SG_
|
||||
_ZN2v88internal6String9VisitFlatINS0_16StringComparator5StateEEENS0_6TaggedINS0_10ConsStringEEEPT_NS5_IS1_EEjRKNS0_31SharedStringAccessGuardIfNeededE
|
||||
_ZN2v88internal16StringComparator6EqualsENS0_6TaggedINS0_6StringEEES4_RKNS0_31SharedStringAccessGuardIfNeededE
|
||||
_ZNSt4__Cr6vectorINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEENS4_IS6_EEE24__emplace_back_slow_pathB9sqn240000IJPcEEEPS6_DpOT_
|
||||
_ZN2v88internal7LogFile18CreateOutputHandleENSt4__Cr12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEE
|
||||
_ZN2v88internal7LogFileC2EPNS0_12V8FileLoggerENSt4__Cr12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEE
|
||||
@@ -15065,6 +15043,7 @@ _ZN2v87sampler13SignalHandler20IncreaseSamplerCountEv
|
||||
_ZN2v87sampler7Sampler4StopEv
|
||||
_ZN2v87sampler7Sampler8DoSampleEv
|
||||
_ZZNSt4__Cr6vectorIPN2v87sampler7SamplerENS_9allocatorIS4_EEE12emplace_backB9sqn240000IJRKS4_EEERS4_DpOT_ENKUlvE0_clB9sqn240000Ev
|
||||
_ZNSt4__Cr6vectorIPN2v87sampler7SamplerENS_9allocatorIS4_EEE20__throw_length_errorB9sqn240000Ev
|
||||
_ZN2v88internal13PerfJitLogger17LogWriteDebugInfoEPKNS0_4wasm8WasmCodeE
|
||||
_ZNK2v88internal4Code19unwinding_info_sizeEv
|
||||
_ZN2v88internal13PerfJitLogger13CodeMoveEventENS0_6TaggedINS0_17InstructionStreamEEES4_
|
||||
|
||||
+24
-11
@@ -452,6 +452,20 @@ pub fn deinit(self: *Frame) void {
|
||||
frame.deinit();
|
||||
}
|
||||
|
||||
// The Page outlives an iframe or popup that re-navigates: don't leave its
|
||||
// pointer state on this document's elements.
|
||||
const page = self.page;
|
||||
if (page.input_hover_target) |el| {
|
||||
if (el.ownerFrame(self) == self) {
|
||||
page.input_hover_target = null;
|
||||
}
|
||||
}
|
||||
if (page.input_pointer.down_target) |el| {
|
||||
if (el.ownerFrame(self) == self) {
|
||||
page.input_pointer.reset();
|
||||
}
|
||||
}
|
||||
|
||||
if (comptime lp.IS_DEBUG) {
|
||||
log.debug(.frame, "frame.deinit", .{ .url = self.url, .type = self._type });
|
||||
}
|
||||
@@ -479,8 +493,6 @@ pub fn deinit(self: *Frame) void {
|
||||
container.detach();
|
||||
}
|
||||
|
||||
const page = self.page;
|
||||
|
||||
if (self._queued_navigation) |qn| {
|
||||
qn.arena.release();
|
||||
}
|
||||
@@ -2671,10 +2683,9 @@ pub fn notifyNetworkAlmostIdle(self: *Frame) void {
|
||||
// called from the parser. Text-node merging is the parser's responsibility
|
||||
// (see Parser.appendTextChunk in src/browser/parser/Parser.zig); this is the
|
||||
// "insert this fully-formed node as a new last child of parent" entry point.
|
||||
pub fn appendNew(self: *Frame, parent: *Node, child: *Node) !void {
|
||||
pub fn appendNew(self: *Frame, parent: *Node, child: *Node, parent_root: ?*Node) !void {
|
||||
lp.assert(child._parent == null, "Frame.appendNew", .{});
|
||||
// opts is meaningless when from_parser (the first param) is true.
|
||||
try self._insertNodeRelative(true, parent, child, .append, .{});
|
||||
try self._insertNodeRelative(true, parent, child, .append, .{ .parser_root = parent_root });
|
||||
}
|
||||
|
||||
// called from the parser when the node and all its children have been added
|
||||
@@ -2994,6 +3005,8 @@ const InsertNodeOpts = struct {
|
||||
// the ready work itself once every node is in place, so an earlier
|
||||
// script observes its later siblings already inserted.
|
||||
run_ready: bool = true,
|
||||
// The parent's root (parser only, avoids having to look it up)
|
||||
parser_root: ?*Node = null,
|
||||
};
|
||||
pub fn insertNodeRelative(self: *Frame, parent: *Node, child: *Node, relative: InsertNodeRelative, opts: InsertNodeOpts) !void {
|
||||
return self._insertNodeRelative(false, parent, child, relative, opts);
|
||||
@@ -3066,14 +3079,14 @@ fn _insertNodeRelative(self: *Frame, comptime from_parser: bool, parent: *Node,
|
||||
}
|
||||
|
||||
if (child.is(Element)) |el| {
|
||||
// Invoke connectedCallback for custom elements during parsing.
|
||||
// For main document parsing we know nodes are connected (fast path);
|
||||
// for fragment parsing (innerHTML) we check connectivity.
|
||||
if (child.isConnected() or child.isInShadowTree()) {
|
||||
const root = opts.parser_root orelse parent.getRootNode(.{});
|
||||
if (idMapsForRoot(root)) |id_maps| {
|
||||
if (el.getId()) |id| {
|
||||
try self.addElementId(parent, el, id);
|
||||
try self.addElementIdWithMaps(id_maps, el, id);
|
||||
}
|
||||
if (rootIsConnected(root)) {
|
||||
try Element.Html.Custom.enqueueConnectedCallbackOnElement(true, el, self);
|
||||
}
|
||||
try Element.Html.Custom.enqueueConnectedCallbackOnElement(true, el, self);
|
||||
}
|
||||
}
|
||||
return;
|
||||
|
||||
+222
-48
@@ -622,19 +622,16 @@ fn rebuildIfDirty(self: *StyleManager) !void {
|
||||
pub fn isHidden(self: *StyleManager, el: *Element, options: CheckVisibilityOptions) bool {
|
||||
self.assertOwns(el);
|
||||
self.rebuildIfDirty() catch return false;
|
||||
if (!options.ancestors) {
|
||||
return self.visibilityProps(el).probe(.hidden, options);
|
||||
}
|
||||
return self.anyInChain(el, .hidden, options);
|
||||
return self.visibilityProps(el).isHidden(options);
|
||||
}
|
||||
|
||||
/// Computed display:none for a single element (own property, no ancestor walk).
|
||||
/// The element's own display:none. Use `isHidden` to see if it's hidden by an ancestor
|
||||
/// Honors the UA stylesheet rules per HTML Rendering §15.3.1 "Hidden elements".
|
||||
pub fn hasDisplayNone(self: *StyleManager, el: *Element) bool {
|
||||
return self.display(el) == .none;
|
||||
}
|
||||
|
||||
/// Own property, no ancestor walk; honors the UA hidden-element rules.
|
||||
/// Own property, not inherited; honors the UA hidden-element rules.
|
||||
pub fn display(self: *StyleManager, el: *Element) Display {
|
||||
self.assertOwns(el);
|
||||
self.rebuildIfDirty() catch return .other;
|
||||
@@ -652,20 +649,19 @@ pub fn hasAuthorDisplayNone(self: *StyleManager, el: *Element) bool {
|
||||
return p.author_display and p.display == .none;
|
||||
}
|
||||
|
||||
/// Computed visibility:hidden for an element, considering only the `visibility`
|
||||
/// chain (walks ancestors since `visibility` inherits by default). Ignores
|
||||
/// Computed visibility:hidden, which inherits from the ancestors. Ignores
|
||||
/// display:none: an ancestor with display:none means the element isn't
|
||||
/// rendered, but its computed `visibility` still reflects inherited visibility.
|
||||
pub fn hasVisibilityHiddenInherited(self: *StyleManager, el: *Element) bool {
|
||||
self.assertOwns(el);
|
||||
self.rebuildIfDirty() catch return false;
|
||||
return self.anyInChain(el, .visibility, .{});
|
||||
return self.visibilityProps(el).visibility_hidden;
|
||||
}
|
||||
|
||||
pub fn hasPointerEventsNone(self: *StyleManager, el: *Element) bool {
|
||||
self.assertOwns(el);
|
||||
self.rebuildIfDirty() catch return false;
|
||||
return self.anyInChain(el, .pointer_events, .{});
|
||||
return self.visibilityProps(el).pointer_events_none;
|
||||
}
|
||||
|
||||
/// The axes along which `el` is a scroll container: its own computed overflow
|
||||
@@ -701,19 +697,68 @@ pub fn inlineSize(self: *StyleManager, el: *Element, comptime axis: Element.Axis
|
||||
return length.resolve(self.frame.page.getViewport());
|
||||
}
|
||||
|
||||
fn anyInChain(self: *StyleManager, el: *Element, comptime what: Visibility.Probe, options: CheckVisibilityOptions) bool {
|
||||
fn visibilityProps(self: *StyleManager, el: *Element) Visibility.Computed {
|
||||
const Inherited = std.meta.FieldEnum(Visibility.Computed);
|
||||
const inherited = Visibility.Computed.inherited;
|
||||
const group = &self.visibility;
|
||||
const allocator = self.arena.allocator();
|
||||
|
||||
var base: Visibility.Computed = .{};
|
||||
var reach: std.EnumArray(Inherited, u32) = .initFill(0);
|
||||
var own: Visibility.Computed = .{};
|
||||
var len: u32 = 0;
|
||||
|
||||
// Up to the first memoized ancestor
|
||||
var current: ?*Element = el;
|
||||
while (current) |elem| : (current = elem.parentElement()) {
|
||||
if (self.visibilityProps(elem).probe(what, options)) {
|
||||
return true;
|
||||
const entry = group.memoEntry(allocator, elem, self.frame);
|
||||
if (entry) |gop| {
|
||||
if (gop.found_existing) {
|
||||
base = gop.value_ptr.*;
|
||||
break;
|
||||
}
|
||||
}
|
||||
const props: Visibility.Computed = .fromOwn(group.compute(elem, self.frame));
|
||||
if (entry) |gop| {
|
||||
gop.value_ptr.* = props;
|
||||
}
|
||||
if (len == 0) {
|
||||
own = props;
|
||||
}
|
||||
|
||||
len += 1;
|
||||
inline for (inherited) |field| {
|
||||
if (@field(props, field)) {
|
||||
reach.set(@field(Inherited, field), len);
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
if (len == 0) {
|
||||
return base;
|
||||
}
|
||||
|
||||
/// Callers must have run rebuildIfDirty, which resets the memo.
|
||||
fn visibilityProps(self: *StyleManager, el: *Element) Visibility.Computed {
|
||||
return self.visibility.ownProps(self.arena.allocator(), el, self.frame);
|
||||
// The same path again, adding what each element inherits.
|
||||
var result = own;
|
||||
current = el;
|
||||
for (0..len) |distance| {
|
||||
const elem = current.?;
|
||||
var above = base;
|
||||
inline for (inherited) |field| {
|
||||
if (reach.get(@field(Inherited, field)) > distance) {
|
||||
@field(above, field) = true;
|
||||
}
|
||||
}
|
||||
if (group.memo.getPtr(elem)) |entry| {
|
||||
entry.* = entry.inherit(above);
|
||||
if (distance == 0) {
|
||||
result = entry.*;
|
||||
}
|
||||
} else if (distance == 0) {
|
||||
result = own.inherit(above);
|
||||
}
|
||||
current = elem.parentElement();
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/// Callers must have run rebuildIfDirty, which resets the memo.
|
||||
@@ -736,14 +781,17 @@ fn Group(comptime Spec: type) type {
|
||||
return struct {
|
||||
const Self = @This();
|
||||
const Declared = Spec.Declared;
|
||||
// What we store in our memo
|
||||
const Computed = Spec.Computed;
|
||||
// The element's own value, only used while resolving, never stored
|
||||
const Cascaded = if (@hasDecl(Spec, "Cascaded")) Spec.Cascaded else Computed;
|
||||
const Field = std.meta.FieldEnum(Declared);
|
||||
const fields = @typeInfo(Declared).@"struct".field_names;
|
||||
|
||||
comptime {
|
||||
// compute copies each declared value into its Computed namesake
|
||||
// compute copies each declared value into its Cascaded namesake
|
||||
for (fields) |field| {
|
||||
std.debug.assert(@FieldType(Computed, field) == @typeInfo(@FieldType(Declared, field)).optional.child);
|
||||
std.debug.assert(@FieldType(Cascaded, field) == @typeInfo(@FieldType(Declared, field)).optional.child);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -770,7 +818,7 @@ fn Group(comptime Spec: type) type {
|
||||
// skip the cascade on the many pages without one.
|
||||
has_important: bool = false,
|
||||
|
||||
// Own-element results, valid while Page.style_version == memo_version.
|
||||
// Valid while Page.style_version == memo_version.
|
||||
memo: std.AutoHashMapUnmanaged(*Element, Computed) = .empty,
|
||||
memo_version: usize = 0,
|
||||
|
||||
@@ -832,25 +880,31 @@ fn Group(comptime Spec: type) type {
|
||||
}
|
||||
|
||||
fn ownProps(self: *Self, allocator: Allocator, el: *Element, frame: *Frame) Computed {
|
||||
comptime std.debug.assert(Cascaded == Computed);
|
||||
const gop = self.memoEntry(allocator, el, frame) orelse return self.compute(el, frame);
|
||||
if (gop.found_existing == false) {
|
||||
gop.value_ptr.* = self.compute(el, frame);
|
||||
}
|
||||
return gop.value_ptr.*;
|
||||
}
|
||||
|
||||
// Null when the memo can't grow. A new entry's value is undefined, and
|
||||
// the pointer is invalidated by the next insert.
|
||||
fn memoEntry(self: *Self, allocator: Allocator, el: *Element, frame: *Frame) ?std.AutoHashMapUnmanaged(*Element, Computed).GetOrPutResult {
|
||||
const version = frame.page.style_version;
|
||||
if (self.memo_version != version) {
|
||||
self.memo.clearRetainingCapacity();
|
||||
self.memo_version = version;
|
||||
}
|
||||
|
||||
const gop = self.memo.getOrPut(allocator, el) catch |err| {
|
||||
return self.memo.getOrPut(allocator, el) catch |err| {
|
||||
log.warn(.browser, "StyleManager memo", .{ .err = err });
|
||||
return self.compute(el, frame);
|
||||
return null;
|
||||
};
|
||||
if (gop.found_existing) {
|
||||
return gop.value_ptr.*;
|
||||
}
|
||||
gop.value_ptr.* = self.compute(el, frame);
|
||||
return gop.value_ptr.*;
|
||||
}
|
||||
|
||||
fn compute(self: *const Self, el: *Element, frame: *Frame) Computed {
|
||||
var p: Computed = .{};
|
||||
fn compute(self: *const Self, el: *Element, frame: *Frame) Cascaded {
|
||||
var p: Cascaded = .{};
|
||||
var priorities: Priorities(Declared) = .initFill(0);
|
||||
|
||||
const inline_style = inlineDeclared(Declared, el, frame);
|
||||
@@ -879,7 +933,7 @@ fn Group(comptime Spec: type) type {
|
||||
if (self.has_important == false or declaresAny(declared) == false) {
|
||||
return false;
|
||||
}
|
||||
var p: Computed = .{};
|
||||
var p: Cascaded = .{};
|
||||
var priorities: Priorities(Declared) = .initFill(INLINE_IMPORTANT_PRIORITY);
|
||||
inline for (fields) |field| {
|
||||
if (@field(declared, field) != null) {
|
||||
@@ -897,7 +951,7 @@ fn Group(comptime Spec: type) type {
|
||||
return false;
|
||||
}
|
||||
|
||||
fn applyRules(self: *const Self, p: *Computed, priorities: *Priorities(Declared), el: *Element, frame: *Frame) void {
|
||||
fn applyRules(self: *const Self, p: *Cascaded, priorities: *Priorities(Declared), el: *Element, frame: *Frame) void {
|
||||
if (el.getId()) |id| {
|
||||
if (self.id_rules.get(id)) |rules| {
|
||||
checkRules(&rules, p, priorities, el, frame);
|
||||
@@ -920,7 +974,7 @@ fn Group(comptime Spec: type) type {
|
||||
checkRules(&self.other_rules, p, priorities, el, frame);
|
||||
}
|
||||
|
||||
fn checkRules(rules: *const RuleList, p: *Computed, priorities: *Priorities(Declared), el: *Element, frame: *Frame) void {
|
||||
fn checkRules(rules: *const RuleList, p: *Cascaded, priorities: *Priorities(Declared), el: *Element, frame: *Frame) void {
|
||||
for (rules.items(.priority), rules.items(.props), rules.items(.selector)) |priority, rule, selector| {
|
||||
// Only rules that set a property nothing stronger has set yet are
|
||||
// worth matching.
|
||||
@@ -1255,7 +1309,8 @@ const Visibility = struct {
|
||||
}
|
||||
};
|
||||
|
||||
const Computed = packed struct(u6) {
|
||||
// The element's own values, from the cascade.
|
||||
pub const Cascaded = packed struct(u6) {
|
||||
// Author value (inline or sheet). Without `author_display` it's the UA
|
||||
// fallback: .none when matchesUaDisplayNoneRule, else .other.
|
||||
display: Display = .other,
|
||||
@@ -1263,26 +1318,51 @@ const Visibility = struct {
|
||||
visibility_hidden: bool = false,
|
||||
opacity_zero: bool = false,
|
||||
pointer_events_none: bool = false,
|
||||
|
||||
fn probe(self: Computed, comptime what: Probe, options: CheckVisibilityOptions) bool {
|
||||
return switch (what) {
|
||||
.hidden => self.display == .none or
|
||||
(options.check_visibility and self.visibility_hidden) or
|
||||
(options.check_opacity and self.opacity_zero),
|
||||
.visibility => self.visibility_hidden,
|
||||
.pointer_events => self.pointer_events_none,
|
||||
};
|
||||
}
|
||||
};
|
||||
|
||||
const Probe = enum { hidden, visibility, pointer_events };
|
||||
const Computed = packed struct(u7) {
|
||||
display: Display = .other,
|
||||
author_display: bool = false,
|
||||
visibility_hidden: bool = false, // inherited
|
||||
pointer_events_none: bool = false, // inherited
|
||||
in_display_none: bool = false, // This element or an ancestor
|
||||
in_opacity_zero: bool = false, // This element or an ancestor
|
||||
|
||||
// Set on an element when set on its parent
|
||||
const inherited = [_][]const u8{ "visibility_hidden", "pointer_events_none", "in_display_none", "in_opacity_zero" };
|
||||
|
||||
fn fromOwn(own: Cascaded) Computed {
|
||||
return .{
|
||||
.display = own.display,
|
||||
.author_display = own.author_display,
|
||||
.visibility_hidden = own.visibility_hidden,
|
||||
.pointer_events_none = own.pointer_events_none,
|
||||
.in_display_none = own.display == .none,
|
||||
.in_opacity_zero = own.opacity_zero,
|
||||
};
|
||||
}
|
||||
|
||||
fn inherit(self: Computed, parent: Computed) Computed {
|
||||
var result = self;
|
||||
inline for (inherited) |field| {
|
||||
@field(result, field) = @field(self, field) or @field(parent, field);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
fn isHidden(self: Computed, options: CheckVisibilityOptions) bool {
|
||||
return self.in_display_none or
|
||||
(options.check_visibility and self.visibility_hidden) or
|
||||
(options.check_opacity and self.in_opacity_zero);
|
||||
}
|
||||
};
|
||||
|
||||
// UA stylesheet display:none fallback (HTML Rendering §15.3.1 "Hidden
|
||||
// elements"). Applied only when no author rule for `display` matched the
|
||||
// element — per CSS Cascade §6.1 any normal-origin author rule beats UA
|
||||
// origin regardless of specificity, so `.x { display: flex }` on a
|
||||
// `<div class="x" hidden>` must report visible.
|
||||
pub fn finish(p: *Computed, el: *Element, priorities: *const Priorities(Declared)) void {
|
||||
pub fn finish(p: *Cascaded, el: *Element, priorities: *const Priorities(Declared)) void {
|
||||
p.author_display = priorities.get(.display) != 0;
|
||||
if (!p.author_display and matchesUaDisplayNoneRule(el)) {
|
||||
p.display = .none;
|
||||
@@ -1451,8 +1531,6 @@ const MAX_DOC_ORDER: u32 = std.math.maxInt(u22) - 1;
|
||||
const CheckVisibilityOptions = struct {
|
||||
check_visibility: bool = false,
|
||||
check_opacity: bool = false,
|
||||
// false is only sound when every ancestor is already known visible.
|
||||
ancestors: bool = true,
|
||||
};
|
||||
|
||||
// Inline styles win over the stylesheets of the same importance, and the
|
||||
@@ -2047,6 +2125,102 @@ test "StyleManager: memo: reuse and invalidation" {
|
||||
try testing.expectEqual(2, sm.visibility.memo.count());
|
||||
}
|
||||
|
||||
test "StyleManager: memo: inherited values, any query order" {
|
||||
const frame = try testing.createFrame();
|
||||
defer testing.test_session.closeAllPages();
|
||||
const sm = &frame._style_manager;
|
||||
|
||||
const div = try frame.window._document.createElement("div", null, frame);
|
||||
try Frame.parse.htmlAsChildren(frame, div.asNode(),
|
||||
\\<p><b style="pointer-events: none"><i style="visibility: hidden"><s style="opacity: 0"><u></u></s></i></b></p>
|
||||
);
|
||||
const p = div.asNode().firstChild().?.as(Element);
|
||||
const b = p.asNode().firstChild().?.as(Element);
|
||||
const i = b.asNode().firstChild().?.as(Element);
|
||||
const s = i.asNode().firstChild().?.as(Element);
|
||||
const u = s.asNode().firstChild().?.as(Element);
|
||||
|
||||
// The deepest first stores every ancestor, each resolved against its parent
|
||||
try testing.expectEqual(true, sm.hasPointerEventsNone(u));
|
||||
try testing.expectEqual(6, sm.visibility.memo.count());
|
||||
try testing.expectEqual(Visibility.Computed{ .visibility_hidden = true, .pointer_events_none = true, .in_opacity_zero = true }, sm.visibility.memo.get(u).?);
|
||||
try testing.expectEqual(Visibility.Computed{ .visibility_hidden = true, .pointer_events_none = true }, sm.visibility.memo.get(i).?);
|
||||
try testing.expectEqual(Visibility.Computed{}, sm.visibility.memo.get(p).?);
|
||||
|
||||
try testing.expectEqual(false, sm.isHidden(u, .{}));
|
||||
try testing.expectEqual(true, sm.isHidden(u, .{ .check_visibility = true }));
|
||||
try testing.expectEqual(true, sm.isHidden(u, .{ .check_opacity = true }));
|
||||
try testing.expectEqual(true, sm.isHidden(s, .{ .check_opacity = true }));
|
||||
try testing.expectEqual(false, sm.isHidden(i, .{ .check_opacity = true }));
|
||||
try testing.expectEqual(true, sm.hasVisibilityHiddenInherited(i));
|
||||
try testing.expectEqual(false, sm.hasVisibilityHiddenInherited(b));
|
||||
try testing.expectEqual(true, sm.hasPointerEventsNone(b));
|
||||
try testing.expectEqual(false, sm.hasPointerEventsNone(p));
|
||||
|
||||
// A DOM change drops the memo; a middle element first, then below and above it
|
||||
try p.setStyle("display: none", frame);
|
||||
try testing.expectEqual(true, sm.isHidden(i, .{}));
|
||||
try testing.expectEqual(true, sm.isHidden(u, .{}));
|
||||
// display itself isn't inherited
|
||||
try testing.expectEqual(false, sm.hasDisplayNone(u));
|
||||
try testing.expectEqual(true, sm.hasDisplayNone(p));
|
||||
try testing.expectEqual(true, sm.hasPointerEventsNone(u));
|
||||
try testing.expectEqual(false, sm.hasPointerEventsNone(p));
|
||||
try testing.expectEqual(true, sm.isHidden(p, .{}));
|
||||
try testing.expectEqual(false, sm.isHidden(div, .{}));
|
||||
|
||||
try p.setStyle("", frame);
|
||||
try testing.expectEqual(false, sm.isHidden(u, .{}));
|
||||
try testing.expectEqual(true, sm.hasPointerEventsNone(s));
|
||||
}
|
||||
|
||||
// Every element of a deep chain probed in document order, the shape of an
|
||||
// interactivity pass. Walking all ancestors per probe is quadratic, which only
|
||||
// the growth between two depths a factor of TIMES apart tells apart.
|
||||
test "StyleManager: memo: probing a deep tree stays linear" {
|
||||
const frame = try testing.createFrame();
|
||||
defer testing.test_session.closeAllPages();
|
||||
|
||||
const SMALL = 1000;
|
||||
const TIMES = 10;
|
||||
// well above TIMES, well below TIMES squared
|
||||
const LIMIT = TIMES * 3;
|
||||
|
||||
const small = try buildDivChain(frame, SMALL);
|
||||
const large = try buildDivChain(frame, SMALL * TIMES);
|
||||
|
||||
const small_us = probeChain(frame, small);
|
||||
const large_us = probeChain(frame, large);
|
||||
const ratio = @as(f64, @floatFromInt(large_us)) / @as(f64, @floatFromInt(@max(small_us, 1)));
|
||||
try testing.expect(ratio < LIMIT);
|
||||
}
|
||||
|
||||
fn buildDivChain(frame: *Frame, depth: usize) !*Element {
|
||||
const doc = frame.window._document;
|
||||
// Bottom-up: appending under a deep parent walks its ancestors
|
||||
var top = try doc.createElement("div", null, frame);
|
||||
try top.setStyle("pointer-events: none", frame);
|
||||
for (1..depth) |_| {
|
||||
const div = try doc.createElement("div", null, frame);
|
||||
_ = try div.asNode().appendChild(top.asNode(), frame);
|
||||
top = div;
|
||||
}
|
||||
return top;
|
||||
}
|
||||
|
||||
fn probeChain(frame: *Frame, top: *Element) u64 {
|
||||
const sm = &frame._style_manager;
|
||||
const start = lp.datetime.microTimestamp(.awake);
|
||||
var current: ?*Element = top;
|
||||
while (current) |el| {
|
||||
const child = if (el.asNode().firstChild()) |c| c.as(Element) else null;
|
||||
// only the deepest one declares it
|
||||
std.debug.assert(sm.hasPointerEventsNone(el) == (child == null));
|
||||
current = child;
|
||||
}
|
||||
return @intCast(lp.datetime.microTimestamp(.awake) - start);
|
||||
}
|
||||
|
||||
test "StyleManager: ruleInserted: append joins the buckets without a rebuild" {
|
||||
const frame = try testing.createFrame();
|
||||
defer testing.test_session.closeAllPages();
|
||||
|
||||
@@ -41,12 +41,6 @@ pub fn dispatchInputAndChangeEvents(el: *Element, frame: *Frame) !void {
|
||||
pub fn click(node: *DOMNode, frame: *Frame) !void {
|
||||
const el = node.is(Element) orelse return error.InvalidNodeType;
|
||||
|
||||
if (el.isDisabled()) {
|
||||
return;
|
||||
}
|
||||
|
||||
Frame.user_input.updateHoverTarget(frame, el, .{ .with_pointer = true });
|
||||
|
||||
Frame.user_input.triggerClick(frame, el, .{}) catch |err| {
|
||||
lp.log.debug(.app, "click failed", .{ .err = err });
|
||||
return error.ActionFailed;
|
||||
|
||||
@@ -24,6 +24,7 @@ const LimitedWriter = @import("../LimitedWriter.zig");
|
||||
const Node = @import("webapi/Node.zig");
|
||||
const Slot = @import("webapi/element/html/Slot.zig");
|
||||
const IFrame = @import("webapi/element/html/IFrame.zig");
|
||||
const Template = @import("webapi/element/html/Template.zig");
|
||||
|
||||
pub const Opts = struct {
|
||||
with_base: bool = false,
|
||||
@@ -307,7 +308,9 @@ const Walk = struct {
|
||||
if (opts.with_frames and el.is(IFrame) != null) {
|
||||
return self.open(end_tag, .{ .document = el.as(IFrame).getContentDocument() });
|
||||
}
|
||||
if (node.firstChild()) |first| {
|
||||
// A template serializes its contents, not its own children.
|
||||
const content_root = if (el.is(Template)) |template| template.getContent().asNode() else node;
|
||||
if (content_root.firstChild()) |first| {
|
||||
return self.open(end_tag, .{ .siblings = first });
|
||||
}
|
||||
// No children: skip the stack
|
||||
|
||||
+230
-192
@@ -56,9 +56,6 @@ const HoverContext = struct {
|
||||
y: f64 = 0,
|
||||
buttons: u16 = 0,
|
||||
modifiers: Modifiers = .{},
|
||||
// WebDriver's pointer source also fires the pointerover/out/enter/leave
|
||||
// twins; the CDP mouse path only synthesizes mouse events.
|
||||
with_pointer: bool = false,
|
||||
};
|
||||
|
||||
// Update the element being hovered. The page always tracks the currently
|
||||
@@ -76,13 +73,7 @@ pub fn updateHoverTarget(frame: *Frame, to: ?*Element, ctx: HoverContext) void {
|
||||
const pivot: ?*Node = blk: {
|
||||
const a = from orelse break :blk null;
|
||||
const b = to orelse break :blk null;
|
||||
var current: ?*Node = a.asNode();
|
||||
while (current) |node| : (current = node.parentNode()) {
|
||||
if (node.contains(b.asNode())) {
|
||||
break :blk node;
|
||||
}
|
||||
}
|
||||
break :blk null;
|
||||
break :blk commonAncestor(a.asNode(), b.asNode());
|
||||
};
|
||||
|
||||
if (from) |old| {
|
||||
@@ -134,30 +125,30 @@ fn dispatchBoundaryEvent(frame: *Frame, target: *Element, comptime mouse_typ: []
|
||||
const modifiers = ctx.modifiers;
|
||||
const related_target = if (related) |r| r.asEventTarget() else null;
|
||||
|
||||
if (ctx.with_pointer) {
|
||||
const pointer_event = PointerEvent.initTrusted(pointer_typ, .{
|
||||
.bubbles = bubbling,
|
||||
.cancelable = bubbling,
|
||||
.composed = bubbling,
|
||||
.clientX = ctx.x,
|
||||
.clientY = ctx.y,
|
||||
.buttons = ctx.buttons,
|
||||
.pointerId = 1,
|
||||
.pointerType = "mouse",
|
||||
.isPrimary = true,
|
||||
.relatedTarget = related_target,
|
||||
.ctrlKey = modifiers.ctrl,
|
||||
.shiftKey = modifiers.shift,
|
||||
.altKey = modifiers.alt,
|
||||
.metaKey = modifiers.meta,
|
||||
}, frame) catch |err| {
|
||||
log.debug(.frame, "boundary pointer event", .{ .err = err, .type = pointer_typ });
|
||||
return;
|
||||
};
|
||||
frame._event_manager.dispatch(target.asEventTarget(), pointer_event.asEvent()) catch |err| {
|
||||
log.debug(.frame, "boundary pointer dispatch", .{ .err = err, .type = pointer_typ });
|
||||
};
|
||||
}
|
||||
const pointer_event = PointerEvent.initTrusted(pointer_typ, .{
|
||||
.bubbles = bubbling,
|
||||
.cancelable = bubbling,
|
||||
.composed = bubbling,
|
||||
.clientX = ctx.x,
|
||||
.clientY = ctx.y,
|
||||
// No button changed state: https://www.w3.org/TR/pointerevents3/#the-button-property
|
||||
.button = -1,
|
||||
.buttons = ctx.buttons,
|
||||
.pointerId = 1,
|
||||
.pointerType = "mouse",
|
||||
.isPrimary = true,
|
||||
.relatedTarget = related_target,
|
||||
.ctrlKey = modifiers.ctrl,
|
||||
.shiftKey = modifiers.shift,
|
||||
.altKey = modifiers.alt,
|
||||
.metaKey = modifiers.meta,
|
||||
}, frame) catch |err| {
|
||||
log.debug(.frame, "boundary pointer event", .{ .err = err, .type = pointer_typ });
|
||||
return;
|
||||
};
|
||||
frame._event_manager.dispatch(target.asEventTarget(), pointer_event.asEvent()) catch |err| {
|
||||
log.debug(.frame, "boundary pointer dispatch", .{ .err = err, .type = pointer_typ });
|
||||
};
|
||||
|
||||
const mouse_event = MouseEvent.initTrusted(comptime .wrap(mouse_typ), .{
|
||||
.bubbles = bubbling,
|
||||
@@ -180,63 +171,75 @@ fn dispatchBoundaryEvent(frame: *Frame, target: *Element, comptime mouse_typ: []
|
||||
};
|
||||
}
|
||||
|
||||
/// Event fields for the trusted mouse/pointer dispatchers, bundled so `button`
|
||||
/// (which button changed) and `buttons` (the held mask) can't be transposed.
|
||||
const PointerInput = struct {
|
||||
x: f64,
|
||||
y: f64,
|
||||
const Gesture = struct {
|
||||
button: i32 = mouse_button.main,
|
||||
buttons: u16 = 0,
|
||||
detail: u32 = 0,
|
||||
buttons_down: u16 = 0,
|
||||
click_count: u32 = 0,
|
||||
x: f64 = 0,
|
||||
y: f64 = 0,
|
||||
modifiers: Modifiers = .{},
|
||||
emit_mouse_compat: bool = true,
|
||||
};
|
||||
|
||||
/// Dispatch a trusted mouse event; returns whether preventDefault() cancelled it.
|
||||
fn dispatchMouseEventOn(frame: *Frame, target: *Element, comptime typ: []const u8, in: PointerInput) !bool {
|
||||
const event: *MouseEvent = try .initTrusted(comptime .wrap(typ), .{
|
||||
.bubbles = true,
|
||||
.cancelable = true,
|
||||
.composed = true,
|
||||
.clientX = in.x,
|
||||
.clientY = in.y,
|
||||
.button = in.button,
|
||||
.buttons = in.buttons,
|
||||
.detail = in.detail,
|
||||
.ctrlKey = in.modifiers.ctrl,
|
||||
.shiftKey = in.modifiers.shift,
|
||||
.altKey = in.modifiers.alt,
|
||||
.metaKey = in.modifiers.meta,
|
||||
}, frame);
|
||||
return frame._event_manager.dispatchCancelable(target.asEventTarget(), event.asEvent());
|
||||
}
|
||||
|
||||
/// Dispatch a trusted pointer event (always mouse-sourced: pointerType,
|
||||
/// pointerId, isPrimary fixed); returns whether preventDefault() cancelled it.
|
||||
fn dispatchPointerEventOn(frame: *Frame, target: *Element, comptime typ: []const u8, in: PointerInput) !bool {
|
||||
/// Dispatch a trusted pointer event; returns whether preventDefault() cancelled it.
|
||||
fn emitPointer(
|
||||
frame: *Frame,
|
||||
target: *Element,
|
||||
typ: []const u8,
|
||||
g: Gesture,
|
||||
detail: u32,
|
||||
) !bool {
|
||||
const owner = target.ownerFrame(frame) orelse frame;
|
||||
const event: *PointerEvent = try .initTrusted(typ, .{
|
||||
.bubbles = true,
|
||||
.cancelable = true,
|
||||
.composed = true,
|
||||
.clientX = in.x,
|
||||
.clientY = in.y,
|
||||
.button = in.button,
|
||||
.buttons = in.buttons,
|
||||
.detail = in.detail,
|
||||
.clientX = g.x,
|
||||
.clientY = g.y,
|
||||
.button = g.button,
|
||||
.buttons = g.buttons_down,
|
||||
.detail = detail,
|
||||
.pointerId = 1,
|
||||
.pointerType = "mouse",
|
||||
.isPrimary = true,
|
||||
.pressure = if (in.buttons != 0) 0.5 else 0.0,
|
||||
.ctrlKey = in.modifiers.ctrl,
|
||||
.shiftKey = in.modifiers.shift,
|
||||
.altKey = in.modifiers.alt,
|
||||
.metaKey = in.modifiers.meta,
|
||||
}, frame);
|
||||
return frame._event_manager.dispatchCancelable(target.asEventTarget(), event.asEvent());
|
||||
.pressure = if (g.buttons_down != 0) 0.5 else 0.0,
|
||||
.ctrlKey = g.modifiers.ctrl,
|
||||
.shiftKey = g.modifiers.shift,
|
||||
.altKey = g.modifiers.alt,
|
||||
.metaKey = g.modifiers.meta,
|
||||
}, owner);
|
||||
return owner._event_manager.dispatchCancelable(target.asEventTarget(), event.asEvent());
|
||||
}
|
||||
|
||||
/// Dispatch a trusted mouse event; returns whether preventDefault() cancelled it.
|
||||
fn emitMouse(
|
||||
frame: *Frame,
|
||||
target: *Element,
|
||||
comptime typ: []const u8,
|
||||
g: Gesture,
|
||||
detail: u32,
|
||||
) !bool {
|
||||
const owner = target.ownerFrame(frame) orelse frame;
|
||||
const event: *MouseEvent = try .initTrusted(comptime .wrap(typ), .{
|
||||
.bubbles = true,
|
||||
.cancelable = true,
|
||||
.composed = true,
|
||||
.clientX = g.x,
|
||||
.clientY = g.y,
|
||||
.button = g.button,
|
||||
.buttons = g.buttons_down,
|
||||
.detail = detail,
|
||||
.ctrlKey = g.modifiers.ctrl,
|
||||
.shiftKey = g.modifiers.shift,
|
||||
.altKey = g.modifiers.alt,
|
||||
.metaKey = g.modifiers.meta,
|
||||
}, owner);
|
||||
return owner._event_manager.dispatchCancelable(target.asEventTarget(), event.asEvent());
|
||||
}
|
||||
|
||||
/// MouseEvent/PointerEvent.buttons bitmask for a MouseEvent.button value.
|
||||
/// https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/buttons
|
||||
pub fn buttonsBitmask(button: i32) u16 {
|
||||
fn buttonsBitmask(button: i32) u16 {
|
||||
return switch (button) {
|
||||
mouse_button.main => 1,
|
||||
mouse_button.secondary => 2,
|
||||
@@ -256,61 +259,142 @@ pub const PointerButtons = struct {
|
||||
/// Whether the gesture's opening pointerdown suppressed the compat mouse
|
||||
/// events; held for the whole gesture so each split message reads it here.
|
||||
mousedown_suppressed: bool = false,
|
||||
/// Where the gesture's pointerdown landed, until its first release fires
|
||||
/// the gesture's one click.
|
||||
down_target: ?*Element = null,
|
||||
|
||||
/// `starts_gesture` is false for a chorded press (another button held).
|
||||
pub fn press(self: *PointerButtons, button: i32) struct { starts_gesture: bool, held: u16 } {
|
||||
const bit = buttonsBitmask(button);
|
||||
/// `g.buttons_down` is ignored: the held mask supplies it.
|
||||
pub fn press(self: *PointerButtons, frame: *Frame, target: *Element, g: Gesture) !void {
|
||||
const bit = buttonsBitmask(g.button);
|
||||
const starts_gesture = self.held & ~bit == 0;
|
||||
if (starts_gesture) {
|
||||
self.down_target = target;
|
||||
}
|
||||
self.held |= bit;
|
||||
return .{ .starts_gesture = starts_gesture, .held = self.held };
|
||||
|
||||
var pg = g;
|
||||
pg.buttons_down = self.held;
|
||||
const suppressed = try pressSequence(frame, target, pg, self.mousedown_suppressed);
|
||||
if (starts_gesture) {
|
||||
self.mousedown_suppressed = suppressed;
|
||||
}
|
||||
}
|
||||
|
||||
/// `ends_gesture` is the last held button releasing, which clears the
|
||||
/// suppression flag; `was_suppressed` is that flag for this gesture.
|
||||
pub fn release(self: *PointerButtons, button: i32) struct { ends_gesture: bool, held: u16, was_suppressed: bool } {
|
||||
/// Returns the element the click fired at, if any. `g.buttons_down` is
|
||||
/// ignored: the held mask supplies it.
|
||||
pub fn release(self: *PointerButtons, frame: *Frame, target: *Element, g: Gesture) !?*Element {
|
||||
const click_target = if (self.down_target) |down| commonClickTarget(down, target) else null;
|
||||
const was_suppressed = self.mousedown_suppressed;
|
||||
self.held &= ~buttonsBitmask(button);
|
||||
const ends_gesture = self.held == 0;
|
||||
if (ends_gesture) self.mousedown_suppressed = false;
|
||||
return .{ .ends_gesture = ends_gesture, .held = self.held, .was_suppressed = was_suppressed };
|
||||
self.down_target = null;
|
||||
self.releaseButton(g.button);
|
||||
|
||||
var rg = g;
|
||||
rg.buttons_down = self.held;
|
||||
try releaseSequence(frame, target, rg, was_suppressed, click_target);
|
||||
return click_target;
|
||||
}
|
||||
|
||||
/// Discards an in-progress gesture (a press/release that hit no element).
|
||||
/// The last held button releasing ends the gesture and clears its state.
|
||||
fn releaseButton(self: *PointerButtons, button: i32) void {
|
||||
self.held &= ~buttonsBitmask(button);
|
||||
if (self.held == 0) {
|
||||
self.mousedown_suppressed = false;
|
||||
self.down_target = null;
|
||||
}
|
||||
}
|
||||
|
||||
/// Discards an in-progress gesture (a press that hit no element).
|
||||
pub fn reset(self: *PointerButtons) void {
|
||||
self.* = .{};
|
||||
}
|
||||
};
|
||||
|
||||
const PressResult = struct {
|
||||
/// pointerdown's preventDefault() suppressed the compat mousedown here and
|
||||
/// the paired mouseup on release.
|
||||
suppress_mouse: bool,
|
||||
/// mousedown's focus default action is suppressed (always when
|
||||
/// suppress_mouse is).
|
||||
suppress_focus: bool,
|
||||
};
|
||||
|
||||
/// pointerdown, then mousedown unless pointerdown was cancelled. `in.detail`
|
||||
/// applies to mousedown only.
|
||||
fn dispatchPointerPress(frame: *Frame, target: *Element, in: PointerInput) !PressResult {
|
||||
var pointer = in;
|
||||
pointer.detail = 0;
|
||||
const suppress_mouse = try dispatchPointerEventOn(frame, target, "pointerdown", pointer);
|
||||
if (suppress_mouse) {
|
||||
return .{ .suppress_mouse = true, .suppress_focus = true };
|
||||
fn commonAncestor(a: *Node, b: *Node) ?*Node {
|
||||
var current: ?*Node = a;
|
||||
while (current) |node| : (current = node.parentNode()) {
|
||||
if (node.contains(b)) {
|
||||
return node;
|
||||
}
|
||||
}
|
||||
const suppress_focus = try dispatchMouseEventOn(frame, target, "mousedown", in);
|
||||
return .{ .suppress_mouse = false, .suppress_focus = suppress_focus };
|
||||
return null;
|
||||
}
|
||||
|
||||
/// pointerup, then mouseup unless the gesture's pointerdown was cancelled.
|
||||
/// `in.detail` applies to mouseup only.
|
||||
fn dispatchPointerRelease(frame: *Frame, target: *Element, in: PointerInput, suppress_mouse: bool) !void {
|
||||
var pointer = in;
|
||||
pointer.detail = 0;
|
||||
_ = try dispatchPointerEventOn(frame, target, "pointerup", pointer);
|
||||
if (suppress_mouse == false) {
|
||||
_ = try dispatchMouseEventOn(frame, target, "mouseup", in);
|
||||
/// A click whose mousedown and mouseup landed on different elements fires at
|
||||
/// their nearest common inclusive ancestor element.
|
||||
fn commonClickTarget(down: *Element, up: *Element) *Element {
|
||||
if (down == up) {
|
||||
return up;
|
||||
}
|
||||
const ancestor = commonAncestor(down.asNode(), up.asNode()) orelse return up;
|
||||
return ancestor.is(Element) orelse up;
|
||||
}
|
||||
|
||||
pub fn moveSequence(frame: *Frame, target: *Element, g: Gesture) !void {
|
||||
if (g.emit_mouse_compat) {
|
||||
updateHoverTarget(frame, target, .{ .x = g.x, .y = g.y, .buttons = g.buttons_down, .modifiers = g.modifiers });
|
||||
}
|
||||
// A move changes no button: https://www.w3.org/TR/pointerevents3/#the-button-property
|
||||
var pg = g;
|
||||
pg.button = -1;
|
||||
_ = try emitPointer(frame, target, "pointermove", pg, 0);
|
||||
if (g.emit_mouse_compat) {
|
||||
_ = try emitMouse(frame, target, "mousemove", g, 0);
|
||||
}
|
||||
}
|
||||
|
||||
/// Returns whether the gesture's compat mouse events are suppressed: by the
|
||||
/// opening pointerdown, or for a chorded press, `chord_suppressed` carried over.
|
||||
fn pressSequence(frame: *Frame, target: *Element, g: Gesture, chord_suppressed: bool) !bool {
|
||||
const starts_gesture = (g.buttons_down & ~buttonsBitmask(g.button)) == 0;
|
||||
// A chorded press is a buttons-mask change (pointermove), not a second
|
||||
// pointerdown: https://www.w3.org/TR/pointerevents3/#chorded-button-interactions
|
||||
const suppressed = if (starts_gesture)
|
||||
try emitPointer(frame, target, "pointerdown", g, 0)
|
||||
else blk: {
|
||||
_ = try emitPointer(frame, target, "pointermove", g, 0);
|
||||
break :blk chord_suppressed;
|
||||
};
|
||||
if (!g.emit_mouse_compat) {
|
||||
return suppressed;
|
||||
}
|
||||
|
||||
// A disabled control gets the pointer events, contextmenu and auxclick,
|
||||
// but no mouse events, click or focus, as in Chrome.
|
||||
if (!suppressed and !target.isDisabled() and !try emitMouse(frame, target, "mousedown", g, g.click_count)) {
|
||||
focusForMouseDown(frame, target) catch |err| log.debug(.app, "mousedown focus", .{ .err = err });
|
||||
}
|
||||
// Chrome on Linux and macOS fires contextmenu on press, even when the
|
||||
// pointerdown was cancelled.
|
||||
if (g.button == mouse_button.secondary) {
|
||||
_ = try emitPointer(frame, target, "contextmenu", g, 0);
|
||||
}
|
||||
return suppressed;
|
||||
}
|
||||
|
||||
/// A null `click_target` releases without a click, as for a later release in
|
||||
/// a chord.
|
||||
fn releaseSequence(frame: *Frame, up_target: *Element, g: Gesture, suppressed: bool, click_target: ?*Element) !void {
|
||||
_ = try emitPointer(frame, up_target, if (g.buttons_down == 0) "pointerup" else "pointermove", g, 0);
|
||||
if (g.emit_mouse_compat and !suppressed and !up_target.isDisabled()) {
|
||||
_ = try emitMouse(frame, up_target, "mouseup", g, g.click_count);
|
||||
}
|
||||
|
||||
// clickCount 0 releases without a click, as in Chrome.
|
||||
const click_el = click_target orelse return;
|
||||
if (!g.emit_mouse_compat or g.click_count == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (g.button == mouse_button.main) {
|
||||
if (click_el.isDisabled()) {
|
||||
return;
|
||||
}
|
||||
_ = try emitPointer(frame, click_el, "click", g, g.click_count);
|
||||
if (g.click_count % 2 == 0) {
|
||||
_ = try emitMouse(frame, click_el, "dblclick", g, g.click_count);
|
||||
}
|
||||
} else {
|
||||
_ = try emitPointer(frame, click_el, "auxclick", g, g.click_count);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -318,15 +402,12 @@ fn dispatchPointerRelease(frame: *Frame, target: *Element, in: PointerInput, sup
|
||||
/// off pointerdown/mousedown, not click alone. A focus failure is logged, not
|
||||
/// returned.
|
||||
pub fn triggerClick(frame: *Frame, target: *Element, modifiers: Modifiers) !void {
|
||||
const press = try dispatchPointerPress(frame, target, .{ .x = 0, .y = 0, .buttons = 1, .detail = 1, .modifiers = modifiers });
|
||||
if (press.suppress_focus == false) {
|
||||
focusForMouseDown(frame, target) catch |err| log.debug(.app, "click mousedown focus", .{ .err = err });
|
||||
}
|
||||
try moveSequence(frame, target, .{ .modifiers = modifiers });
|
||||
|
||||
const up: PointerInput = .{ .x = 0, .y = 0, .detail = 1, .modifiers = modifiers };
|
||||
try dispatchPointerRelease(frame, target, up, press.suppress_mouse);
|
||||
// click is a PointerEvent, matching HTMLElement.click().
|
||||
_ = try dispatchPointerEventOn(frame, target, "click", up);
|
||||
const g: Gesture = .{ .click_count = 1, .modifiers = modifiers };
|
||||
var pointer: PointerButtons = .{};
|
||||
try pointer.press(frame, target, g);
|
||||
_ = try pointer.release(frame, target, g);
|
||||
}
|
||||
|
||||
pub fn triggerMousePress(frame: *Frame, x: f64, y: f64, button: i32, click_count: i32) !void {
|
||||
@@ -346,31 +427,14 @@ pub fn triggerMousePress(frame: *Frame, x: f64, y: f64, button: i32, click_count
|
||||
});
|
||||
}
|
||||
|
||||
const gesture = frame.page.input_pointer.press(button);
|
||||
// clickCount 0 (omitted) stays 0, not forced to 1: Chrome and Firefox
|
||||
// both fire mousedown with detail 0 in that case.
|
||||
const detail: u32 = if (click_count > 0) @intCast(click_count) else 0;
|
||||
const in: PointerInput = .{ .x = x, .y = y, .button = button, .buttons = gesture.held, .detail = detail };
|
||||
|
||||
if (gesture.starts_gesture) {
|
||||
// Stash the pointerdown outcome before the fallible focus call: the
|
||||
// release half is a separate message and can't observe it otherwise.
|
||||
const press = try dispatchPointerPress(frame, target, in);
|
||||
frame.page.input_pointer.mousedown_suppressed = press.suppress_mouse;
|
||||
if (press.suppress_focus == false) {
|
||||
try focusForMouseDown(frame, target);
|
||||
}
|
||||
} else {
|
||||
// A chorded press is a buttons-mask change (pointermove), not a second
|
||||
// pointerdown: https://www.w3.org/TR/pointerevents3/#chorded-button-interactions
|
||||
_ = try dispatchPointerEventOn(frame, target, "pointermove", .{ .x = x, .y = y, .button = button, .buttons = gesture.held });
|
||||
if (frame.page.input_pointer.mousedown_suppressed == false) {
|
||||
const suppress_focus = try dispatchMouseEventOn(frame, target, "mousedown", in);
|
||||
if (suppress_focus == false) {
|
||||
try focusForMouseDown(frame, target);
|
||||
}
|
||||
}
|
||||
}
|
||||
try frame.page.input_pointer.press(frame, target, .{
|
||||
.button = button,
|
||||
// clickCount 0 (omitted) stays 0, not forced to 1: Chrome and Firefox
|
||||
// both fire mousedown with detail 0 in that case.
|
||||
.click_count = if (click_count > 0) @intCast(click_count) else 0,
|
||||
.x = x,
|
||||
.y = y,
|
||||
});
|
||||
}
|
||||
|
||||
pub fn triggerMouseMove(frame: *Frame, x: f64, y: f64) !void {
|
||||
@@ -385,27 +449,21 @@ pub fn triggerMouseMove(frame: *Frame, x: f64, y: f64) !void {
|
||||
});
|
||||
}
|
||||
|
||||
updateHoverTarget(frame, target, .{ .x = x, .y = y });
|
||||
|
||||
const move_event: *MouseEvent = try .initTrusted(comptime .wrap("mousemove"), .{
|
||||
.bubbles = true,
|
||||
.cancelable = true,
|
||||
.composed = true,
|
||||
.clientX = x,
|
||||
.clientY = y,
|
||||
}, frame);
|
||||
try frame._event_manager.dispatch(target.asEventTarget(), move_event.asEvent());
|
||||
try moveSequence(frame, target, .{ .buttons_down = frame.page.input_pointer.held, .x = x, .y = y });
|
||||
}
|
||||
|
||||
pub fn triggerMouseRelease(frame: *Frame, x: f64, y: f64, button: i32, click_count: i32) !void {
|
||||
// Consume the state before any early return, so a release that misses
|
||||
// every element can't leave it for the next message to misread.
|
||||
const gesture = frame.page.input_pointer.release(button);
|
||||
const remaining = gesture.held;
|
||||
const ends_gesture = gesture.ends_gesture;
|
||||
const was_suppressed = gesture.was_suppressed;
|
||||
|
||||
const target = (try frame.window._document.elementFromPoint(x, y, frame)) orelse return;
|
||||
const pointer = &frame.page.input_pointer;
|
||||
// A release that misses every element still lets go of the button, so
|
||||
// the next message doesn't read it as held.
|
||||
const hit = frame.window._document.elementFromPoint(x, y, frame) catch |err| {
|
||||
pointer.releaseButton(button);
|
||||
return err;
|
||||
};
|
||||
const target = hit orelse {
|
||||
pointer.releaseButton(button);
|
||||
return;
|
||||
};
|
||||
if (comptime lp.IS_DEBUG) {
|
||||
log.debug(.frame, "frame mouse release", .{
|
||||
.url = frame.url,
|
||||
@@ -417,32 +475,12 @@ pub fn triggerMouseRelease(frame: *Frame, x: f64, y: f64, button: i32, click_cou
|
||||
});
|
||||
}
|
||||
|
||||
const detail: u32 = if (click_count > 0) @intCast(click_count) else 1;
|
||||
|
||||
if (ends_gesture) {
|
||||
try dispatchPointerRelease(frame, target, .{ .x = x, .y = y, .button = button, .detail = detail }, was_suppressed);
|
||||
} else {
|
||||
// A chorded release (another button still held) is a buttons-mask
|
||||
// change, not pointerup.
|
||||
_ = try dispatchPointerEventOn(frame, target, "pointermove", .{ .x = x, .y = y, .button = button, .buttons = remaining });
|
||||
if (!was_suppressed) {
|
||||
_ = try dispatchMouseEventOn(frame, target, "mouseup", .{ .x = x, .y = y, .button = button, .buttons = remaining, .detail = detail });
|
||||
}
|
||||
}
|
||||
|
||||
// After mouseup, the activation event depends on the button.
|
||||
switch (button) {
|
||||
mouse_button.main => {
|
||||
_ = try dispatchPointerEventOn(frame, target, "click", .{ .x = x, .y = y, .buttons = remaining, .detail = detail });
|
||||
// A second click in quick succession also fires dblclick.
|
||||
if (click_count == 2) {
|
||||
_ = try dispatchMouseEventOn(frame, target, "dblclick", .{ .x = x, .y = y, .button = button, .buttons = remaining, .detail = detail });
|
||||
}
|
||||
},
|
||||
mouse_button.auxiliary => _ = try dispatchMouseEventOn(frame, target, "auxclick", .{ .x = x, .y = y, .button = button, .buttons = remaining, .detail = detail }),
|
||||
mouse_button.secondary => _ = try dispatchMouseEventOn(frame, target, "contextmenu", .{ .x = x, .y = y, .button = button, .buttons = remaining, .detail = detail }),
|
||||
else => {},
|
||||
}
|
||||
_ = try pointer.release(frame, target, .{
|
||||
.button = button,
|
||||
.click_count = if (click_count > 0) @intCast(click_count) else 0,
|
||||
.x = x,
|
||||
.y = y,
|
||||
});
|
||||
}
|
||||
|
||||
pub fn triggerMouseWheel(frame: *Frame, x: f64, y: f64, delta_x: f64, delta_y: f64) !void {
|
||||
|
||||
@@ -1375,7 +1375,7 @@ fn resolveT(comptime T: type, value: *T) Resolved {
|
||||
const Meta = T.JsApi.Meta;
|
||||
return .{
|
||||
.ptr = value,
|
||||
.class_id = Meta.class_id,
|
||||
.class_id = if (@hasDecl(Meta, "wrap_as")) Meta.wrap_as.Meta.class_id else Meta.class_id,
|
||||
.prototype_chain = &Meta.prototype_chain,
|
||||
.finalizer = blk: {
|
||||
const FT = (comptime findFinalizerType(T)) orelse break :blk null;
|
||||
|
||||
@@ -66,6 +66,29 @@ fn getAnchorLabel(el: *Element) ?[]const u8 {
|
||||
return el.getAttributeInterned("aria-label") orelse el.getAttributeInterned("title");
|
||||
}
|
||||
|
||||
/// The fence info string for a `<pre>`: the `language-*` (or `lang-*`) class
|
||||
/// on the `<pre>` itself or on a `<code>` that is its first element child.
|
||||
fn codeLanguage(pre: *Element) ?[]const u8 {
|
||||
if (classLanguage(pre)) |lang| return lang;
|
||||
const child = pre.firstElementChild() orelse return null;
|
||||
if (child.getTag() != .code) return null;
|
||||
return classLanguage(child);
|
||||
}
|
||||
|
||||
fn classLanguage(el: *Element) ?[]const u8 {
|
||||
const class = el.getClassName() orelse return null;
|
||||
var it = std.mem.tokenizeAny(u8, class, &std.ascii.whitespace);
|
||||
while (it.next()) |token| {
|
||||
for ([_][]const u8{ "language-", "lang-" }) |prefix| {
|
||||
if (!std.mem.startsWith(u8, token, prefix)) continue;
|
||||
const lang = token[prefix.len..];
|
||||
// A backtick would end the fence's info string early.
|
||||
if (lang.len > 0 and std.mem.findScalar(u8, lang, '`') == null) return lang;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
// Iterative else large trees will stackoverflow
|
||||
const Context = struct {
|
||||
state: State,
|
||||
@@ -209,7 +232,9 @@ const Context = struct {
|
||||
self.state.last_char_was_newline = false;
|
||||
},
|
||||
.pre => {
|
||||
try self.writer.writeAll("```\n");
|
||||
try self.writer.writeAll("```");
|
||||
if (codeLanguage(el)) |lang| try self.writer.writeAll(lang);
|
||||
try self.writer.writeByte('\n');
|
||||
self.state.pre_node = el.asNode();
|
||||
self.state.last_char_was_newline = true;
|
||||
},
|
||||
@@ -629,6 +654,30 @@ test "browser.markdown: code" {
|
||||
);
|
||||
}
|
||||
|
||||
test "browser.markdown: code fence keeps the language" {
|
||||
try testMarkdownHTML("<pre><code class=\"hljs language-zig\">const x = 1;</code></pre>",
|
||||
\\
|
||||
\\```zig
|
||||
\\const x = 1;
|
||||
\\```
|
||||
\\
|
||||
);
|
||||
try testMarkdownHTML("<pre class=\"lang-sh\">ls</pre>",
|
||||
\\
|
||||
\\```sh
|
||||
\\ls
|
||||
\\```
|
||||
\\
|
||||
);
|
||||
try testMarkdownHTML("<pre class=\"language-\">x</pre>",
|
||||
\\
|
||||
\\```
|
||||
\\x
|
||||
\\```
|
||||
\\
|
||||
);
|
||||
}
|
||||
|
||||
test "browser.markdown: block link" {
|
||||
try testMarkdownHTML(
|
||||
\\<a href="https://example.com">
|
||||
|
||||
@@ -46,6 +46,10 @@ pub const ParsedNode = extern struct {
|
||||
// Set once html5ever has put the node in the tree or given it children.
|
||||
// Until then the node is unobservable and its document is only a guess.
|
||||
placed: bool = false,
|
||||
|
||||
// Memo of the node's root, valid while page.dom_version == root_version.
|
||||
root: ?*Node = null,
|
||||
root_version: usize = 0,
|
||||
};
|
||||
|
||||
// Attributes of an element the parser rebuilds (see settleDocument): the ones
|
||||
@@ -183,7 +187,7 @@ fn appendTextChunk(self: *Parser, parent: *Node, txt: []const u8) !void {
|
||||
// Fresh text run: the first chunk lives on _data only. buf stays empty
|
||||
// until (and unless) a second chunk arrives.
|
||||
const new_text = try Frame.node_factory.createTextNode(parent.getDocument(self.frame), txt);
|
||||
try self.frame.appendNew(parent, new_text);
|
||||
try self.frame.appendNew(parent, new_text, null);
|
||||
self.inserted_since_checkpoint +|= 1;
|
||||
self.pending_text = .{
|
||||
.parent = parent,
|
||||
@@ -624,7 +628,7 @@ fn _appendDoctypeToDocument(self: *Parser, name: []const u8, public_id: []const
|
||||
});
|
||||
|
||||
// Append it to the document
|
||||
try frame.appendNew(self.container.node, doctype.asNode());
|
||||
try frame.appendNew(self.container.node, doctype.asNode(), null);
|
||||
}
|
||||
|
||||
fn addAttrsIfMissingCallback(ctx: *anyopaque, target_ref: *anyopaque, attributes: h5e.AttributeIterator) callconv(.c) void {
|
||||
@@ -744,7 +748,10 @@ fn _appendCallback(self: *Parser, parent_pn: *ParsedNode, node_or_text: h5e.Node
|
||||
return;
|
||||
}
|
||||
const child = try self.settleDocument(parent_pn, child_pn);
|
||||
try self.frame.appendNew(parent, child);
|
||||
const root = self.rootOf(parent_pn);
|
||||
try self.frame.appendNew(parent, child, root);
|
||||
child_pn.root = root;
|
||||
child_pn.root_version = parent_pn.root_version;
|
||||
},
|
||||
.text => |txt| {
|
||||
const parent = parent_pn.node;
|
||||
@@ -755,6 +762,22 @@ fn _appendCallback(self: *Parser, parent_pn: *ParsedNode, node_or_text: h5e.Node
|
||||
}
|
||||
}
|
||||
|
||||
// Avoids walking to the root for every parsed element. When the parser inserts
|
||||
// new node, the root node of existing nodes doesn't change and we don't bump
|
||||
// dom_version, so we can cache this.
|
||||
fn rootOf(self: *Parser, pn: *ParsedNode) *Node {
|
||||
const version = self.frame.page.dom_version;
|
||||
if (pn.root) |root| {
|
||||
if (pn.root_version == version) {
|
||||
return root;
|
||||
}
|
||||
}
|
||||
const root = pn.node.getRootNode(.{});
|
||||
pn.root = root;
|
||||
pn.root_version = version;
|
||||
return root;
|
||||
}
|
||||
|
||||
fn settleDocument(self: *Parser, parent_pn: *ParsedNode, child_pn: *ParsedNode) !*Node {
|
||||
const frame = self.frame;
|
||||
const parent = parent_pn.node;
|
||||
|
||||
@@ -163,3 +163,39 @@
|
||||
testing.expectEqual('initial', callbackCalls[1].newValue);
|
||||
}
|
||||
</script>
|
||||
|
||||
<script id="style_declaration">
|
||||
{
|
||||
let calls = [];
|
||||
|
||||
class StyleObserver extends HTMLElement {
|
||||
static get observedAttributes() {
|
||||
return ['style'];
|
||||
}
|
||||
|
||||
attributeChangedCallback(name, oldValue, newValue) {
|
||||
calls.push(newValue);
|
||||
}
|
||||
}
|
||||
|
||||
customElements.define('style-observer', StyleObserver);
|
||||
const el = document.createElement('style-observer');
|
||||
|
||||
// each write runs the callback before returning
|
||||
el.style.setProperty('color', 'red');
|
||||
testing.expectEqual(['color: red;'], calls);
|
||||
|
||||
el.style.cssText = 'width: 1px;';
|
||||
testing.expectEqual(2, calls.length);
|
||||
|
||||
el.style.borderWidth = '2px';
|
||||
testing.expectEqual(3, calls.length);
|
||||
|
||||
el.style.cssFloat = 'left';
|
||||
testing.expectEqual(4, calls.length);
|
||||
|
||||
el.style.removeProperty('width');
|
||||
testing.expectEqual(5, calls.length);
|
||||
testing.expectEqual(el.getAttribute('style'), calls[4]);
|
||||
}
|
||||
</script>
|
||||
@@ -119,4 +119,57 @@
|
||||
testing.expectEqual('value2', window.attrChangedCalls[1].newValue);
|
||||
}
|
||||
</script>
|
||||
|
||||
<script>
|
||||
{
|
||||
window.disconnectedParseCalls = [];
|
||||
|
||||
class DisconnectedParseElement extends HTMLElement {
|
||||
constructor() {
|
||||
super();
|
||||
// No id yet when constructed synchronously by the parser.
|
||||
window.disconnectedParseCalls.push('ctor');
|
||||
}
|
||||
connectedCallback() {
|
||||
window.disconnectedParseCalls.push('connected ' + this.id);
|
||||
}
|
||||
}
|
||||
|
||||
customElements.define('disconnected-parse-element', DisconnectedParseElement);
|
||||
}
|
||||
</script>
|
||||
|
||||
<div id="detached-mid-parse"><script>document.getElementById('detached-mid-parse').remove();</script><disconnected-parse-element id="after-detach"></disconnected-parse-element></div>
|
||||
|
||||
<template id="parse-template"><disconnected-parse-element id="in-template"></disconnected-parse-element></template>
|
||||
|
||||
<script id="verify-disconnected-parse">
|
||||
{
|
||||
// The parser kept appending into a parent a script had detached: the
|
||||
// element is constructed (synchronously, main-document parse) but never
|
||||
// connected.
|
||||
testing.expectEqual(null, document.getElementById('after-detach'));
|
||||
testing.expectEqual('ctor', window.disconnectedParseCalls.join(','));
|
||||
|
||||
// Template contents are never connected (nor upgraded).
|
||||
testing.expectEqual(null, document.getElementById('in-template'));
|
||||
|
||||
window.disconnectedParseCalls = [];
|
||||
|
||||
// A shadow root scopes ids even when its host is detached, but nothing in
|
||||
// it is connected.
|
||||
const host = document.createElement('div');
|
||||
const shadow = host.attachShadow({mode: 'open'});
|
||||
shadow.innerHTML = '<disconnected-parse-element id="in-detached-shadow"></disconnected-parse-element>';
|
||||
testing.expectTrue(shadow.getElementById('in-detached-shadow') !== null);
|
||||
// (Fragment-parse constructors still run synchronously, so only check
|
||||
// that it isn't connected.)
|
||||
testing.expectEqual(-1, window.disconnectedParseCalls.indexOf('connected in-detached-shadow'));
|
||||
|
||||
// Once the host is connected, so is the element.
|
||||
document.body.appendChild(host);
|
||||
testing.expectEqual('connected in-detached-shadow', window.disconnectedParseCalls.at(-1));
|
||||
host.remove();
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
@@ -353,3 +353,25 @@
|
||||
// testing.expectEqual('c', childCalls[0].newValue);
|
||||
// }
|
||||
</script>
|
||||
|
||||
<my-unresolved id="unresolved"></my-unresolved>
|
||||
<script id="undefined_prototype">
|
||||
{
|
||||
const parsed = document.getElementById('unresolved');
|
||||
testing.expectEqual(HTMLElement.prototype, Object.getPrototypeOf(parsed));
|
||||
|
||||
const created = document.createElement('my-unresolved');
|
||||
testing.expectEqual(HTMLElement.prototype, Object.getPrototypeOf(created));
|
||||
|
||||
const windowless = document.implementation.createHTMLDocument('');
|
||||
const imported = windowless.createElement('my-unresolved');
|
||||
testing.expectEqual(HTMLElement.prototype, Object.getPrototypeOf(imported));
|
||||
|
||||
class MyUnresolved extends HTMLElement {}
|
||||
customElements.define('my-unresolved', MyUnresolved);
|
||||
testing.expectEqual(MyUnresolved.prototype, Object.getPrototypeOf(parsed));
|
||||
// define() only upgrades connected elements
|
||||
testing.expectEqual(HTMLElement.prototype, Object.getPrototypeOf(created));
|
||||
testing.expectEqual(HTMLElement.prototype, Object.getPrototypeOf(imported));
|
||||
}
|
||||
</script>
|
||||
@@ -429,3 +429,38 @@
|
||||
testing.expectEqual('id', Object.getOwnPropertyDescriptor(attrs, 'id').value.name);
|
||||
}
|
||||
</script>
|
||||
|
||||
<script id=namespaced>
|
||||
{
|
||||
const XLINK = 'http://www.w3.org/1999/xlink';
|
||||
const el = document.createElement('div');
|
||||
el.setAttribute('xlink:href', '#a');
|
||||
el.setAttribute('title', 't');
|
||||
|
||||
testing.expectEqual('#a', el.getAttributeNodeNS(XLINK, 'href').value);
|
||||
testing.expectEqual('t', el.getAttributeNodeNS(null, 'title').value);
|
||||
testing.expectEqual(null, el.getAttributeNodeNS(null, 'nope'));
|
||||
|
||||
el.removeAttributeNS(XLINK, 'href');
|
||||
testing.expectEqual(false, el.hasAttribute('xlink:href'));
|
||||
el.removeAttributeNS(null, 'title');
|
||||
testing.expectEqual(false, el.hasAttribute('title'));
|
||||
// removing a missing attribute is a no-op
|
||||
el.removeAttributeNS(null, 'nope');
|
||||
|
||||
const attr = document.createAttribute('data-n');
|
||||
attr.value = '1';
|
||||
testing.expectEqual(null, el.setAttributeNodeNS(attr));
|
||||
testing.expectEqual(el, attr.ownerElement);
|
||||
|
||||
const attrs = el.attributes;
|
||||
testing.expectEqual(attr, attrs.getNamedItemNS(null, 'data-n'));
|
||||
testing.expectEqual(null, attrs.getNamedItemNS(null, 'nope'));
|
||||
testing.expectEqual(attr, attrs.removeNamedItemNS(null, 'data-n'));
|
||||
testing.expectEqual(null, attr.ownerElement);
|
||||
testing.expectEqual(0, attrs.length);
|
||||
|
||||
testing.expectEqual(null, attrs.setNamedItemNS(attr));
|
||||
testing.expectEqual('1', el.getAttribute('data-n'));
|
||||
}
|
||||
</script>
|
||||
@@ -284,3 +284,13 @@
|
||||
testing.expectEqual('b', d.innerHTML);
|
||||
}
|
||||
</script>
|
||||
|
||||
<div id="tpl_parent"><template><b>x</b></template></div>
|
||||
<script id="serialize_from_ancestor">
|
||||
{
|
||||
const parent = $('#tpl_parent');
|
||||
testing.expectEqual('<template><b>x</b></template>', parent.innerHTML);
|
||||
testing.expectEqual('<div id="tpl_parent"><template><b>x</b></template></div>', parent.outerHTML);
|
||||
testing.expectEqual('<template><b>x</b></template>', parent.firstChild.outerHTML);
|
||||
}
|
||||
</script>
|
||||
@@ -129,3 +129,38 @@
|
||||
outer.remove();
|
||||
}
|
||||
</script>
|
||||
|
||||
<div id="rw">
|
||||
<input id="rw_text">
|
||||
<input id="rw_readonly" readonly>
|
||||
<input id="rw_disabled" disabled>
|
||||
<input id="rw_checkbox" type="checkbox">
|
||||
<input id="rw_number" type="number">
|
||||
<textarea id="rw_textarea"></textarea>
|
||||
<textarea id="rw_textarea_ro" readonly></textarea>
|
||||
<div id="rw_editable" contenteditable>
|
||||
<p id="rw_editable_child"><b id="rw_editable_grandchild"></b></p>
|
||||
<p id="rw_not_editable" contenteditable="false"><b id="rw_not_editable_child"></b></p>
|
||||
</div>
|
||||
<p id="rw_p"></p>
|
||||
</div>
|
||||
<script id="read_write">
|
||||
{
|
||||
const ids = (sel) => Array.from(document.querySelectorAll('#rw ' + sel)).map((e) => e.id).join();
|
||||
testing.expectEqual('rw_text,rw_number,rw_textarea,rw_editable,rw_editable_child,rw_editable_grandchild', ids(':read-write'));
|
||||
testing.expectEqual('rw_readonly,rw_disabled,rw_checkbox,rw_textarea_ro,rw_not_editable,rw_not_editable_child,rw_p', ids(':read-only'));
|
||||
}
|
||||
</script>
|
||||
|
||||
<ul id="nth_list"><li>1</li><li>2</li><li>3</li></ul>
|
||||
<script id="nth_whitespace">
|
||||
{
|
||||
const texts = (sel) => Array.from(document.querySelectorAll(sel)).map((li) => li.textContent).join();
|
||||
testing.expectEqual('1,3', texts('#nth_list li:nth-child(odd )'));
|
||||
testing.expectEqual('1,3', texts('#nth_list li:nth-child( 2n+1 )'));
|
||||
testing.expectEqual('2', texts('#nth_list li:nth-child( 2 )'));
|
||||
testing.expectEqual('2', texts('#nth_list li:nth-last-child(even )'));
|
||||
testing.expectEqual('3', texts('#nth_list li:nth-of-type( 3 )'));
|
||||
testing.expectEqual('1', texts('#nth_list li:nth-last-of-type( 3 )'));
|
||||
}
|
||||
</script>
|
||||
@@ -61,7 +61,7 @@
|
||||
|
||||
window.disabledEvents = [];
|
||||
const btnDisabled = document.getElementById('btnDisabled');
|
||||
for (const t of ['pointerdown', 'mousedown', 'pointerup', 'mouseup', 'click']) {
|
||||
for (const t of ['pointerdown', 'mousedown', 'pointerup', 'mouseup', 'click', 'contextmenu', 'auxclick']) {
|
||||
btnDisabled.addEventListener(t, function(e) { window.disabledEvents.push(e.type); });
|
||||
}
|
||||
|
||||
|
||||
@@ -591,3 +591,36 @@
|
||||
});
|
||||
}
|
||||
</script>
|
||||
|
||||
<script id=fetch_bad_content_encoding type=module>
|
||||
{
|
||||
const state = await testing.async();
|
||||
const url = 'http://127.0.0.1:9582/xhr/bad_gzip';
|
||||
const response = await fetch(url);
|
||||
const errors = [];
|
||||
for (const method of ['arrayBuffer', 'blob', 'bytes', 'formData', 'json', 'text']) {
|
||||
const res = await fetch(url);
|
||||
try {
|
||||
await res[method]();
|
||||
errors.push(null);
|
||||
} catch (e) {
|
||||
errors.push([e instanceof TypeError, res.bodyUsed]);
|
||||
}
|
||||
}
|
||||
let stream_error = null;
|
||||
try {
|
||||
await response.body.getReader().read();
|
||||
} catch (e) {
|
||||
stream_error = e;
|
||||
}
|
||||
state.resolve();
|
||||
|
||||
await state.done(() => {
|
||||
testing.expectEqual(200, response.status);
|
||||
for (const err of errors) {
|
||||
testing.expectEqual([true, true], err);
|
||||
}
|
||||
testing.expectEqual(true, stream_error !== null);
|
||||
});
|
||||
}
|
||||
</script>
|
||||
@@ -42,3 +42,18 @@
|
||||
testing.expectEqual('attr2', attr.textContent);
|
||||
testing.expectEqual(div, $('#attr2'));
|
||||
</script>
|
||||
|
||||
<script id=null_and_undefined>
|
||||
const p = document.createElement('p');
|
||||
p.innerHTML = '<b>x</b>';
|
||||
p.textContent = null;
|
||||
testing.expectEqual('<p></p>', p.outerHTML);
|
||||
|
||||
p.innerHTML = '<b>x</b>';
|
||||
p.textContent = undefined;
|
||||
testing.expectEqual('<p></p>', p.outerHTML);
|
||||
|
||||
const text = document.createTextNode('abc');
|
||||
text.textContent = null;
|
||||
testing.expectEqual('', text.data);
|
||||
</script>
|
||||
@@ -604,3 +604,8 @@
|
||||
});
|
||||
}
|
||||
</script>
|
||||
|
||||
<script id=timeOrigin_is_unix_epoch>
|
||||
// timeOrigin + now() is the current wall-clock time, like Date.now().
|
||||
testing.expectEqual(true, Math.abs(performance.timeOrigin + performance.now() - Date.now()) < 1000);
|
||||
</script>
|
||||
@@ -17,6 +17,10 @@
|
||||
</form>
|
||||
<script>
|
||||
window.events = [];
|
||||
window.over = [];
|
||||
for (const type of ['pointerover', 'mouseover']) {
|
||||
document.addEventListener(type, (e) => window.over.push(`${type}:${e.button}:${e.buttons}@${e.target.id}`));
|
||||
}
|
||||
for (const type of ['click', 'input', 'change', 'keydown', 'focus', 'blur']) {
|
||||
document.addEventListener(type, (e) => {
|
||||
const key = type === 'keydown' ? ':' + (e.shiftKey ? 'S-' : '') + e.key : '';
|
||||
|
||||
@@ -81,3 +81,17 @@
|
||||
testing.expectEqual(true, threw);
|
||||
</script>
|
||||
|
||||
|
||||
<script id=negative_and_overflowing_delay type=module>
|
||||
{
|
||||
const state = await testing.async();
|
||||
const fired = [];
|
||||
window.setTimeout(() => fired.push('negative'), -10);
|
||||
window.setTimeout(() => fired.push('overflow'), 2 ** 31);
|
||||
window.setTimeout(() => state.resolve(), 20);
|
||||
|
||||
await state.done(() => {
|
||||
testing.expectEqual('negative,overflow', fired.join());
|
||||
});
|
||||
}
|
||||
</script>
|
||||
@@ -708,16 +708,21 @@ pub fn getAttributeNS(
|
||||
local_name: String,
|
||||
frame: *Frame,
|
||||
) !?String {
|
||||
return self.getAttribute(try self.attributeNameNS(namespace_, local_name, frame), frame);
|
||||
}
|
||||
|
||||
// The stored name a namespaced lookup resolves to. We don't really support
|
||||
// namespaces, but if the namespace has a fixed prefix and the prefixed
|
||||
// attribute exists, that's the one.
|
||||
pub fn attributeNameNS(self: *const Element, namespace_: ?[]const u8, local_name: String, frame: *Frame) !String {
|
||||
if (namespace_) |namespace| {
|
||||
// we don't really support namespaces, but if the namespace has a fixed
|
||||
// prefix, we can try to fetch the attribute with it
|
||||
if (try prefixedAttributeName(namespace, local_name.str(), frame)) |prefixed| {
|
||||
if (try self.getAttribute(.wrap(prefixed), frame)) |value| {
|
||||
return value;
|
||||
if (try self.hasAttribute(.wrap(prefixed), frame)) {
|
||||
return .wrap(prefixed);
|
||||
}
|
||||
}
|
||||
}
|
||||
return self.getAttribute(local_name, frame);
|
||||
return local_name;
|
||||
}
|
||||
|
||||
fn prefixedAttributeName(namespace: []const u8, local_name: []const u8, frame: *Frame) !?[]const u8 {
|
||||
@@ -833,6 +838,10 @@ pub fn getAttributeNode(self: *Element, name: String, frame: *Frame) !?*Attribut
|
||||
return self._attributes.getAttribute(name, self, frame);
|
||||
}
|
||||
|
||||
pub fn getAttributeNodeNS(self: *Element, namespace_: ?[]const u8, local_name: String, frame: *Frame) !?*Attribute {
|
||||
return self.getAttributeNode(try self.attributeNameNS(namespace_, local_name, frame), frame);
|
||||
}
|
||||
|
||||
pub fn setAttribute(self: *Element, name: String, value: String, frame: *Frame) !void {
|
||||
try Attribute.validateAttributeName(name);
|
||||
_ = try self._attributes.put(name, value, self, frame);
|
||||
@@ -977,6 +986,10 @@ pub fn removeAttribute(self: *Element, name: String, frame: *Frame) !void {
|
||||
return self._attributes.delete(name, self, frame);
|
||||
}
|
||||
|
||||
pub fn removeAttributeNS(self: *Element, namespace_: ?[]const u8, local_name: String, frame: *Frame) !void {
|
||||
return self.removeAttribute(try self.attributeNameNS(namespace_, local_name, frame), frame);
|
||||
}
|
||||
|
||||
pub fn removeAttributeSafe(self: *Element, name: String, frame: *Frame) void {
|
||||
self._attributes.deleteSafe(name, self, frame);
|
||||
}
|
||||
@@ -1213,6 +1226,18 @@ pub fn isEditingHost(self: *Element) bool {
|
||||
return std.ascii.eqlIgnoreCase(value, "false") == false;
|
||||
}
|
||||
|
||||
// An editing host or a descendant of one: the nearest contenteditable
|
||||
// attribute decides.
|
||||
pub fn isEditable(self: *Element) bool {
|
||||
var current: ?*Element = self;
|
||||
while (current) |el| : (current = el.parentElement()) {
|
||||
if (el.getAttributeSafe(.wrap("contenteditable")) != null) {
|
||||
return el.isEditingHost();
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/// Focusable without a tabindex attribute.
|
||||
fn isNativelyFocusable(self: *Element) bool {
|
||||
if (self.is(Html) == null) {
|
||||
@@ -2694,8 +2719,12 @@ pub const JsApi = struct {
|
||||
pub const getAttribute = bridge.function(Element.getAttribute, .{});
|
||||
pub const getAttributeNS = bridge.function(Element.getAttributeNS, .{});
|
||||
pub const getAttributeNode = bridge.function(Element.getAttributeNode, .{});
|
||||
pub const getAttributeNodeNS = bridge.function(Element.getAttributeNodeNS, .{});
|
||||
pub const setAttributeNode = bridge.function(Element.setAttributeNode, .{ .ce_reactions = true });
|
||||
// Attributes don't carry a namespace, so this is setAttributeNode.
|
||||
pub const setAttributeNodeNS = bridge.function(Element.setAttributeNode, .{ .ce_reactions = true });
|
||||
pub const removeAttribute = bridge.function(Element.removeAttribute, .{ .ce_reactions = true });
|
||||
pub const removeAttributeNS = bridge.function(Element.removeAttributeNS, .{ .ce_reactions = true });
|
||||
pub const toggleAttribute = bridge.function(Element.toggleAttribute, .{ .ce_reactions = true });
|
||||
pub const getAttributeNames = bridge.function(Element.getAttributeNames, .{});
|
||||
pub const removeAttributeNode = bridge.function(Element.removeAttributeNode, .{ .ce_reactions = true });
|
||||
|
||||
@@ -1792,7 +1792,11 @@ pub const JsApi = struct {
|
||||
}.wrap, null, .{});
|
||||
pub const nodeType = bridge.accessor(Node.getNodeType, null, .{});
|
||||
|
||||
pub const textContent = bridge.accessor(_textContext, Node.setTextContent, .{ .ce_reactions = true });
|
||||
pub const textContent = bridge.accessor(_textContext, _setTextContent, .{ .ce_reactions = true });
|
||||
// textContent is a nullable DOMString: null (and undefined) mean the empty string.
|
||||
fn _setTextContent(self: *Node, data: ?[]const u8, frame: *Frame) !void {
|
||||
return self.setTextContent(data orelse "", frame);
|
||||
}
|
||||
fn _textContext(self: *Node, frame: *const Frame) !?[]const u8 {
|
||||
// cdata and attributes can return value directly, avoiding the copy
|
||||
switch (self._type) {
|
||||
|
||||
@@ -46,6 +46,8 @@ pub const Proto = EventTarget;
|
||||
|
||||
_proto: *EventTarget,
|
||||
_time_origin: u64,
|
||||
// Wall-clock (Unix epoch) microseconds at the same moment, exposed as timeOrigin.
|
||||
_time_origin_unix: u64,
|
||||
_arena: Allocator,
|
||||
_factory: *Factory,
|
||||
// Marks and measures. Kept in startTime order (see insertOrdered), as the
|
||||
@@ -78,10 +80,12 @@ _delivering: bool = false,
|
||||
/// Get high-resolution timestamp in microseconds, rounded to 5μs increments
|
||||
/// to match browser behavior (prevents fingerprinting)
|
||||
pub fn highResTimestamp() u64 {
|
||||
const micros = lp.datetime.microTimestamp(.boot);
|
||||
// Round to nearest 5 microseconds (like Firefox default)
|
||||
const rounded = @divTrunc(micros + 2, 5) * 5;
|
||||
return rounded;
|
||||
return roundMicros(lp.datetime.microTimestamp(.boot));
|
||||
}
|
||||
|
||||
// Round to nearest 5 microseconds (like Firefox default)
|
||||
fn roundMicros(micros: u64) u64 {
|
||||
return @divTrunc(micros + 2, 5) * 5;
|
||||
}
|
||||
|
||||
pub fn init(factory: *Factory, arena: Allocator) !*Performance {
|
||||
@@ -90,6 +94,7 @@ pub fn init(factory: *Factory, arena: Allocator) !*Performance {
|
||||
._arena = arena,
|
||||
._factory = factory,
|
||||
._time_origin = highResTimestamp(),
|
||||
._time_origin_unix = roundMicros(lp.datetime.microTimestamp(.real)),
|
||||
});
|
||||
}
|
||||
|
||||
@@ -115,7 +120,7 @@ pub fn now(self: *const Performance) f64 {
|
||||
|
||||
fn getTimeOrigin(self: *const Performance) f64 {
|
||||
// Return as milliseconds
|
||||
return @as(f64, @floatFromInt(self._time_origin)) / 1000.0;
|
||||
return @as(f64, @floatFromInt(self._time_origin_unix)) / 1000.0;
|
||||
}
|
||||
|
||||
fn getNavigation(self: *Performance) *PerformanceNavigation {
|
||||
|
||||
@@ -88,6 +88,11 @@ const ScheduleOpts = struct {
|
||||
mode: Mode = .normal,
|
||||
};
|
||||
|
||||
// setTimeout/setInterval take the delay as a WebIDL long: wrapped to 32 bits, negatives clamped to 0.
|
||||
pub fn delayFromJs(delay_ms: ?i32) u32 {
|
||||
return @intCast(@max(delay_ms orelse 0, 0));
|
||||
}
|
||||
|
||||
pub fn schedule(
|
||||
self: *Timers,
|
||||
exec: *js.Execution,
|
||||
|
||||
@@ -29,9 +29,7 @@ const Element = @import("Element.zig");
|
||||
const EventTarget = @import("EventTarget.zig");
|
||||
|
||||
const Cookie = @import("storage/Cookie.zig");
|
||||
const MouseEvent = @import("event/MouseEvent.zig");
|
||||
const TouchEvent = @import("event/TouchEvent.zig");
|
||||
const PointerEvent = @import("event/PointerEvent.zig");
|
||||
const KeyboardEvent = @import("event/KeyboardEvent.zig");
|
||||
const Label = @import("element/html/Label.zig");
|
||||
|
||||
@@ -60,13 +58,6 @@ fn getComputedLabel(_: *const WebDriver, element: *Element, frame: *Frame) ![]co
|
||||
// synchronously so the events are observable when the testdriver promise
|
||||
// resolves.
|
||||
pub fn click(_: *const WebDriver, element: *Element, frame: *Frame) !void {
|
||||
if (element.is(Element.Html)) |html| {
|
||||
switch (html._type) {
|
||||
.button, .input, .textarea, .select, .option, .optgroup => if (element.isDisabled()) return,
|
||||
else => {},
|
||||
}
|
||||
}
|
||||
|
||||
// A dispatch error must never reject the testdriver command.
|
||||
Frame.user_input.triggerClick(frame, element, frame.page.input_modifiers) catch |err| {
|
||||
log.debug(.app, "webdriver click", .{ .err = err });
|
||||
@@ -234,13 +225,7 @@ fn performPointerSource(source: js.Object, frame: *Frame) !void {
|
||||
// The element the pointer is currently over, set by the last pointerMove
|
||||
// whose origin resolved to an element.
|
||||
var target: ?*Element = null;
|
||||
var pressed = false;
|
||||
// The buttons bitmask of the currently depressed button, carried on move
|
||||
// and boundary events while dragging.
|
||||
var pressed_mask: u16 = 0;
|
||||
// Where the last pointerDown landed: the click fires at the nearest common
|
||||
// inclusive ancestor of the down and up targets when they differ.
|
||||
var down_target: ?*Element = null;
|
||||
var pointer: Frame.user_input.PointerButtons = .{};
|
||||
var click_count: u32 = 0;
|
||||
var last_click_button: i32 = 0;
|
||||
var last_click_target: ?*Element = null;
|
||||
@@ -266,89 +251,50 @@ fn performPointerSource(source: js.Object, frame: *Frame) !void {
|
||||
}
|
||||
}
|
||||
const el = target orelse continue;
|
||||
if (is_touch) {
|
||||
dispatchPointer(el, "pointermove", 0, pressed_mask, frame);
|
||||
if (pressed) {
|
||||
dispatchTouch(el, "touchmove", frame);
|
||||
}
|
||||
} else {
|
||||
Frame.user_input.updateHoverTarget(frame, el, .{
|
||||
.buttons = pressed_mask,
|
||||
.modifiers = frame.page.input_modifiers,
|
||||
.with_pointer = true,
|
||||
});
|
||||
dispatchPointer(el, "pointermove", 0, pressed_mask, frame);
|
||||
_ = dispatchMouse(el, "mousemove", 0, pressed_mask, 0, frame);
|
||||
Frame.user_input.moveSequence(frame, el, .{
|
||||
.buttons_down = pointer.held,
|
||||
.modifiers = frame.page.input_modifiers,
|
||||
.emit_mouse_compat = !is_touch,
|
||||
}) catch {};
|
||||
if (is_touch and pointer.held != 0) {
|
||||
dispatchTouch(el, "touchmove", frame);
|
||||
}
|
||||
} else if (action_type.eql(comptime .wrap("pointerDown"))) {
|
||||
const el = target orelse continue;
|
||||
const button = readI32(action, "button", 0);
|
||||
pressed = true;
|
||||
pressed_mask = Frame.user_input.buttonsBitmask(button);
|
||||
down_target = el;
|
||||
if (last_click_target == el and last_click_button == button) {
|
||||
click_count += 1;
|
||||
} else {
|
||||
click_count = 1;
|
||||
}
|
||||
dispatchPointer(el, "pointerdown", button, Frame.user_input.buttonsBitmask(button), frame);
|
||||
pointer.press(frame, el, .{
|
||||
.button = button,
|
||||
.click_count = click_count,
|
||||
.modifiers = frame.page.input_modifiers,
|
||||
.emit_mouse_compat = !is_touch,
|
||||
}) catch {};
|
||||
if (is_touch) {
|
||||
dispatchTouch(el, "touchstart", frame);
|
||||
} else {
|
||||
const suppressed = dispatchMouse(el, "mousedown", button, Frame.user_input.buttonsBitmask(button), click_count, frame);
|
||||
if (!suppressed) {
|
||||
Frame.user_input.focusForMouseDown(frame, el) catch |err| {
|
||||
log.debug(.app, "webdriver mousedown focus", .{ .err = err });
|
||||
};
|
||||
}
|
||||
}
|
||||
} else if (action_type.eql(comptime .wrap("pointerUp"))) {
|
||||
const el = target orelse continue;
|
||||
const button = readI32(action, "button", 0);
|
||||
pressed = false;
|
||||
pressed_mask = 0;
|
||||
dispatchPointer(el, "pointerup", button, 0, frame);
|
||||
last_click_button = button;
|
||||
last_click_target = pointer.release(frame, el, .{
|
||||
.button = button,
|
||||
.click_count = click_count,
|
||||
.modifiers = frame.page.input_modifiers,
|
||||
.emit_mouse_compat = !is_touch,
|
||||
}) catch null;
|
||||
if (is_touch) {
|
||||
dispatchTouch(el, "touchend", frame);
|
||||
} else {
|
||||
_ = dispatchMouse(el, "mouseup", button, 0, click_count, frame);
|
||||
const click_target = commonClickTarget(down_target orelse el, el);
|
||||
last_click_button = button;
|
||||
last_click_target = click_target;
|
||||
if (button == 0) {
|
||||
_ = dispatchMouse(click_target, "click", button, 0, click_count, frame);
|
||||
if (click_count % 2 == 0) {
|
||||
_ = dispatchMouse(click_target, "dblclick", button, 0, click_count, frame);
|
||||
}
|
||||
} else {
|
||||
if (button == 2) {
|
||||
_ = dispatchMouse(click_target, "contextmenu", button, 0, click_count, frame);
|
||||
}
|
||||
_ = dispatchMouse(click_target, "auxclick", button, 0, click_count, frame);
|
||||
}
|
||||
}
|
||||
down_target = null;
|
||||
}
|
||||
// "pause" carries timing only and is ignored. ("pointerCancel" is not
|
||||
// emitted by the testdriver Actions builder.)
|
||||
}
|
||||
}
|
||||
|
||||
// A click whose mousedown and mouseup landed on different elements fires at
|
||||
// their nearest common inclusive ancestor element.
|
||||
fn commonClickTarget(down: *Element, up: *Element) *Element {
|
||||
if (down == up) {
|
||||
return up;
|
||||
}
|
||||
var current: ?*@import("Node.zig") = down.asNode();
|
||||
while (current) |node| : (current = node.parentNode()) {
|
||||
if (node.contains(up.asNode())) {
|
||||
return node.is(Element) orelse break;
|
||||
}
|
||||
}
|
||||
return up;
|
||||
}
|
||||
|
||||
fn performWheelSource(source: js.Object, frame: *Frame) !void {
|
||||
const actions_val = try source.get("actions");
|
||||
if (!actions_val.isArray()) {
|
||||
@@ -535,51 +481,6 @@ fn readI32(obj: js.Object, key: []const u8, default: i32) i32 {
|
||||
return val.toI32() catch default;
|
||||
}
|
||||
|
||||
fn dispatchPointer(el: *Element, comptime typ: []const u8, button: i32, buttons: u16, frame: *Frame) void {
|
||||
const modifiers = frame.page.input_modifiers;
|
||||
const event = PointerEvent.initTrusted(typ, .{
|
||||
.bubbles = true,
|
||||
.cancelable = true,
|
||||
.composed = true,
|
||||
.button = button,
|
||||
.buttons = buttons,
|
||||
.pointerId = 1,
|
||||
.pointerType = "mouse",
|
||||
.isPrimary = true,
|
||||
.ctrlKey = modifiers.ctrl,
|
||||
.shiftKey = modifiers.shift,
|
||||
.altKey = modifiers.alt,
|
||||
.metaKey = modifiers.meta,
|
||||
}, frame) catch |err| {
|
||||
log.debug(.app, "webdriver pointer event", .{ .err = err, .type = typ });
|
||||
return;
|
||||
};
|
||||
dispatch(el.asEventTarget(), event.asEvent(), frame, typ);
|
||||
}
|
||||
|
||||
fn dispatchMouse(el: *Element, comptime typ: []const u8, button: i32, buttons: u16, detail: u32, frame: *Frame) bool {
|
||||
const modifiers = frame.page.input_modifiers;
|
||||
const event = MouseEvent.initTrusted(comptime .wrap(typ), .{
|
||||
.bubbles = true,
|
||||
.cancelable = true,
|
||||
.composed = true,
|
||||
.button = button,
|
||||
.buttons = buttons,
|
||||
.detail = detail,
|
||||
.ctrlKey = modifiers.ctrl,
|
||||
.shiftKey = modifiers.shift,
|
||||
.altKey = modifiers.alt,
|
||||
.metaKey = modifiers.meta,
|
||||
}, frame) catch |err| {
|
||||
log.debug(.app, "webdriver mouse event", .{ .err = err, .type = typ });
|
||||
return false;
|
||||
};
|
||||
return frame._event_manager.dispatchCancelable(el.asEventTarget(), event.asEvent()) catch |err| {
|
||||
log.debug(.app, "webdriver dispatch", .{ .err = err, .type = typ });
|
||||
return false;
|
||||
};
|
||||
}
|
||||
|
||||
// The action's x/y, which the caller already resolved the target from. An
|
||||
// element origin makes them offsets from its center, but the faux layout has
|
||||
// no center worth computing.
|
||||
|
||||
@@ -521,18 +521,18 @@ pub fn fetch(_: *const Window, input: Fetch.Input, options: ?Fetch.InitOpts, exe
|
||||
return Fetch.init(input, options, exec);
|
||||
}
|
||||
|
||||
pub fn setTimeout(self: *Window, handler: Timers.LegacyHandler, delay_ms: ?u32, params: []js.Value.Global, exec: *js.Execution) !u32 {
|
||||
pub fn setTimeout(self: *Window, handler: Timers.LegacyHandler, delay_ms: ?i32, params: []js.Value.Global, exec: *js.Execution) !u32 {
|
||||
const cb = try handler.resolve(exec);
|
||||
return self._timers.schedule(exec, cb, delay_ms orelse 0, .{
|
||||
return self._timers.schedule(exec, cb, Timers.delayFromJs(delay_ms), .{
|
||||
.repeat = false,
|
||||
.params = params,
|
||||
.name = "window.setTimeout",
|
||||
});
|
||||
}
|
||||
|
||||
pub fn setInterval(self: *Window, handler: Timers.LegacyHandler, delay_ms: ?u32, params: []js.Value.Global, exec: *js.Execution) !u32 {
|
||||
pub fn setInterval(self: *Window, handler: Timers.LegacyHandler, delay_ms: ?i32, params: []js.Value.Global, exec: *js.Execution) !u32 {
|
||||
const cb = try handler.resolve(exec);
|
||||
return self._timers.schedule(exec, cb, delay_ms orelse 0, .{
|
||||
return self._timers.schedule(exec, cb, Timers.delayFromJs(delay_ms), .{
|
||||
.repeat = true,
|
||||
.params = params,
|
||||
.name = "window.setInterval",
|
||||
|
||||
@@ -530,9 +530,9 @@ fn queueMicrotask(self: *WorkerGlobalScope, cb: JS.Function) void {
|
||||
self.js.queueMicrotaskFunc(cb);
|
||||
}
|
||||
|
||||
pub fn setTimeout(self: *WorkerGlobalScope, handler: Timers.LegacyHandler, delay_ms: ?u32, params: []JS.Value.Global, exec: *JS.Execution) !u32 {
|
||||
pub fn setTimeout(self: *WorkerGlobalScope, handler: Timers.LegacyHandler, delay_ms: ?i32, params: []JS.Value.Global, exec: *JS.Execution) !u32 {
|
||||
const cb = try handler.resolve(exec);
|
||||
return self._timers.schedule(exec, cb, delay_ms orelse 0, .{
|
||||
return self._timers.schedule(exec, cb, Timers.delayFromJs(delay_ms), .{
|
||||
.repeat = false,
|
||||
.params = params,
|
||||
.name = "worker.setTimeout",
|
||||
@@ -543,9 +543,9 @@ fn clearTimeout(self: *WorkerGlobalScope, id: u32) void {
|
||||
self._timers.clear(id);
|
||||
}
|
||||
|
||||
pub fn setInterval(self: *WorkerGlobalScope, handler: Timers.LegacyHandler, delay_ms: ?u32, params: []JS.Value.Global, exec: *JS.Execution) !u32 {
|
||||
pub fn setInterval(self: *WorkerGlobalScope, handler: Timers.LegacyHandler, delay_ms: ?i32, params: []JS.Value.Global, exec: *JS.Execution) !u32 {
|
||||
const cb = try handler.resolve(exec);
|
||||
return self._timers.schedule(exec, cb, delay_ms orelse 0, .{
|
||||
return self._timers.schedule(exec, cb, Timers.delayFromJs(delay_ms), .{
|
||||
.repeat = true,
|
||||
.params = params,
|
||||
.name = "worker.setInterval",
|
||||
|
||||
Vendored
+3
@@ -299,6 +299,9 @@ fn unstorable(response: *const Response) ?[]const u8 {
|
||||
if (response._body == .stream) {
|
||||
return "Response with a ReadableStream body is unsupported";
|
||||
}
|
||||
if (response._body == .errored) {
|
||||
return "Response body is errored";
|
||||
}
|
||||
for (response._headers._list._entries.items) |*header| {
|
||||
if (std.ascii.eqlIgnoreCase(header.name.str(), "vary") == false) {
|
||||
continue;
|
||||
|
||||
@@ -1061,7 +1061,7 @@ pub const JsApi = struct {
|
||||
pub var class_id: bridge.ClassId = undefined;
|
||||
};
|
||||
|
||||
pub const cssText = bridge.accessor(CSSStyleDeclaration.getCssText, CSSStyleDeclaration.setCssText, .{});
|
||||
pub const cssText = bridge.accessor(CSSStyleDeclaration.getCssText, CSSStyleDeclaration.setCssText, .{ .ce_reactions = true });
|
||||
pub const length = bridge.accessor(CSSStyleDeclaration.length, null, .{});
|
||||
pub const item = bridge.function(_item, .{});
|
||||
|
||||
@@ -1074,9 +1074,9 @@ pub const JsApi = struct {
|
||||
|
||||
pub const getPropertyValue = bridge.function(CSSStyleDeclaration.getPropertyValue, .{});
|
||||
pub const getPropertyPriority = bridge.function(CSSStyleDeclaration.getPropertyPriority, .{});
|
||||
pub const setProperty = bridge.function(CSSStyleDeclaration.setProperty, .{});
|
||||
pub const removeProperty = bridge.function(CSSStyleDeclaration.removeProperty, .{});
|
||||
pub const cssFloat = bridge.accessor(CSSStyleDeclaration.getFloat, CSSStyleDeclaration.setFloat, .{});
|
||||
pub const setProperty = bridge.function(CSSStyleDeclaration.setProperty, .{ .ce_reactions = true });
|
||||
pub const removeProperty = bridge.function(CSSStyleDeclaration.removeProperty, .{ .ce_reactions = true });
|
||||
pub const cssFloat = bridge.accessor(CSSStyleDeclaration.getFloat, CSSStyleDeclaration.setFloat, .{ .ce_reactions = true });
|
||||
};
|
||||
|
||||
const testing = @import("../../../testing.zig");
|
||||
|
||||
@@ -405,5 +405,5 @@ pub const JsApi = struct {
|
||||
pub var class_id: bridge.ClassId = undefined;
|
||||
};
|
||||
|
||||
pub const @"[]" = bridge.namedIndexed(CSSStyleProperties.getNamed, CSSStyleProperties.setNamed, null, null, null, .{});
|
||||
pub const @"[]" = bridge.namedIndexed(CSSStyleProperties.getNamed, CSSStyleProperties.setNamed, null, null, null, .{ .ce_reactions = true });
|
||||
};
|
||||
@@ -614,6 +614,10 @@ pub const NamedNodeMap = struct {
|
||||
return self.list().getAttribute(name, self._element, frame);
|
||||
}
|
||||
|
||||
fn getByNameNS(self: *const NamedNodeMap, namespace: ?[]const u8, local_name: String, frame: *Frame) !?*Attribute {
|
||||
return self._element.getAttributeNodeNS(namespace, local_name, frame);
|
||||
}
|
||||
|
||||
pub fn set(self: *const NamedNodeMap, attribute: *Attribute, frame: *Frame) !?*Attribute {
|
||||
return self._element.setAttributeNode(attribute, frame);
|
||||
}
|
||||
@@ -626,6 +630,10 @@ pub const NamedNodeMap = struct {
|
||||
return attr;
|
||||
}
|
||||
|
||||
fn removeByNameNS(self: *const NamedNodeMap, namespace: ?[]const u8, local_name: String, frame: *Frame) !?*Attribute {
|
||||
return self.removeByName(try self._element.attributeNameNS(namespace, local_name, frame), frame);
|
||||
}
|
||||
|
||||
pub fn iterator(self: *const NamedNodeMap, frame: *Frame) !*Iterator {
|
||||
return .init(.{ .list = self }, frame);
|
||||
}
|
||||
@@ -682,8 +690,12 @@ pub const NamedNodeMap = struct {
|
||||
}.wrap, .{ .null_as_undefined = true });
|
||||
|
||||
pub const getNamedItem = bridge.function(NamedNodeMap.getByName, .{});
|
||||
pub const getNamedItemNS = bridge.function(NamedNodeMap.getByNameNS, .{});
|
||||
pub const setNamedItem = bridge.function(NamedNodeMap.set, .{ .ce_reactions = true });
|
||||
// Attributes don't carry a namespace, so this is setNamedItem.
|
||||
pub const setNamedItemNS = bridge.function(NamedNodeMap.set, .{ .ce_reactions = true });
|
||||
pub const removeNamedItem = bridge.function(NamedNodeMap.removeByName, .{ .ce_reactions = true });
|
||||
pub const removeNamedItemNS = bridge.function(NamedNodeMap.removeByNameNS, .{ .ce_reactions = true });
|
||||
pub const item = bridge.function(_item, .{});
|
||||
fn _item(self: *const NamedNodeMap, index: i32, frame: *Frame) !?*Attribute {
|
||||
// the bridge.indexed handles this, so if we want
|
||||
|
||||
@@ -643,13 +643,8 @@ pub fn setContentEditable(self: *HtmlElement, value: []const u8, frame: *Frame)
|
||||
}
|
||||
|
||||
pub fn getIsContentEditable(self: *HtmlElement) bool {
|
||||
var current: ?*Element = self.asElement();
|
||||
while (current) |el| : (current = el.parentElement()) {
|
||||
const raw = el.getAttributeSafe(.wrap("contenteditable")) orelse continue;
|
||||
if (!std.ascii.eqlIgnoreCase(raw, "false")) {
|
||||
log.info(.not_implemented, "IsContentEditable", .{});
|
||||
}
|
||||
break;
|
||||
if (self.asElement().isEditable()) {
|
||||
log.info(.not_implemented, "IsContentEditable", .{});
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -365,5 +365,9 @@ pub const JsApi = struct {
|
||||
pub const Meta = struct {
|
||||
pub const prototype_chain = bridge.prototypeChain();
|
||||
pub var class_id: bridge.ClassId = undefined;
|
||||
// The template only applies to wrappers created outside construction:
|
||||
// undefined elements, or a defined one first seen by an isolated world.
|
||||
// Both get HTMLElement.prototype.
|
||||
pub const wrap_as = HtmlElement.JsApi;
|
||||
};
|
||||
};
|
||||
@@ -46,6 +46,7 @@ _signal: ?*AbortSignal,
|
||||
_manual_redirect: bool,
|
||||
_no_cors: bool,
|
||||
_null_body: bool,
|
||||
_headers_done: bool = false,
|
||||
_sink: Sink,
|
||||
|
||||
pub const Input = Request.Input;
|
||||
@@ -160,6 +161,7 @@ fn submit(request: *Request, body: ?[]const u8, sink: Sink, exec: *const Executi
|
||||
.manual => .manual,
|
||||
.@"error" => .@"error",
|
||||
},
|
||||
.header_before_body_error = true,
|
||||
.header_callback = httpHeaderDoneCallback,
|
||||
.data_callback = httpDataCallback,
|
||||
.done_callback = httpDoneCallback,
|
||||
@@ -249,6 +251,7 @@ fn httpHeaderDoneCallback(transfer: *Transfer) !Transfer.HeaderResult {
|
||||
res._url = "";
|
||||
res._type = .@"opaque";
|
||||
res._is_redirected = false;
|
||||
self._headers_done = true;
|
||||
return .proceed;
|
||||
}
|
||||
|
||||
@@ -260,6 +263,7 @@ fn httpHeaderDoneCallback(transfer: *Transfer) !Transfer.HeaderResult {
|
||||
res._url = "";
|
||||
res._type = .opaqueredirect;
|
||||
res._is_redirected = false;
|
||||
self._headers_done = true;
|
||||
return .proceed;
|
||||
}
|
||||
|
||||
@@ -286,6 +290,7 @@ fn httpHeaderDoneCallback(transfer: *Transfer) !Transfer.HeaderResult {
|
||||
try res._headers.append(hdr.name, hdr.value, exec);
|
||||
}
|
||||
|
||||
self._headers_done = true;
|
||||
return .proceed;
|
||||
}
|
||||
|
||||
@@ -354,7 +359,7 @@ fn httpErrorCallback(ctx: *anyopaque, err: anyerror) void {
|
||||
// Capture this before we reject. Rejection could trigger httpShutdownCallback
|
||||
// (via a microtask callback). But if we're here, then we'll take care of
|
||||
// cleaning up when we're done.
|
||||
const owns_response = self._owns_response;
|
||||
var owns_response = self._owns_response;
|
||||
self._owns_response = false;
|
||||
|
||||
// the response is only passed on v8 on success, if we're here, it's safe to
|
||||
@@ -373,10 +378,29 @@ fn httpErrorCallback(ctx: *anyopaque, err: anyerror) void {
|
||||
self._exec.js.localScope(&ls);
|
||||
defer ls.deinit();
|
||||
|
||||
if (owns_response and self._headers_done and self.isAborted() == false) {
|
||||
// Once we have the headers, the promise should resolve. A later error,
|
||||
// like libcurl returning a BadContentEncoding errors at the body, not
|
||||
// the fetch.
|
||||
if (self._null_body == false) {
|
||||
response._body = .errored;
|
||||
}
|
||||
if (ls.local.zigValueToJs(response, .{})) |js_val| {
|
||||
owns_response = false;
|
||||
response._arena.report();
|
||||
return ls.toLocal(resolver).resolve("fetch done", js_val);
|
||||
} else |_| {}
|
||||
}
|
||||
|
||||
// fetch() must reject with a TypeError on network errors per spec
|
||||
ls.toLocal(resolver).rejectError("fetch error", .{ .type_error = "fetch error" });
|
||||
}
|
||||
|
||||
fn isAborted(self: *const Fetch) bool {
|
||||
const signal = self._signal orelse return false;
|
||||
return signal._aborted;
|
||||
}
|
||||
|
||||
fn httpShutdownCallback(ctx: *anyopaque) void {
|
||||
const self: *Fetch = @ptrCast(@alignCast(ctx));
|
||||
|
||||
|
||||
@@ -62,6 +62,7 @@ const Body = union(enum) {
|
||||
empty,
|
||||
bytes: []const u8,
|
||||
stream: *ReadableStream,
|
||||
errored,
|
||||
};
|
||||
|
||||
const InitOpts = struct {
|
||||
@@ -316,6 +317,18 @@ pub fn getBody(self: *Response, exec: *const Execution) !?*ReadableStream {
|
||||
}
|
||||
return stream;
|
||||
},
|
||||
.errored => {
|
||||
if (self._body_stream) |stream| {
|
||||
return stream;
|
||||
}
|
||||
const stream = try ReadableStream.init(null, null, exec);
|
||||
try stream._controller.doError("Failed to read response body");
|
||||
self._body_stream = stream;
|
||||
if (self._body_used) {
|
||||
try lockStream(stream, exec);
|
||||
}
|
||||
return stream;
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
@@ -334,7 +347,7 @@ fn getBodyUsed(self: *const Response) bool {
|
||||
return switch (self._body) {
|
||||
.empty => false,
|
||||
.stream => |stream| stream._disturbed,
|
||||
.bytes => self._body_used,
|
||||
.bytes, .errored => self._body_used,
|
||||
};
|
||||
}
|
||||
|
||||
@@ -343,7 +356,7 @@ fn checkUnusable(self: *const Response, local: *const js.Local) !void {
|
||||
const stream = switch (self._body) {
|
||||
.empty => return,
|
||||
.stream => |stream| stream,
|
||||
.bytes => self._body_stream orelse {
|
||||
.bytes, .errored => self._body_stream orelse {
|
||||
if (self._body_used) {
|
||||
return local.typeError("Body has already been read");
|
||||
}
|
||||
@@ -360,10 +373,11 @@ fn consume(self: *Response, exec: *const Execution) !void {
|
||||
const local = exec.js.local.?;
|
||||
try self.checkUnusable(local);
|
||||
self._body_used = true;
|
||||
if (self._body == .bytes) {
|
||||
if (self._body_stream) |stream| {
|
||||
switch (self._body) {
|
||||
.bytes, .errored => if (self._body_stream) |stream| {
|
||||
try lockStream(stream, exec);
|
||||
}
|
||||
},
|
||||
.empty, .stream => {},
|
||||
}
|
||||
}
|
||||
|
||||
@@ -373,6 +387,7 @@ pub fn consumeBytes(self: *Response, exec: *const Execution) ![]const u8 {
|
||||
.empty => "",
|
||||
.bytes => |b| b,
|
||||
.stream => exec.js.local.?.typeError("Response with a ReadableStream body is unsupported"),
|
||||
.errored => exec.js.local.?.typeError("Failed to read response body"),
|
||||
};
|
||||
}
|
||||
|
||||
@@ -410,6 +425,11 @@ fn consumeAs(self: *Response, kind: Package, exec: *const Execution) !js.Promise
|
||||
const content_type = try self._headers.get("content-type", exec);
|
||||
switch (self._body) {
|
||||
.stream => |stream| return StreamConsumer.start(stream, kind, content_type, exec),
|
||||
.errored => {
|
||||
var resolver = local.createPromiseResolver();
|
||||
resolver.rejectError("response body", .{ .type_error = "Failed to read response body" });
|
||||
return resolver.promise();
|
||||
},
|
||||
.bytes, .empty => {},
|
||||
}
|
||||
|
||||
@@ -551,8 +571,7 @@ pub fn clone(self: *const Response, exec: *const Execution) !*Response {
|
||||
const session = exec.session;
|
||||
const body_len = switch (self._body) {
|
||||
.bytes => |b| b.len,
|
||||
.empty => 0,
|
||||
.stream => 0,
|
||||
.empty, .stream, .errored => 0,
|
||||
};
|
||||
const arena = try session.getPinnedArena(body_len + self._url.len + 256, "Response.clone");
|
||||
errdefer arena.release();
|
||||
@@ -561,6 +580,7 @@ pub fn clone(self: *const Response, exec: *const Execution) !*Response {
|
||||
.bytes => |b| .{ .bytes = try arena.dupe(u8, b) },
|
||||
.empty => .empty,
|
||||
.stream => .empty, // TODO: implement stream tee for proper cloning
|
||||
.errored => .errored,
|
||||
};
|
||||
const status_text = try arena.dupe(u8, self._status_text);
|
||||
const url = try arena.dupeSentinel(u8, self._url, 0);
|
||||
|
||||
@@ -505,6 +505,22 @@ fn attributeContainsWord(value: []const u8, word: []const u8) bool {
|
||||
return false;
|
||||
}
|
||||
|
||||
// https://html.spec.whatwg.org/multipage/semantics-other.html#selector-read-write
|
||||
fn isReadWrite(el: *Node.Element) bool {
|
||||
if (el.is(Node.Element.Html.Input)) |input| {
|
||||
const readonly_applies = switch (input._input_type) {
|
||||
.text, .password, .email, .url, .tel, .search, .number => true,
|
||||
.date, .time, .@"datetime-local", .month, .week => true,
|
||||
else => false,
|
||||
};
|
||||
return readonly_applies and !el.hasAttributeInterned("readonly") and !el.isDisabled();
|
||||
}
|
||||
if (el.is(Node.Element.Html.TextArea) != null) {
|
||||
return !el.hasAttributeInterned("readonly") and !el.isDisabled();
|
||||
}
|
||||
return el.isEditable();
|
||||
}
|
||||
|
||||
fn matchesPseudoClass(el: *Node.Element, pseudo: Selector.PseudoClass, scope: *Node, nth: ?*NthCache, frame: *Frame) bool {
|
||||
const node = el.asNode();
|
||||
switch (pseudo) {
|
||||
@@ -569,12 +585,8 @@ fn matchesPseudoClass(el: *Node.Element, pseudo: Selector.PseudoClass, scope: *N
|
||||
.in_range => return false,
|
||||
.out_of_range => return false,
|
||||
.placeholder_shown => return false,
|
||||
.read_only => {
|
||||
return el.hasAttributeInterned("readonly");
|
||||
},
|
||||
.read_write => {
|
||||
return el.hasAttributeInterned("readonly") == false;
|
||||
},
|
||||
.read_only => return !isReadWrite(el),
|
||||
.read_write => return isReadWrite(el),
|
||||
.default => return false,
|
||||
|
||||
// User interaction
|
||||
|
||||
@@ -429,6 +429,7 @@ fn pseudoClass(self: *Parser, arena: Allocator) !Selector.PseudoClass {
|
||||
|
||||
if (std.mem.eql(u8, name, "nth-child")) {
|
||||
const pattern = try self.parseNthPattern();
|
||||
_ = self.skipSpaces();
|
||||
if (self.peek() != ')') return error.InvalidPseudoClass;
|
||||
self.input = self.input[1..];
|
||||
return .{ .nth_child = pattern };
|
||||
@@ -436,6 +437,7 @@ fn pseudoClass(self: *Parser, arena: Allocator) !Selector.PseudoClass {
|
||||
|
||||
if (std.mem.eql(u8, name, "nth-last-child")) {
|
||||
const pattern = try self.parseNthPattern();
|
||||
_ = self.skipSpaces();
|
||||
if (self.peek() != ')') return error.InvalidPseudoClass;
|
||||
self.input = self.input[1..];
|
||||
return .{ .nth_last_child = pattern };
|
||||
@@ -443,6 +445,7 @@ fn pseudoClass(self: *Parser, arena: Allocator) !Selector.PseudoClass {
|
||||
|
||||
if (std.mem.eql(u8, name, "nth-of-type")) {
|
||||
const pattern = try self.parseNthPattern();
|
||||
_ = self.skipSpaces();
|
||||
if (self.peek() != ')') return error.InvalidPseudoClass;
|
||||
self.input = self.input[1..];
|
||||
return .{ .nth_of_type = pattern };
|
||||
@@ -450,6 +453,7 @@ fn pseudoClass(self: *Parser, arena: Allocator) !Selector.PseudoClass {
|
||||
|
||||
if (std.mem.eql(u8, name, "nth-last-of-type")) {
|
||||
const pattern = try self.parseNthPattern();
|
||||
_ = self.skipSpaces();
|
||||
if (self.peek() != ')') return error.InvalidPseudoClass;
|
||||
self.input = self.input[1..];
|
||||
return .{ .nth_last_of_type = pattern };
|
||||
|
||||
+1
-1
@@ -1416,7 +1416,7 @@ test "MCP - Actions: click, fill, scroll, hover, press, selectOption, setChecked
|
||||
\\ 'pointerup:0:0:0:mouse:true', 'mouseup:0:0:1::true', 'click:0:0:1:mouse:true'
|
||||
\\ ]) &&
|
||||
\\ JSON.stringify(window.seqPrevented) === JSON.stringify(['pointerdown', 'pointerup', 'click']) &&
|
||||
\\ JSON.stringify(window.disabledEvents) === '[]' &&
|
||||
\\ JSON.stringify(window.disabledEvents) === JSON.stringify(['pointerdown', 'pointerup']) &&
|
||||
\\ window.focusTargetFocused === true && window.plainBlurred === true &&
|
||||
\\ window.clicked === true && window.inputVal === 'hello' &&
|
||||
\\ window.changed === true && window.selChanged === 'opt2' &&
|
||||
|
||||
@@ -1901,9 +1901,20 @@ fn processOneMessage(self: *Client, msg: http.Handles.MultiMessage, transfer: *T
|
||||
// callbacks run later, from dispatch(), never from here.
|
||||
|
||||
if (effective_err != null and !is_conn_close_recv) {
|
||||
const err = transfer.res.callback_error orelse effective_err.?;
|
||||
if (try transfer.deliversHeaderBeforeError(msg.conn)) {
|
||||
try transfer.materializeResponse(msg.conn, .{ .check_content_length = false });
|
||||
if (self.enforceCorsResponse(msg, transfer)) {
|
||||
return true;
|
||||
}
|
||||
self.removeConn(msg.conn);
|
||||
transfer._conn = null;
|
||||
try transfer.bufferHeaderThenError(err);
|
||||
return true;
|
||||
}
|
||||
self.removeConn(msg.conn);
|
||||
transfer._conn = null;
|
||||
transfer.failAsync(transfer.res.callback_error orelse effective_err.?);
|
||||
transfer.failAsync(err);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -2099,6 +2110,12 @@ pub const Request = struct {
|
||||
// transfer, and thus we'll need to dupe it.
|
||||
body_outlives_request: bool = false,
|
||||
|
||||
// Should an error after the header arives still call the header_callback.
|
||||
// Most cases just want the error. But fetch() is considered resolved once
|
||||
// we get the header, so where the error happens (before or after headers
|
||||
// is important)
|
||||
header_before_body_error: bool = false,
|
||||
|
||||
// arbitrary data that can be associated with this request
|
||||
ctx: *anyopaque = undefined,
|
||||
|
||||
@@ -3277,6 +3294,33 @@ pub const Transfer = struct {
|
||||
};
|
||||
}
|
||||
|
||||
fn deliversHeaderBeforeError(self: *const Transfer, conn: *const http.Connection) !bool {
|
||||
if (self.req.header_before_body_error == false or self.res.headers_complete == false) {
|
||||
return false;
|
||||
}
|
||||
if (self.res.stream.started) {
|
||||
// The header was already delivered.
|
||||
return false;
|
||||
}
|
||||
const status = try conn.getResponseCode();
|
||||
if (isRedirectStatus(status) and self.req.redirect != .manual and conn.getResponseHeader("location", 0) != null) {
|
||||
// this isn't the final response.
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
// The header made it, the body didn't. Some cases (header_before_body_error = true)
|
||||
// want the header delivered first. (By default though, we just deliver the
|
||||
// error)
|
||||
fn bufferHeaderThenError(self: *Transfer, err: anyerror) !void {
|
||||
try self._events.ensureUnusedCapacity(self.arena.allocator(), 3);
|
||||
self._events.appendAssumeCapacity(.start);
|
||||
self._events.appendAssumeCapacity(.header);
|
||||
self._events.appendAssumeCapacity(.{ .err = err });
|
||||
self.scheduleDispatch();
|
||||
}
|
||||
|
||||
// Buffer the standard success event sequence. `body` is either owned by
|
||||
// transfer.arena OR, through some other mechanism, outlives the transfer.
|
||||
fn bufferEvents(self: *Transfer, body: []const u8) !void {
|
||||
@@ -3893,6 +3937,16 @@ pub const Transfer = struct {
|
||||
return chunk_len;
|
||||
}
|
||||
|
||||
if (std.mem.trim(u8, line, "\r\n").len == 0) {
|
||||
// End of a header block. A 1xx is followed by another one.
|
||||
const conn: *http.Connection = @ptrCast(@alignCast(data));
|
||||
const status = conn.getResponseCode() catch return chunk_len;
|
||||
if (status >= 200) {
|
||||
conn.transport.http.res.headers_complete = true;
|
||||
}
|
||||
return chunk_len;
|
||||
}
|
||||
|
||||
if (announcesBody(line) == false) {
|
||||
return chunk_len;
|
||||
}
|
||||
@@ -4362,6 +4416,9 @@ const Response = struct {
|
||||
skip_body: bool = false,
|
||||
first_data_received: bool = false,
|
||||
|
||||
// The final (non-1xx) response's header block has been fully received.
|
||||
headers_complete: bool = false,
|
||||
|
||||
// Set when dataCallback deliberately killed the transfer to satisfy
|
||||
// `Request.partial`. processOneMessage uses it to tell our own abort
|
||||
// apart from a real CURLE_WRITE_ERROR and deliver the response (headers,
|
||||
|
||||
@@ -50,6 +50,8 @@ struct ParsedNode {
|
||||
_node: *const c_void,
|
||||
data: *const ElementData,
|
||||
_placed: bool,
|
||||
_root: *const c_void,
|
||||
_root_version: usize,
|
||||
}
|
||||
|
||||
fn element_data<'a>(target: Ref) -> &'a ElementData {
|
||||
|
||||
@@ -2276,6 +2276,8 @@ test "server: HTTP element input" {
|
||||
const btn = try findElement(&c, &session_id, "css selector", "#btn");
|
||||
try testing.expectEqual("{\"value\":null}", responseBody(try elementPost(&c, &session_id, btn, "/click", "{}")));
|
||||
try testing.expectEqual("{\"value\":\"focus@btn click@btn\"}", try executeSync(&c, &session_id, take_events, "[]"));
|
||||
// The pointer arrives before the press: no button is held yet.
|
||||
try testing.expectEqual("{\"value\":\"pointerover:-1:0@btn mouseover:0:0@btn\"}", try executeSync(&c, &session_id, "return window.over.join(' ');", "[]"));
|
||||
|
||||
{
|
||||
const gone = try findElement(&c, &session_id, "css selector", "#gone");
|
||||
|
||||
@@ -669,7 +669,6 @@ fn elementClick(cmd: *BiDi.Command, p: ElementId) !void {
|
||||
break :blk;
|
||||
}
|
||||
|
||||
Frame.user_input.updateHoverTarget(frame, element, .{ .with_pointer = true });
|
||||
try Frame.user_input.triggerClick(frame, element, .{});
|
||||
|
||||
// a multiple <select> toggles the option, any other selects it
|
||||
@@ -679,8 +678,7 @@ fn elementClick(cmd: *BiDi.Command, p: ElementId) !void {
|
||||
}
|
||||
try option.setSelected(selected, frame);
|
||||
try lp.actions.dispatchInputAndChangeEvents(select_element, frame);
|
||||
} else if (element.isDisabled() == false) {
|
||||
Frame.user_input.updateHoverTarget(frame, element, .{ .with_pointer = true });
|
||||
} else {
|
||||
try Frame.user_input.triggerClick(frame, element, .{});
|
||||
}
|
||||
return browsing_context.answerAfterNavigation(cmd, ctx, frame);
|
||||
|
||||
@@ -207,6 +207,7 @@ const Source = struct {
|
||||
last_click_ms: u64 = 0,
|
||||
last_click_x: f64 = 0,
|
||||
last_click_y: f64 = 0,
|
||||
last_click_button: u8 = 0,
|
||||
click_count: i32 = 0,
|
||||
};
|
||||
|
||||
@@ -579,10 +580,13 @@ fn dispatch(bidi: *BiDi, frame: *Frame, source: *Source, action: *const Action)
|
||||
}
|
||||
try pointer.pressed.append(allocator, button);
|
||||
|
||||
// A press near the last click, soon enough after it, counts up
|
||||
// A press of the same button near the last click, soon enough
|
||||
// after it, counts up
|
||||
const now = lp.datetime.milliTimestamp(.boot);
|
||||
const near = @abs(pointer.x - pointer.last_click_x) <= 2 and @abs(pointer.y - pointer.last_click_y) <= 2;
|
||||
pointer.click_count = if (near and now - pointer.last_click_ms <= 500) pointer.click_count + 1 else 1;
|
||||
const repeat = near and button == pointer.last_click_button and now - pointer.last_click_ms <= 500;
|
||||
pointer.click_count = if (repeat) pointer.click_count + 1 else 1;
|
||||
pointer.last_click_button = button;
|
||||
pointer.last_click_ms = now;
|
||||
pointer.last_click_x = pointer.x;
|
||||
pointer.last_click_y = pointer.y;
|
||||
@@ -988,6 +992,26 @@ test "bidi.input: click via element origin" {
|
||||
.type = "string",
|
||||
.value = "mousemove@btn mousedown:b2@btn mouseup:b2@btn",
|
||||
} }, .{ .id = 7 });
|
||||
|
||||
// A left click right after the right one starts a new count: no dblclick.
|
||||
try ctx.processMessage(.{
|
||||
.id = 8,
|
||||
.method = "input.performActions",
|
||||
.params = .{ .context = context_id, .actions = .{.{
|
||||
.type = "pointer",
|
||||
.id = "mouse",
|
||||
.actions = .{
|
||||
.{ .type = "pointerDown", .button = 0 },
|
||||
.{ .type = "pointerUp", .button = 0 },
|
||||
},
|
||||
}} },
|
||||
});
|
||||
try ctx.expectSentResult(null, .{ .id = 8 });
|
||||
try evaluate(&ctx, 9, context_id, "window.events.slice(11).join(' ')");
|
||||
try ctx.expectSentResult(.{ .type = "success", .result = .{
|
||||
.type = "string",
|
||||
.value = "mousedown@btn mouseup@btn click@btn",
|
||||
} }, .{ .id = 9 });
|
||||
}
|
||||
|
||||
test "bidi.input: keys and modifiers" {
|
||||
|
||||
@@ -89,7 +89,7 @@ pub const Writer = struct {
|
||||
try self.walkQuery(self.root.dom, &ignore_cache, w);
|
||||
} else {
|
||||
const root = AXNode.fromNode(self.root.dom);
|
||||
const root_hidden = if (self.root.dom.is(DOMNode.Element)) |el| isHidden(el, self.frame, .{}) else false;
|
||||
const root_hidden = if (self.root.dom.is(DOMNode.Element)) |el| isHidden(el, self.frame) else false;
|
||||
try self.writeTree(root, root_hidden, &ignore_cache, w);
|
||||
}
|
||||
return w.endArray();
|
||||
@@ -139,7 +139,7 @@ pub const Writer = struct {
|
||||
// visibility:hidden, aria-hidden, hidden, inert). Matches
|
||||
// Chromium: these elements aren't exposed to the AX tree.
|
||||
const el = dom_node.as(DOMNode.Element);
|
||||
if (walker.inAriaHidden() or isHidden(el, self.frame, .{ .ancestors = false })) {
|
||||
if (walker.inAriaHidden() or isHidden(el, self.frame)) {
|
||||
continue;
|
||||
}
|
||||
},
|
||||
@@ -580,7 +580,7 @@ pub const Writer = struct {
|
||||
// Skip hidden element children so childIds matches the
|
||||
// subtree-pruning done in writeTree.
|
||||
if (child.is(DOMNode.Element)) |child_el| {
|
||||
if (child_in_aria_hidden or isHidden(child_el, self.frame, .{ .ancestors = false })) {
|
||||
if (child_in_aria_hidden or isHidden(child_el, self.frame)) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
@@ -679,7 +679,7 @@ pub const Writer = struct {
|
||||
}
|
||||
|
||||
const node = try self.registry.register(axn.dom);
|
||||
const hidden = if (axn.dom.is(DOMNode.Element)) |el| isHidden(el, self.frame, .{}) else false;
|
||||
const hidden = if (axn.dom.is(DOMNode.Element)) |el| isHidden(el, self.frame) else false;
|
||||
const ignored = try axn.isIgnore(self.frame, in_aria_hidden, hidden, ignore_cache);
|
||||
|
||||
try w.beginObject();
|
||||
@@ -1235,7 +1235,7 @@ fn labelPromotionTarget(
|
||||
|
||||
// Only promote when the control is hidden; otherwise it appears
|
||||
// normally and the label stays as-is.
|
||||
if (!isHidden(control, frame, .{})) return null;
|
||||
if (!isHidden(control, frame)) return null;
|
||||
|
||||
if (control.getTag() != .input) return null;
|
||||
const input = control.as(DOMNode.Element.Html.Input);
|
||||
@@ -1291,18 +1291,13 @@ fn scratchAllocator(temp_arena: ?*lp.Arena, frame: *Frame) std.mem.Allocator {
|
||||
return if (temp_arena) |a| a.allocator() else frame.call_arena;
|
||||
}
|
||||
|
||||
const HiddenOptions = struct { ancestors: bool = true };
|
||||
|
||||
/// Chromium's AX tree prunes display:none and visibility:hidden alike.
|
||||
fn isHidden(elt: *DOMNode.Element, frame: *Frame, options: HiddenOptions) bool {
|
||||
fn isHidden(elt: *DOMNode.Element, frame: *Frame) bool {
|
||||
if (hasHidingAttribute(elt)) {
|
||||
return true;
|
||||
}
|
||||
const owner = elt.ownerFrame(frame) orelse return false;
|
||||
return owner._style_manager.isHidden(elt, .{
|
||||
.check_visibility = true,
|
||||
.ancestors = options.ancestors,
|
||||
});
|
||||
return owner._style_manager.isHidden(elt, .{ .check_visibility = true });
|
||||
}
|
||||
|
||||
fn hasHidingAttribute(elt: *DOMNode.Element) bool {
|
||||
@@ -1367,7 +1362,7 @@ const IgnoreCache = struct {
|
||||
|
||||
var tw = TreeWalker.FullExcludeSelf.init(root, .{});
|
||||
const exposed = while (tw.next()) |node| {
|
||||
const node_hidden = if (node.is(DOMNode.Element)) |el| isHidden(el, frame, .{ .ancestors = false }) else false;
|
||||
const node_hidden = if (node.is(DOMNode.Element)) |el| isHidden(el, frame) else false;
|
||||
switch (AXNode.fromNode(node).ignoreSelf(false, node_hidden)) {
|
||||
.ignored => tw.skipChildren(),
|
||||
.exposed => break node,
|
||||
|
||||
@@ -56,15 +56,14 @@ fn dispatchKeyEvent(cmd: *CDP.Command) !void {
|
||||
|
||||
try cmd.sendResult(null, .{});
|
||||
|
||||
// rawKeyDown is a Chrome-internal event type not used for JS dispatch
|
||||
if (params.type == .rawKeyDown) return;
|
||||
|
||||
const bc = cmd.browser_context orelse return;
|
||||
const frame = bc.mainFrame() orelse return;
|
||||
|
||||
// Chrome types text only for an event carrying it: a keyDown with `text`
|
||||
// (Puppeteer, Playwright) or a `char` (chromedp, after a text-less keyDown).
|
||||
const text: ?[]const u8 = if (params.text.len == 0) null else params.text;
|
||||
// Puppeteer and Playwright send rawKeyDown, which never types text, for keys
|
||||
// like Backspace, the arrows and Escape.
|
||||
const text: ?[]const u8 = if (params.text.len == 0 or params.type == .rawKeyDown) null else params.text;
|
||||
const KeyboardEvent = @import("../../../browser/webapi/event/KeyboardEvent.zig");
|
||||
const opts: KeyboardEvent.Options = .{
|
||||
.key = if (params.key.len > 0) params.key else params.text,
|
||||
@@ -76,8 +75,7 @@ fn dispatchKeyEvent(cmd: *CDP.Command) !void {
|
||||
};
|
||||
|
||||
switch (params.type) {
|
||||
.rawKeyDown => unreachable,
|
||||
.keyDown => {
|
||||
.keyDown, .rawKeyDown => {
|
||||
const event = try KeyboardEvent.initTrusted(comptime .wrap("keydown"), opts, frame);
|
||||
const prevented = try Frame.user_input.triggerKeyDown(frame, event, text);
|
||||
bc.suppress_next_char = prevented and text == null;
|
||||
@@ -200,6 +198,36 @@ test "cdp.input: insertText is a user edit for tooLong" {
|
||||
try testing.expect((try ls.local.compileAndRun("inp.validity.tooLong === false", null)).isTrue());
|
||||
}
|
||||
|
||||
test "cdp.input: rawKeyDown dispatches keydown for keys without text" {
|
||||
var ctx = try testing.context();
|
||||
defer ctx.deinit();
|
||||
|
||||
const bc = try ctx.loadBrowserContext(.{});
|
||||
const page = try bc.session.createPage();
|
||||
const frame = page.frame().?;
|
||||
|
||||
try frame.navigate("http://localhost:9582/src/browser/tests/mcp_actions.html", .{ .reason = .address_bar, .kind = .{ .push = null } });
|
||||
try testing.waitForPage(bc);
|
||||
|
||||
var ls: lp.js.Local.Scope = undefined;
|
||||
frame.js.localScope(&ls);
|
||||
defer ls.deinit();
|
||||
|
||||
_ = try ls.local.compileAndRun(
|
||||
\\const inp = document.getElementById('inp');
|
||||
\\inp.value = 'abc';
|
||||
\\inp.focus();
|
||||
\\inp.setSelectionRange(3, 3);
|
||||
\\window.keys = [];
|
||||
\\inp.addEventListener('keydown', (e) => keys.push(e.key));
|
||||
, null);
|
||||
|
||||
// What Puppeteer and Playwright send for keyboard.press('Backspace').
|
||||
try ctx.processMessage(.{ .id = 1, .method = "Input.dispatchKeyEvent", .params = .{ .type = "rawKeyDown", .key = "Backspace", .code = "Backspace" } });
|
||||
try ctx.processMessage(.{ .id = 2, .method = "Input.dispatchKeyEvent", .params = .{ .type = "keyUp", .key = "Backspace", .code = "Backspace" } });
|
||||
try testing.expect((try ls.local.compileAndRun("keys.join() === 'Backspace' && inp.value === 'ab'", null)).isTrue());
|
||||
}
|
||||
|
||||
test "cdp.input: insertText replaces select()ed value of email and number inputs" {
|
||||
var ctx = try testing.context();
|
||||
defer ctx.deinit();
|
||||
@@ -315,6 +343,65 @@ test "cdp.input: dispatchMouseEvent mouseReleased fires mouseup" {
|
||||
try testing.expect(result.isTrue());
|
||||
}
|
||||
|
||||
test "cdp.input: dispatchMouseEvent button activation events match Chrome" {
|
||||
var ctx = try testing.context();
|
||||
defer ctx.deinit();
|
||||
|
||||
const bc = try ctx.loadBrowserContext(.{});
|
||||
const page = try bc.session.createPage();
|
||||
const frame = page.frame().?;
|
||||
|
||||
const url = "http://localhost:9582/src/browser/tests/mcp_actions.html";
|
||||
try frame.navigate(url, .{ .reason = .address_bar, .kind = .{ .push = null } });
|
||||
try testing.waitForPage(bc);
|
||||
|
||||
var ls: lp.js.Local.Scope = undefined;
|
||||
frame.js.localScope(&ls);
|
||||
defer ls.deinit();
|
||||
|
||||
var try_catch: lp.js.TryCatch = undefined;
|
||||
try_catch.init(&ls.local);
|
||||
defer try_catch.deinit();
|
||||
|
||||
_ = try ls.local.compileAndRun(
|
||||
\\window.clicks = [];
|
||||
\\for (const t of ['mousedown', 'mouseup', 'click', 'auxclick', 'contextmenu']) {
|
||||
\\ document.getElementById('hoverTarget')
|
||||
\\ .addEventListener(t, (e) => { window.clicks.push(t + ':' + e.button); });
|
||||
\\}
|
||||
, null);
|
||||
|
||||
const rect_x = try (try ls.local.compileAndRun("document.getElementById('hoverTarget').getBoundingClientRect().x", null)).toF64();
|
||||
const rect_y = try (try ls.local.compileAndRun("document.getElementById('hoverTarget').getBoundingClientRect().y", null)).toF64();
|
||||
|
||||
const presses = [_]struct { button: []const u8, click_count: i32, expected: []const u8 }{
|
||||
.{ .button = "middle", .click_count = 1, .expected = "mousedown:1 mouseup:1 auxclick:1" },
|
||||
.{ .button = "right", .click_count = 1, .expected = "mousedown:2 contextmenu:2 mouseup:2 auxclick:2" },
|
||||
.{ .button = "back", .click_count = 1, .expected = "mousedown:3 mouseup:3 auxclick:3" },
|
||||
.{ .button = "forward", .click_count = 1, .expected = "mousedown:4 mouseup:4 auxclick:4" },
|
||||
.{ .button = "left", .click_count = 0, .expected = "mousedown:0 mouseup:0" },
|
||||
.{ .button = "right", .click_count = 0, .expected = "mousedown:2 contextmenu:2 mouseup:2" },
|
||||
};
|
||||
var id: u32 = 1;
|
||||
for (presses) |press| {
|
||||
_ = try ls.local.compileAndRun("window.clicks = []", null);
|
||||
try ctx.processMessage(.{
|
||||
.id = id,
|
||||
.method = "Input.dispatchMouseEvent",
|
||||
.params = .{ .type = "mousePressed", .x = rect_x, .y = rect_y, .button = press.button, .clickCount = press.click_count },
|
||||
});
|
||||
try ctx.processMessage(.{
|
||||
.id = id + 1,
|
||||
.method = "Input.dispatchMouseEvent",
|
||||
.params = .{ .type = "mouseReleased", .x = rect_x, .y = rect_y, .button = press.button, .clickCount = press.click_count },
|
||||
});
|
||||
id += 2;
|
||||
|
||||
const got = try (try ls.local.compileAndRun("window.clicks.join(' ')", null)).toStringSlice();
|
||||
try testing.expectEqual(press.expected, got);
|
||||
}
|
||||
}
|
||||
|
||||
test "cdp.input: dispatchMouseEvent mousePressed honors preventDefault for focus" {
|
||||
var ctx = try testing.context();
|
||||
defer ctx.deinit();
|
||||
@@ -687,7 +774,7 @@ test "cdp.input: dispatchMouseEvent right button fires contextmenu, double-click
|
||||
|
||||
_ = try ls.local.compileAndRun(
|
||||
\\const t = document.getElementById('hoverTarget');
|
||||
\\t.addEventListener('mousedown', (e) => { window.downButton = e.button; });
|
||||
\\t.addEventListener('mousedown', (e) => { window.downButton ??= e.button; });
|
||||
\\t.addEventListener('contextmenu', (e) => { window.ctxButton = e.button; });
|
||||
\\t.addEventListener('dblclick', () => { window.dbl = true; });
|
||||
, null);
|
||||
@@ -695,7 +782,7 @@ test "cdp.input: dispatchMouseEvent right button fires contextmenu, double-click
|
||||
const rect_x = try (try ls.local.compileAndRun("document.getElementById('hoverTarget').getBoundingClientRect().x", null)).toF64();
|
||||
const rect_y = try (try ls.local.compileAndRun("document.getElementById('hoverTarget').getBoundingClientRect().y", null)).toF64();
|
||||
|
||||
// Right button: press carries button=2, release fires contextmenu (not click).
|
||||
// Right button: press carries button=2 and fires contextmenu.
|
||||
try ctx.processMessage(.{
|
||||
.id = 1,
|
||||
.method = "Input.dispatchMouseEvent",
|
||||
@@ -711,6 +798,11 @@ test "cdp.input: dispatchMouseEvent right button fires contextmenu, double-click
|
||||
try ctx.processMessage(.{
|
||||
.id = 3,
|
||||
.method = "Input.dispatchMouseEvent",
|
||||
.params = .{ .type = "mousePressed", .x = rect_x, .y = rect_y, .button = "left", .clickCount = 2 },
|
||||
});
|
||||
try ctx.processMessage(.{
|
||||
.id = 4,
|
||||
.method = "Input.dispatchMouseEvent",
|
||||
.params = .{ .type = "mouseReleased", .x = rect_x, .y = rect_y, .button = "left", .clickCount = 2 },
|
||||
});
|
||||
|
||||
@@ -946,9 +1038,61 @@ test "cdp.input: a cancelled pointerdown suppresses mousedown and mouseup across
|
||||
try testing.expect(result.isTrue());
|
||||
}
|
||||
|
||||
// Asserts only the pointer events: pointerdown/pointerup fire at the mask's
|
||||
// 0/nonzero transitions and a mid-gesture button change is a pointermove (the
|
||||
// activation order below is a pre-existing, non-spec deviation from Chrome).
|
||||
// A disabled control gets the pointer events, contextmenu and auxclick, but no
|
||||
// mouse events or click. Matches Chrome.
|
||||
test "cdp.input: a disabled button gets only pointer and context events" {
|
||||
var ctx = try testing.context();
|
||||
defer ctx.deinit();
|
||||
|
||||
const bc = try ctx.loadBrowserContext(.{});
|
||||
const page = try bc.session.createPage();
|
||||
const frame = page.frame().?;
|
||||
|
||||
const url = "http://localhost:9582/src/browser/tests/mcp_actions.html";
|
||||
try frame.navigate(url, .{ .reason = .address_bar, .kind = .{ .push = null } });
|
||||
try testing.waitForPage(bc);
|
||||
|
||||
var ls: lp.js.Local.Scope = undefined;
|
||||
frame.js.localScope(&ls);
|
||||
defer ls.deinit();
|
||||
|
||||
var try_catch: lp.js.TryCatch = undefined;
|
||||
try_catch.init(&ls.local);
|
||||
defer try_catch.deinit();
|
||||
|
||||
const rect_x = try (try ls.local.compileAndRun("document.getElementById('btnDisabled').getBoundingClientRect().x", null)).toF64();
|
||||
const rect_y = try (try ls.local.compileAndRun("document.getElementById('btnDisabled').getBoundingClientRect().y", null)).toF64();
|
||||
|
||||
try ctx.processMessage(.{
|
||||
.id = 1,
|
||||
.method = "Input.dispatchMouseEvent",
|
||||
.params = .{ .type = "mousePressed", .x = rect_x, .y = rect_y, .button = "left", .clickCount = 1 },
|
||||
});
|
||||
try ctx.processMessage(.{
|
||||
.id = 2,
|
||||
.method = "Input.dispatchMouseEvent",
|
||||
.params = .{ .type = "mouseReleased", .x = rect_x, .y = rect_y, .button = "left", .clickCount = 1 },
|
||||
});
|
||||
try ctx.processMessage(.{
|
||||
.id = 3,
|
||||
.method = "Input.dispatchMouseEvent",
|
||||
.params = .{ .type = "mousePressed", .x = rect_x, .y = rect_y, .button = "right", .clickCount = 1 },
|
||||
});
|
||||
try ctx.processMessage(.{
|
||||
.id = 4,
|
||||
.method = "Input.dispatchMouseEvent",
|
||||
.params = .{ .type = "mouseReleased", .x = rect_x, .y = rect_y, .button = "right", .clickCount = 1 },
|
||||
});
|
||||
|
||||
const result = try ls.local.compileAndRun(
|
||||
\\JSON.stringify(window.disabledEvents) === JSON.stringify([
|
||||
\\ 'pointerdown', 'pointerup', 'pointerdown', 'contextmenu', 'pointerup', 'auxclick'
|
||||
\\])
|
||||
, null);
|
||||
try testing.expect(result.isTrue());
|
||||
}
|
||||
|
||||
// The pointerdown is cancelled, so no compat mouse events fire. Matches Chrome.
|
||||
test "cdp.input: a mouse chord fires pointermove for the mid-gesture button change, not a second pointerdown/pointerup" {
|
||||
var ctx = try testing.context();
|
||||
defer ctx.deinit();
|
||||
@@ -995,7 +1139,7 @@ test "cdp.input: a mouse chord fires pointermove for the mid-gesture button chan
|
||||
|
||||
const result = try ls.local.compileAndRun(
|
||||
\\JSON.stringify(window.seqChord) === JSON.stringify([
|
||||
\\ 'pointerdown:1', 'pointermove:3', 'pointermove:1', 'contextmenu:1', 'pointerup:0', 'click:0'
|
||||
\\ 'pointerdown:1', 'pointermove:3', 'contextmenu:3', 'pointermove:1', 'auxclick:1', 'pointerup:0'
|
||||
\\])
|
||||
, null);
|
||||
try testing.expect(result.isTrue());
|
||||
@@ -1050,7 +1194,7 @@ test "cdp.input: a primary click fired mid-chord carries the still-held buttons
|
||||
|
||||
const result = try ls.local.compileAndRun(
|
||||
\\JSON.stringify(window.seqChord) === JSON.stringify([
|
||||
\\ 'pointerdown:1', 'pointermove:3', 'pointermove:2', 'click:2', 'pointerup:0', 'contextmenu:0'
|
||||
\\ 'pointerdown:1', 'pointermove:3', 'contextmenu:3', 'pointermove:2', 'click:2', 'pointerup:0'
|
||||
\\])
|
||||
, null);
|
||||
try testing.expect(result.isTrue());
|
||||
@@ -1593,3 +1737,29 @@ test "cdp.input: dispatchKeyEvent Enter clicks buttons and submits once" {
|
||||
try testing.expectEqualSlices(u8, c.expect, got);
|
||||
}
|
||||
}
|
||||
|
||||
test "cdp.input: re-navigating an iframe drops the pointer state on its elements" {
|
||||
var ctx = try testing.context();
|
||||
defer ctx.deinit();
|
||||
|
||||
const bc = try ctx.loadBrowserContext(.{ .url = "cdp/input_iframe.html" });
|
||||
const main = bc.mainFrame().?;
|
||||
const page = main.page;
|
||||
const child = main.child_frames.items[0];
|
||||
const text = child.document.getElementById("text", child) orelse unreachable;
|
||||
|
||||
try lp.actions.click(text.asNode(), child);
|
||||
try page.input_pointer.press(child, text, .{});
|
||||
try testing.expect(page.input_hover_target == text);
|
||||
try testing.expect(page.input_pointer.down_target == text);
|
||||
|
||||
var ls: lp.js.Local.Scope = undefined;
|
||||
main.js.localScope(&ls);
|
||||
defer ls.deinit();
|
||||
_ = try ls.local.compileAndRun("document.querySelector('iframe').src = 'iframe/input_child.html?again'", null);
|
||||
_ = try bc.session.processQueuedNavigation();
|
||||
|
||||
try testing.expect(page.input_hover_target == null);
|
||||
try testing.expect(page.input_pointer.down_target == null);
|
||||
try testing.expectEqual(0, page.input_pointer.held);
|
||||
}
|
||||
@@ -927,6 +927,14 @@ fn testHTTPHandler(req: *std.http.Server.Request) !void {
|
||||
});
|
||||
}
|
||||
|
||||
if (std.mem.eql(u8, path, "/xhr/bad_gzip")) {
|
||||
return req.respond("not actually gzip", .{
|
||||
.extra_headers = &.{
|
||||
.{ .name = "Content-Encoding", .value = "gzip" },
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
if (std.mem.eql(u8, path, "/xhr/no_content_type")) {
|
||||
return req.respond("untyped", .{});
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user