Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
9ebbfc5
Handle simple cases of MarshalComVariantForOleVariant
huoyaoyuan May 14, 2024
7c35e76
Pseudo code for MarshalOleVariantForComVariant
huoyaoyuan May 14, 2024
2b7b42b
Complete and setup managed call for MarshalObjectForOleVariant
huoyaoyuan May 15, 2024
b7b73dd
Setup MarshalHelperConvertObjectToVariant except record
huoyaoyuan May 15, 2024
c9b06fe
Setup MarshalHelperCastVariant
huoyaoyuan May 15, 2024
fcd2cff
Cleanup Variant struct and FCall
huoyaoyuan May 15, 2024
c193137
Handle record case
huoyaoyuan May 16, 2024
fb34d6d
Cleanup VariantOleToCom/VariantComToOle routines
huoyaoyuan May 16, 2024
4ba8412
Remove VariantData definition at unmanaged side
huoyaoyuan May 16, 2024
e38f65c
Eliminate a dead branch for ref
huoyaoyuan May 16, 2024
8be5299
Remove CVTypes in native
huoyaoyuan May 16, 2024
f653d98
Share GetComIPFromObjectRef
huoyaoyuan May 16, 2024
0af450d
Add tests for managed to native side
huoyaoyuan May 17, 2024
dbd1c03
Add test for native to managed side
huoyaoyuan May 17, 2024
8409346
Add test for byref returning to BYREF
huoyaoyuan May 19, 2024
827ffec
Merge branch 'variant-test' into variant-2
huoyaoyuan May 19, 2024
435dedd
Fix BYREF handling
huoyaoyuan May 19, 2024
eceed3f
Fix array marshalling
huoyaoyuan May 20, 2024
6d4ee35
Fix record marshalling
huoyaoyuan May 21, 2024
03a5f7f
Fix VT_VARIANT case
huoyaoyuan May 21, 2024
3ed9214
Cleanup and fix IUnknown case
huoyaoyuan May 21, 2024
3f509a1
Add more test for VT_UNKNOWN
huoyaoyuan May 21, 2024
57617e0
Merge branch 'variant-test' into variant-2
huoyaoyuan May 21, 2024
faee4ec
Cleanup for VT_VARIANT
huoyaoyuan May 21, 2024
99f6ef5
Cleanup SR and comment
huoyaoyuan May 21, 2024
dcd0287
Fix contract in GetTypeHandleForVarType
huoyaoyuan May 21, 2024
e58937b
Move VariantChangeTypeEx to coreclr
huoyaoyuan May 23, 2024
454c170
Add unmanaged fast path for (U)Int64
huoyaoyuan May 25, 2024
f2f71e7
Make ComVariant immutable
huoyaoyuan May 25, 2024
04f6aad
Add GCPROTECT in ConvertSystemColorToOleColor
huoyaoyuan May 25, 2024
8da56dd
Fix variant init
huoyaoyuan May 26, 2024
3c095a1
Fix BYREF|EMPTY
huoyaoyuan May 26, 2024
170fefc
Merge branch 'main' into variant-2
huoyaoyuan May 29, 2024
d2381bf
Initialize ComVariant
huoyaoyuan May 29, 2024
b315d3a
Move GCPROTECT to the QCall
huoyaoyuan May 29, 2024
bf5a151
Merge branch 'main' into variant-2
huoyaoyuan May 30, 2024
68525c8
Pass UnknownWrapper through SetFieldsObject
huoyaoyuan May 30, 2024
41ad24f
Apply suggestions from code review
huoyaoyuan Jun 1, 2024
7a9b989
Suggestions at native side
huoyaoyuan Jun 1, 2024
9cc8a38
Rename ComIP
huoyaoyuan Jun 1, 2024
944b76a
Add comments for ConvertWrappedObject
huoyaoyuan Jun 1, 2024
09af5b7
Try convert to RECORD for all cases
huoyaoyuan Jun 12, 2024
0ff823e
Merge branch 'main'
huoyaoyuan Jul 16, 2024
5dfda22
Dispose Variant on failure
huoyaoyuan Jul 16, 2024
545d597
Update formatting
huoyaoyuan Jul 16, 2024
fb32db0
Fix NO_MAPPING definition
huoyaoyuan Jul 17, 2024
b85abfa
Merge branch 'main'
huoyaoyuan Aug 23, 2024
20506a5
Merge branch 'main' into variant-2
AaronRobinsonMSFT Aug 26, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line numberDiff line numberDiff line change
Expand Up@@ -286,6 +286,9 @@
<Compile Include="$(CommonPath)Interop\Windows\OleAut32\Interop.VariantClear.cs">
<Link>Common\Interop\Windows\OleAut32\Interop.VariantClear.cs</Link>
</Compile>
<Compile Include="$(CommonPath)Interop\Windows\OleAut32\Interop.VariantChangeTypeEx.cs">
<Link>Common\Interop\Windows\OleAut32\Interop.VariantChangeTypeEx.cs</Link>
</Compile>
</ItemGroup>
<ItemGroup Condition="'$(FeatureObjCMarshal)' == 'true'">
<Compile Include="$(BclSourcesRoot)\System\Runtime\InteropServices\ObjectiveCMarshal.CoreCLR.cs" />
Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -151,19 +151,10 @@ private static ComVariant ToOAVariant(object input)
null => default,
Missing => throw new NotSupportedException(SR.NotSupported_ChangeType),
DBNull => ComVariant.Null,
_ => GetComIPFromObjectRef(input) // Convert the object to an IDispatch/IUnknown pointer.
_ => Variant.GetIUnknownOrIDispatchFromObject(input) // Convert the object to an IDispatch/IUnknown pointer.
};
}

private static ComVariant GetComIPFromObjectRef(object? obj)
{
IntPtr pUnk = GetIUnknownOrIDispatchForObject(ObjectHandleOnStack.Create(ref obj), out bool isIDispatch);
return ComVariant.CreateRaw(isIDispatch ? VarEnum.VT_DISPATCH : VarEnum.VT_UNKNOWN, pUnk);
}

[LibraryImport(RuntimeHelpers.QCall, EntryPoint = "MarshalNative_GetIUnknownOrIDispatchForObject")]
private static partial IntPtr GetIUnknownOrIDispatchForObject(ObjectHandleOnStack o, [MarshalAs(UnmanagedType.Bool)] out bool isIDispatch);

private static object? FromOAVariant(ComVariant input) =>
input.VarType switch
{
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
9ebbfc5
Handle simple cases of MarshalComVariantForOleVariant
huoyaoyuan May 14, 2024
7c35e76
Pseudo code for MarshalOleVariantForComVariant
huoyaoyuan May 14, 2024
2b7b42b
Complete and setup managed call for MarshalObjectForOleVariant
huoyaoyuan May 15, 2024
b7b73dd
Setup MarshalHelperConvertObjectToVariant except record
huoyaoyuan May 15, 2024
c9b06fe
Setup MarshalHelperCastVariant
huoyaoyuan May 15, 2024
fcd2cff
Cleanup Variant struct and FCall
huoyaoyuan May 15, 2024
c193137
Handle record case
huoyaoyuan May 16, 2024
fb34d6d
Cleanup VariantOleToCom/VariantComToOle routines
huoyaoyuan May 16, 2024
4ba8412
Remove VariantData definition at unmanaged side
huoyaoyuan May 16, 2024
e38f65c
Eliminate a dead branch for ref
huoyaoyuan May 16, 2024
8be5299
Remove CVTypes in native
huoyaoyuan May 16, 2024
f653d98
Share GetComIPFromObjectRef
huoyaoyuan May 16, 2024
0af450d
Add tests for managed to native side
huoyaoyuan May 17, 2024
dbd1c03
Add test for native to managed side
huoyaoyuan May 17, 2024
8409346
Add test for byref returning to BYREF
huoyaoyuan May 19, 2024
827ffec
Merge branch 'variant-test' into variant-2
huoyaoyuan May 19, 2024
435dedd
Fix BYREF handling
huoyaoyuan May 19, 2024
eceed3f
Fix array marshalling
huoyaoyuan May 20, 2024
6d4ee35
Fix record marshalling
huoyaoyuan May 21, 2024
03a5f7f
Fix VT_VARIANT case
huoyaoyuan May 21, 2024
3ed9214
Cleanup and fix IUnknown case
huoyaoyuan May 21, 2024
3f509a1
Add more test for VT_UNKNOWN
huoyaoyuan May 21, 2024
57617e0
Merge branch 'variant-test' into variant-2
huoyaoyuan May 21, 2024
faee4ec
Cleanup for VT_VARIANT
huoyaoyuan May 21, 2024
99f6ef5
Cleanup SR and comment
huoyaoyuan May 21, 2024
dcd0287
Fix contract in GetTypeHandleForVarType
huoyaoyuan May 21, 2024
e58937b
Move VariantChangeTypeEx to coreclr
huoyaoyuan May 23, 2024
454c170
Add unmanaged fast path for (U)Int64
huoyaoyuan May 25, 2024
f2f71e7
Make ComVariant immutable
huoyaoyuan May 25, 2024
04f6aad
Add GCPROTECT in ConvertSystemColorToOleColor
huoyaoyuan May 25, 2024
8da56dd
Fix variant init
huoyaoyuan May 26, 2024
3c095a1
Fix BYREF|EMPTY
huoyaoyuan May 26, 2024
170fefc
Merge branch 'main' into variant-2
huoyaoyuan May 29, 2024
d2381bf
Initialize ComVariant
huoyaoyuan May 29, 2024
b315d3a
Move GCPROTECT to the QCall
huoyaoyuan May 29, 2024
bf5a151
Merge branch 'main' into variant-2
huoyaoyuan May 30, 2024
68525c8
Pass UnknownWrapper through SetFieldsObject
huoyaoyuan May 30, 2024
41ad24f
Apply suggestions from code review
huoyaoyuan Jun 1, 2024
7a9b989
Suggestions at native side
huoyaoyuan Jun 1, 2024
9cc8a38
Rename ComIP
huoyaoyuan Jun 1, 2024
944b76a
Add comments for ConvertWrappedObject
huoyaoyuan Jun 1, 2024
09af5b7
Try convert to RECORD for all cases
huoyaoyuan Jun 12, 2024
0ff823e
Merge branch 'main'
huoyaoyuan Jul 16, 2024
5dfda22
Dispose Variant on failure
huoyaoyuan Jul 16, 2024
545d597
Update formatting
huoyaoyuan Jul 16, 2024
fb32db0
Fix NO_MAPPING definition
huoyaoyuan Jul 17, 2024
b85abfa
Merge branch 'main'
huoyaoyuan Aug 23, 2024
20506a5
Merge branch 'main' into variant-2
AaronRobinsonMSFT Aug 26, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line numberDiff line numberDiff line change
Expand Up@@ -286,6 +286,9 @@
<Compile Include="$(CommonPath)Interop\Windows\OleAut32\Interop.VariantClear.cs">
<Link>Common\Interop\Windows\OleAut32\Interop.VariantClear.cs</Link>
</Compile>
<Compile Include="$(CommonPath)Interop\Windows\OleAut32\Interop.VariantChangeTypeEx.cs">
<Link>Common\Interop\Windows\OleAut32\Interop.VariantChangeTypeEx.cs</Link>
</Compile>
</ItemGroup>
<ItemGroup Condition="'$(FeatureObjCMarshal)' == 'true'">
<Compile Include="$(BclSourcesRoot)\System\Runtime\InteropServices\ObjectiveCMarshal.CoreCLR.cs" />
Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -151,19 +151,10 @@ private static ComVariant ToOAVariant(object input)
null => default,
Missing => throw new NotSupportedException(SR.NotSupported_ChangeType),
DBNull => ComVariant.Null,
_ => GetComIPFromObjectRef(input) // Convert the object to an IDispatch/IUnknown pointer.
_ => Variant.GetIUnknownOrIDispatchFromObject(input) // Convert the object to an IDispatch/IUnknown pointer.
};
}

private static ComVariant GetComIPFromObjectRef(object? obj)
{
IntPtr pUnk = GetIUnknownOrIDispatchForObject(ObjectHandleOnStack.Create(ref obj), out bool isIDispatch);
return ComVariant.CreateRaw(isIDispatch ? VarEnum.VT_DISPATCH : VarEnum.VT_UNKNOWN, pUnk);
}

[LibraryImport(RuntimeHelpers.QCall, EntryPoint = "MarshalNative_GetIUnknownOrIDispatchForObject")]
private static partial IntPtr GetIUnknownOrIDispatchForObject(ObjectHandleOnStack o, [MarshalAs(UnmanagedType.Bool)] out bool isIDispatch);

private static object? FromOAVariant(ComVariant input) =>
input.VarType switch
{
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
9ebbfc5
Handle simple cases of MarshalComVariantForOleVariant
huoyaoyuan May 14, 2024
7c35e76
Pseudo code for MarshalOleVariantForComVariant
huoyaoyuan May 14, 2024
2b7b42b
Complete and setup managed call for MarshalObjectForOleVariant
huoyaoyuan May 15, 2024
b7b73dd
Setup MarshalHelperConvertObjectToVariant except record
huoyaoyuan May 15, 2024
c9b06fe
Setup MarshalHelperCastVariant
huoyaoyuan May 15, 2024
fcd2cff
Cleanup Variant struct and FCall
huoyaoyuan May 15, 2024
c193137
Handle record case
huoyaoyuan May 16, 2024
fb34d6d
Cleanup VariantOleToCom/VariantComToOle routines
huoyaoyuan May 16, 2024
4ba8412
Remove VariantData definition at unmanaged side
huoyaoyuan May 16, 2024
e38f65c
Eliminate a dead branch for ref
huoyaoyuan May 16, 2024
8be5299
Remove CVTypes in native
huoyaoyuan May 16, 2024
f653d98
Share GetComIPFromObjectRef
huoyaoyuan May 16, 2024
0af450d
Add tests for managed to native side
huoyaoyuan May 17, 2024
dbd1c03
Add test for native to managed side
huoyaoyuan May 17, 2024
8409346
Add test for byref returning to BYREF
huoyaoyuan May 19, 2024
827ffec
Merge branch 'variant-test' into variant-2
huoyaoyuan May 19, 2024
435dedd
Fix BYREF handling
huoyaoyuan May 19, 2024
eceed3f
Fix array marshalling
huoyaoyuan May 20, 2024
6d4ee35
Fix record marshalling
huoyaoyuan May 21, 2024
03a5f7f
Fix VT_VARIANT case
huoyaoyuan May 21, 2024
3ed9214
Cleanup and fix IUnknown case
huoyaoyuan May 21, 2024
3f509a1
Add more test for VT_UNKNOWN
huoyaoyuan May 21, 2024
57617e0
Merge branch 'variant-test' into variant-2
huoyaoyuan May 21, 2024
faee4ec
Cleanup for VT_VARIANT
huoyaoyuan May 21, 2024
99f6ef5
Cleanup SR and comment
huoyaoyuan May 21, 2024
dcd0287
Fix contract in GetTypeHandleForVarType
huoyaoyuan May 21, 2024
e58937b
Move VariantChangeTypeEx to coreclr
huoyaoyuan May 23, 2024
454c170
Add unmanaged fast path for (U)Int64
huoyaoyuan May 25, 2024
f2f71e7
Make ComVariant immutable
huoyaoyuan May 25, 2024
04f6aad
Add GCPROTECT in ConvertSystemColorToOleColor
huoyaoyuan May 25, 2024
8da56dd
Fix variant init
huoyaoyuan May 26, 2024
3c095a1
Fix BYREF|EMPTY
huoyaoyuan May 26, 2024
170fefc
Merge branch 'main' into variant-2
huoyaoyuan May 29, 2024
d2381bf
Initialize ComVariant
huoyaoyuan May 29, 2024
b315d3a
Move GCPROTECT to the QCall
huoyaoyuan May 29, 2024
bf5a151
Merge branch 'main' into variant-2
huoyaoyuan May 30, 2024
68525c8
Pass UnknownWrapper through SetFieldsObject
huoyaoyuan May 30, 2024
41ad24f
Apply suggestions from code review
huoyaoyuan Jun 1, 2024
7a9b989
Suggestions at native side
huoyaoyuan Jun 1, 2024
9cc8a38
Rename ComIP
huoyaoyuan Jun 1, 2024
944b76a
Add comments for ConvertWrappedObject
huoyaoyuan Jun 1, 2024
09af5b7
Try convert to RECORD for all cases
huoyaoyuan Jun 12, 2024
0ff823e
Merge branch 'main'
huoyaoyuan Jul 16, 2024
5dfda22
Dispose Variant on failure
huoyaoyuan Jul 16, 2024
545d597
Update formatting
huoyaoyuan Jul 16, 2024
fb32db0
Fix NO_MAPPING definition
huoyaoyuan Jul 17, 2024
b85abfa
Merge branch 'main'
huoyaoyuan Aug 23, 2024
20506a5
Merge branch 'main' into variant-2
AaronRobinsonMSFT Aug 26, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line numberDiff line numberDiff line change
Expand Up@@ -286,6 +286,9 @@
<Compile Include="$(CommonPath)Interop\Windows\OleAut32\Interop.VariantClear.cs">
<Link>Common\Interop\Windows\OleAut32\Interop.VariantClear.cs</Link>
</Compile>
<Compile Include="$(CommonPath)Interop\Windows\OleAut32\Interop.VariantChangeTypeEx.cs">
<Link>Common\Interop\Windows\OleAut32\Interop.VariantChangeTypeEx.cs</Link>
</Compile>
</ItemGroup>
<ItemGroup Condition="'$(FeatureObjCMarshal)' == 'true'">
<Compile Include="$(BclSourcesRoot)\System\Runtime\InteropServices\ObjectiveCMarshal.CoreCLR.cs" />
Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -151,19 +151,10 @@ private static ComVariant ToOAVariant(object input)
null => default,
Missing => throw new NotSupportedException(SR.NotSupported_ChangeType),
DBNull => ComVariant.Null,
_ => GetComIPFromObjectRef(input) // Convert the object to an IDispatch/IUnknown pointer.
_ => Variant.GetIUnknownOrIDispatchFromObject(input) // Convert the object to an IDispatch/IUnknown pointer.
};
}

private static ComVariant GetComIPFromObjectRef(object? obj)
{
IntPtr pUnk = GetIUnknownOrIDispatchForObject(ObjectHandleOnStack.Create(ref obj), out bool isIDispatch);
return ComVariant.CreateRaw(isIDispatch ? VarEnum.VT_DISPATCH : VarEnum.VT_UNKNOWN, pUnk);
}

[LibraryImport(RuntimeHelpers.QCall, EntryPoint = "MarshalNative_GetIUnknownOrIDispatchForObject")]
private static partial IntPtr GetIUnknownOrIDispatchForObject(ObjectHandleOnStack o, [MarshalAs(UnmanagedType.Bool)] out bool isIDispatch);

private static object? FromOAVariant(ComVariant input) =>
input.VarType switch
{
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
9ebbfc5
Handle simple cases of MarshalComVariantForOleVariant
huoyaoyuan May 14, 2024
7c35e76
Pseudo code for MarshalOleVariantForComVariant
huoyaoyuan May 14, 2024
2b7b42b
Complete and setup managed call for MarshalObjectForOleVariant
huoyaoyuan May 15, 2024
b7b73dd
Setup MarshalHelperConvertObjectToVariant except record
huoyaoyuan May 15, 2024
c9b06fe
Setup MarshalHelperCastVariant
huoyaoyuan May 15, 2024
fcd2cff
Cleanup Variant struct and FCall
huoyaoyuan May 15, 2024
c193137
Handle record case
huoyaoyuan May 16, 2024
fb34d6d
Cleanup VariantOleToCom/VariantComToOle routines
huoyaoyuan May 16, 2024
4ba8412
Remove VariantData definition at unmanaged side
huoyaoyuan May 16, 2024
e38f65c
Eliminate a dead branch for ref
huoyaoyuan May 16, 2024
8be5299
Remove CVTypes in native
huoyaoyuan May 16, 2024
f653d98
Share GetComIPFromObjectRef
huoyaoyuan May 16, 2024
0af450d
Add tests for managed to native side
huoyaoyuan May 17, 2024
dbd1c03
Add test for native to managed side
huoyaoyuan May 17, 2024
8409346
Add test for byref returning to BYREF
huoyaoyuan May 19, 2024
827ffec
Merge branch 'variant-test' into variant-2
huoyaoyuan May 19, 2024
435dedd
Fix BYREF handling
huoyaoyuan May 19, 2024
eceed3f
Fix array marshalling
huoyaoyuan May 20, 2024
6d4ee35
Fix record marshalling
huoyaoyuan May 21, 2024
03a5f7f
Fix VT_VARIANT case
huoyaoyuan May 21, 2024
3ed9214
Cleanup and fix IUnknown case
huoyaoyuan May 21, 2024
3f509a1
Add more test for VT_UNKNOWN
huoyaoyuan May 21, 2024
57617e0
Merge branch 'variant-test' into variant-2
huoyaoyuan May 21, 2024
faee4ec
Cleanup for VT_VARIANT
huoyaoyuan May 21, 2024
99f6ef5
Cleanup SR and comment
huoyaoyuan May 21, 2024
dcd0287
Fix contract in GetTypeHandleForVarType
huoyaoyuan May 21, 2024
e58937b
Move VariantChangeTypeEx to coreclr
huoyaoyuan May 23, 2024
454c170
Add unmanaged fast path for (U)Int64
huoyaoyuan May 25, 2024
f2f71e7
Make ComVariant immutable
huoyaoyuan May 25, 2024
04f6aad
Add GCPROTECT in ConvertSystemColorToOleColor
huoyaoyuan May 25, 2024
8da56dd
Fix variant init
huoyaoyuan May 26, 2024
3c095a1
Fix BYREF|EMPTY
huoyaoyuan May 26, 2024
170fefc
Merge branch 'main' into variant-2
huoyaoyuan May 29, 2024
d2381bf
Initialize ComVariant
huoyaoyuan May 29, 2024
b315d3a
Move GCPROTECT to the QCall
huoyaoyuan May 29, 2024
bf5a151
Merge branch 'main' into variant-2
huoyaoyuan May 30, 2024
68525c8
Pass UnknownWrapper through SetFieldsObject
huoyaoyuan May 30, 2024
41ad24f
Apply suggestions from code review
huoyaoyuan Jun 1, 2024
7a9b989
Suggestions at native side
huoyaoyuan Jun 1, 2024
9cc8a38
Rename ComIP
huoyaoyuan Jun 1, 2024
944b76a
Add comments for ConvertWrappedObject
huoyaoyuan Jun 1, 2024
09af5b7
Try convert to RECORD for all cases
huoyaoyuan Jun 12, 2024
0ff823e
Merge branch 'main'
huoyaoyuan Jul 16, 2024
5dfda22
Dispose Variant on failure
huoyaoyuan Jul 16, 2024
545d597
Update formatting
huoyaoyuan Jul 16, 2024
fb32db0
Fix NO_MAPPING definition
huoyaoyuan Jul 17, 2024
b85abfa
Merge branch 'main'
huoyaoyuan Aug 23, 2024
20506a5
Merge branch 'main' into variant-2
AaronRobinsonMSFT Aug 26, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line numberDiff line numberDiff line change
Expand Up@@ -286,6 +286,9 @@
<Compile Include="$(CommonPath)Interop\Windows\OleAut32\Interop.VariantClear.cs">
<Link>Common\Interop\Windows\OleAut32\Interop.VariantClear.cs</Link>
</Compile>
<Compile Include="$(CommonPath)Interop\Windows\OleAut32\Interop.VariantChangeTypeEx.cs">
<Link>Common\Interop\Windows\OleAut32\Interop.VariantChangeTypeEx.cs</Link>
</Compile>
</ItemGroup>
<ItemGroup Condition="'$(FeatureObjCMarshal)' == 'true'">
<Compile Include="$(BclSourcesRoot)\System\Runtime\InteropServices\ObjectiveCMarshal.CoreCLR.cs" />
Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -151,19 +151,10 @@ private static ComVariant ToOAVariant(object input)
null => default,
Missing => throw new NotSupportedException(SR.NotSupported_ChangeType),
DBNull => ComVariant.Null,
_ => GetComIPFromObjectRef(input) // Convert the object to an IDispatch/IUnknown pointer.
_ => Variant.GetIUnknownOrIDispatchFromObject(input) // Convert the object to an IDispatch/IUnknown pointer.
};
}

private static ComVariant GetComIPFromObjectRef(object? obj)
{
IntPtr pUnk = GetIUnknownOrIDispatchForObject(ObjectHandleOnStack.Create(ref obj), out bool isIDispatch);
return ComVariant.CreateRaw(isIDispatch ? VarEnum.VT_DISPATCH : VarEnum.VT_UNKNOWN, pUnk);
}

[LibraryImport(RuntimeHelpers.QCall, EntryPoint = "MarshalNative_GetIUnknownOrIDispatchForObject")]
private static partial IntPtr GetIUnknownOrIDispatchForObject(ObjectHandleOnStack o, [MarshalAs(UnmanagedType.Bool)] out bool isIDispatch);

private static object? FromOAVariant(ComVariant input) =>
input.VarType switch
{
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
9ebbfc5
Handle simple cases of MarshalComVariantForOleVariant
huoyaoyuan May 14, 2024
7c35e76
Pseudo code for MarshalOleVariantForComVariant
huoyaoyuan May 14, 2024
2b7b42b
Complete and setup managed call for MarshalObjectForOleVariant
huoyaoyuan May 15, 2024
b7b73dd
Setup MarshalHelperConvertObjectToVariant except record
huoyaoyuan May 15, 2024
c9b06fe
Setup MarshalHelperCastVariant
huoyaoyuan May 15, 2024
fcd2cff
Cleanup Variant struct and FCall
huoyaoyuan May 15, 2024
c193137
Handle record case
huoyaoyuan May 16, 2024
fb34d6d
Cleanup VariantOleToCom/VariantComToOle routines
huoyaoyuan May 16, 2024
4ba8412
Remove VariantData definition at unmanaged side
huoyaoyuan May 16, 2024
e38f65c
Eliminate a dead branch for ref
huoyaoyuan May 16, 2024
8be5299
Remove CVTypes in native
huoyaoyuan May 16, 2024
f653d98
Share GetComIPFromObjectRef
huoyaoyuan May 16, 2024
0af450d
Add tests for managed to native side
huoyaoyuan May 17, 2024
dbd1c03
Add test for native to managed side
huoyaoyuan May 17, 2024
8409346
Add test for byref returning to BYREF
huoyaoyuan May 19, 2024
827ffec
Merge branch 'variant-test' into variant-2
huoyaoyuan May 19, 2024
435dedd
Fix BYREF handling
huoyaoyuan May 19, 2024
eceed3f
Fix array marshalling
huoyaoyuan May 20, 2024
6d4ee35
Fix record marshalling
huoyaoyuan May 21, 2024
03a5f7f
Fix VT_VARIANT case
huoyaoyuan May 21, 2024
3ed9214
Cleanup and fix IUnknown case
huoyaoyuan May 21, 2024
3f509a1
Add more test for VT_UNKNOWN
huoyaoyuan May 21, 2024
57617e0
Merge branch 'variant-test' into variant-2
huoyaoyuan May 21, 2024
faee4ec
Cleanup for VT_VARIANT
huoyaoyuan May 21, 2024
99f6ef5
Cleanup SR and comment
huoyaoyuan May 21, 2024
dcd0287
Fix contract in GetTypeHandleForVarType
huoyaoyuan May 21, 2024
e58937b
Move VariantChangeTypeEx to coreclr
huoyaoyuan May 23, 2024
454c170
Add unmanaged fast path for (U)Int64
huoyaoyuan May 25, 2024
f2f71e7
Make ComVariant immutable
huoyaoyuan May 25, 2024
04f6aad
Add GCPROTECT in ConvertSystemColorToOleColor
huoyaoyuan May 25, 2024
8da56dd
Fix variant init
huoyaoyuan May 26, 2024
3c095a1
Fix BYREF|EMPTY
huoyaoyuan May 26, 2024
170fefc
Merge branch 'main' into variant-2
huoyaoyuan May 29, 2024
d2381bf
Initialize ComVariant
huoyaoyuan May 29, 2024
b315d3a
Move GCPROTECT to the QCall
huoyaoyuan May 29, 2024
bf5a151
Merge branch 'main' into variant-2
huoyaoyuan May 30, 2024
68525c8
Pass UnknownWrapper through SetFieldsObject
huoyaoyuan May 30, 2024
41ad24f
Apply suggestions from code review
huoyaoyuan Jun 1, 2024
7a9b989
Suggestions at native side
huoyaoyuan Jun 1, 2024
9cc8a38
Rename ComIP
huoyaoyuan Jun 1, 2024
944b76a
Add comments for ConvertWrappedObject
huoyaoyuan Jun 1, 2024
09af5b7
Try convert to RECORD for all cases
huoyaoyuan Jun 12, 2024
0ff823e
Merge branch 'main'
huoyaoyuan Jul 16, 2024
5dfda22
Dispose Variant on failure
huoyaoyuan Jul 16, 2024
545d597
Update formatting
huoyaoyuan Jul 16, 2024
fb32db0
Fix NO_MAPPING definition
huoyaoyuan Jul 17, 2024
b85abfa
Merge branch 'main'
huoyaoyuan Aug 23, 2024
20506a5
Merge branch 'main' into variant-2
AaronRobinsonMSFT Aug 26, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line numberDiff line numberDiff line change
Expand Up@@ -286,6 +286,9 @@
<Compile Include="$(CommonPath)Interop\Windows\OleAut32\Interop.VariantClear.cs">
<Link>Common\Interop\Windows\OleAut32\Interop.VariantClear.cs</Link>
</Compile>
<Compile Include="$(CommonPath)Interop\Windows\OleAut32\Interop.VariantChangeTypeEx.cs">
<Link>Common\Interop\Windows\OleAut32\Interop.VariantChangeTypeEx.cs</Link>
</Compile>
</ItemGroup>
<ItemGroup Condition="'$(FeatureObjCMarshal)' == 'true'">
<Compile Include="$(BclSourcesRoot)\System\Runtime\InteropServices\ObjectiveCMarshal.CoreCLR.cs" />
Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -151,19 +151,10 @@ private static ComVariant ToOAVariant(object input)
null => default,
Missing => throw new NotSupportedException(SR.NotSupported_ChangeType),
DBNull => ComVariant.Null,
_ => GetComIPFromObjectRef(input) // Convert the object to an IDispatch/IUnknown pointer.
_ => Variant.GetIUnknownOrIDispatchFromObject(input) // Convert the object to an IDispatch/IUnknown pointer.
};
}

private static ComVariant GetComIPFromObjectRef(object? obj)
{
IntPtr pUnk = GetIUnknownOrIDispatchForObject(ObjectHandleOnStack.Create(ref obj), out bool isIDispatch);
return ComVariant.CreateRaw(isIDispatch ? VarEnum.VT_DISPATCH : VarEnum.VT_UNKNOWN, pUnk);
}

[LibraryImport(RuntimeHelpers.QCall, EntryPoint = "MarshalNative_GetIUnknownOrIDispatchForObject")]
private static partial IntPtr GetIUnknownOrIDispatchForObject(ObjectHandleOnStack o, [MarshalAs(UnmanagedType.Bool)] out bool isIDispatch);

private static object? FromOAVariant(ComVariant input) =>
input.VarType switch
{
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
9ebbfc5
Handle simple cases of MarshalComVariantForOleVariant
huoyaoyuan May 14, 2024
7c35e76
Pseudo code for MarshalOleVariantForComVariant
huoyaoyuan May 14, 2024
2b7b42b
Complete and setup managed call for MarshalObjectForOleVariant
huoyaoyuan May 15, 2024
b7b73dd
Setup MarshalHelperConvertObjectToVariant except record
huoyaoyuan May 15, 2024
c9b06fe
Setup MarshalHelperCastVariant
huoyaoyuan May 15, 2024
fcd2cff
Cleanup Variant struct and FCall
huoyaoyuan May 15, 2024
c193137
Handle record case
huoyaoyuan May 16, 2024
fb34d6d
Cleanup VariantOleToCom/VariantComToOle routines
huoyaoyuan May 16, 2024
4ba8412
Remove VariantData definition at unmanaged side
huoyaoyuan May 16, 2024
e38f65c
Eliminate a dead branch for ref
huoyaoyuan May 16, 2024
8be5299
Remove CVTypes in native
huoyaoyuan May 16, 2024
f653d98
Share GetComIPFromObjectRef
huoyaoyuan May 16, 2024
0af450d
Add tests for managed to native side
huoyaoyuan May 17, 2024
dbd1c03
Add test for native to managed side
huoyaoyuan May 17, 2024
8409346
Add test for byref returning to BYREF
huoyaoyuan May 19, 2024
827ffec
Merge branch 'variant-test' into variant-2
huoyaoyuan May 19, 2024
435dedd
Fix BYREF handling
huoyaoyuan May 19, 2024
eceed3f
Fix array marshalling
huoyaoyuan May 20, 2024
6d4ee35
Fix record marshalling
huoyaoyuan May 21, 2024
03a5f7f
Fix VT_VARIANT case
huoyaoyuan May 21, 2024
3ed9214
Cleanup and fix IUnknown case
huoyaoyuan May 21, 2024
3f509a1
Add more test for VT_UNKNOWN
huoyaoyuan May 21, 2024
57617e0
Merge branch 'variant-test' into variant-2
huoyaoyuan May 21, 2024
faee4ec
Cleanup for VT_VARIANT
huoyaoyuan May 21, 2024
99f6ef5
Cleanup SR and comment
huoyaoyuan May 21, 2024
dcd0287
Fix contract in GetTypeHandleForVarType
huoyaoyuan May 21, 2024
e58937b
Move VariantChangeTypeEx to coreclr
huoyaoyuan May 23, 2024
454c170
Add unmanaged fast path for (U)Int64
huoyaoyuan May 25, 2024
f2f71e7
Make ComVariant immutable
huoyaoyuan May 25, 2024
04f6aad
Add GCPROTECT in ConvertSystemColorToOleColor
huoyaoyuan May 25, 2024
8da56dd
Fix variant init
huoyaoyuan May 26, 2024
3c095a1
Fix BYREF|EMPTY
huoyaoyuan May 26, 2024
170fefc
Merge branch 'main' into variant-2
huoyaoyuan May 29, 2024
d2381bf
Initialize ComVariant
huoyaoyuan May 29, 2024
b315d3a
Move GCPROTECT to the QCall
huoyaoyuan May 29, 2024
bf5a151
Merge branch 'main' into variant-2
huoyaoyuan May 30, 2024
68525c8
Pass UnknownWrapper through SetFieldsObject
huoyaoyuan May 30, 2024
41ad24f
Apply suggestions from code review
huoyaoyuan Jun 1, 2024
7a9b989
Suggestions at native side
huoyaoyuan Jun 1, 2024
9cc8a38
Rename ComIP
huoyaoyuan Jun 1, 2024
944b76a
Add comments for ConvertWrappedObject
huoyaoyuan Jun 1, 2024
09af5b7
Try convert to RECORD for all cases
huoyaoyuan Jun 12, 2024
0ff823e
Merge branch 'main'
huoyaoyuan Jul 16, 2024
5dfda22
Dispose Variant on failure
huoyaoyuan Jul 16, 2024
545d597
Update formatting
huoyaoyuan Jul 16, 2024
fb32db0
Fix NO_MAPPING definition
huoyaoyuan Jul 17, 2024
b85abfa
Merge branch 'main'
huoyaoyuan Aug 23, 2024
20506a5
Merge branch 'main' into variant-2
AaronRobinsonMSFT Aug 26, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line numberDiff line numberDiff line change
Expand Up@@ -286,6 +286,9 @@
<Compile Include="$(CommonPath)Interop\Windows\OleAut32\Interop.VariantClear.cs">
<Link>Common\Interop\Windows\OleAut32\Interop.VariantClear.cs</Link>
</Compile>
<Compile Include="$(CommonPath)Interop\Windows\OleAut32\Interop.VariantChangeTypeEx.cs">
<Link>Common\Interop\Windows\OleAut32\Interop.VariantChangeTypeEx.cs</Link>
</Compile>
</ItemGroup>
<ItemGroup Condition="'$(FeatureObjCMarshal)' == 'true'">
<Compile Include="$(BclSourcesRoot)\System\Runtime\InteropServices\ObjectiveCMarshal.CoreCLR.cs" />
Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -151,19 +151,10 @@ private static ComVariant ToOAVariant(object input)
null => default,
Missing => throw new NotSupportedException(SR.NotSupported_ChangeType),
DBNull => ComVariant.Null,
_ => GetComIPFromObjectRef(input) // Convert the object to an IDispatch/IUnknown pointer.
_ => Variant.GetIUnknownOrIDispatchFromObject(input) // Convert the object to an IDispatch/IUnknown pointer.
};
}

private static ComVariant GetComIPFromObjectRef(object? obj)
{
IntPtr pUnk = GetIUnknownOrIDispatchForObject(ObjectHandleOnStack.Create(ref obj), out bool isIDispatch);
return ComVariant.CreateRaw(isIDispatch ? VarEnum.VT_DISPATCH : VarEnum.VT_UNKNOWN, pUnk);
}

[LibraryImport(RuntimeHelpers.QCall, EntryPoint = "MarshalNative_GetIUnknownOrIDispatchForObject")]
private static partial IntPtr GetIUnknownOrIDispatchForObject(ObjectHandleOnStack o, [MarshalAs(UnmanagedType.Bool)] out bool isIDispatch);

private static object? FromOAVariant(ComVariant input) =>
input.VarType switch
{
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
9ebbfc5
Handle simple cases of MarshalComVariantForOleVariant
huoyaoyuan May 14, 2024
7c35e76
Pseudo code for MarshalOleVariantForComVariant
huoyaoyuan May 14, 2024
2b7b42b
Complete and setup managed call for MarshalObjectForOleVariant
huoyaoyuan May 15, 2024
b7b73dd
Setup MarshalHelperConvertObjectToVariant except record
huoyaoyuan May 15, 2024
c9b06fe
Setup MarshalHelperCastVariant
huoyaoyuan May 15, 2024
fcd2cff
Cleanup Variant struct and FCall
huoyaoyuan May 15, 2024
c193137
Handle record case
huoyaoyuan May 16, 2024
fb34d6d
Cleanup VariantOleToCom/VariantComToOle routines
huoyaoyuan May 16, 2024
4ba8412
Remove VariantData definition at unmanaged side
huoyaoyuan May 16, 2024
e38f65c
Eliminate a dead branch for ref
huoyaoyuan May 16, 2024
8be5299
Remove CVTypes in native
huoyaoyuan May 16, 2024
f653d98
Share GetComIPFromObjectRef
huoyaoyuan May 16, 2024
0af450d
Add tests for managed to native side
huoyaoyuan May 17, 2024
dbd1c03
Add test for native to managed side
huoyaoyuan May 17, 2024
8409346
Add test for byref returning to BYREF
huoyaoyuan May 19, 2024
827ffec
Merge branch 'variant-test' into variant-2
huoyaoyuan May 19, 2024
435dedd
Fix BYREF handling
huoyaoyuan May 19, 2024
eceed3f
Fix array marshalling
huoyaoyuan May 20, 2024
6d4ee35
Fix record marshalling
huoyaoyuan May 21, 2024
03a5f7f
Fix VT_VARIANT case
huoyaoyuan May 21, 2024
3ed9214
Cleanup and fix IUnknown case
huoyaoyuan May 21, 2024
3f509a1
Add more test for VT_UNKNOWN
huoyaoyuan May 21, 2024
57617e0
Merge branch 'variant-test' into variant-2
huoyaoyuan May 21, 2024
faee4ec
Cleanup for VT_VARIANT
huoyaoyuan May 21, 2024
99f6ef5
Cleanup SR and comment
huoyaoyuan May 21, 2024
dcd0287
Fix contract in GetTypeHandleForVarType
huoyaoyuan May 21, 2024
e58937b
Move VariantChangeTypeEx to coreclr
huoyaoyuan May 23, 2024
454c170
Add unmanaged fast path for (U)Int64
huoyaoyuan May 25, 2024
f2f71e7
Make ComVariant immutable
huoyaoyuan May 25, 2024
04f6aad
Add GCPROTECT in ConvertSystemColorToOleColor
huoyaoyuan May 25, 2024
8da56dd
Fix variant init
huoyaoyuan May 26, 2024
3c095a1
Fix BYREF|EMPTY
huoyaoyuan May 26, 2024
170fefc
Merge branch 'main' into variant-2
huoyaoyuan May 29, 2024
d2381bf
Initialize ComVariant
huoyaoyuan May 29, 2024
b315d3a
Move GCPROTECT to the QCall
huoyaoyuan May 29, 2024
bf5a151
Merge branch 'main' into variant-2
huoyaoyuan May 30, 2024
68525c8
Pass UnknownWrapper through SetFieldsObject
huoyaoyuan May 30, 2024
41ad24f
Apply suggestions from code review
huoyaoyuan Jun 1, 2024
7a9b989
Suggestions at native side
huoyaoyuan Jun 1, 2024
9cc8a38
Rename ComIP
huoyaoyuan Jun 1, 2024
944b76a
Add comments for ConvertWrappedObject
huoyaoyuan Jun 1, 2024
09af5b7
Try convert to RECORD for all cases
huoyaoyuan Jun 12, 2024
0ff823e
Merge branch 'main'
huoyaoyuan Jul 16, 2024
5dfda22
Dispose Variant on failure
huoyaoyuan Jul 16, 2024
545d597
Update formatting
huoyaoyuan Jul 16, 2024
fb32db0
Fix NO_MAPPING definition
huoyaoyuan Jul 17, 2024
b85abfa
Merge branch 'main'
huoyaoyuan Aug 23, 2024
20506a5
Merge branch 'main' into variant-2
AaronRobinsonMSFT Aug 26, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line numberDiff line numberDiff line change
Expand Up@@ -286,6 +286,9 @@
<Compile Include="$(CommonPath)Interop\Windows\OleAut32\Interop.VariantClear.cs">
<Link>Common\Interop\Windows\OleAut32\Interop.VariantClear.cs</Link>
</Compile>
<Compile Include="$(CommonPath)Interop\Windows\OleAut32\Interop.VariantChangeTypeEx.cs">
<Link>Common\Interop\Windows\OleAut32\Interop.VariantChangeTypeEx.cs</Link>
</Compile>
</ItemGroup>
<ItemGroup Condition="'$(FeatureObjCMarshal)' == 'true'">
<Compile Include="$(BclSourcesRoot)\System\Runtime\InteropServices\ObjectiveCMarshal.CoreCLR.cs" />
Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -151,19 +151,10 @@ private static ComVariant ToOAVariant(object input)
null => default,
Missing => throw new NotSupportedException(SR.NotSupported_ChangeType),
DBNull => ComVariant.Null,
_ => GetComIPFromObjectRef(input) // Convert the object to an IDispatch/IUnknown pointer.
_ => Variant.GetIUnknownOrIDispatchFromObject(input) // Convert the object to an IDispatch/IUnknown pointer.
};
}

private static ComVariant GetComIPFromObjectRef(object? obj)
{
IntPtr pUnk = GetIUnknownOrIDispatchForObject(ObjectHandleOnStack.Create(ref obj), out bool isIDispatch);
return ComVariant.CreateRaw(isIDispatch ? VarEnum.VT_DISPATCH : VarEnum.VT_UNKNOWN, pUnk);
}

[LibraryImport(RuntimeHelpers.QCall, EntryPoint = "MarshalNative_GetIUnknownOrIDispatchForObject")]
private static partial IntPtr GetIUnknownOrIDispatchForObject(ObjectHandleOnStack o, [MarshalAs(UnmanagedType.Bool)] out bool isIDispatch);

private static object? FromOAVariant(ComVariant input) =>
input.VarType switch
{
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
9ebbfc5
Handle simple cases of MarshalComVariantForOleVariant
huoyaoyuan May 14, 2024
7c35e76
Pseudo code for MarshalOleVariantForComVariant
huoyaoyuan May 14, 2024
2b7b42b
Complete and setup managed call for MarshalObjectForOleVariant
huoyaoyuan May 15, 2024
b7b73dd
Setup MarshalHelperConvertObjectToVariant except record
huoyaoyuan May 15, 2024
c9b06fe
Setup MarshalHelperCastVariant
huoyaoyuan May 15, 2024
fcd2cff
Cleanup Variant struct and FCall
huoyaoyuan May 15, 2024
c193137
Handle record case
huoyaoyuan May 16, 2024
fb34d6d
Cleanup VariantOleToCom/VariantComToOle routines
huoyaoyuan May 16, 2024
4ba8412
Remove VariantData definition at unmanaged side
huoyaoyuan May 16, 2024
e38f65c
Eliminate a dead branch for ref
huoyaoyuan May 16, 2024
8be5299
Remove CVTypes in native
huoyaoyuan May 16, 2024
f653d98
Share GetComIPFromObjectRef
huoyaoyuan May 16, 2024
0af450d
Add tests for managed to native side
huoyaoyuan May 17, 2024
dbd1c03
Add test for native to managed side
huoyaoyuan May 17, 2024
8409346
Add test for byref returning to BYREF
huoyaoyuan May 19, 2024
827ffec
Merge branch 'variant-test' into variant-2
huoyaoyuan May 19, 2024
435dedd
Fix BYREF handling
huoyaoyuan May 19, 2024
eceed3f
Fix array marshalling
huoyaoyuan May 20, 2024
6d4ee35
Fix record marshalling
huoyaoyuan May 21, 2024
03a5f7f
Fix VT_VARIANT case
huoyaoyuan May 21, 2024
3ed9214
Cleanup and fix IUnknown case
huoyaoyuan May 21, 2024
3f509a1
Add more test for VT_UNKNOWN
huoyaoyuan May 21, 2024
57617e0
Merge branch 'variant-test' into variant-2
huoyaoyuan May 21, 2024
faee4ec
Cleanup for VT_VARIANT
huoyaoyuan May 21, 2024
99f6ef5
Cleanup SR and comment
huoyaoyuan May 21, 2024
dcd0287
Fix contract in GetTypeHandleForVarType
huoyaoyuan May 21, 2024
e58937b
Move VariantChangeTypeEx to coreclr
huoyaoyuan May 23, 2024
454c170
Add unmanaged fast path for (U)Int64
huoyaoyuan May 25, 2024
f2f71e7
Make ComVariant immutable
huoyaoyuan May 25, 2024
04f6aad
Add GCPROTECT in ConvertSystemColorToOleColor
huoyaoyuan May 25, 2024
8da56dd
Fix variant init
huoyaoyuan May 26, 2024
3c095a1
Fix BYREF|EMPTY
huoyaoyuan May 26, 2024
170fefc
Merge branch 'main' into variant-2
huoyaoyuan May 29, 2024
d2381bf
Initialize ComVariant
huoyaoyuan May 29, 2024
b315d3a
Move GCPROTECT to the QCall
huoyaoyuan May 29, 2024
bf5a151
Merge branch 'main' into variant-2
huoyaoyuan May 30, 2024
68525c8
Pass UnknownWrapper through SetFieldsObject
huoyaoyuan May 30, 2024
41ad24f
Apply suggestions from code review
huoyaoyuan Jun 1, 2024
7a9b989
Suggestions at native side
huoyaoyuan Jun 1, 2024
9cc8a38
Rename ComIP
huoyaoyuan Jun 1, 2024
944b76a
Add comments for ConvertWrappedObject
huoyaoyuan Jun 1, 2024
09af5b7
Try convert to RECORD for all cases
huoyaoyuan Jun 12, 2024
0ff823e
Merge branch 'main'
huoyaoyuan Jul 16, 2024
5dfda22
Dispose Variant on failure
huoyaoyuan Jul 16, 2024
545d597
Update formatting
huoyaoyuan Jul 16, 2024
fb32db0
Fix NO_MAPPING definition
huoyaoyuan Jul 17, 2024
b85abfa
Merge branch 'main'
huoyaoyuan Aug 23, 2024
20506a5
Merge branch 'main' into variant-2
AaronRobinsonMSFT Aug 26, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line numberDiff line numberDiff line change
Expand Up@@ -286,6 +286,9 @@
<Compile Include="$(CommonPath)Interop\Windows\OleAut32\Interop.VariantClear.cs">
<Link>Common\Interop\Windows\OleAut32\Interop.VariantClear.cs</Link>
</Compile>
<Compile Include="$(CommonPath)Interop\Windows\OleAut32\Interop.VariantChangeTypeEx.cs">
<Link>Common\Interop\Windows\OleAut32\Interop.VariantChangeTypeEx.cs</Link>
</Compile>
</ItemGroup>
<ItemGroup Condition="'$(FeatureObjCMarshal)' == 'true'">
<Compile Include="$(BclSourcesRoot)\System\Runtime\InteropServices\ObjectiveCMarshal.CoreCLR.cs" />
Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -151,19 +151,10 @@ private static ComVariant ToOAVariant(object input)
null => default,
Missing => throw new NotSupportedException(SR.NotSupported_ChangeType),
DBNull => ComVariant.Null,
_ => GetComIPFromObjectRef(input) // Convert the object to an IDispatch/IUnknown pointer.
_ => Variant.GetIUnknownOrIDispatchFromObject(input) // Convert the object to an IDispatch/IUnknown pointer.
};
}

private static ComVariant GetComIPFromObjectRef(object? obj)
{
IntPtr pUnk = GetIUnknownOrIDispatchForObject(ObjectHandleOnStack.Create(ref obj), out bool isIDispatch);
return ComVariant.CreateRaw(isIDispatch ? VarEnum.VT_DISPATCH : VarEnum.VT_UNKNOWN, pUnk);
}

[LibraryImport(RuntimeHelpers.QCall, EntryPoint = "MarshalNative_GetIUnknownOrIDispatchForObject")]
private static partial IntPtr GetIUnknownOrIDispatchForObject(ObjectHandleOnStack o, [MarshalAs(UnmanagedType.Bool)] out bool isIDispatch);

private static object? FromOAVariant(ComVariant input) =>
input.VarType switch
{
Expand Down
Loading