commit f1f52f1e3730ba46f830c4bac24755eeb1415822 Author: callmeyan Date: Tue Dec 12 16:49:11 2023 +0800 first commit diff --git a/.vs/ProjectEvaluation/testwordaddin1.metadata.v7.bin b/.vs/ProjectEvaluation/testwordaddin1.metadata.v7.bin new file mode 100644 index 0000000..f162594 Binary files /dev/null and b/.vs/ProjectEvaluation/testwordaddin1.metadata.v7.bin differ diff --git a/.vs/ProjectEvaluation/testwordaddin1.projects.v7.bin b/.vs/ProjectEvaluation/testwordaddin1.projects.v7.bin new file mode 100644 index 0000000..33e58a2 Binary files /dev/null and b/.vs/ProjectEvaluation/testwordaddin1.projects.v7.bin differ diff --git a/.vs/TestWordAddIn1/DesignTimeBuild/.dtbcache.v2 b/.vs/TestWordAddIn1/DesignTimeBuild/.dtbcache.v2 new file mode 100644 index 0000000..d082c22 Binary files /dev/null and b/.vs/TestWordAddIn1/DesignTimeBuild/.dtbcache.v2 differ diff --git a/.vs/TestWordAddIn1/FileContentIndex/2708d09d-9c65-4514-97ce-95be538e9aaf.vsidx b/.vs/TestWordAddIn1/FileContentIndex/2708d09d-9c65-4514-97ce-95be538e9aaf.vsidx new file mode 100644 index 0000000..5109a38 Binary files /dev/null and b/.vs/TestWordAddIn1/FileContentIndex/2708d09d-9c65-4514-97ce-95be538e9aaf.vsidx differ diff --git a/.vs/TestWordAddIn1/FileContentIndex/37a3e652-fab8-4770-b9ce-677c07f6c074.vsidx b/.vs/TestWordAddIn1/FileContentIndex/37a3e652-fab8-4770-b9ce-677c07f6c074.vsidx new file mode 100644 index 0000000..7e6224a Binary files /dev/null and b/.vs/TestWordAddIn1/FileContentIndex/37a3e652-fab8-4770-b9ce-677c07f6c074.vsidx differ diff --git a/.vs/TestWordAddIn1/FileContentIndex/5d3f09e2-4399-4b5d-94b2-ef193f4fe110.vsidx b/.vs/TestWordAddIn1/FileContentIndex/5d3f09e2-4399-4b5d-94b2-ef193f4fe110.vsidx new file mode 100644 index 0000000..283f1cd Binary files /dev/null and b/.vs/TestWordAddIn1/FileContentIndex/5d3f09e2-4399-4b5d-94b2-ef193f4fe110.vsidx differ diff --git a/.vs/TestWordAddIn1/FileContentIndex/7cd4d89c-8a2d-470f-8f40-0d39afdf0652.vsidx b/.vs/TestWordAddIn1/FileContentIndex/7cd4d89c-8a2d-470f-8f40-0d39afdf0652.vsidx new file mode 100644 index 0000000..f44c56f Binary files /dev/null and b/.vs/TestWordAddIn1/FileContentIndex/7cd4d89c-8a2d-470f-8f40-0d39afdf0652.vsidx differ diff --git a/.vs/TestWordAddIn1/FileContentIndex/f3a19e2b-2be2-43e5-8968-848d28db862e.vsidx b/.vs/TestWordAddIn1/FileContentIndex/f3a19e2b-2be2-43e5-8968-848d28db862e.vsidx new file mode 100644 index 0000000..9fcb59d Binary files /dev/null and b/.vs/TestWordAddIn1/FileContentIndex/f3a19e2b-2be2-43e5-8968-848d28db862e.vsidx differ diff --git a/.vs/TestWordAddIn1/v17/.futdcache.v2 b/.vs/TestWordAddIn1/v17/.futdcache.v2 new file mode 100644 index 0000000..8392c04 Binary files /dev/null and b/.vs/TestWordAddIn1/v17/.futdcache.v2 differ diff --git a/.vs/TestWordAddIn1/v17/.suo b/.vs/TestWordAddIn1/v17/.suo new file mode 100644 index 0000000..d52f0ee Binary files /dev/null and b/.vs/TestWordAddIn1/v17/.suo differ diff --git a/TestWordAddIn1.sln b/TestWordAddIn1.sln new file mode 100644 index 0000000..58ab341 --- /dev/null +++ b/TestWordAddIn1.sln @@ -0,0 +1,37 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.5.33516.290 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TestWordAddIn1", "TestWordAddIn1\TestWordAddIn1.csproj", "{E12FB108-CC54-49E3-B606-872B9805F9FA}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Webview2WinFormsApp", "Webview2WinFormsApp\Webview2WinFormsApp.csproj", "{283CE9EF-73B6-478A-B177-1B9174220C35}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UtilLib", "UtilLib\UtilLib.csproj", "{724D79C5-93B5-4BD7-9964-A05CCEFD3BFA}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {E12FB108-CC54-49E3-B606-872B9805F9FA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E12FB108-CC54-49E3-B606-872B9805F9FA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E12FB108-CC54-49E3-B606-872B9805F9FA}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E12FB108-CC54-49E3-B606-872B9805F9FA}.Release|Any CPU.Build.0 = Release|Any CPU + {283CE9EF-73B6-478A-B177-1B9174220C35}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {283CE9EF-73B6-478A-B177-1B9174220C35}.Debug|Any CPU.Build.0 = Debug|Any CPU + {283CE9EF-73B6-478A-B177-1B9174220C35}.Release|Any CPU.ActiveCfg = Release|Any CPU + {283CE9EF-73B6-478A-B177-1B9174220C35}.Release|Any CPU.Build.0 = Release|Any CPU + {724D79C5-93B5-4BD7-9964-A05CCEFD3BFA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {724D79C5-93B5-4BD7-9964-A05CCEFD3BFA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {724D79C5-93B5-4BD7-9964-A05CCEFD3BFA}.Release|Any CPU.ActiveCfg = Release|Any CPU + {724D79C5-93B5-4BD7-9964-A05CCEFD3BFA}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {7C87838C-07BB-41AF-9F47-1F995065934E} + EndGlobalSection +EndGlobal diff --git a/TestWordAddIn1/AppConfig.cs b/TestWordAddIn1/AppConfig.cs new file mode 100644 index 0000000..c94b039 --- /dev/null +++ b/TestWordAddIn1/AppConfig.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace TestWordAddIn1 +{ + public class AppConfig + { + public static readonly string PanelName = "校对王"; + } +} diff --git a/TestWordAddIn1/Bridge.cs b/TestWordAddIn1/Bridge.cs new file mode 100644 index 0000000..2fd5f5b --- /dev/null +++ b/TestWordAddIn1/Bridge.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace TestWordAddIn1 +{ + public class Bridge + { + public void Test() + { + System.Windows.Forms.MessageBox.Show("Test on C# Bridge!"); + } + } +} diff --git a/TestWordAddIn1/Enums.cs b/TestWordAddIn1/Enums.cs new file mode 100644 index 0000000..37f5663 --- /dev/null +++ b/TestWordAddIn1/Enums.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace TestWordAddIn1 +{ + public enum OfficeType + { + Word, + WPS + } + internal class Enums + { + } +} \ No newline at end of file diff --git a/TestWordAddIn1/Form1.Designer.cs b/TestWordAddIn1/Form1.Designer.cs new file mode 100644 index 0000000..895f60a --- /dev/null +++ b/TestWordAddIn1/Form1.Designer.cs @@ -0,0 +1,92 @@ +namespace TestWordAddIn1 +{ + partial class Form1 + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.pictureBox1 = new System.Windows.Forms.PictureBox(); + this.panel1 = new System.Windows.Forms.Panel(); + this.button1 = new System.Windows.Forms.Button(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); + this.panel1.SuspendLayout(); + this.SuspendLayout(); + // + // pictureBox1 + // + this.pictureBox1.BackgroundImage = global::TestWordAddIn1.Properties.Resources.android_chrome_192x192; + this.pictureBox1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center; + this.pictureBox1.Dock = System.Windows.Forms.DockStyle.Top; + this.pictureBox1.Location = new System.Drawing.Point(0, 0); + this.pictureBox1.Name = "pictureBox1"; + this.pictureBox1.Size = new System.Drawing.Size(800, 200); + this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; + this.pictureBox1.TabIndex = 0; + this.pictureBox1.TabStop = false; + // + // panel1 + // + this.panel1.Controls.Add(this.button1); + this.panel1.Controls.Add(this.pictureBox1); + this.panel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel1.Location = new System.Drawing.Point(0, 0); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(800, 450); + this.panel1.TabIndex = 1; + // + // button1 + // + this.button1.Font = new System.Drawing.Font("微软雅黑", 24F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button1.Location = new System.Drawing.Point(307, 206); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(181, 62); + this.button1.TabIndex = 1; + this.button1.Text = "button1"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // Form1 + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(800, 450); + this.Controls.Add(this.panel1); + this.Name = "Form1"; + this.Text = "Form1"; + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); + this.panel1.ResumeLayout(false); + this.panel1.PerformLayout(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.PictureBox pictureBox1; + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.Button button1; + } +} \ No newline at end of file diff --git a/TestWordAddIn1/Form1.cs b/TestWordAddIn1/Form1.cs new file mode 100644 index 0000000..a1cd892 --- /dev/null +++ b/TestWordAddIn1/Form1.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace TestWordAddIn1 +{ + public partial class Form1 : Form + { + public Form1() + { + InitializeComponent(); + } + + private void button1_Click(object sender, EventArgs e) + { + MessageBox.Show("Test"); + } + } +} diff --git a/TestWordAddIn1/Form1.resx b/TestWordAddIn1/Form1.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/TestWordAddIn1/Form1.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/TestWordAddIn1/Http.cs b/TestWordAddIn1/Http.cs new file mode 100644 index 0000000..507722a --- /dev/null +++ b/TestWordAddIn1/Http.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Net; +using System.Text; +using System.Threading.Tasks; + +namespace TestWordAddIn1 +{ + internal class Http + { + public static String Get(string url) + { + HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url); + var res = req.GetResponse(); + using (var reader = new StreamReader(res.GetResponseStream())) + { + return reader.ReadToEnd(); + } + } + } +} diff --git a/TestWordAddIn1/ProofreadItem.cs b/TestWordAddIn1/ProofreadItem.cs new file mode 100644 index 0000000..19f16f6 --- /dev/null +++ b/TestWordAddIn1/ProofreadItem.cs @@ -0,0 +1,145 @@ +using Microsoft.Office.Interop.Word; +using System; +using System.Drawing; +using System.Windows.Forms; +using UtilLib; + +namespace TestWordAddIn1 +{ + public partial class ProofreadItem : UserControl + { + + private readonly Color BG_NORMAL = Color.WhiteSmoke; + private readonly Color BG_HOVER = Color.AliceBlue; + private readonly Color BG_ACTIVE = Color.AliceBlue; + private DiffItem diffItem; + private int currentStart; + private Document document; + private Bookmark bookmark; + private bool processed = false; + + public ProofreadItem() + { + InitializeComponent(); + this.BackColor = BG_NORMAL; + this.document = Globals.ThisAddIn.Application.ActiveDocument; + } + + private void ProofreadItem_MouseEnter(object sender, EventArgs e) + { + this.BackColor = BG_HOVER; + Console.WriteLine("ProofreadItem_MouseEnter"); + } + + private void ProofreadItem_MouseLeave(object sender, EventArgs e) + { + this.BackColor = BG_NORMAL; + Console.WriteLine("ProofreadItem_MouseLeave"); + } + + private void ProofreadItem_Click(object sender, EventArgs e) + { + this.BackColor = BG_ACTIVE; + Console.WriteLine("ProofreadItem_Click"); + } + private void AddBookmark(Color color) + { + int rangeStart = this.currentStart + this.diffItem.Start, + rangeEnd = this.currentStart + this.diffItem.End; + + Range r = this.document.Range(rangeStart, rangeEnd); + + this.bookmark = this.document.Bookmarks.Add("mark_" + this.diffItem.Id, r); + if (this.diffItem.Tag != "i") + { + r.Shading.BackgroundPatternColor = (WdColor)ColorTranslator.ToOle(color); + } + } + + public void SetProofreadItem(DiffItem it, int start) + { + this.diffItem = it; + this.currentStart = start; + this.ProcessView(); + + var typeConfig = TypeConfig.Get(it.Type); + type.Text = typeConfig.Text; + type.Visible = false; + var c = Colors.FromHex(typeConfig.Color); + typePanel.BackColor = c; + //if (it.Tag != "i") + //{ + AddBookmark(c); + //} + + if (it.Type == ProofreadType.blackWord + || it.Type == ProofreadType.blackWordBlock + || it.Type == ProofreadType.sensitive) + { + description.Text = "【敏感词】建议查看"; + } + else + { + if (it.Tag == "r") + { + origin.Text = it.Origin + ">" + it.Text; + description.Text = string.Format("【{0}】建议选用“{1}”", typeConfig.Text, it.Text); + } + else if (it.Tag == "i") + { + origin.Text = it.Text + " 新增"; + description.Text = string.Format("【{0}】建议新增", typeConfig.Text); + } + else + { + origin.Text = it.Origin + " 删除"; + description.Text = string.Format("【{0}】建议删除", typeConfig.Text); + } + } + + } + + private void ProcessView() + { + var showBtn = this.diffItem.IsAccept == AcceptEnum.Default; + btnAccept.Visible = showBtn; + btnIgnore.Visible = showBtn; + processStatus.Visible = !showBtn; + if (!showBtn) + { + processStatus.Text = (this.diffItem.IsAccept == AcceptEnum.Accept) ? "已采纳" : "已忽略"; + } + } + + private void ProofreadItem_Load(object sender, EventArgs e) + { + + } + + private void btnIgnore_Click(object sender, EventArgs e) + { + if (this.diffItem.IsAccept != AcceptEnum.Default) return; + this.diffItem.IsAccept = AcceptEnum.Ignore; + this.bookmark.Range.Shading.BackgroundPatternColor = WdColor.wdColorAutomatic; + MessageBox.Show("忽略" + this.currentStart + this.diffItem.Text); + this.ProcessView(); + } + + private void btnAccept_Click(object sender, EventArgs e) + { + if (this.diffItem.IsAccept != AcceptEnum.Default) return; + this.diffItem.IsAccept = AcceptEnum.Accept; + var rng = this.bookmark.Range; + rng.Shading.BackgroundPatternColor = WdColor.wdColorAutomatic; + if (this.diffItem.Tag == "d") + { + rng.Delete(); + } + else + { + rng.Text = this.diffItem.Text; + } + this.ProcessView(); + } + } +} diff --git a/TestWordAddIn1/ProofreadItem.designer.cs b/TestWordAddIn1/ProofreadItem.designer.cs new file mode 100644 index 0000000..5840104 --- /dev/null +++ b/TestWordAddIn1/ProofreadItem.designer.cs @@ -0,0 +1,147 @@ +using System.Drawing; +using System.Windows.Forms; + +namespace TestWordAddIn1 +{ + partial class ProofreadItem + { + /// + /// 必需的设计器变量。 + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 清理所有正在使用的资源。 + /// + /// 如果应释放托管资源,为 true;否则为 false。 + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region 组件设计器生成的代码 + + /// + /// 设计器支持所需的方法 - 不要修改 + /// 使用代码编辑器修改此方法的内容。 + /// + private void InitializeComponent() + { + this.origin = new System.Windows.Forms.Label(); + this.type = new System.Windows.Forms.Label(); + this.description = new System.Windows.Forms.Label(); + this.btnAccept = new System.Windows.Forms.Button(); + this.btnIgnore = new System.Windows.Forms.Button(); + this.typePanel = new System.Windows.Forms.Panel(); + this.processStatus = new System.Windows.Forms.Label(); + this.SuspendLayout(); + // + // origin + // + this.origin.AutoSize = true; + this.origin.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.origin.Location = new System.Drawing.Point(18, 10); + this.origin.Name = "origin"; + this.origin.Size = new System.Drawing.Size(49, 20); + this.origin.TabIndex = 0; + this.origin.Text = "origin"; + // + // type + // + this.type.AutoSize = true; + this.type.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.type.Location = new System.Drawing.Point(69, 11); + this.type.Name = "type"; + this.type.Size = new System.Drawing.Size(38, 20); + this.type.TabIndex = 1; + this.type.Text = "type"; + // + // description + // + this.description.AutoSize = true; + this.description.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.description.Location = new System.Drawing.Point(12, 36); + this.description.Name = "description"; + this.description.Size = new System.Drawing.Size(84, 20); + this.description.TabIndex = 2; + this.description.Text = "description"; + // + // btnAccept + // + this.btnAccept.BackgroundImage = global::TestWordAddIn1.Properties.Resources.check; + this.btnAccept.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; + this.btnAccept.Cursor = System.Windows.Forms.Cursors.Hand; + this.btnAccept.Location = new System.Drawing.Point(222, 13); + this.btnAccept.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + this.btnAccept.Name = "btnAccept"; + this.btnAccept.Size = new System.Drawing.Size(26, 26); + this.btnAccept.TabIndex = 3; + this.btnAccept.UseVisualStyleBackColor = true; + this.btnAccept.Click += new System.EventHandler(this.btnAccept_Click); + // + // btnIgnore + // + this.btnIgnore.BackgroundImage = global::TestWordAddIn1.Properties.Resources.minus_bold; + this.btnIgnore.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; + this.btnIgnore.Cursor = System.Windows.Forms.Cursors.Hand; + this.btnIgnore.Location = new System.Drawing.Point(258, 13); + this.btnIgnore.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + this.btnIgnore.Name = "btnIgnore"; + this.btnIgnore.Size = new System.Drawing.Size(26, 26); + this.btnIgnore.TabIndex = 4; + this.btnIgnore.UseVisualStyleBackColor = true; + this.btnIgnore.Click += new System.EventHandler(this.btnIgnore_Click); + // + // typePanel + // + this.typePanel.BackColor = System.Drawing.Color.Black; + this.typePanel.Location = new System.Drawing.Point(0, 0); + this.typePanel.Name = "typePanel"; + this.typePanel.Size = new System.Drawing.Size(4, 70); + this.typePanel.TabIndex = 5; + // + // processStatus + // + this.processStatus.AutoSize = true; + this.processStatus.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.processStatus.Location = new System.Drawing.Point(222, 18); + this.processStatus.Name = "processStatus"; + this.processStatus.Size = new System.Drawing.Size(50, 20); + this.processStatus.TabIndex = 6; + this.processStatus.Text = "label1"; + // + // ProofreadItem + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackColor = System.Drawing.Color.WhiteSmoke; + this.Controls.Add(this.processStatus); + this.Controls.Add(this.typePanel); + this.Controls.Add(this.btnIgnore); + this.Controls.Add(this.btnAccept); + this.Controls.Add(this.description); + this.Controls.Add(this.type); + this.Controls.Add(this.origin); + this.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + this.Name = "ProofreadItem"; + this.Size = new System.Drawing.Size(300, 70); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private Label origin; + private Label type; + private Label description; + private Button btnAccept; + private Button btnIgnore; + private Panel typePanel; + private Label processStatus; + } +} diff --git a/TestWordAddIn1/ProofreadItem.resx b/TestWordAddIn1/ProofreadItem.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/TestWordAddIn1/ProofreadItem.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/TestWordAddIn1/ProofreadPanel.Designer.cs b/TestWordAddIn1/ProofreadPanel.Designer.cs new file mode 100644 index 0000000..7772af7 --- /dev/null +++ b/TestWordAddIn1/ProofreadPanel.Designer.cs @@ -0,0 +1,79 @@ +namespace TestWordAddIn1 +{ + partial class ProofreadPanel + { + /// + /// 必需的设计器变量。 + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 清理所有正在使用的资源。 + /// + /// 如果应释放托管资源,为 true;否则为 false。 + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region 组件设计器生成的代码 + + /// + /// 设计器支持所需的方法 - 不要修改 + /// 使用代码编辑器修改此方法的内容。 + /// + private void InitializeComponent() + { + this.button1 = new System.Windows.Forms.Button(); + this.panel1 = new System.Windows.Forms.Panel(); + this.SuspendLayout(); + // + // button1 + // + this.button1.BackColor = System.Drawing.SystemColors.HotTrack; + this.button1.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.button1.ForeColor = System.Drawing.Color.White; + this.button1.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; + this.button1.Location = new System.Drawing.Point(16, 14); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(117, 31); + this.button1.TabIndex = 0; + this.button1.Text = "开始校对"; + this.button1.UseVisualStyleBackColor = false; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // panel1 + // + this.panel1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.panel1.AutoScroll = true; + this.panel1.Location = new System.Drawing.Point(16, 61); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(304, 606); + this.panel1.TabIndex = 1; + // + // ProofreadPanel + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackColor = System.Drawing.Color.White; + this.Controls.Add(this.panel1); + this.Controls.Add(this.button1); + this.Name = "ProofreadPanel"; + this.Size = new System.Drawing.Size(340, 686); + this.Load += new System.EventHandler(this.ProofreadPanel_Load); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.Button button1; + private System.Windows.Forms.Panel panel1; + } +} diff --git a/TestWordAddIn1/ProofreadPanel.cs b/TestWordAddIn1/ProofreadPanel.cs new file mode 100644 index 0000000..cd0ce4b --- /dev/null +++ b/TestWordAddIn1/ProofreadPanel.cs @@ -0,0 +1,131 @@ +using Microsoft.Office.Interop.Word; +using Microsoft.Web.WebView2.Core; +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Reflection; +using System.Runtime.ConstrainedExecution; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using UtilLib; +using static System.Windows.Forms.VisualStyles.VisualStyleElement.Header; + +namespace TestWordAddIn1 +{ + public partial class ProofreadPanel : UserControl + { + private CoreWebView2Environment env; + + private readonly int ItemHeight = 75; + private readonly List Items = new List(); + public ProofreadPanel() + { + InitializeComponent(); + } + + private void ProofreadPanel_Load(object sender, EventArgs e) + { + //InitWebview(); + } + public void SendMessage(string action, object data) + { + //string json = JsonConvert.SerializeObject(new WebActionMessage(action, data)); + //webView21.CoreWebView2.PostWebMessageAsJson(json); + } + + //public async void InitWebview() + //{ + //if (env == null) + //{ + // // 自定义环境位置 + // env = await CoreWebView2Environment.CreateAsync(null, Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "/web/user_data"); + // webView21.CoreWebView2InitializationCompleted += WebView21_CoreWebView2InitializationCompleted; + // await webView21.EnsureCoreWebView2Async(env); + //} + //webView21.Source = new Uri(AppDomain.CurrentDomain.BaseDirectory + "\\web\\index.html"); + //// + //webView21.CoreWebView2.AddHostObjectToScript("bridge", new Bridge()); + //} + + private void WebView21_CoreWebView2InitializationCompleted(object sender, CoreWebView2InitializationCompletedEventArgs e) + { + + } + + private void webView21_Click(object sender, EventArgs e) + { + + } + + + private void button1_Click(object sender, EventArgs e) + { + var app = Globals.ThisAddIn.Application; + var doc = app.ActiveDocument; + var content = doc.Content.Text.Trim(); + if (content.Length > 0) + { + if (MessageBox.Show("将会清空文档内容并加载示例内容,确定继续操作?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) != DialogResult.OK) + { + return; + } + // doc.Select(); + var rng = doc.Range(0, content.Length); + rng.Delete(); + } + var result = API.GetProofreadResult(); + if (result == null) + { + MessageBox.Show("加载数据失败,请重试"); + return; + } + var cur = app.Selection; + if (app.Options.Overtype) + { + // 禁用 + app.Options.Overtype = false; + } + if (cur.Type != WdSelectionType.wdSelectionIP) + { + MessageBox.Show("异常"); + return; + } + InitDocument(result); + } + + private void InitDocument(ProofreadResult result) + { + var app = Globals.ThisAddIn.Application; + var cur = app.Selection; + var doc = app.ActiveDocument; + int index = 0; + foreach (var correct in result.CorrectedSet) + { + cur.TypeText(correct.Insert); + var rng = cur.Range; + if (correct.Diffs != null) + { + foreach (var it in correct.Diffs) + { + ProofreadItem item = new ProofreadItem(); + item.SetProofreadItem(it, correct.Offset); + Items.Add(item); + if (it.Tag == "d") + { + var curg = doc.Range(correct.Offset + it.Start, correct.Offset + it.End); + // 设置玄宗效果 + } + item.Location = new System.Drawing.Point(10, (ItemHeight + 10) * index); + panel1.Controls.Add(item); + index++; + } + } + } + } + } +} diff --git a/TestWordAddIn1/ProofreadPanel.resx b/TestWordAddIn1/ProofreadPanel.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/TestWordAddIn1/ProofreadPanel.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/TestWordAddIn1/Properties/AssemblyInfo.cs b/TestWordAddIn1/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..0322421 --- /dev/null +++ b/TestWordAddIn1/Properties/AssemblyInfo.cs @@ -0,0 +1,38 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Security; + +// 有关程序集的一般信息由以下 +// 控制。更改这些特性值可修改 +// 与程序集关联的信息。 +[assembly: AssemblyTitle("TestWordAddIn1")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("TestWordAddIn1")] +[assembly: AssemblyCopyright("Copyright © 2023")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +//将 ComVisible 设置为 false 将使此程序集中的类型 +//对 COM 组件不可见。 如果需要从 COM 访问此程序集中的类型, +//请将此类型的 ComVisible 特性设置为 true。 +[assembly: ComVisible(false)] + +// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID +[assembly: Guid("1fa7f1e1-a05f-4129-a40d-62134d43270d")] + +// 程序集的版本信息由下列四个值组成: +// +// 主版本 +// 次版本 +// 生成号 +// 修订号 +// +//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值, +// 方法是按如下所示使用“*”: : +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] + diff --git a/TestWordAddIn1/Properties/Resources.Designer.cs b/TestWordAddIn1/Properties/Resources.Designer.cs new file mode 100644 index 0000000..f9098ea --- /dev/null +++ b/TestWordAddIn1/Properties/Resources.Designer.cs @@ -0,0 +1,123 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +namespace TestWordAddIn1.Properties { + using System; + + + /// + /// 一个强类型的资源类,用于查找本地化的字符串等。 + /// + // 此类是由 StronglyTypedResourceBuilder + // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 + // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen + // (以 /str 作为命令选项),或重新生成 VS 项目。 + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// 返回此类使用的缓存的 ResourceManager 实例。 + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("TestWordAddIn1.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// 重写当前线程的 CurrentUICulture 属性,对 + /// 使用此强类型资源类的所有资源查找执行重写。 + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap android_chrome_192x192 { + get { + object obj = ResourceManager.GetObject("android-chrome-192x192", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap check { + get { + object obj = ResourceManager.GetObject("check", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap favicon { + get { + object obj = ResourceManager.GetObject("favicon", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap minus_bold { + get { + object obj = ResourceManager.GetObject("minus-bold", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap search_check { + get { + object obj = ResourceManager.GetObject("search-check", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap search_proofread { + get { + object obj = ResourceManager.GetObject("search-proofread", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + } +} diff --git a/TestWordAddIn1/Properties/Resources.resx b/TestWordAddIn1/Properties/Resources.resx new file mode 100644 index 0000000..b98cb4e --- /dev/null +++ b/TestWordAddIn1/Properties/Resources.resx @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + ..\Resources\search-proofread.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\minus-bold.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\favicon.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\check.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\android-chrome-192x192.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\search-check.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + \ No newline at end of file diff --git a/TestWordAddIn1/Properties/Settings.Designer.cs b/TestWordAddIn1/Properties/Settings.Designer.cs new file mode 100644 index 0000000..096e228 --- /dev/null +++ b/TestWordAddIn1/Properties/Settings.Designer.cs @@ -0,0 +1,26 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace TestWordAddIn1.Properties { + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.0.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default { + get { + return defaultInstance; + } + } + } +} diff --git a/TestWordAddIn1/Properties/Settings.settings b/TestWordAddIn1/Properties/Settings.settings new file mode 100644 index 0000000..3964565 --- /dev/null +++ b/TestWordAddIn1/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/TestWordAddIn1/Resources/android-chrome-192x192.png b/TestWordAddIn1/Resources/android-chrome-192x192.png new file mode 100644 index 0000000..419101c Binary files /dev/null and b/TestWordAddIn1/Resources/android-chrome-192x192.png differ diff --git a/TestWordAddIn1/Resources/check.png b/TestWordAddIn1/Resources/check.png new file mode 100644 index 0000000..e6f7e50 Binary files /dev/null and b/TestWordAddIn1/Resources/check.png differ diff --git a/TestWordAddIn1/Resources/favicon.png b/TestWordAddIn1/Resources/favicon.png new file mode 100644 index 0000000..91b4c94 Binary files /dev/null and b/TestWordAddIn1/Resources/favicon.png differ diff --git a/TestWordAddIn1/Resources/minus-bold.png b/TestWordAddIn1/Resources/minus-bold.png new file mode 100644 index 0000000..eabc9b5 Binary files /dev/null and b/TestWordAddIn1/Resources/minus-bold.png differ diff --git a/TestWordAddIn1/Resources/search-check.png b/TestWordAddIn1/Resources/search-check.png new file mode 100644 index 0000000..c3dca6c Binary files /dev/null and b/TestWordAddIn1/Resources/search-check.png differ diff --git a/TestWordAddIn1/Resources/search-proofread.png b/TestWordAddIn1/Resources/search-proofread.png new file mode 100644 index 0000000..c5a4431 Binary files /dev/null and b/TestWordAddIn1/Resources/search-proofread.png differ diff --git a/TestWordAddIn1/Ribbon1.Designer.cs b/TestWordAddIn1/Ribbon1.Designer.cs new file mode 100644 index 0000000..e7c081b --- /dev/null +++ b/TestWordAddIn1/Ribbon1.Designer.cs @@ -0,0 +1,161 @@ +namespace TestWordAddIn1 +{ + partial class Ribbon1 : Microsoft.Office.Tools.Ribbon.RibbonBase + { + /// + /// 必需的设计器变量。 + /// + private System.ComponentModel.IContainer components = null; + + public Ribbon1() + : base(Globals.Factory.GetRibbonFactory()) + { + InitializeComponent(); + } + + /// + /// 清理所有正在使用的资源。 + /// + /// 如果应释放托管资源,为 true;否则为 false。 + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region 组件设计器生成的代码 + + /// + /// 设计器支持所需的方法 - 不要修改 + /// 使用代码编辑器修改此方法的内容。 + /// + private void InitializeComponent() + { + this.tab1 = this.Factory.CreateRibbonTab(); + this.group1 = this.Factory.CreateRibbonGroup(); + this.button1 = this.Factory.CreateRibbonButton(); + this.btnLoadDocument = this.Factory.CreateRibbonButton(); + this.button3 = this.Factory.CreateRibbonButton(); + this.group2 = this.Factory.CreateRibbonGroup(); + this.btnProofread = this.Factory.CreateRibbonButton(); + this.btnOpenForm = this.Factory.CreateRibbonButton(); + this.button8 = this.Factory.CreateRibbonButton(); + this.button6 = this.Factory.CreateRibbonButton(); + this.tab1.SuspendLayout(); + this.group1.SuspendLayout(); + this.group2.SuspendLayout(); + this.SuspendLayout(); + // + // tab1 + // + this.tab1.ControlId.ControlIdType = Microsoft.Office.Tools.Ribbon.RibbonControlIdType.Office; + this.tab1.Groups.Add(this.group1); + this.tab1.Groups.Add(this.group2); + this.tab1.Label = "测试加载项"; + this.tab1.Name = "tab1"; + // + // group1 + // + this.group1.Items.Add(this.button1); + this.group1.Items.Add(this.btnLoadDocument); + this.group1.Items.Add(this.button3); + this.group1.Label = "分组1"; + this.group1.Name = "group1"; + // + // button1 + // + this.button1.Label = "获取当前文本"; + this.button1.Name = "button1"; + this.button1.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(this.button1_Click); + // + // btnLoadDocument + // + this.btnLoadDocument.Label = "加载文档"; + this.btnLoadDocument.Name = "btnLoadDocument"; + this.btnLoadDocument.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(this.button2_Click); + // + // button3 + // + this.button3.Label = "插入"; + this.button3.Name = "button3"; + this.button3.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(this.button3_Click); + // + // group2 + // + this.group2.Items.Add(this.btnProofread); + this.group2.Items.Add(this.btnOpenForm); + this.group2.Items.Add(this.button8); + this.group2.Items.Add(this.button6); + this.group2.Label = "分组2"; + this.group2.Name = "group2"; + // + // btnProofread + // + this.btnProofread.ControlSize = Microsoft.Office.Core.RibbonControlSize.RibbonControlSizeLarge; + this.btnProofread.Image = global::TestWordAddIn1.Properties.Resources.search_proofread; + this.btnProofread.Label = "开始校验"; + this.btnProofread.Name = "btnProofread"; + this.btnProofread.ShowImage = true; + this.btnProofread.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(this.button4_Click); + // + // btnOpenForm + // + this.btnOpenForm.Image = global::TestWordAddIn1.Properties.Resources.favicon; + this.btnOpenForm.Label = "打开原生窗口"; + this.btnOpenForm.Name = "btnOpenForm"; + this.btnOpenForm.ShowImage = true; + this.btnOpenForm.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(this.btnOpenForm_Click); + // + // button8 + // + this.button8.Label = "测试3"; + this.button8.Name = "button8"; + this.button8.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(this.button8_Click); + // + // button6 + // + this.button6.Label = "保存文档"; + this.button6.Name = "button6"; + this.button6.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(this.button6_Click); + // + // Ribbon1 + // + this.Name = "Ribbon1"; + this.RibbonType = "Microsoft.Word.Document"; + this.Tabs.Add(this.tab1); + this.Load += new Microsoft.Office.Tools.Ribbon.RibbonUIEventHandler(this.Ribbon1_Load); + this.tab1.ResumeLayout(false); + this.tab1.PerformLayout(); + this.group1.ResumeLayout(false); + this.group1.PerformLayout(); + this.group2.ResumeLayout(false); + this.group2.PerformLayout(); + this.ResumeLayout(false); + + } + + #endregion + + internal Microsoft.Office.Tools.Ribbon.RibbonTab tab1; + internal Microsoft.Office.Tools.Ribbon.RibbonGroup group1; + internal Microsoft.Office.Tools.Ribbon.RibbonButton button1; + internal Microsoft.Office.Tools.Ribbon.RibbonButton btnLoadDocument; + internal Microsoft.Office.Tools.Ribbon.RibbonButton button3; + internal Microsoft.Office.Tools.Ribbon.RibbonGroup group2; + internal Microsoft.Office.Tools.Ribbon.RibbonButton btnProofread; + internal Microsoft.Office.Tools.Ribbon.RibbonButton btnOpenForm; + internal Microsoft.Office.Tools.Ribbon.RibbonButton button8; + internal Microsoft.Office.Tools.Ribbon.RibbonButton button6; + } + + partial class ThisRibbonCollection + { + internal Ribbon1 Ribbon1 + { + get { return this.GetRibbon(); } + } + } +} diff --git a/TestWordAddIn1/Ribbon1.cs b/TestWordAddIn1/Ribbon1.cs new file mode 100644 index 0000000..8b8cbcf --- /dev/null +++ b/TestWordAddIn1/Ribbon1.cs @@ -0,0 +1,175 @@ +using Microsoft.Office.Interop.Word; +using Microsoft.Office.Tools.Ribbon; +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Drawing; +using System.Threading; +using System.Windows.Forms; +using UtilLib; + +namespace TestWordAddIn1 +{ + public partial class Ribbon1 + { + private Microsoft.Office.Interop.Word.Application wordApp; + private Document document; + + private void Ribbon1_Load(object sender, RibbonUIEventArgs e) + { + wordApp = Globals.ThisAddIn.Application; + Console.WriteLine("插件加载完成"); + } + + + private void button1_Click(object sender, RibbonControlEventArgs e) + { + var currentText = wordApp.ActiveDocument.Range().Text; + Debug.WriteLine(currentText); + + System.Windows.Forms.MessageBox.Show("Test:" + currentText); + } + + private void button4_Click(object sender, RibbonControlEventArgs e) + { + // 开始校对 + //var doc = wordApp.ActiveDocument; + //var content = doc.Content.Text.Trim(); + //if (content.Length == 0) + //{ + // System.Windows.Forms.MessageBox.Show("内容为空"); + // return; + //} + Globals.ThisAddIn.SetPanelVisible(true); + } + + void addMarks() + { + document = wordApp.ActiveDocument; + Range rng = document.Range(2, 4); + document.Bookmarks.Add("s24", rng); + + + } + + private void btnOpenForm_Click(object sender, RibbonControlEventArgs e) + { + Form1 f1 = new Form1(); + f1.ShowDialog(); + } + + private void button8_Click(object sender, RibbonControlEventArgs e) + { + //var paragrahs = wordApp.ActiveDocument.Paragraphs; + Document doc = wordApp.ActiveDocument; + object start = 0; + object end = 4; + System.Windows.Forms.MessageBox.Show("选择0,4"); + // 设置区域位置 + Range range = doc.Range(ref start, ref end); // 从 start(索引从0开始)到end前一个字符(不包含end) + range.Select(); // 选中区域 + System.Windows.Forms.MessageBox.Show("即将全选"); + wordApp.ActiveDocument.Select(); // 全选 + var sentences = doc.Sentences; + System.Windows.Forms.MessageBox.Show("句子总计:" + sentences.Count); + if (sentences.Count >= 2) + { + System.Windows.Forms.MessageBox.Show("选中第2个句子"); + var s2 = sentences[2]; // 句子的索引从1开始 + doc.Range(s2.Start, s2.End).Select(); + } + System.Windows.Forms.MessageBox.Show("选择2,5"); + // 设置区域位置 + Range rng = doc.Range(2, 5); + rng.Select(); // + System.Windows.Forms.MessageBox.Show("向后选择多2个字符"); + // 按字符向后移动 + rng.MoveEnd(WdUnits.wdCharacter, 2); + // 字符向前移动 + //rng.MoveStart(WdUnits.wdCharacter, 2); + rng.Select(); + + Thread.Sleep(2000); + // 选择第1段 + rng = doc.Paragraphs[1].Range; + rng.Select(); + Thread.Sleep(1000); + rng.Collapse(WdCollapseDirection.wdCollapseEnd); // 折叠(wdCollapseEnd:向后,wdCollapseStart:向前) + System.Windows.Forms.MessageBox.Show("插入新字符"); + rng.Text = "插入新字符"; + rng.Select(); + } + + private void button6_Click(object sender, RibbonControlEventArgs e) + { + wordApp.ActiveDocument.Save(); + } + + private void button3_Click(object sender, RibbonControlEventArgs e) + { + document = wordApp.ActiveDocument; + var txt = "在文档开头指定一个范围,并插入文本 New Text。\n再说一下这个问题哈"; + Selection cur = wordApp.Selection; + if (cur.Type != WdSelectionType.wdSelectionIP) + { + MessageBox.Show("异常"); + return; + } + cur.TypeText(txt); + AddBookmark(1, 3, "#ff0000"); + AddBookmark(4, 6, "#00ff00"); + + } + private Bookmark AddBookmark(int rangeStart, int rangeEnd,string color) + { + var doc = wordApp.ActiveDocument; + Range r = doc.Range(rangeStart, rangeEnd); + + var mark = doc.Bookmarks.Add("mark_" + rangeStart + "_" + rangeEnd, r); + r.Shading.BackgroundPatternColor = (WdColor)ColorTranslator.ToOle(Colors.FromHex(color)); + return mark; + } + + private ProofreadResult GetSource() + { + + var content = Http.Get("http://test.wx.wm-app.xyz/proofread.json"); + var result = JsonConvert.DeserializeObject>(content); + return result.Data; + } + + // 加载文档 + private void button2_Click(object sender, RibbonControlEventArgs e) + { + document = wordApp.ActiveDocument; + + var cur = wordApp.Selection; + + if (wordApp.Options.Overtype) + { + // 禁用 + wordApp.Options.Overtype = false; + } + if (cur.Type != WdSelectionType.wdSelectionIP) + { + System.Windows.Forms.MessageBox.Show("异常"); + return; + } + var result = GetSource(); + result.CorrectedSet.ForEach(it => + { + cur.TypeText(it.Insert); + }); + + //for (int i = 0; i < 20; i++) + //{ + // cur.TypeText("-->" + i); + // cur.TypeParagraph(); + // Thread.Sleep(1000); + //} + //cur.TypeText("在文档开头指定一个范围,并插入文本 New Text。\n下面的代码示例可用于文档级自定义项。"); + //} + } + } +} diff --git a/TestWordAddIn1/Ribbon1.resx b/TestWordAddIn1/Ribbon1.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/TestWordAddIn1/Ribbon1.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/TestWordAddIn1/TestWordAddIn1.csproj b/TestWordAddIn1/TestWordAddIn1.csproj new file mode 100644 index 0000000..6f7fd8e --- /dev/null +++ b/TestWordAddIn1/TestWordAddIn1.csproj @@ -0,0 +1,305 @@ + + + + + {BAA0C2D2-18E2-41B9-852F-F413020CAA33};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + Debug + AnyCPU + {E12FB108-CC54-49E3-B606-872B9805F9FA} + Library + false + TestWordAddIn1 + TestWordAddIn1 + 3 + v4.6.2 + VSTO40 + true + HomeSite + + + + + + False + Microsoft Visual Studio 2010 Tools for Office Runtime %28x86 and x64%29 + true + + + + + Word + + + + true + full + false + bin\Debug\ + false + $(DefineConstants);DEBUG;TRACE + 4 + + + + pdbonly + true + bin\Release\ + false + $(DefineConstants);TRACE + 4 + + + + + + ..\packages\Microsoft.Web.WebView2.1.0.2151.40\lib\net45\Microsoft.Web.WebView2.Core.dll + + + ..\packages\Microsoft.Web.WebView2.1.0.2151.40\lib\net45\Microsoft.Web.WebView2.WinForms.dll + + + ..\packages\Microsoft.Web.WebView2.1.0.2151.40\lib\net45\Microsoft.Web.WebView2.Wpf.dll + + + ..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll + + + + + + + + + + + + + + False + + + False + + + False + + + False + + + False + + + + + True + + + + + False + true + + + False + true + + + False + + + + + + + + + Form + + + Form1.cs + + + + UserControl + + + ProofreadItem.cs + + + UserControl + + + ProofreadPanel.cs + + + Code + + + Form1.cs + + + ProofreadItem.cs + + + ProofreadPanel.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + True + + + Ribbon1.cs + + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + + + Component + + + Ribbon1.cs + + + Code + + + + ThisAddIn.cs + + + ThisAddIn.Designer.xml + + + + + + + + + + + + + + + {724d79c5-93b5-4bd7-9964-a05ccefd3bfa} + UtilLib + + + + + + + + Always + + + + 10.0 + $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) + + + true + + + TestWordAddIn1_TemporaryKey.pfx + + + 0618754C31A0C743191F0D2976885003BA3EB202 + + + + + + + + + + + + + + + + + + + + 这台计算机上缺少此项目引用的 NuGet 程序包。使用“NuGet 程序包还原”可下载这些程序包。有关更多信息,请参见 http://go.microsoft.com/fwlink/?LinkID=322105。缺少的文件是 {0}。 + + + + \ No newline at end of file diff --git a/TestWordAddIn1/TestWordAddIn1_TemporaryKey.pfx b/TestWordAddIn1/TestWordAddIn1_TemporaryKey.pfx new file mode 100644 index 0000000..7d40201 Binary files /dev/null and b/TestWordAddIn1/TestWordAddIn1_TemporaryKey.pfx differ diff --git a/TestWordAddIn1/ThisAddIn.Designer.cs b/TestWordAddIn1/ThisAddIn.Designer.cs new file mode 100644 index 0000000..bdc2932 --- /dev/null +++ b/TestWordAddIn1/ThisAddIn.Designer.cs @@ -0,0 +1,237 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +#pragma warning disable 414 +namespace TestWordAddIn1 { + + + /// + [Microsoft.VisualStudio.Tools.Applications.Runtime.StartupObjectAttribute(0)] + [global::System.Security.Permissions.PermissionSetAttribute(global::System.Security.Permissions.SecurityAction.Demand, Name="FullTrust")] + public sealed partial class ThisAddIn : Microsoft.Office.Tools.AddInBase { + + internal Microsoft.Office.Tools.CustomTaskPaneCollection CustomTaskPanes; + + internal Microsoft.Office.Tools.SmartTagCollection VstoSmartTags; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Tools.Office.ProgrammingModel.dll", "17.0.0.0")] + private global::System.Object missing = global::System.Type.Missing; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Tools.Office.ProgrammingModel.dll", "17.0.0.0")] + internal Microsoft.Office.Interop.Word.Application Application; + + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Never)] + public ThisAddIn(global::Microsoft.Office.Tools.Word.ApplicationFactory factory, global::System.IServiceProvider serviceProvider) : + base(factory, serviceProvider, "AddIn", "ThisAddIn") { + Globals.Factory = factory; + } + + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Tools.Office.ProgrammingModel.dll", "17.0.0.0")] + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Never)] + protected override void Initialize() { + base.Initialize(); + this.Application = this.GetHostItem(typeof(Microsoft.Office.Interop.Word.Application), "Application"); + Globals.ThisAddIn = this; + global::System.Windows.Forms.Application.EnableVisualStyles(); + this.InitializeCachedData(); + this.InitializeControls(); + this.InitializeComponents(); + this.InitializeData(); + } + + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Tools.Office.ProgrammingModel.dll", "17.0.0.0")] + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Never)] + protected override void FinishInitialization() { + this.InternalStartup(); + this.OnStartup(); + } + + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Tools.Office.ProgrammingModel.dll", "17.0.0.0")] + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Never)] + protected override void InitializeDataBindings() { + this.BeginInitialization(); + this.BindToData(); + this.EndInitialization(); + } + + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Tools.Office.ProgrammingModel.dll", "17.0.0.0")] + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Never)] + private void InitializeCachedData() { + if ((this.DataHost == null)) { + return; + } + if (this.DataHost.IsCacheInitialized) { + this.DataHost.FillCachedData(this); + } + } + + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Tools.Office.ProgrammingModel.dll", "17.0.0.0")] + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Never)] + private void InitializeData() { + } + + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Tools.Office.ProgrammingModel.dll", "17.0.0.0")] + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Never)] + private void BindToData() { + } + + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + private void StartCaching(string MemberName) { + this.DataHost.StartCaching(this, MemberName); + } + + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + private void StopCaching(string MemberName) { + this.DataHost.StopCaching(this, MemberName); + } + + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + private bool IsCached(string MemberName) { + return this.DataHost.IsCached(this, MemberName); + } + + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Tools.Office.ProgrammingModel.dll", "17.0.0.0")] + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Never)] + private void BeginInitialization() { + this.BeginInit(); + this.CustomTaskPanes.BeginInit(); + this.VstoSmartTags.BeginInit(); + } + + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Tools.Office.ProgrammingModel.dll", "17.0.0.0")] + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Never)] + private void EndInitialization() { + this.VstoSmartTags.EndInit(); + this.CustomTaskPanes.EndInit(); + this.EndInit(); + } + + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Tools.Office.ProgrammingModel.dll", "17.0.0.0")] + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Never)] + private void InitializeControls() { + this.CustomTaskPanes = Globals.Factory.CreateCustomTaskPaneCollection(null, null, "CustomTaskPanes", "CustomTaskPanes", this); + this.VstoSmartTags = Globals.Factory.CreateSmartTagCollection(null, null, "VstoSmartTags", "VstoSmartTags", this); + } + + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Tools.Office.ProgrammingModel.dll", "17.0.0.0")] + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Never)] + private void InitializeComponents() { + } + + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + private bool NeedsFill(string MemberName) { + return this.DataHost.NeedsFill(this, MemberName); + } + + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Tools.Office.ProgrammingModel.dll", "17.0.0.0")] + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Never)] + protected override void OnShutdown() { + this.VstoSmartTags.Dispose(); + this.CustomTaskPanes.Dispose(); + base.OnShutdown(); + } + } + + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Tools.Office.ProgrammingModel.dll", "17.0.0.0")] + internal sealed partial class Globals { + + /// + private Globals() { + } + + private static ThisAddIn _ThisAddIn; + + private static global::Microsoft.Office.Tools.Word.ApplicationFactory _factory; + + private static ThisRibbonCollection _ThisRibbonCollection; + + internal static ThisAddIn ThisAddIn { + get { + return _ThisAddIn; + } + set { + if ((_ThisAddIn == null)) { + _ThisAddIn = value; + } + else { + throw new System.NotSupportedException(); + } + } + } + + internal static global::Microsoft.Office.Tools.Word.ApplicationFactory Factory { + get { + return _factory; + } + set { + if ((_factory == null)) { + _factory = value; + } + else { + throw new System.NotSupportedException(); + } + } + } + + internal static ThisRibbonCollection Ribbons { + get { + if ((_ThisRibbonCollection == null)) { + _ThisRibbonCollection = new ThisRibbonCollection(_factory.GetRibbonFactory()); + } + return _ThisRibbonCollection; + } + } + } + + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Tools.Office.ProgrammingModel.dll", "17.0.0.0")] + internal sealed partial class ThisRibbonCollection : Microsoft.Office.Tools.Ribbon.RibbonCollectionBase { + + /// + internal ThisRibbonCollection(global::Microsoft.Office.Tools.Ribbon.RibbonFactory factory) : + base(factory) { + } + } +} diff --git a/TestWordAddIn1/ThisAddIn.Designer.xml b/TestWordAddIn1/ThisAddIn.Designer.xml new file mode 100644 index 0000000..7916359 --- /dev/null +++ b/TestWordAddIn1/ThisAddIn.Designer.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/TestWordAddIn1/ThisAddIn.cs b/TestWordAddIn1/ThisAddIn.cs new file mode 100644 index 0000000..fb8f27d --- /dev/null +++ b/TestWordAddIn1/ThisAddIn.cs @@ -0,0 +1,215 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Xml.Linq; +using Microsoft.Office.Interop.Word; +using System.Runtime.InteropServices; +using CustomTaskPane = Microsoft.Office.Tools.CustomTaskPane; +using System.Windows.Forms; + +namespace TestWordAddIn1 +{ + public partial class ThisAddIn + { + + public OfficeType officeType = OfficeType.Word; + public string applicationStartupPath; + public bool proofreadPanelOpen; + private ProofreadPanel proofreadPanel; + private Dictionary myTaskPanes; + private CustomTaskPane myCustomTaskPane; + + private void ThisAddIn_Startup(object sender, System.EventArgs e) + { + this.applicationStartupPath = System.Windows.Forms.Application.ProductName; + + if (applicationStartupPath.Contains("WPS")) + { + this.officeType = OfficeType.WPS; + return; + } + var eventInfo = new ComAwareEventInfo(typeof(ApplicationEvents4_Event), "DocumentOpen"); + var handler = new ApplicationEvents4_DocumentOpenEventHandler(Application_DocumentOpen); + + // 监听文档相关操作 + //eventInfo.AddEventHandler(this, handler); + //new ComAwareEventInfo(typeof(ApplicationEvents4_Event), "NewDocument").AddEventHandler(Application, new ApplicationEvents4_NewDocumentEventHandler(Application_NewDocument)); + //new ComAwareEventInfo(typeof(ApplicationEvents4_Event), "WindowActivate").AddEventHandler(Application, new ApplicationEvents4_WindowActivateEventHandler(Application_WindowActivate)); + //new ComAwareEventInfo(typeof(ApplicationEvents4_Event), "WindowDeactivate").AddEventHandler(Application, new ApplicationEvents4_WindowDeactivateEventHandler(Application_WindowDeactivate)); + + } + + /// + /// 隐藏所有的面板 + /// + void HideAllPane() + { + foreach (CustomTaskPane customTaskPane in CustomTaskPanes) + { + customTaskPane.Visible = false; + } + } + + private void Application_NewDocument(Document doc) + { + Console.WriteLine("Application_NewDocument"); + InitProofreadPanel(); + HideAllPane(); + } + + private void Application_DocumentOpen(Document doc) + { + Console.WriteLine("Application_DocumentOpen"); + InitProofreadPanel(); + HideAllPane(); + } + + private void Application_DocumentChange() + { + Console.WriteLine("Application_DocumentChange"); + ShowTaskPaneForActiveDocument(); + } + + + private void ShowTaskPaneForActiveDocument() + { + // 获取当前文档 + Document activeDocument = Application.ActiveDocument; + // 如果现有任务不包含文档则直接返回 + if (!myTaskPanes.ContainsKey(activeDocument)) + { + return; + } + // 显示当前文档panel隐藏其他文档panel + foreach (var item in myTaskPanes) + { + if (item.Key == activeDocument) + { + item.Value.Visible = true; + } + else + { + item.Value.Visible = false; + } + } + } + + public void Application_WindowActivate_WPS(Document document, Window window) + { + Console.WriteLine("Application_WindowActivate_WPS"); + if (myCustomTaskPane == null) + { + InitProofreadPanel(); + } + } + + public void Application_WindowActivate(Document document, Window window) + { + Console.WriteLine("Application_WindowActivate"); + //bool flag = true; + //if (myTaskPanes != null) + //{ + // foreach (KeyValuePair customTaskPane in myTaskPanes) + // { + // if (customTaskPane.Key == Application.ActiveDocument) + // { + // flag = false; + // myCustomTaskPane = customTaskPane.Value; + // proofreadPanel = userControls[Application.ActiveDocument]; + // myCustomTaskPane.Visible = customTaskPanesVisible[Application.ActiveDocument]; + // break; + // } + // } + // if (flag) + // { + // NewCustomTaskPane(); + // } + //} + //else + //{ + // NewCustomTaskPane(); + //} + //Globals.Ribbons.Ribbon.button_viewOn.Visible = !myCustomTaskPane.Visible; + //Globals.Ribbons.Ribbon.button_viewOff.Visible = myCustomTaskPane.Visible; + } + + public void Application_WindowDeactivate(Document document, Window window) + { + Console.WriteLine("Application_WindowDeactivate"); + //if (customTaskPanesVisible.ContainsKey(document)) + //{ + // customTaskPanesVisible[document] = myCustomTaskPane.Visible; + //} + //else + //{ + // customTaskPanesVisible.Add(document, myCustomTaskPane.Visible); + //} + } + + /// + /// 面板最小宽度 + /// + private static readonly int MIN_WIDTH = 380; + + void InitProofreadPanel() + { + if(this.myCustomTaskPane == null) + { + // 创建 + proofreadPanel = new ProofreadPanel(); + // 添加到panes + this.myCustomTaskPane = CustomTaskPanes.Add(proofreadPanel, AppConfig.PanelName); + // 先隐藏 + this.myCustomTaskPane.Visible = false; + myCustomTaskPane.Width = MIN_WIDTH; + this.myCustomTaskPane.VisibleChanged += OnProofreadPanel_VisibleChange; + // 添加到集合 + //this.myTaskPanes.Add(Application.ActiveDocument, this.myCustomTaskPane); + } + + } + + // 当面板的显示变化时 + private void OnProofreadPanel_VisibleChange(object sender, EventArgs e) + { + if(this.myCustomTaskPane != null && myCustomTaskPane.Width < MIN_WIDTH) + { + this.myCustomTaskPane.Width = MIN_WIDTH; + } + } + + private void ThisAddIn_Shutdown(object sender, System.EventArgs e) + { + } + + public void SetPanelVisible(bool open) + { + if (this.proofreadPanelOpen == open) return; + + this.InitProofreadPanel(); + this.proofreadPanelOpen = open; + this.myCustomTaskPane.Visible = this.proofreadPanelOpen; + } + public bool TogglePanelVisible() + { + this.proofreadPanelOpen = !this.proofreadPanelOpen; + this.myCustomTaskPane.Visible = this.proofreadPanelOpen; + return this.proofreadPanelOpen; + } + + #region VSTO 生成的代码 + + /// + /// 设计器支持所需的方法 - 不要修改 + /// 使用代码编辑器修改此方法的内容。 + /// + private void InternalStartup() + { + this.Startup += new System.EventHandler(ThisAddIn_Startup); + this.Shutdown += new System.EventHandler(ThisAddIn_Shutdown); + } + + #endregion + } +} diff --git a/TestWordAddIn1/bin/Debug/Microsoft.Office.Tools.Common.v4.0.Utilities.dll b/TestWordAddIn1/bin/Debug/Microsoft.Office.Tools.Common.v4.0.Utilities.dll new file mode 100644 index 0000000..03a6ef8 Binary files /dev/null and b/TestWordAddIn1/bin/Debug/Microsoft.Office.Tools.Common.v4.0.Utilities.dll differ diff --git a/TestWordAddIn1/bin/Debug/Microsoft.Web.WebView2.Core.dll b/TestWordAddIn1/bin/Debug/Microsoft.Web.WebView2.Core.dll new file mode 100644 index 0000000..62ef253 Binary files /dev/null and b/TestWordAddIn1/bin/Debug/Microsoft.Web.WebView2.Core.dll differ diff --git a/TestWordAddIn1/bin/Debug/Microsoft.Web.WebView2.Core.xml b/TestWordAddIn1/bin/Debug/Microsoft.Web.WebView2.Core.xml new file mode 100644 index 0000000..d6be7ca --- /dev/null +++ b/TestWordAddIn1/bin/Debug/Microsoft.Web.WebView2.Core.xml @@ -0,0 +1,7634 @@ + + + + Microsoft.Web.WebView2.Core + + + + + WebView2 enables you to host web content using the latest Microsoft Edge browser and web technology. + + + WebView2 enables you to host web content using the latest Microsoft Edge browser and web technology. + + + WebView2 enables you to host web content using the latest Microsoft Edge browser and web technology. + + + WebView2 enables you to host web content using the latest Microsoft Edge browser and web technology. + + + WebView2 enables you to host web content using the latest Microsoft Edge browser and web technology. + + + WebView2 enables you to host web content using the latest Microsoft Edge browser and web technology. + + + WebView2 enables you to host web content using the latest Microsoft Edge browser and web technology. + + + WebView2 enables you to host web content using the latest Microsoft Edge browser and web technology. + + + WebView2 enables you to host web content using the latest Microsoft Edge browser and web technology. + + + WebView2 enables you to host web content using the latest Microsoft Edge browser and web technology. + + + WebView2 enables you to host web content using the latest Microsoft Edge browser and web technology. + + + WebView2 enables you to host web content using the latest Microsoft Edge browser and web technology. + + + WebView2 enables you to host web content using the latest Microsoft Edge browser and web technology. + + + WebView2 enables you to host web content using the latest Microsoft Edge browser and web technology. + + + WebView2 enables you to host web content using the latest Microsoft Edge browser and web technology. + + + WebView2 enables you to host web content using the latest Microsoft Edge browser and web technology. + + + WebView2 enables you to host web content using the latest Microsoft Edge browser and web technology. + + + WebView2 enables you to host web content using the latest Microsoft Edge browser and web technology. + + + WebView2 enables you to host web content using the latest Microsoft Edge browser and web technology. + + + WebView2 enables you to host web content using the latest Microsoft Edge browser and web technology. + + + + + Print the current page to PDF asynchronously with the provided settings. + + + See for description of settings. Passing null for printSettings results in default print settings used. + + Use resultFilePath to specify the path to the PDF file. The host should provide an absolute path, including file name. If the path points to an existing file, the file will be overwritten. If the path is not valid, the method fails. + + The async PrintToPdf operation completes when the data has been written to the PDF file. If the application exits before printing is complete, the file is not saved. Only one `Printing` operation can be in progress at a time. + If PrintToPdf is called while a `PrintToPdf` or `PrintToPdfStream` or `Print` operation is in progress, the operation completes and returns false. + + + + + Opens the browser print preview dialog to print the current web page + + + + + Gets the object contains various modifiable settings for the running WebView. + + + + + Gets the URI of the current top level document. + + + This value potentially changes as a part of the event raised for some cases such as navigating to a different site or fragment navigations. It remains the same for other types of navigations such as page refreshes or history.pushState with the same URL as the current page. + + + + + + Gets the process ID of the browser process that hosts the WebView. + + + + + true if the WebView is able to navigate to a previous page in the navigation history. + + + If CanGoBack changes value, the event is raised. + + + + + + true if the WebView is able to navigate to a next page in the navigation history. + + + If CanGoForward changes value, the event is raised. + + + + + + Gets the title for the current top-level document. + + + If the document has no explicit title or is otherwise empty, a default that may or may not match the URI of the document is used. + + + :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="DocumentTitle"::: + + + + + Indicates if the WebView contains a fullscreen HTML element. + + + + + NavigationStarting is raised when the WebView main frame is requesting permission to navigate to a different URI. + + + Redirects raise this event as well, and the navigation id is the same as the original one. You may block corresponding navigations until the event handler returns. + + + :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="NavigationStarting"::: + + + + + ContentLoading is raised before any content is loaded, including scripts added with . ContentLoading is not raised if a same page navigation occurs (such as through fragment navigations or history.pushState navigations). + + + This operation follows the and events and precedes the and events. + + + + + + + + + SourceChanged is raised when the property changes. + + + SourceChanged is raised when navigating to a different site or fragment navigations. It is not raised for other types of navigations such as page refreshes or history.pushState with the same URL as the current page. This event is raised before for navigation to a new document. + + + + + + + HistoryChanged is raised for changes to joint session history, which consists of top-level and manual frame navigations. + + + Use HistoryChanged to verify that the or value has changed. HistoryChanged is also raised for using or . HistoryChanged is raised after and . CanGoBack is false for navigations initiated through CoreWebView2Frame APIs if there has not yet been a user gesture. + + + + + + + + + NavigationCompleted is raised when the WebView has completely loaded (body.onload has been raised) or loading stopped with error. + + + :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="NavigationCompleted"::: + :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="DOMContentLoaded"::: + + + + + FrameNavigationStarting is raised when a child frame in the WebView requests permission to navigate to a different URI. + + + Redirects raise this operation as well, and the navigation id is the same as the original one. You may block corresponding navigations until the event handler returns. + + + + + FrameNavigationCompleted is raised when a child frame has completely loaded (body.onload has been raised) or loading stopped with error. + + + + + ScriptDialogOpening is raised when a JavaScript dialog (alert, confirm, prompt, or beforeunload) displays for the WebView. + + + This event only is raised if the property is set to false. This event suppresses dialogs or replaces default dialogs with custom dialogs. + + If a deferral is not taken on the event args, the subsequent scripts are blocked until the event handler returns. If a deferral is taken, the scripts are blocked until the deferral is completed. + + + + + + PermissionRequested is raised when content in a WebView requests permission to access some privileged resources. + + + If a deferral is not taken on the event args, the subsequent scripts are blocked until the event handler returns. If a deferral is taken, the scripts are blocked until the deferral is completed. + + + + + ProcessFailed is raised when a WebView process ends unexpectedly or becomes unresponsive. + + + ProcessFailed is raised when any of the processes in the WebView2 Process Group encounters one of the following conditions: + + + + Condition + Details + + + Unexpected exit + + The process indicated by the event args has exited unexpectedly (usually due to a crash). The failure might or might not be recoverable, and some failures are auto-recoverable. + + + + Unresponsiveness + + The process indicated by the event args has become unresponsive to user input. This is only reported for renderer processes, and will run every few seconds until the process becomes responsive again. + + + + + Note: When the failing process is the browser process, a event will run too. + + Your application can use to identify which condition and process the event is for, and to collect diagnostics and handle recovery if necessary. For more details about which cases need to be handled by your application, see . + + + :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="ProcessFailed"::: + + + + + WebMessageReceived is raised when the setting is set and the top-level document of the WebView runs window.chrome.webview.postMessage or window.chrome.webview.postMessageWithAdditionalObjects. + + + The postMessage function is void postMessage(object) where object is any object supported by JSON conversion. + When postMessage is called, the handler's Invoke method will be called with the object parameter postMessage converted to a JSON string. + If the same page calls postMessage multiple times, the corresponding WebMessageReceived events are guaranteed to be fired in the same order. However, if multiple frames call postMessage, there is no guaranteed order. In addition, WebMessageReceived events caused by calls to postMessage are not guaranteed to be sequenced with events caused by DOM APIs. For example, if the page runs + + chrome.webview.postMessage("message"); + window.open(); + + then the event might be fired before the WebMessageReceived event. If you need the WebMessageReceived event to happen before anything else, then in the WebMessageReceived handler you can post a message back to the page and have the page wait until it receives that message before continuing. + + + + + NewWindowRequested is raised when content inside the WebView requests to open a new window, such as through window.open(). + + + The app can pass a target WebView that is considered the opened window or mark the event as , in which case WebView2 does not open a window. + If either Handled or properties are not set, the target content will be opened on a popup window. + If a deferral is not taken on the event args, scripts that resulted in the new window that are requested are blocked until the event handler returns. If a deferral is taken, then scripts are blocked until the deferral is completed. + + On Hololens 2, if the property is not set and the property is not set to true, the WebView2 will navigate to the . + If either of these properties are set, the WebView2 will not navigate to the and the the event will continue as normal. + + + + + DocumentTitleChanged is raised when the property changes and may be raised before or after the event. + + + :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="DocumentTitleChanged"::: + + + + + + ContainsFullScreenElementChanged is raised when the property changes. + + + An HTML element inside the WebView may enter fullscreen to the size of the WebView or leave fullscreen. This event is useful when, for example, a video element requests to go fullscreen. The listener of this event may resize the WebView in response. + + + + + + WebResourceRequested is raised when the WebView is performing a URL request to a matching URL and resource context filter that was added with . + + + At least one filter must be added for the event to be raised. + The web resource requested may be blocked until the event handler returns if a deferral is not taken on the event args. If a deferral is taken, then the web resource requested is blocked until the deferral is completed. + + If this event is subscribed in the handler it should be called after the new window is set. For more details see . + + This event is by default raised for file, http, and https URI schemes. This is also raised for registered custome URI schemes. See for more details. + + + + + + WindowCloseRequested is raised when content inside the WebView requested to close the window, such as after window.close() is run. + + + The app should close the WebView and related app window if that makes sense to the app. + + + + + Causes a navigation of the top level document to the specified URI. + + The URI to navigate to. + + For more information, navigate to [Navigation event](/microsoft-edge/webview2/concepts/navigation-events). Note that this operation starts a navigation and the corresponding event is raised sometime after Navigate runs. + + + :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="Navigate"::: + + + + + + + Initiates a navigation to htmlContent as source HTML of a new document. + + A source HTML of a new document. + + The htmlContent parameter may not be larger than 2 MB (2 * 1024 * 1024 bytes) in total size. The origin of the new page is about:blank. + + + + webView.CoreWebView2.SetVirtualHostNameToFolderMapping( + "appassets.example", "assets", CoreWebView2HostResourceAccessKind.DenyCors); + string htmlContent = + @" + + + +

Click me

+ + "; + webview.NavigateToString(htmlContent); +
+
+ + + +
+ + + Adds the provided JavaScript to a list of scripts that should be run after the global object has been created, but before the HTML document has been parsed and before any other script included by the HTML document is run. + + The JavaScript code to be run. + A script ID that may be passed when calling . + + The injected script will apply to all future top level document and child frame navigations until removed with . + This is applied asynchronously and you must wait for the returned to complete before you can be sure that the script is ready to execute on future navigations. + If the method is run in handler, it should be called before the new window is set. For more details see . + + Note that if an HTML document has sandboxing of some kind via [sandbox](https://developer.mozilla.org/docs/Web/HTML/Element/iframe#attr-sandbox) properties or the [Content-Security-Policy HTTP header](https://developer.mozilla.org/docs/Web/HTTP/Headers/Content-Security-Policy) this will affect the script run here. So, for example, if the allow-modals keyword is not set then calls to the alert function will be ignored. + + + + + + Removes the corresponding JavaScript added via with the specified script ID. + + The ID corresponds to the JavaScript code to be removed from the list of scripts. + Both use and this method in handler at the same time sometimes causes trouble. Since invalid scripts will be ignored, the script IDs you got may not be valid anymore. + + + + Runs JavaScript code from the javaScript parameter in the current top-level document rendered in the WebView. + + The JavaScript code to be run in the current top-level document rendered in the WebView. + A JSON encoded string that represents the result of running the provided JavaScript. + + If the result is undefined, contains a reference cycle, or otherwise is not able to be encoded into JSON, the JSON null value is returned as the "null" string. + + A function that has no explicit return value returns undefined. If the script that was run throws an unhandled exception, then the result is also null. This method is applied asynchronously. If the method is run after the event during a navigation, the script runs in the new document when loading it, around the time is run. This operation works even if is set to false. + + + :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="ExecuteScript"::: + + + + + + Captures an image of what WebView is displaying. + + The format of the image to be captured. + The stream to which the resulting image binary data is written. + + When CapturePreviewAsync finishes writing to the stream, the Invoke method on the provided handler parameter is called. This method fails if called before the first event. For example if this is called in the event for the first navigation it will fail. For subsequent navigations, the method may not fail, but will not capture an image of a given webpage until the event has been fired for it. Any call to this method prior to that will result in a capture of the page being navigated away from. + + + + + + Reloads the current page. + + + This is similar to navigating to the URI of current top level document including all navigation events firing and respecting any entries in the HTTP cache. But, the back or forward history will not be modified. + + + + + Posts the specified webMessageAsJson to the top level document in this WebView. + + The web message to be posted to the top level document in this WebView. + + The event args is an instance of MessageEvent. The setting must be true or the message will not be sent. The event arg's data property of the event arg is the webMessageAsJson string parameter parsed as a JSON string into a JavaScript object. The event arg's source property of the event arg is a reference to the window.chrome.webview object. For information about sending messages from the HTML document in the WebView to the host, navigate to . The message is sent asynchronously. If a navigation occurs before the message is posted to the page, the message is not be sent. + + + Runs the message event of the window.chrome.webview of the top-level document. JavaScript in that document may subscribe and unsubscribe to the event using the following code: + + window.chrome.webview.addEventListener('message', handler) + window.chrome.webview.removeEventListener('message', handler) + + + + + + + + + Posts a message that is a simple string rather than a JSON string representation of a JavaScript object. + + The web message to be posted to the top level document in this WebView. + + This behaves in exactly the same manner as , but the data property of the event arg of the window.chrome.webview message is a string with the same value as webMessageAsString. Use this instead of if you want to communicate using simple strings rather than JSON objects. + + + + + + + Runs an asynchronous DevToolsProtocol method. + + The full name of the method in the format {domain}.{method}. + A JSON formatted string containing the parameters for the corresponding method. + A JSON string that represents the method's return object. + + For more information about available methods, navigate to [DevTools Protocol Viewer](https://aka.ms/DevToolsProtocolDocs). The returned task is completed when the method asynchronously completes and will return the method's return object as a JSON string. Note even though WebView2 dispatches the CDP messages in the order called, CDP method calls may be processed out of order. If you require CDP methods to run in a particular order, you should await for the previous method call. + + + + + Navigates the WebView to the previous page in the navigation history. + + + + + Navigates the WebView to the next page in the navigation history. + + + + + Gets a DevTools Protocol event receiver that allows you to subscribe to a DevToolsProtocol event. + + The full name of the event in the format {domain}.{event}. + A Devtools Protocol event receiver. + + For more information about DevToolsProtocol events description and event args, navigate to [DevTools Protocol Viewer](https://aka.ms/DevToolsProtocolDocs). + + + + + Stops all navigations and pending resource fetches. + + + Does not stop scripts. + + + + + Adds the provided host object to script running in the WebView with the specified name. + + The name of the host object. + The host object to be added to script. + + Host objects are exposed as host object proxies via window.chrome.webview.hostObjects.{name}. Host object proxies are promises and will resolve to an object representing the host object. Only the COM visible objects/properties/methods can be accessed from script. + The app can control which part of .NET objects are exposed using . + + JavaScript code in the WebView will be able to access appObject as following and then access attributes and methods of appObject. + + Note that while simple types, IDispatch and array are supported, and IUnknown objects that also implement IDispatch are treated as IDispatch, generic IUnknown, VT_DECIMAL, or VT_RECORD variant is not supported. Remote JavaScript objects like callback functions are represented as an VT_DISPATCH VARIANT with the object implementing IDispatch. The JavaScript callback method may be invoked using DISPID_VALUE for the DISPID. Such callback method invocations will return immediately and will not wait for the JavaScript function to run and so will not provide the return value of the JavaScript function. Nested arrays are supported up to a depth of 3. Arrays of by reference types are not supported. VT_EMPTY and VT_NULL are mapped into JavaScript as null. In JavaScript null and undefined are mapped to VT_EMPTY. + + Additionally, all host objects are exposed as window.chrome.webview.hostObjects.sync.{name}. Here the host objects are exposed as synchronous host object proxies. These are not promises and calls to functions or property access synchronously block running script waiting to communicate cross process for the host code to run. Accordingly this can result in reliability issues and it is recommended that you use the promise based asynchronous window.chrome.webview.hostObjects.{name} API described above. + + Synchronous host object proxies and asynchronous host object proxies can both proxy the same host object. Remote changes made by one proxy will be reflected in any other proxy of that same host object whether the other proxies and synchronous or asynchronous. + + While JavaScript is blocked on a synchronous call to native code, that native code is unable to call back to JavaScript. Attempts to do so will fail with HRESULT_FROM_WIN32(ERROR_POSSIBLE_DEADLOCK). + + Host object proxies are JavaScript Proxy objects that intercept all property get, property set, and method invocations. Properties or methods that are a part of the Function or Object prototype are run locally. Additionally any property or method in the array chrome.webview.hostObjects.options.forceLocalProperties will also be run locally. This defaults to including optional methods that have meaning in JavaScript like toJSON and Symbol.toPrimitive. You can add more to this array as required. + + There's a method chrome.webview.hostObjects.cleanupSome that will best effort garbage collect host object proxies. + + The chrome.webview.hostObjects.options object provides the ability to change some functionality of host objects. + + + + Options property + Details + + + forceLocalProperties + + This is an array of host object property names that will be run locally, instead of being called on the native host object. This defaults to then, toJSON, Symbol.toString, and Symbol.toPrimitive. You can add other properties to specify that they should be run locally on the JavaScript host object proxy. + + + + log + + This is a callback that will be called with debug information. For example, you can set this to console.log.bind(console) to have it print debug information to the console to help when troubleshooting host object usage. By default this is null. + + + + shouldSerializeDates + + By default this is false, and JavaScript Date objects will be sent to host objects as a string using JSON.stringify. You can set this property to true to have Date objects properly serialize as a System.DateTime when sending to the .NET host object, and have System.DateTime properties and return values create a JavaScript Date object. + + + + defaultSyncProxy + + When calling a method on a synchronous proxy, the result should also be a synchronous proxy. But in some cases, the sync/async context is lost (for example, when providing to native code a reference to a function, and then calling that function in native code). In these cases, the proxy will be asynchronous, unless this property is set. + + + + forceAsyncMethodMatches + + This is an array of regular expressions. When calling a method on a synchronous proxy, the method call will be performed asynchronously if the method name matches a string or regular expression in this array. Setting this value to Async will make any method that ends with Async be an asynchronous method call. If an async method doesn't match here and isn't forced to be asynchronous, the method will be invoked synchronously, blocking execution of the calling JavaScript and then returning the resolution of the promise, rather than returning a promise. + + + + ignoreMemberNotFoundError + + By default, an exception is thrown when attempting to get the value of a proxy property that doesn't exist on the corresponding native class. Setting this property to true switches the behavior to match Chakra WinRT projection (and general JavaScript) behavior of returning undefined with no error. + + + + + Host object proxies additionally have the following methods: + + + + Method name + Details + + + applyHostFunction, getHostProperty, setHostProperty + + Perform a method invocation, property get, or property set on the host object. You can use these to explicitly force a method or property to run remotely if there is a conflicting local method or property. For instance, proxy.toString() will run the local toString method on the proxy object. But proxy.applyHostFunction('toString') runs toString on the host proxied object instead. + + + + getLocalProperty, setLocalProperty + + Perform property get, or property set locally. You can use these methods to force getting or setting a property on the host object proxy itself rather than on the host object it represents. For instance, proxy.unknownProperty will get the property named unknownProperty from the host proxied object. But proxy.getLocalProperty('unknownProperty') will get the value of the property unknownProperty on the proxy object itself. + + + + addEventListener + + This method only exists on proxies for .NET objects. Bind the JavaScript handler to the C# event, so that the JavaScript handler can be called through the C# event. For example, chrome.webview.hostObjects.sample.addEventListener('TestEvent', () => { alert('Invoked from remote');}); bind an anonymous JavaScript function to a C# event called 'TestEvent'. When calling TestEvent?.Invoke() on C# side, the JavaScript function that was just bound will be called asynchronously. It allows adding more than one handler for an event, but if the handler is already in the list of event handler, it will not be added a second time. If the host object cannot find the event with the name passed in by the addEventListener function or it is no public or its return type is not void, an exception will be thrown. If the count and type of C# event's parameters do not match the count and type of JavaScript handler, invoke addEventListener will be successful but an exception will be passed to JavaScript when invoke the event on C# side. If the host object has defined addEventListener function, use the defined function rather than the additionally addEventListener function. + + + + removeEventListener + + This method only exists on proxies for .NET objects. Removes a handler previously bound with addEventListener(). If the handler does not exist in the list of event handler, nothing will happen. If the host object cannot find the event with the name passed in by the removeEventListener function or it is no public, an exception will be thrown. If the host object has defined removeEventListener function, use the defined function rather than the additionally removeEventListener function. + + + + sync + + Asynchronous host object proxies expose a sync method which returns a promise for a synchronous host object proxy for the same host object. For example, chrome.webview.hostObjects.sample.methodCall() returns an asynchronous host object proxy. You can use the sync method to obtain a synchronous host object proxy instead: + const syncProxy = await chrome.webview.hostObjects.sample.methodCall().sync() + + + + async + + Synchronous host object proxies expose an async method which blocks and returns an asynchronous host object proxy for the same host object. For example, chrome.webview.hostObjects.sync.sample.methodCall() returns a synchronous host object proxy. Calling the async method on this blocks and then returns an asynchronous host object proxy for the same host object: const asyncProxy = chrome.webview.hostObjects.sync.sample.methodCall().async() + + + + then + + Asynchronous host object proxies have a then method. This allows them to be awaitable. then will return a promise that resolves with a representation of the host object. If the proxy represents a JavaScript literal then a copy of that is returned locally. If the proxy represents a function then a non-awaitable proxy is returned. If the proxy represents a JavaScript object with a mix of literal properties and function properties, then the a copy of the object is returned with some properties as host object proxies. + + + + + All other property and method invocations (other than the above Remote object proxy methods, forceLocalProperties list, and properties on Function and Object prototypes) are run remotely. Asynchronous host object proxies return a promise representing asynchronous completion of remotely invoking the method, or getting the property. The promise resolves after the remote operations complete and the promises resolve to the resulting value of the operation. Synchronous host object proxies work similarly but block JavaScript execution and wait for the remote operation to complete. + + Setting a property on an asynchronous host object proxy works slightly differently. The set returns immediately and the return value is the value that will be set. This is a requirement of the JavaScript Proxy object. If you need to asynchronously wait for the property set to complete, use the setHostProperty method which returns a promise as described above. Synchronous object property set property synchronously blocks until the property is set. + + Exposing host objects to script has security risk. Please follow [best practices](/microsoft-edge/webview2/concepts/security). + + + To create a [IDispatch](/windows/win32/api/oaidl/nn-oaidl-idispatch) implementing class in C# use the following attributes on each class you intend to expose. + + // Bridge and BridgeAnotherClass are C# classes that implement IDispatch and works with AddHostObjectToScript. + [ClassInterface(ClassInterfaceType.AutoDual)] + [ComVisible(true)] + public class BridgeAnotherClass + { + // Sample property. + public string Prop { get; set; } = "Example"; + } + + [ClassInterface(ClassInterfaceType.AutoDual)] + [ComVisible(true)] + public class Bridge + { + public string Func(string param) + { + return "Example: " + param; + } + + public BridgeAnotherClass AnotherObject { get; set; } = new BridgeAnotherClass(); + + // Sample indexed property. + [System.Runtime.CompilerServices.IndexerName("Items")] + public string this[int index] + { + get { return m_dictionary[index]; } + set { m_dictionary[index] = value; } + } + private Dictionary<int, string> m_dictionary = new Dictionary<int, string>(); + } + + Then add instances of those classes via : + + webView.CoreWebView2.AddHostObjectToScript("bridge", new Bridge()); + + And then in script you can call the methods, and access those properties of the objects added via . + Note that `CoreWebView2.AddHostObjectToScript` only applies to the top-level document and not to frames. To add host objects to frames use `CoreWebView2Frame.AddHostObjectToScript`. + + // Find added objects on the hostObjects property + const bridge = chrome.webview.hostObjects.bridge; + + // Call a method and pass in a parameter. + // The result is another proxy promise so you must await to get the result. + console.log(await bridge.Func("testing...")); + + // A property may be another object as long as its class also implements + // IDispatch. + // Getting a property also gets a proxy promise you must await. + const propValue = await bridge.AnotherObject.Prop; + console.log(propValue); + + // Indexed properties + let index = 123; + bridge[index] = "test"; + let result = await bridge[index]; + console.log(result); + + + + + + + Removes the host object specified by the name so that it is no longer accessible from JavaScript code in the WebView. + + The name of the host object to be removed. + + While new access attempts are denied, if the object is already obtained by JavaScript code in the WebView, the JavaScript code continues to have access to that object. Running this method for a name that is already removed or never added fails. + + + + + Opens the DevTools window for the current document in the WebView. + + + Does nothing if run when the DevTools window is already open. + + + + + Adds a URI and resource context filter for the event. + + An URI to be added to the event. + A resource context filter to be added to the event. + + A web resource request with a resource context that matches this filter's resource context and a URI that matches this filter's URI wildcard string will be raised via the event. + + The uri parameter value is a wildcard string matched against the URI of the web resource request. This is a glob style wildcard string in which a * matches zero or more characters and a ? matches exactly one character. + These wildcard characters can be escaped using a backslash just before the wildcard character in order to represent the literal * or ?. + + The matching occurs over the URI as a whole string and not limiting wildcard matches to particular parts of the URI. + The wildcard filter is compared to the URI after the URI has been normalized, any URI fragment has been removed, and non-ASCII hostnames have been converted to punycode. + + Specifying a nullptr for the uri is equivalent to an empty string which matches no URIs. + + For more information about resource context filters, navigate to . + + + + URI Filter String + Request URI + Match + Notes + + + * + https://contoso.com/a/b/c + Yes + A single * will match all URIs + + + *://contoso.com/* + https://contoso.com/a/b/c + Yes + Matches everything in contoso.com across all schemes + + + *://contoso.com/* + https://example.com/?https://contoso.com/ + Yes + But also matches a URI with just the same text anywhere in the URI + + + example + https://contoso.com/example + No + The filter does not perform partial matches + + + *example + https://contoso.com/example + Yes + The filter matches across URI parts + + + *example + https://contoso.com/path/?example + Yes + The filter matches across URI parts + + + *example + https://contoso.com/path/?query#example + No + The filter is matched against the URI with no fragment + + + *example + https://example + No + The URI is normalized before filter matching so the actual URI used for comparison is https://example.com/ + + + *example/ + https://example + Yes + Just like above, but this time the filter ends with a / just like the normalized URI + + + https://xn--qei.example/ + https://❤.example/ + Yes + Non-ASCII hostnames are normalized to punycode before wildcard comparison + + + https://❤.example/ + https://xn--qei.example/ + No + Non-ASCII hostnames are normalized to punycode before wildcard comparison + + + + + + + + + + Removes a matching WebResource filter that was previously added for the event. + + An URI to at which a web resource filter was added. + A previously added resource context filter to be removed. + A filter that was never added. + + If the same filter was added multiple times, then it must need to be removed as many times as it was added for the removal to be effective. + + + + + + Gets the object associated with this . + + + + + + Exposes the used to create this . + + + + + WebResourceResponseReceived is raised when the WebView receives the response for a request for a web resource (any URI resolution performed by the WebView; such as HTTP/HTTPS, file and data requests from redirects, navigations, declarations in HTML, implicit Favicon lookups, and fetch API usage in the document). + + + The host app can use this event to view the actual request and response for a web resource. There is no guarantee about the order in which the WebView processes the response and the host app's handler runs. The app's handler will not block the WebView from processing the response. + The event args include the as sent by the wire and received, including any additional headers added by the network stack that were not be included as part of the associated event, such as Authentication headers. + + + :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="WebResourceResponseReceived"::: + + + + + DOMContentLoaded is raised when the initial HTML document has been parsed. + + + This aligns with the the document's DOMContentLoaded event in HTML. + + + :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="DOMContentLoaded"::: + + + + + Navigates using a constructed object. + + The constructed web resource object to provide post data or additional request headers during navigation. + + The headers in the override headers added by WebView2 runtime except for Cookie headers. Method can only be either GET or POST. Provided post data will only be sent only if the method is POST and the uri scheme is HTTP(S). + + + :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="NavigateWithWebResourceRequest"::: + + + + + Whether WebView is suspended. + + + True when WebView is suspended, from the time when has completed successfully until WebView is resumed. + + + + + An app may call this API to have the WebView2 consume less memory. + + + This is useful when a Win32 app becomes invisible, or when a Universal Windows Platform app is being suspended, during the suspended event handler before completing the suspended event. + + The property must be false when the API is called. Otherwise, the API throws COMException with error code of HRESULT_FROM_WIN32(ERROR_INVALID_STATE). + + Suspending is similar to putting a tab to sleep in the Edge browser. Suspending pauses WebView script timers and animations, minimizes CPU usage for the associated browser renderer process and allows the operating system to reuse the memory that was used by the renderer process for other processes. + + Note that Suspend is best effort and considered completed successfully once the request is sent to browser renderer process. If there is a running script, the script will continue to run and the renderer process will be suspended after that script is done. + + See [Sleeping Tabs FAQ](https://techcommunity.microsoft.com/t5/articles/sleeping-tabs-faq/m-p/1705434) for conditions that might prevent WebView from being suspended. In those situations, the result of the async task is false. + + The WebView will be automatically resumed when it becomes visible. Therefore, the app normally does not have to call explicitly. + + The app can call and then periodically for an invisible WebView so that the invisible WebView can sync up with latest data and the page ready to show fresh content when it becomes visible. + + All WebView APIs can still be accessed when a WebView is suspended. Some APIs like Navigate will auto resume the WebView. To avoid unexpected auto resume, check property before calling APIs that might change WebView state. + + + :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="TrySuspend"::: + + + + + Resumes the WebView so that it resumes activities on the web page. + + + This API can be called while the WebView2 controller is invisible. + + The app can interact with the WebView immediately after . + + WebView will be automatically resumed when it becomes visible. + + + :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="Resume"::: + + + + + Sets a mapping between a virtual host name and a folder path to make available to web sites via that host name. + + A virtual host name. + A folder path name to be mapped to the virtual host name. The length must not exceed the Windows MAX_PATH limit. + The level of access to resources under the virtual host from other sites. + + + After setting the mapping, documents loaded in the WebView can use HTTP or HTTPS URLs at the specified host name specified by hostName to access files in the local folder specified by folderPath. + This mapping applies to both top-level document and iframe navigations as well as subresource references from a document. This also applies to dedicated and shared worker scripts but does not apply to service worker scripts. + + Due to a current implementation limitation, media files accessed using virtual host name can be very slow to load. + + As the resource loaders for the current page might have already been created and running, changes to the mapping might not be applied to the current page and a reload of the page is needed to apply the new mapping. + + Both absolute and relative paths are supported for folderPath. Relative paths are interpreted as relative to the folder where the exe of the app is in. + + + For example, after calling SetVirtualHostNameToFolderMapping("appassets.example", "assets", CoreWebView2HostResourceAccessKind.Deny);, navigating to https://appassets.example/my-local-file.html will show content from my-local-file.html in the assets subfolder located on disk under the same path as the app's executable file. + + DOM elements that want to reference local files will have their host reference virtual host in the source. If there are multiple folders being used, define one unique virtual host per folder. + + + You should typically choose virtual host names that are never used by real sites. + If you own a domain such as example.com, another option is to use a subdomain reserved for the app (like my-app.example.com). + + + [RFC 6761](https://tools.ietf.org/html/rfc6761) has reserved several special-use domain names that are guaranteed to not be used by real sites (for example, .example, .test, and .invalid). + + + Note that using .local as the top-level domain name will work but can cause a delay during navigations. You should avoid using .local if you can. + + + Apps should use distinct domain names when mapping folder from different sources that should be isolated from each other. For instance, the app might use app-file.example for files that ship as part of the app, and book1.example might be used for files containing books from a less trusted source that were previously downloaded and saved to the disk by the app. + + + The host name used in the APIs is canonicalized using Chromium's host name parsing logic before being used internally. + For more information see [HTML5 2.6 URLs](https://dev.w3.org/html5/spec-LC/urls.html). + + + All host names that are canonicalized to the same string are considered identical. + For example, EXAMPLE.COM and example.com are treated as the same host name. + An international host name and its Punycode-encoded host name are considered the same host name. There is no DNS resolution for host name and the trailing '.' is not normalized as part of canonicalization. + + + Therefore example.com and example.com. are treated as different host names. Similarly, virtual-host-name and virtual-host-name.example.com are treated as different host names even if the machine has a DNS suffix of example.com. + + + Specify the minimal cross-origin access necessary to run the app. If there is not a need to access local resources from other origins, use . + + + + + webView.CoreWebView2.SetVirtualHostNameToFolderMapping( + "appassets.example", "assets", CoreWebView2HostResourceAccessKind.DenyCors); + webView.Source = new Uri("https://appassets.example/index.html"); + + + This in an example on how to embed a local image. For more information see . + + webView.CoreWebView2.SetVirtualHostNameToFolderMapping( + "appassets.example", "assets", CoreWebView2HostResourceAccessKind.DenyCors); + string c_navString = ""; + webview.NavigateToString(c_navString); + + + + + + + Clears a host name mapping for local folder that was added by . + + The host name to be removed from the mapping. + + + + + FrameCreated is raised when a new iframe is created. Handle this event to get access to objects. + + + + Use the to listen for when this iframe goes away. + + + + + DownloadStarting is raised when a download has begun, blocking the default download dialog, but not blocking the progress of the download. + + + The host can choose to cancel a download, change the result file path, and hide the default download dialog. If download is not handled or canceled, the download is saved to the default path after the event completes with default download dialog shown. + + + :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="DownloadStarting"::: + + + + + ClientCertificateRequested is raised when WebView2 is making a request to an HTTP server that needs a client certificate for HTTP authentication. Read more about HTTP client certificates at [RFC 8446 The Transport Layer Security (TLS) Protocol Version 1.3](https://tools.ietf.org/html/rfc8446). + + + The host have several options for responding to client certificate requests: + + + + Scenario + Handled + Cancel + SelectedCertificate + + + Respond to server with a certificate + True + False + MutuallyTrustedCertificate value + + + Respond to server without certificate + True + False + null + + + Display default client certificate selection dialog prompt + False + False + n/a + + + Cancel the request + n/a + True + n/a + + + + If the host don't handle the event, WebView2 will show the default client certificate selection dialog prompt to the user. + + + :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="ClientCertificateRequested1"::: + :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="ClientCertificateRequested2"::: + + + + + Opens the Browser Task Manager view as a new window in the foreground. + + + If the Browser Task Manager is already open, this will bring it into the foreground. WebView2 currently blocks the Shift+Esc shortcut for opening the task manager. An end user can open the browser task manager manually via the Browser task manager entry of the DevTools window's title bar's context menu. + + + + + Indicates whether all audio output from this CoreWebView2 is muted or not. Set to true will mute this CoreWebView2, and set to false will unmute this CoreWebView2. true if audio is muted. + + + :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="ToggleIsMuted"::: + :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="UpdateTitleWithMuteState"::: + + + + + Indicates whether any audio output from this CoreWebView2 is playing. true if audio is playing even if is true. + + + :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="UpdateTitleWithMuteState"::: + + + + + IsMutedChanged is raised when the mute state changes. + + + :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="IsMutedChanged"::: + + + + + IsDocumentPlayingAudioChanged is raised when document starts or stops playing audio. + + + :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="IsDocumentPlayingAudioChanged"::: + + + + + True if the default download dialog is currently open. + + + The value of this property changes only when the default download dialog is explicitly opened or closed. Hiding the WebView implicitly hides the dialog, but does not change the value of this property. + + + :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="ToggleDefaultDownloadDialog"::: + + + + + The default download dialog corner alignment. + + + The dialog can be aligned to any of the WebView corners (see ). When the WebView or dialog changes size, the dialog keeps it position relative to the corner. The dialog may become partially or completely outside of the WebView bounds if the WebView is small enough. Set the margin from the corner with the property. The corner alignment and margin should be set during initialization to ensure that they are correctly applied when the layout is first computed, otherwise they will not take effect until the next time the WebView position or size is updated. + + + :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="SetDefaultDownloadDialogPosition"::: + + + + + The default download dialog margin relative to the WebView corner specified by . + + + The margin is a point that describes the vertical and horizontal distances between the chosen WebView corner and the default download dialog corner nearest to it. Positive values move the dialog towards the center of the WebView from the chosen WebView corner, and negative values move the dialog away from it. Use (0, 0) to align the dialog to the WebView corner with no margin. The corner alignment and margin should be set during initialization to ensure that they are correctly applied when the layout is first computed, otherwise they will not take effect until the next time the WebView position or size is updated. + + + + + Raised when the property changes. + + + This event comes after the event. Setting the property disables the default download dialog and ensures that this event is never raised. + + + + + Open the default download dialog. + + + If the dialog is opened before there are recent downloads, the dialog shows all past downloads for the current profile. Otherwise, the dialog shows only the recent downloads with a "See more" button for past downloads. Calling this method raises the event if the dialog was closed. No effect if the dialog is already open. + + + + + Close the default download dialog. + + + Calling this method raises the event if the dialog was open. No effect if the dialog is already closed. + + + + + BasicAuthenticationRequested event is raised when WebView encounters a Basic HTTP Authentication request as described in https://developer.mozilla.org/docs/Web/HTTP/Authentication, a Digest HTTP Authentication request as described in https://developer.mozilla.org/docs/Web/HTTP/Headers/Authorization#digest, an NTLM authentication or a Proxy Authentication request. + + + The host can provide a response with credentials for the authentication or cancel the request. If the host sets the Cancel property to false but does not provide either UserName or Password properties on the Response property, then WebView2 will show the default authentication challenge dialog prompt to the user. + + + :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="BasicAuthenticationRequested"::: + + + + + ContextMenuRequested is raised when a context menu is requested by the user and the content inside WebView hasn't disabled context menus. + + + The host has the option to create their own context menu with the information provided in the event or can add items to or remove items from WebView context menu. If the host doesn't handle the event, WebView will display the default context menu. + + + :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="CustomContextMenu"::: + + + + + Runs an asynchronous DevToolsProtocol method for a specific session of an attached target. + + The sessionId for an attached target. null or empty string is treated as the session for the default target for the top page. + The full name of the method in the format {domain}.{method}. + A JSON formatted string containing the parameters for the corresponding method. + A JSON string that represents the method's return object. + + There could be multiple DevToolsProtocol targets in a WebView. + Besides the top level page, iframes from different origin and web workers are also separate targets. + Attaching to these targets allows interaction with them. + When the DevToolsProtocol is attached to a target, the connection is identified by a sessionId. + + To use this API, you must set the flatten parameter to true when calling Target.attachToTarget or Target.setAutoAttach DevToolsProtocol method. + Using Target.setAutoAttach is recommended as that would allow you to attach to dedicated worker targets, which are not discoverable via other APIs like Target.getTargets. + For more information about targets and sessions, navigate to [Chrome DevTools Protocol - Target domain]( https://chromedevtools.github.io/devtools-protocol/tot/Target). + + For more information about available methods, navigate to [DevTools Protocol Viewer](https://aka.ms/DevToolsProtocolDocs). The handler's Invoke method will be called when the method asynchronously completes. Invoke will be called with the method's return object as a JSON string. + + + + + The current text of the statusbar as defined by [Window.statusbar](https://developer.mozilla.org/docs/Web/API/Window/statusbar). + + + + + StatusBarTextChanged event is raised when the text in the [Window.statusbar](https://developer.mozilla.org/docs/Web/API/Window/statusbar) changes. When the event is fired use the property to get the current statusbar text. + + + Events which cause causes can be anything from hover, url events, and others. There is not a finite list on how to cause the statusbar to change. + The developer must create the status bar and set the text. + + + + + The associated object of . + + + :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="Profile"::: + + + + + The ServerCertificateErrorDetected event is raised when the WebView2 cannot verify server's digital certificate while loading a web page. + + + This event will raise for all web resources and follows the event. + + If you don't handle the event, WebView2 will show the default TLS interstitial error page to the user for navigations, and for non-navigations the web request is cancelled. + + Note that WebView2 before raising `ServerCertificateErrorDetected` raises a event with as FALSE and any of the below WebErrorStatuses that indicate a certificate failure. + + + + + + + + + + + + + + + + + + + + For more details see and handle ServerCertificateErrorDetected event or show the default TLS interstitial error page to the user according to the app needs. + + WebView2 caches the response when action is for the RequestUri's host and the server certificate in the session and the event won't be raised again. + + To raise the event again you must clear the cache using . + + + :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="ServerCertificateErrorDetected"::: + + + + + Clears all cached decisions to proceed with TLS certificate errors from the event for all WebView2's sharing the same session. + + + + + Get the Uri as a string of the current Favicon. This will be an empty string if the page does not have a Favicon. + + + + + Raised when the Favicon has changed. This can include when a new page is loaded and thus by default no icon is set or the icon is set for the page by DOM or JavaScript. + + + The first argument is the Webview2 which saw the changed Favicon and the second is null. + + + + + Get the downloaded Favicon image for the current page and copy it to the image stream. + + The format to retrieve the Favicon in. + + An IStream populated with the downloaded Favicon. + + + + + Print the current web page asynchronously to the specified printer with the provided settings. + + + See for description of settings. Passing null for printSettings results in default print settings used. + + The method will return as if printerName doesn't match with the name of any installed printers on the user OS. + The method will throw ArgumentException if the caller provides invalid settings for a given printer. + + The async Print operation completes when it finishes printing to the printer. Only one Printing operation can be in progress at a time. If Print is called while a or or job is in progress, throws exception. This is only for printing operation on one webview. + + + + Error + PrintStatus + Notes + + + No + + Print operation succeeded. + + + No + + If specified printer is not found or printer status is not available, offline or error state. + + + No + + Print operation is failed. + + + ArgumentException + + If the caller provides invalid settings for the specified printer. + + + Exception + + Print operation is failed as printing job already in progress. + + + + + :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="PrintToPrinter"::: + + + + + Opens the print dialog to print the current web page. + + + See for descriptions of print dialog kinds. + + Invoking browser or system print dialog doesn't open new print dialog if it is already open. + + + :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="ShowPrintUI"::: + + + + + Provides the Pdf data of current web page asynchronously for the provided settings. + + + Stream will be rewound to the start of the pdf data. + + See for description of settings. Passing null for printSettings results in default print settings used. + + The async PrintToPdfStream operation completes when it finishes writing to the stream. Only one Printing operation can be in progress at a time. If is called while a or or job is in progress, the throws an exception. This is only for printing operation on one webview. + + + :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="PrintToPdfStream"::: + + + + + Share a shared buffer object with script of the main frame in the WebView. + + The object to be shared with script. + The desired given to script. + Additional data to be send to script. If it is not null or empty string, and it is not a valid JSON string, will be thrown. + + The script will receive a sharedbufferreceived event from chrome.webview. + The event arg for that event will have the following methods and properties. + + + + Property + Description + + + getBuffer() + A method that returns an ArrayBuffer object with the backing content from the shared buffer. + + + additionalData + An object as the result of parsing additionalDataAsJson as JSON string. This property will be undefined if additionalDataAsJson is nullptr or empty string. + + + source + With a value set as chrome.webview object. + + + + If access is , the script will only have read access to the buffer. + If the script tries to modify the content in a read only buffer, it will cause an access violation in WebView renderer process and crash the renderer process. + + If the shared buffer is already closed, the API throws with error code of RO_E_CLOSED. + The script code should call chrome.webview.releaseBuffer with the shared buffer as the parameter to release underlying resources as soon as it does not need access to the shared buffer any more. + + The application can post the same shared buffer object to multiple web pages or iframes, or post to the same web page or iframe multiple times. + Each PostSharedBufferToScript will create a separate ArrayBuffer object with its own view of the memory and is separately released. + The underlying shared memory will be released when all the views are released. + + Sharing a buffer to script has security risk. You should only share buffer with trusted site. + If a buffer is shared to a untrusted site, possible sensitive information could be leaked. + If a buffer is shared as modifiable by the script and the script modifies it in an unexpected way, it could result in corrupted data that might even crash the application. + + The example code shows how to send data to script for one time read only consumption. + + + :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="OneTimeShareBuffer"::: + :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/assets/sharedBuffer.html" id="ShareBufferScriptCode_1"::: + :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/assets/sharedBuffer.html" id="ShareBufferScriptCode_2"::: + + + + + LaunchingExternalUriScheme is raised when a navigation request is made to a URI scheme that is registered with the OS. + + + The event handler may suppress the default dialog or replace the default dialog with a custom dialog. + If a is not taken on the event args, the external URI scheme launch is blocked until the event handler returns. + If a deferral is taken, the external URI scheme launch is blocked until the is completed. + The host also has the option to cancel the URI scheme launch. + + The and events will be raised, regardless of whether the property is set to true or false. + The event will be raised with the property set to false and the property set to regardless of whether the host sets the property. + The , and events will not be raised for this navigation to the external URI scheme regardless of the property. + The event will be raised after the event and before the event. + + The default will also be updated upon navigation to an external URI scheme. + If a setting on the interface has been changed, navigating to an external URI scheme will trigger the to update. + + The WebView2 may not display the default dialog based on user settings, browser settings, and whether the origin is determined as a [trustworthy origin](https://w3c.github.io/webappsec-secure-contexts#potentially-trustworthy-origin); however, the event will still be raised. + If the request is initiated by a cross-origin frame without a user gesture, the request will be blocked and the `LaunchingExternalUriScheme` event will not be raised. + + + :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="LaunchingExternalUriScheme"::: + + + + + Desired of a WebView. + + + An app may set to indicate desired memory consumption level of WebView. + Scripts will not be impacted and continue to run. + This is useful for inactive apps that still want to run scripts and/or keep network connections alive and therefore could not call and to reduce memory consumption. + These apps can set memory usage target level to when the app becomes inactive, and set back to when the app becomes active. + + It is not necessary to set CoreWebView2Controller's IsVisible property to false when setting the property. + + It is a best effort operation to change memory usage level, and the API will return before the operation completes. + + Setting the level to could potentially cause memory for some WebView browser processes to be swapped out to disk in some circumstances. It is a best effort to reduce memory usage as much as possible. + If a script runs after its related memory has been swapped out, the memory will be swapped back in to ensure the script can still run, but performance might be impacted. + Therefore, the app should set the level back to when the app becomes active again. Setting memory usage target level back to normal will not happen automatically. + + An app should choose to use either the combination of and or the combination of setting MemoryUsageTargetLevel to and . It is not advisable to mix them. + Trying to set while suspended will be ignored. + The and methods will change the . + will automatically set to while on suspended WebView will automatically set to . + Calling when the WebView is not suspended would not change . + + + + + Represents a certificate. Gives access to a certificate's metadata. + + + + + Converts this to a X509Certificate2. + + + An object created using PEM encoded data from + this object. + + + + + + The valid date and time for the certificate since the UNIX epoc. + + + + + The valid date and time for the certificate since the UNIX epoc. + + + + + Subject of the certificate. + + + + + Name of the certificate authority that issued the certificate. + + + + + Base64 encoding of DER encoded serial number of the certificate. Read more about DER at [RFC 7468 DER](https://tools.ietf.org/html/rfc7468#appendix-B). + + + + + Display name for a certificate. + + + + + Returns list of PEM encoded certificate issuer chain. In this list first element is the current certificate followed by intermediate1, intermediate2...intermediateN-1. Root certificate is the last element in the list. + + + + + PEM encoded data for the certificate. Returns Base64 encoding of DER encoded certificate. Read more about PEM at [RFC 1421 Privacy Enhanced Mail](https://tools.ietf.org/html/rfc1421). + + + + + Represents a client certificate. Gives access to a certificate's metadata. + + + + + Converts this to a X509Certificate2. + + + An object created using PEM encoded data from + this object. + + + + + + The valid date and time for the certificate since the UNIX epoc. + + + + + The valid date and time for the certificate since the UNIX epoc. + + + + + Subject of the certificate. + + + + + Name of the certificate authority that issued the certificate. + + + + + Base64 encoding of DER encoded serial number of the certificate. Read more about DER at [RFC 7468 DER](https://tools.ietf.org/html/rfc7468#appendix-B). + + + + + Display name for a certificate. + + + + + Returns list of PEM encoded client certificate issuer chain. In this list first element is the current certificate followed by intermediate1, intermediate2...intermediateN-1. Root certificate is the last element in the list. + + + + + Kind of a certificate. See for descriptions. + + + + + PEM encoded data for the certificate. Returns Base64 encoding of DER encoded certificate. Read more about PEM at [RFC 1421 Privacy Enhanced Mail](https://tools.ietf.org/html/rfc1421). + + + + + This class is the owner of the object, and + provides support for resizing, showing and hiding, focusing, and other + functionality related to windowing and composition. + + + The owns the , and if all references to the go away, the WebView will be closed. + + + The owner of the object that provides support for resizing, showing and hiding, focusing, and other functionality related to windowing and composition. + + + The CoreWebView2Controller owns the , and if all references to the go away, the WebView is closed. + + + The owner of the object that provides support for resizing, showing and hiding, focusing, and other functionality related to windowing and composition. + + + The CoreWebView2Controller owns the , and if all references to the go away, the WebView is closed. + + + The owner of the object that provides support for resizing, showing and hiding, focusing, and other functionality related to windowing and composition. + + + The CoreWebView2Controller owns the , and if all references to the go away, the WebView is closed. + + + The owner of the object that provides support for resizing, showing and hiding, focusing, and other functionality related to windowing and composition. + + + The CoreWebView2Controller owns the , and if all references to the go away, the WebView is closed. + + + The owner of the object that provides support for resizing, showing and hiding, focusing, and other functionality related to windowing and composition. + + + The CoreWebView2Controller owns the , and if all references to the go away, the WebView is closed. + + + + + Gets the associated with this . + + + + + + Moves focus into WebView. + + The reason for moving focus. + + WebView will get focus and focus will be set to correspondent element in the page hosted in the WebView. For reason, focus is set to previously focused element or the default element if no previously focused element exists. For reason, focus is set to the first element. For reason, focus is set to the last element. WebView changes focus through user interaction including selecting into a WebView or Tab into it. For tabbing, the app runs MoveFocus with or to align with Tab and Shift+Tab respectively when it decides the WebView is the next tabbable element. + + + + + Determines whether to show or hide the WebView. + + + If IsVisible is set to false, the WebView is transparent and is not rendered. However, this does not affect the window containing the WebView (the ParentWindow parameter that was passed to or ). + If you want that window to disappear too, run the corresponding Hide method from the UI framework on it directly in addition to modifying this. + WebView as a child window does not get window messages when the top window is minimized or restored. For performance reasons, developers should set the IsVisible property of the WebView to false when the app window is minimized and back to true when the app window is restored. The app window does this by handling SIZE_MINIMIZED and SIZE_RESTORED command upon receiving WM_SIZE message. There are CPU and memory benefits when the page is hidden. For instance Chromium has code that throttles activities on the page like animations and some tasks are run less frequently. Similarly, WebView2 will purge some caches to reduce memory usage. + + + + + + Gets or sets the WebView bounds. + + + Bounds are relative to the . The app has two ways to position a WebView: + + + Create a child HWND that is the WebView parent HWND. Position the window where the WebView should be. Use (0, 0) for the top-left corner (the offset) of the Bounds of the WebView. + + + Use the top-most window of the app as the WebView parent HWND. For example, to position ebView correctly in the app, set the top-left corner of the Bounds of the WebView. + + + + The values of Bounds are limited by the coordinate space of the host. + + + + + Gets or sets the zoom factor for the WebView. + + + Note that changing zoom factor may cause window.innerWidth or window.innerHeight and page layout to change. A zoom factor that is applied by the host by setting this ZoomFactor property becomes the new default zoom for the WebView. This zoom factor applies across navigations and is the zoom factor WebView is returned to when the user presses Ctrl+0. When the zoom factor is changed by the user (resulting in the app receiving ), that zoom applies only for the current page. Any user applied zoom is only for the current page and is reset on a navigation. Specifying a ZoomFactor less than or equal to 0 is not allowed. WebView also has an internal supported zoom factor range. When a specified zoom factor is out of that range, it is normalized to be within the range, and a event is raised for the real applied zoom factor. When this range normalization happens, this reports the zoom factor specified during the previous modification of the ZoomFactor property until the event is received after WebView applies the normalized zoom factor. + + + + + Gets the parent window provided by the app or sets the parent window that this WebView is using to render content. + + + It initially returns the ParentWindow passed into or . Setting the property causes the WebView to re-parent the main WebView window to the newly provided window. + + + + + ZoomFactorChanged is raised when the property changes. + + + The event may be raised because the property was modified, or due to the user manually modifying the zoom. When it is modified using the property, the internal zoom factor is updated immediately and no ZoomFactorChanged event is raised. WebView associates the last used zoom factor for each site. It is possible for the zoom factor to change when navigating to a different page. When the zoom factor changes due to a navigation change, the ZoomFactorChanged event is raised right after the event. + + + + + + MoveFocusRequested is raised when user tries to tab out of the WebView. + + + The focus of the WebView has not changed when this event is raised. + + + + + GotFocus is raised when WebView gets focus. + + + + + LostFocus is raised when WebView loses focus. + + + In the case where event is raised, the focus is still on WebView when event is raised. LostFocus is only raised afterwards when code of the app or default action of event sets focus away from WebView. + + + + + AcceleratorKeyPressed is raised when an accelerator key or key combo is pressed or released while the WebView is focused. + + + A key is considered an accelerator if either of the following conditions are true: + + + + Ctrl or Alt is currently being held. + + + The pressed key does not map to a character. + + + + A few specific keys are never considered accelerators, such as Shift. The Escape key is always considered an accelerator. + + Autorepeated key events caused by holding the key down will also raise this event. Filter out the auto-repeated key events by verifying or . + + In windowed mode, this event is synchronous. Until you set to true or the event handler returns, the browser process is blocked and outgoing cross-process COM calls will fail with RPC_E_CANTCALLOUT_ININPUTSYNCCALL. All methods work, however. + + In windowless mode, the event is asynchronous. Further input do not reach the browser until the event handler returns or is set to true, but the browser process is not blocked, and outgoing COM calls work normally. + + It is recommended to set to true as early as you are able to know that you want to handle the accelerator key. + + + + + Updates and properties at the same time. + + The bounds to be updated. + The zoom factor to be updated. + + This operation is atomic from the perspective of the host. After returning from this function, the and properties are both updated if the function is successful, or neither is updated if the function fails. If and are both updated by the same scale (for example, and are both doubled), then the page does not display a change in window.innerWidth or window.innerHeight and the WebView renders the content at the new size and zoom without intermediate renderings. This function also updates just one of or by passing in the new value for one and the current value for the other. + + + + + Tells WebView that the main WebView parent (or any ancestor) HWND moved. + + + This is a notification separate from . This is needed for accessibility and certain dialogs in WebView to work correctly. + + + + + Closes the WebView and cleans up the underlying browser instance. + + + Cleaning up the browser instance releases the resources powering the WebView. The browser instance is shut down if no other WebViews are using it. + + After running Close, all methods fail and event handlers stop running. Specifically, the WebView releases the associated references to any associated event handlers when Close is run. + + Close is implicitly run when the loses the final reference and is destructed. But it is best practice to explicitly run Close to avoid any accidental cycle of references between the WebView and the app code. Specifically, if you capture a reference to the WebView in an event handler you create a reference cycle between the WebView and the event handler. Run Close to break the cycle by releasing all event handlers. But to avoid the situation, it is best to both explicitly run Close on the WebView and to not capture a reference to the WebView to ensure the WebView is cleaned up correctly. Close is synchronous and won't trigger the beforeunload event. + + + + + Gets or sets the WebView default background color. + + + The `DefaultBackgroundColor` is the color that renders underneath all web content. This means WebView renders this color when there is no web content loaded such as before the initial navigation or between navigations. This also means web pages with undefined css background properties or background properties containing transparent pixels will render their contents over this color. Web pages with defined and opaque background properties that span the page will obscure the `DefaultBackgroundColor` and display normally. The default value for this property is white to resemble the native browser experience. Currently this API only supports opaque colors and transparency. It will fail for colors with alpha values that don't equal 0 or 255 ie. translucent colors are not supported. It also does not support transparency on Windows 7. On Windows 7, setting DefaultBackgroundColor to a Color with an Alpha value other than 255 will result in failure. On any OS above Win7, choosing a transparent color will result in showing hosting app content. This means webpages without explicit background properties defined will render web content over hosting app content. + This property may also be set via the `WEBVIEW2_DEFAULT_BACKGROUND_COLOR` environment variable. There is a known issue with background color where just setting the color by property can still leave the app with a white flicker before the `DefaultBackgroundColor` property takes effect. Setting the color via environment variable solves this issue. The value must be a hex value that can optionally prepend a 0x. The value must account for the alpha value which is represented by the first 2 digits. So any hex value fewer than 8 digits will assume a prepended 00 to the hex value and result in a transparent color. `DefaultBackgroundColor` will return the result of this environment variable even if it has not been set directly. This environment variable can only set the `DefaultBackgroundColor` once. Subsequent updates to background color must be done by setting the property. + + + :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="DefaultBackgroundColor"::: + + + + + Gets or sets the WebView rasterization scale. + + + The rasterization scale is the combination of the monitor DPI scale and text scaling set by the user. This value should be updated when the DPI scale of the app's top level window changes (i.e. monitor DPI scale changes or the window changes monitor) or when the text scale factor of the system changes. + Rasterization scale applies to the WebView content, as well as popups, context menus, scroll bars, and so on. Normal app scaling scenarios should use the property or method. + + + + + Determines whether the WebView will detect monitor scale changes. + + + ShouldDetectMonitorScaleChanges property determines whether the WebView attempts to track monitor DPI scale changes. When true, the WebView will track monitor DPI scale changes, update the property, and fire event. When false, the WebView will not track monitor DPI scale changes, and the app must update the property itself. event will never raise when ShouldDetectMonitorScaleChanges is false. Apps that want to set their own rasterization scale should set this property to false to avoid the WebView2 updating the property to match the monitor DPI scale. + + + + + Gets or sets the WebView bounds mode. + + + BoundsMode affects how setting the and properties work. Bounds mode can either be in mode or mode. + + + + + RasterizationScaleChanged is raised when the property changes. + + + The event is raised when the Webview detects that the monitor DPI scale has changed, is true, and the Webview has changed the property. + + + + + + Gets or sets the WebView allow external drop property. + + + The AllowExternalDrop is to configure the capability that dropping files into webview2 is allowed or permitted. The default value is true. + + + :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="ToggleAllowExternalDrop"::: + + + + + Used to manage profile options that created by . + + + Used to manage profile options that created by . + + + + + Manages the value of the controller's script locale. + + + The ScriptLocale property is to specify the default script + locale. It sets the default locale for all Intl JavaScript APIs and + other JavaScript APIs that depend on it, namely + Intl.DateTimeFormat() which affects string formatting like in + the time/date formats.The intended locale value is in the format of + BCP 47 Language Tags. More information can be found from [IETF + BCP47](https://www.ietf.org/rfc/bcp/bcp47.html ). The default value + for ScriptLocale will be depend on the WebView2 language and OS + region. If the language portions of the WebView2 language and OS + region match, then it will use the OS region. Otherwise, it will use + the WebView2 language. + + + OS Region + WebView2 Language + Default WebView2 ScriptLocale + + + en-GB + en-US + en-GB + + + es-MX + en-US + en-US + + + en-US + en-GB + en-US + + + You can set the ScriptLocale to the empty string to get the default ScriptLocale value. + Use OS specific APIs to determine the OS region to use with this property if you always want to match with the OS + region. For example: + + CultureInfo cultureInfo = Thread.CurrentThread.CurrentCulture; + return cultureInfo.Name + + + + + + Manage the name of the controller's profile. + + + The ProfileName property is to specify a profile name, which is only allowed to contain the following ASCII characters. It has a maximum length of 64 characters excluding the null-terminator. It is ASCII case insensitive. + + * alphabet characters: a-z and A-Z + * digit characters: 0-9 + * and '#', '@', '$', '(', ')', '+', '-', '_', '~', '.', ' ' (space). + + Note: the text must not end with a period '.' or ' ' (space). And, although upper-case letters are allowed, they're treated just as lower-case counterparts because the profile name will be mapped to the real profile directory path on disk and Windows file system handles path names in a case-insensitive way. + + + + + Manage the controller's InPrivate mode. + + + + + Provides a set of properties that are used to manage a . + + + + + Converts this to a System.Net.Cookie. + + + An object whose , , , , , , and , matches + those , , , + , , , and of this object. + + + The values of the properties other than those + specified above remain their default values. + + + + + + The expiration date and time for the cookie since the UNIX epoch. + + + Setting the Expires property to + makes this a session cookie, which is its default value. + + + + + Get or sets the cookie name. + + + + + Gets or sets the cookie value. + + + + + Gets the domain for which the cookie is valid. + + + The default value is the host that this cookie has been received from. Note that, for instance, .bing.com, bing.com, and www.bing.com are considered different domains. + + + + + Gets the path for which the cookie is valid. + + + The default value is "/", which means this cookie will be sent to all pages on the . + + + + + Determines whether this cookie is http-only. + + + + + Determines the SameSite status of the cookie which represents the enforcement mode of the cookie. + + + The default value is . + + + + + Gets or sets the security level of this cookie. + + + + + Determines whether this is a session cookie. The default value is false. + + + + + Creates, adds or updates, gets, or or view the cookies. + + + The changes would apply to the context of the user profile. That is, other WebViews under the same user profile could be affected. + + + + + Creates a CoreWebView2Cookie object whose params matches those of the given System.Net.Cookie. + + + A System.Net.Cookie whose params to be used to create a CoreWebView2Cookie. + + + An object whose , , , , , , and , matches those , , , , , , and of the given object. + + + The default value for the + property of the returned object is + . + + + + + + Creates a cookie object with a specified name, value, domain, and path. + + + One can set other optional properties after cookie creation. This only creates a cookie object and it is not added to the cookie manager until you call . name that starts with whitespace(s) is not allowed. + + The name for the to be created. It cannot start with whitespace(s). + + + + + + + Creates a cookie whose params matches those of the specified cookie. + + + + + Gets a list of cookies matching the specific URI. + + + You can modify the cookie objects by calling , and the changes will be applied to the webview. + + If uri is empty string or null, all cookies under the same profile are returned. + + :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="GetCookies"::: + + + + + Adds or updates a cookie with the given cookie data; may overwrite cookies with matching name, domain, and path if they exist. + + The to be added or updated. + + This method will fail if the domain of the given cookie is not specified. + + + :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="AddOrUpdateCookie"::: + + + + + Deletes a cookie whose name and domain/path pair match those of the specified cookie. + + + + + Deletes cookies with matching name and uri. + + The name for the cookies to be deleted is required. + If uri is specified, deletes all cookies with the given name where domain and path match provided URI. + + + + Deletes cookies with matching name and domain/path pair. + + The name for the cookies to be deleted is required. + If domain is specified, deletes only cookies with the exact domain. + If path is specified, deletes only cookies with the exact path. + + + + Deletes all cookies under the same profile. + + + This could affect other WebViews under the same user profile. + + + + + Represents the registration of a custom scheme with the . + + + This allows the WebView2 app to be able to handle event for requests with the + specified scheme and be able to navigate the WebView2 to the custom + scheme. Once the environment is created, the registrations are valid and + immutable throughout the lifetime of the associated WebView2s' browser + process and any WebView2 environments sharing the browser process must be + created with identical custom scheme registrations, otherwise the + environment creation will fail. Any further attempts to register the same + scheme will fail during environment creation. The URIs of registered + custom schemes will be treated similar to http URIs for their origins. + They will have tuple origins for URIs with host and opaque origins for + URIs without host as specified in [7.5 Origin - HTML Living Standard](https://html.spec.whatwg.org/multipage/origin.html) For event, the cases of request + URIs and filter URIs with custom schemes will be normalized according to + generic URI syntax rules. Any non-ASCII characters will be preserved. The + registered custom schemes also participate in [CORS](https://developer.mozilla.org/docs/Web/HTTP/CORS) and adheres to + [CSP](https://developer.mozilla.org/docs/Web/HTTP/CSP). The app needs to + set the appropriate access headers in its event handler to allow CORS + requests. + + + custom-scheme-with-host://hostname/path/to/resource has origin of + custom-scheme-with-host://hostname. + custom-scheme-without-host:path/to/resource has origin of + custom-scheme-without-host:path/to/resource. + + + + + The name of the custom scheme to register. + + + + + Whether the sites with this scheme will be treated as a [Secure + Context](https://developer.mozilla.org/docs/Web/Security/Secure_Contexts) + like an HTTPS site. + + + + + Set this property to true if the URIs with this custom scheme + will have an authority component (a host for custom schemes). + Specifically, if you have a URI of the following form you should set the + HasAuthorityComponent value as listed. + + + + URI + Recommended HasAuthorityComponent value + + + custom-scheme-with-authority://host/path + true + + + custom-scheme-without-authority:path + false + + + + + When this property is set to true, the URIs with this scheme will + be interpreted as having a [scheme and + host](https://html.spec.whatwg.org/multipage/origin.html#concept-origin-tuple) + origin similar to an http URI. Note that the port and user information + are never included in the computation of origins for custom schemes. If + this property is set to false, URIs with this scheme will have an + [opaque + origin](https://html.spec.whatwg.org/multipage/origin.html#concept-origin-opaque) + similar to a data URI. This property is false by default. Note: + For custom schemes registered as having authority component, navigations + to URIs without authority of such custom schemes will fail. However, if + the content inside WebView2 references a subresource with a URI that + does not have an authority component, but of a custom scheme that is + registered as having authority component, the URI will be interpreted as + a relative path as specified in + [RFC3986](https://www.rfc-editor.org/rfc/rfc3986). For example, + custom-scheme-with-authority:path will be interpreted as + custom-scheme-with-authority://host/path. However, this behavior + cannot be guaranteed to remain in future releases so it is recommended + not to rely on this behavior. + + + + + List of origins that are allowed to issue requests with the custom + scheme, such as XHRs and subresource requests that have an Origin + header. + + + The origin of any request (requests that have the [Origin + header](https://developer.mozilla.org/docs/Web/HTTP/Headers/Origin)) to + the custom scheme URI needs to be in this list. No-origin requests are + requests that do not have an Origin header, such as link navigations, + embedded images and are always allowed. Note that cross-origin + restrictions still apply. From any opaque origin (Origin header is + null), no cross-origin requests are allowed. If the list is empty, no + cross-origin request to this scheme is allowed. Origins are specified as + a string in the format of scheme://host:port. The origins are + string pattern matched with * (matches 0 or more characters) and + ? (matches 0 or 1 character) wildcards just like the URI matching + in the API. For example, + http://*.example.com:80. + + Here's a set of examples of what is allowed or not: + + + + Request URI + Originating URL + AllowedOrigins + Allowed + + + custom-scheme:request + https://www.example.com + {"https://www.example.com"} + Yes + + + custom-scheme:request + https://www.example.com + {"https://*.example.com"} + Yes + + + custom-scheme:request + https://www.example.com + {"https://www.example2.com"} + No + + + custom-scheme-with-authority://host/path + custom-scheme-with-authority://host2 + {""} + No + + + custom-scheme-with-authority://host/path + custom-scheme-with-authority2://host + {"custom-scheme-with-authority2://*"} + Yes + + + custom-scheme-without-authority:path + custom-scheme-without-authority:path2 + {"custom-scheme-without-authority:*"} + No + + + custom-scheme-without-authority:path + custom-scheme-without-authority:path2 + {"*"} + Yes + + + + + + + Initializes a new instance of the CoreWebView2CustomSchemeRegistration + class. + + + The name of the custom scheme to register. + + + + + Represents a download operation. Gives access to a download's metadata and supports a user canceling, pausing, or resuming a download. + + + + + The estimated end time of the download. + + + + + The total bytes to receive count. + + + + + The URI of the download. + + + + + The Content-Disposition header value from the download's HTTP response. If none, the value is an empty string. + + + + + MIME type of the downloaded content. + + + + + The number of bytes that have been written to the download file. + + + :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="BytesReceivedChanged"::: + + + + + The absolute path to the download file, including file name. + + + Host can change this from . + + + + + The state of the download. A download can be in progress, interrupted, or completed. + + + See for descriptions of states. + + + + + The reason why connection with file host was broken. + + + See for descriptions of reasons. + + + + + Returns true if an interrupted download can be resumed. + + + Downloads with the following interrupt reasons may automatically resume without you calling any methods: , , . In these cases progress may be restarted with set to 0. + + + + + Event raised when the bytes received count is updated. + + + + + Event raised when the estimated end time changes. + + + + + Event raised when the state of the download changes. + + + Use to get the current state, and to get the reason if the download is interrupted. + + + :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="StateChanged"::: + + + + + Cancels the download. + + + If canceled, the default download dialog shows that the download was canceled. Host should use if download should be canceled without displaying the default download dialog. + + + + + Pauses the download. + + + If paused, the default download dialog shows that the download is paused. No effect if download is already paused. Pausing a download changes the state from in progress to interrupted, with interrupt reason set to . + + + + + Resumes a paused download. May also resume a download that was interrupted for another reason if returns true. + + + Resuming a download changes the state from interrupted to in progress. + + + + + This represents the WebView2 Environment. + + + WebViews created from an environment run on the Browser process specified with environment parameters and objects created from an environment should be used in the same environment. Using it in different environments are not guaranteed to be compatible and may fail. + + + + + + + + + + + + + + + + + Creates a WebView2 Environment using the installed or a custom WebView2 Runtime version. + + + The relative path to the folder that contains a custom version of WebView2 Runtime. + + To use a fixed version of the WebView2 Runtime, pass the + folder path that contains the fixed version of the WebView2 Runtime + to browserExecutableFolder. BrowserExecutableFolder supports both relative + (to the application's executable) and absolute file paths. To create WebView2 controls + that use the installed version of the WebView2 Runtime that exists on + user machines, pass a null or empty string to + browserExecutableFolder. In this scenario, the API tries to + find a compatible version of the WebView2 Runtime that is installed + on the user machine (first at the machine level, and then per user) + using the selected channel preference. The path of fixed version of + the WebView2 Runtime should not contain \Edge\Application\. When + such a path is used, the API fails with ERROR_NOT_SUPPORTED. + + + + The user data folder location for WebView2. + + The path is either an absolute file path or a relative file path + that is interpreted as relative to the compiled code for the + current process. The default user data folder {Executable File + Name}.WebView2 is created in the same directory next to the + compiled code for the app. WebView2 creation fails if the compiled + code is running in a directory in which the process does not have + permission to create a new directory. The app is responsible to + clean up the associated user data folder when it is done. + + + + Options used to create WebView2 Environment. + + As a browser process may be shared among WebViews, WebView creation + fails if the specified options does not match the options of + the WebViews that are currently running in the shared browser + process. + + + + + The default channel search order is the WebView2 Runtime, Beta, Dev, and + Canary. When an override WEBVIEW2_RELEASE_CHANNEL_PREFERENCE environment + variable or applicable releaseChannelPreference registry value is set to + 1, the channel search order is reversed. + + + To use a fixed version of the WebView2 Runtime, pass the relative + folder path that contains the fixed version of the WebView2 Runtime + to browserExecutableFolder. To create WebView2 controls that + use the installed version of the WebView2 Runtime that exists on + user machines, pass a null or empty string to + browserExecutableFolder. In this scenario, the API tries to + find a compatible version of the WebView2 Runtime that is installed + on the user machine (first at the machine level, and then per user) + using the selected channel preference. The path of fixed version of + the WebView2 Runtime should not contain \Edge\Application\. When + such a path is used, the API fails with the following error. + + + The , , and may be + overridden by values either specified in environment variables or in + the registry. + + + When creating a the following environment variables are verified. + + + + WEBVIEW2_BROWSER_EXECUTABLE_FOLDER + + + WEBVIEW2_USER_DATA_FOLDER + + + WEBVIEW2_ADDITIONAL_BROWSER_ARGUMENTS + + + WEBVIEW2_RELEASE_CHANNEL_PREFERENCE + + + + If browser executable folder or user data folder is specified in an + environment variable or in the registry, the specified or values are overridden. If additional browser + arguments are specified in an environment variable or in the + registry, it is appended to the corresponding value in the specified + . + + + While not strictly overrides, additional environment variables may be set. + + + + Value + Description + + + WEBVIEW2_WAIT_FOR_SCRIPT_DEBUGGER + + When found with a non-empty value, this indicates that the WebView + is being launched under a script debugger. In this case, the WebView + issues a Page.waitForDebugger CDP command that runs the + script inside the WebView to pause on launch, until a debugger + issues a corresponding Runtime.runIfWaitingForDebugger CDP + command to resume the runtime. + Note that this environment variable does not have a registry key equivalent. + + + + WEBVIEW2_PIPE_FOR_SCRIPT_DEBUGGER + + When found with a non-empty value, it indicates that the WebView is + being launched under a script debugger that also supports host apps + that use multiple WebViews. The value is used as the identifier for + a named pipe that is opened and written to when a new WebView is + created by the host app. The payload should match the payload of the + remote-debugging-port JSON target and an external debugger + may use it to attach to a specific WebView instance. The format of + the pipe created by the debugger should be + \\.\pipe\WebView2\Debugger\{app_name}\{pipe_name}, where the + following are true. + + + {app_name} is the host app exe file name, for example, WebView2Example.exe + {pipe_name} is the value set for WEBVIEW2_PIPE_FOR_SCRIPT_DEBUGGER + + + To enable debugging of the targets identified by the JSON, you must + set the WEBVIEW2_ADDITIONAL_BROWSER_ARGUMENTS environment + variable to send --remote-debugging-port={port_num}, where + the following is true. + + + {port_num} is the port on which the CDP server binds. + + + If both WEBVIEW2_PIPE_FOR_SCRIPT_DEBUGGER and + WEBVIEW2_ADDITIONAL_BROWSER_ARGUMENTS environment variables, + the WebViews hosted in your app and associated contents may exposed + to 3rd party apps such as debuggers. Note that this environment + variable does not have a registry key equivalent. + + + + + If none of those environment variables exist, then the registry is examined + next. + + + + [{Root}]\Software\Policies\Microsoft\Edge\WebView2\BrowserExecutableFolder "{AppId}"="" + + + [{Root}]\Software\Policies\Microsoft\Edge\WebView2\ReleaseChannelPreference "{AppId}"="" + + + [{Root}]\Software\Policies\Microsoft\Edge\WebView2\AdditionalBrowserArguments "{AppId}"="" + + + [{Root}]\Software\Policies\Microsoft\Edge\WebView2\UserDataFolder "{AppId}"="" + + + + Use a group policy under Administrative Templates > + Microsoft Edge WebView2 to configure browser executable folder + and release channel preference. + + + + Value + Description + + + ERROR_DISK_FULL + + In the unlikely scenario where some instances of WebView are open during a + browser update, the deletion of the previous WebView2 Runtime may be + blocked. To avoid running out of disk space, a new WebView creation fails + with this error if it detects that too many previous WebView2 + Runtime versions exist. + + + + COREWEBVIEW2_MAX_INSTANCES + + The default maximum number of WebView2 Runtime versions allowed is 20. + To override the maximum number of the previous WebView2 Runtime versions + allowed, set the value of the following environment variable. + + + + ERROR_PRODUCT_UNINSTALLED + + If the Webview depends upon an installed WebView2 Runtime version and it is + uninstalled, any subsequent creation fails with this error. + + + + + First verify with Root as HKLM and then HKCU. AppId is first set to + the Application User Model ID of the process, then if no corresponding + registry key, the AppId is set to the compiled code name of the process, + or if that is not a registry key then *. If an override registry key is + found, use the browserExecutableFolder and userDataFolder registry + values as replacements and append additionalBrowserArguments registry + values for the corresponding values in the provided . + + + + + + Gets the browser version info including channel name if it is not the stable channel or WebView2 Runtime. + + + The relative path to the folder that contains the WebView2 Runtime. + + + WebView2 Runtime installation is missing. + + + + + Compares two instances of browser versions correctly and returns an integer that indicates whether the first instance is older, the same as, or newer than the second instance. + + + One of the version strings to compare. + + + The other version string to compare. + + + An integer that indicates whether the first instance is older, the same as, or newer than the second instance. + + + Value Type + Condition + + + Less than zero + version1 is older than version2. + + + Zero + version1 is the same as version2. + + + Greater than zero + version1 is newer than version2. + + + + + + + Creates a new object. + + The request URI. + The HTTP request method. + + The raw request header string delimited by CRLF (optional in last header). + + uri parameter must be absolute URI. It's also possible to create this object with null headers string and then use the to construct the headers line by line. + + + + + + Creates a new object, + which can be passed as a parameter in and function for multiple profiles + support. + + + A that can be + passed when calling and . + + + The options is a settable property while the default for profile + name is an empty string and the default value for is + false. The profile will be created on disk or opened when calling + CreateCoreWebView2ControllerWithOptions no matter InPrivate mode is + enabled or not, and it will be released in memory when the + correspoding is closed but + still remain on disk. As WebView2 is built on top of Edge browser, + it follows Edge's behavior pattern. To create an InPrivate WebView, + we get an off-the-record profile (an InPrivate profile) from a + regular profile, then create the WebView with the off-the-record + profile. Also the profile name can be reused. + + + + + Asynchronously creates a new object. + + The HWND in which the WebView should be displayed and from which receive input. + + The options contains profileName and inPrivate parameters that could be used to create CoreWebView2Profile, and it can be used to create multiple WebViews with multiple profiles under a single user data directory. + + + Multiple profiles under single user data directory can share some system resources including memory, CPU footprint, disk space (such as compiled shaders and safebrowsing data) etc. + + + + + Asynchronously creates a new object. + + The HWND in which the WebView should be displayed and from which receive input. + + The options contains profileName and inPrivate parameters that could be used to create CoreWebView2Profile, and it can be used to create multiple WebViews with multiple profiles under a single user data directory. + + + Multiple profiles under single user data directory can share some system resources including memory, CPU footprint, disk space (such as compiled shaders and safebrowsing data) etc. + + + + + Set the path of the folder containing the `WebView2Loader.dll`. + + The path of the folder containing the `WebView2Loader.dll`. + + Thrown when `WebView2Loader.dll` has been successfully loaded. + + + This function allows you to set the path of the folder containing the `WebView2Loader.dll`. This should be the path of a folder containing `WebView2Loader.dll` and not a path to the `WebView2Loader.dll` file itself. + Note that the WebView2 SDK contains multiple `WebView2Loader.dll` files for different CPU architectures. When specifying folder path, you must specify one containing a `WebView2Loader.dll` module with a CPU architecture matching the current process CPU architecture. + This function is used to load the `WebView2Loader.dll` module during calls to any other static methods on `CoreWebView2Environment`. So, the path should be specified before any other API is called in `CoreWebView2Environment` class. Once `WebView2Loader.dll` is successfully loaded this function will throw an InvalidOperationException exception. + The path can be relative or absolute. Relative paths are relative to the path of the `Microsoft.Web.WebView2.Core.dll` module. + If the `WebView2Loader.dll` file does not exist in that path or LoadLibrary cannot load the file, or LoadLibrary fails for any other reason, an exception corresponding to the LoadLibrary failure is thrown when any other API is called in `CoreWebView2Environment` class. For instance, if the file cannot be found a `DllNotFoundException` exception will be thrown. + + + + + Gets the browser version info of the current , including channel name if it is not the stable channel. + + + It matches the format of the method. Channel names are beta, dev, and canary. + + + + + NewBrowserVersionAvailable is raised when a newer version of the WebView2 Runtime is installed and available using WebView2. + + + To use the newer version of the browser you must create a new environment and WebView. The event is only raised for new version from the same WebView2 Runtime from which the code is running. When not running with installed WebView2 Runtime, no event is raised. + + Because a user data folder is only able to be used by one browser process at a time, if you want to use the same user data folder in the WebViews using the new version of the browser, you must close the environment and instance of WebView that are using the older version of the browser first. Or simply prompt the user to restart the app. + + + :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="SubscribeToNewBrowserVersionAvailable"::: + :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="NewBrowserVersionAvailable"::: + + + + + Asynchronously creates a new WebView. + + The HWND in which the WebView should be displayed and from which receive input. + + The WebView adds a child window to the provided window during WebView creation. Z-order and other things impacted by sibling window order are affected accordingly. + + + HWND_MESSAGE is a valid parameter for ParentWindow for an invisible WebView for Windows 8 and above. In this case the window will never become visible. You are not able to reparent the window after you have created the WebView. This is not supported in Windows 7 or below. Passing this parameter in Windows 7 or below will return ERROR_INVALID_WINDOW_HANDLE in the controller callback. + + + + It can also accept a which is created by as the second parameter for multiple profiles support. As WebView2 is built on top of Edge browser, it follows Edge's behavior pattern. To create an InPrivate WebView, we gets an off-the-record profile (an InPrivate profile) from a regular profile, then create the WebView with the off-the-record profile. Multiple profiles under single user data directory can share some system resources including memory, CPU footprint, disk space (such as compiled shaders and safebrowsing data) etc. + + + + It is recommended that the application set Application User Model ID for the process or the application window. If none is set, during WebView creation a generated Application User Model ID is set to root window of ParentWindow. + + + + It is recommended that the app handles restart manager messages, to gracefully restart it in the case when the app is using the WebView2 Runtime from a certain installation and that installation is being uninstalled. For example, if a user installs a version of the WebView2 Runtime and opts to use another version of the WebView2 Runtime for testing the app, and then uninstalls the 1st version of the WebView2 Runtime without closing the app, the app restarts to allow un-installation to succeed. + + + + When the app retries CreateCoreWebView2ControllerAsync upon failure, it is recommended that the app restarts from creating a new WebView2 Environment. If a WebView2 Runtime update happens, the version associated with a WebView2 Environment may have been removed and causing the object to no longer work. Creating a new WebView2 Environment works since it uses the latest version. + + + + WebView creation fails if a running instance using the same user data folder exists, and the Environment objects have different . For example, if a WebView was created with one , an attempt to create a WebView with a different using the same user data folder fails. + + + + WebView creation can fail with `E_UNEXPECTED` if runtime does not have permissions to the user data folder. + + + + + + Creates a new object. + + HTTP response content as stream. + The HTTP response status code. + The HTTP response reason phrase. + The raw response header string delimited by newline. + + It is also possible to create this object with empty headers string and then use the to construct the headers line by line. + + + + + + Asynchronously creates a new WebView for use with visual hosting. + + The HWND in which the app will connect the visual tree of the WebView. + + ParentWindow will be the HWND that the app will receive pointer/mouse input meant for the WebView (and will need to use or to forward). If the app moves the WebView visual tree to underneath a different window, then it needs to set to update the new parent HWND of the visual tree. + + Set property on the created to provide a visual to host the browser's visual tree. + + It is recommended that the application set Application User Model ID for the process or the application window. If none is set, during WebView creation a generated Application User Model ID is set to root window of ParentWindow. + + It can also accept a which is created by as the second parameter for multiple profiles support. + + CreateCoreWebView2CompositionController is supported in the following versions of Windows: + + + Windows 11 + + + Windows 10 + + + Windows Server 2019 + + + Windows Server 2016 + + + + + + + Creates an empty . + + + The returned needs to be populated with all of the relevant info before calling . + + + + + BrowserProcessExited is raised when the collection of WebView2 Runtime processes for the browser process of this terminate due to browser process failure or normal shutdown (for example, when all associated WebViews are closed), after all resources have been released (including the user data folder). + + + Multiple app processes can share a browser process by creating their webviews from a with the same user data folder. When the entire collection of WebView2Runtime processes for the browser process exit, all associated objects receive the BrowserProcessExited event. Multiple processes sharing the same browser process need to coordinate their use of the shared user data folder to avoid race conditions and unnecessary waits. For example, one process should not clear the user data folder at the same time that another process recovers from a crash by recreating its WebView controls; one process should not block waiting for the event if other app processes are using the same browser process (the browser process will not exit until those other processes have closed their webviews too). + + Note this is an event from , not . The difference between BrowserProcessExited and is that BrowserProcessExited is raised for any browser process exit (expected or unexpected, after all associated processes have exited too), while is raised for unexpected process exits of any kind (browser, render, GPU, and all other types), or for main frame render process unresponsiveness. To learn more about the WebView2 Process Model, go to [Process model](/microsoft-edge/webview2/concepts/process-model). + + In the case the browser process crashes, both BrowserProcessExited and events are raised, but the order is not guaranteed. These events are intended for different scenarios. It is up to the app to coordinate the handlers so they do not try to perform reliability recovery while also trying to move to a new WebView2 Runtime version or remove the user data folder. + + + :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="SubscribeToBrowserProcessExited"::: + :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="BrowserProcessExited"::: + + + + + Creates the used by the method. + + + + + Gets the user data folder that all CoreWebView2s created from this environment are using. + + + This could be either the value passed in by the developer when creating the environment object or the calculated one for default handling. And will always be an absolute path. + + + + + ProcessInfosChanged is raised when a collection of WebView2 Runtime processes changed due to new process being detected or when a existing process gone away. + + + :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="ProcessInfosChanged"::: + + + + + Returns the list of all using same user data folder except for crashpad process. + + + :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="GetProcessInfos"::: + + + + + Create a custom object to insert into the WebView context menu. + + + CoreWebView2 will rewind the icon stream before decoding. + There is a limit of 1000 active custom context menu items at a given time per . Attempting to create more before deleting existing ones will fail with ERROR_NOT_ENOUGH_QUOTA. It is recommended to reuse custom ContextMenuItems across CoreWebView2ContextMenuRequested events for performance. The created object's property will default to true and property will default to false. A will be assigned that's unique across active custom context menu items, but command ID values of deleted custom ContextMenuItems can be reassigned. + + + + + Gets the failure report folder that all CoreWebView2s created from this environment are using. + + + + + Create a shared memory based buffer with the specified size in bytes. + + + The buffer can be shared with web contents in WebView by calling or . + Once shared, the same content of the buffer will be accessible from both the app process and script in WebView. + Modification to the content will be visible to all parties that have access to the buffer. + The shared buffer is presented to the script as ArrayBuffer. All JavaScript APIs that work for ArrayBuffer including Atomics APIs can be used on it. + There is currently a limitation that only size less than 2GB is supported. + + + + + Options used to create WebView2 Environment. + + + Default values will use your defaulted Edge WebView2 Runtime binaries and + user data folder. + + + + + + + + + + Initializes a new instance of the CoreWebView2EnvironmentOptions class. + + + AdditionalBrowserArguments can be specified to change the behavior of + the WebView. + + + The default language that WebView will run with. + + + The version of the Edge WebView2 Runtime binaries required to be + compatible with the calling application. + + + Set to true if single sign on be enabled using the end user's OS primary + account. Defaults to false. + + + List of custom scheme registrations to be applied to the . + + + + + List of custom scheme registrations to be applied to the + + + + + Gets or sets the additional browser arguments to change the behavior of the WebView. + + + + The arguments are passed to the browser process as part of the command. For more information about using command-line switches with Chromium browser processes, navigate to [Run Chromium with Flags](https://aka.ms/RunChromiumWithFlags). The value appended to a switch is appended to the browser process, for example, in --edge-webview-switches=xxx the value is xxx. If you specify a switch that is important to WebView functionality, it is ignored, for example, --user-data-dir. Specific features are disabled internally and blocked from being enabled. If a switch is specified multiple times, only the last instance is used. + + + + A merge of the different values of the same switch is not attempted, except for disabled and enabled features. The features specified by --enable-features and --disable-features will be merged with simple logic: + + + + The features are the union of the specified features and built-in features. If a feature is disabled, it is removed from the enabled features list. + + + + + If you specify command-line switches and sets this property, the --edge-webview-switches value takes precedence and is processed last. If a switch fails to parse, the switch is ignored. The default state for the operation is to run the browser process with no extra flags. + + + Please note that calling this API twice will replace the previous value rather than appending to it. If there are multiple switches, there should be a space in between them. The one exception is if multiple features are being enabled/disabled for a single switch, in which case the features should be comma-separated. Ex. "--disable-features=feature1,feature2 --some-other-switch --do-something" + + + + + + Gets or sets the default display language for WebView. + + + It applies to browser UIs such as context menu and dialogs. It also applies to the accept-languages HTTP header that WebView sends to websites. The intended locale value is in the format of BCP 47 Language Tags. More information can be found from [IETF BCP47](https://www.ietf.org/rfc/bcp/bcp47.html). + + + + + Gets or sets the version of the WebView2 Runtime binaries required to be compatible with your app. + + + This defaults to the WebView2 Runtime version that corresponds with the version of the SDK the app is using. The format of this value is the same as the format of the property and other BrowserVersion values. Only the version part of the BrowserVersion value is respected. The channel suffix, if it exists, is ignored. The version of the WebView2 Runtime binaries actually used may be different from the specified TargetCompatibleBrowserVersion. The binaries are only guaranteed to be compatible. Verify the actual version on the property. + + + + + Determines whether to enable single sign on with Azure Active Directory (AAD) resources inside WebView using the logged in Windows account and single sign on (SSO) with web sites using Microsoft account associated with the login in Windows account. + + + The default value is false. Universal Windows Platform apps must also declare enterpriseCloudSSO [restricted capability](/windows/uwp/packaging/app-capability-declarations#restricted-capabilities) for the single sign on (SSO) to work. + + + + + Determines whether other processes can create from created with the same user data folder and therefore sharing the same WebView browser process instance. + + + The default value is false. + + + + + When IsCustomCrashReportingEnabled is set to true, Windows won't send crash data to Microsoft endpoint. + + + The default value is false. In this case, WebView will respect OS consent. + + + + + The EnableTrackingPrevention property is used to enable/disable tracking prevention feature in WebView2. This property enable/disable tracking prevention for all the WebView2's created in the same environment. By default this feature is enabled to block potentially harmful trackers and trackers from sites that aren't visited before and set to or whatever value was last changed/persisted on the profile. + + + You can set this property to false to disable the tracking prevention feature if the app only renders content in the WebView2 that is known to be safe. Disabling this feature when creating environment also improves runtime performance by skipping related code. + + You shouldn't disable this property if WebView2 is being used as a "full browser" with arbitrary navigation and should protect end user privacy. + + There is property to control levels of tracking prevention of the WebView2's associated with a same profile. However, you can also disable tracking prevention later using property and value but that doesn't improves runtime performance. + + See for more details. + + Tracking prevention protects users from online tracking by restricting the ability of trackers to access browser-based storage as well as the network. See [Tracking prevention](/microsoft-edge/web-platform/tracking-prevention). + + + + + CoreWebView2Frame provides direct access to the iframes information and handling. + + + CoreWebView2Frame provides direct access to the iframes information and handling. You can get a CoreWebView2Frame by handling the event. + + + CoreWebView2Frame provides direct access to the iframes information and handling. You can get a CoreWebView2Frame by handling the event. + + + CoreWebView2Frame provides direct access to the iframes information and handling. You can get a CoreWebView2Frame by handling the event. + + + CoreWebView2Frame provides direct access to the iframes information and handling. You can get a CoreWebView2Frame by handling the event. + + + + + Adds the provided host object to script running in the WebViewFrame with the specified name for the list of the specified origins. + The host object will be accessible for this iframe only if the iframe's origin during + access matches one of the origins which are passed. The provided origins + will be normalized before comparing to the origin of the document. + So the scheme name is made lower case, the host will be punycode decoded + as appropriate, default port values will be removed, and so on. + This means the origin's host may be punycode encoded or not and will match + regardless. If list contains malformed origin the call will fail. + The method can be called multiple times in a row without calling + RemoveHostObjectFromScript for the same object name. It will replace + the previous object with the new object and new list of origins. + List of origins will be treated as following: + 1. empty list - call will succeed and object will be added for the iframe + but it will not be exposed to any origin; + 2. list with origins - during access to host object from iframe the + origin will be checked that it belongs to this list; + 3. list with "*" element - host object will be available for iframe for + all origins. We suggest not to use this feature without understanding + security implications of giving access to host object from from iframes + with unknown origins. + 4. list with "file://" element - host object will be available for iframes + loaded via file protocol. + + + The name of the host object. + + + The host object to be added to script. + + + The list of the iframe origins for which host object will be accessible. + + + + + + The name of the iframe from the iframe html tag declaring it. + + + + + NameChanged is raised when the iframe changes its window.name property. + + + + + + Destroyed event is raised when the iframe corresponding to this object is removed or the document containing that iframe is destroyed. + + + + + + Remove the host object specified by the name so that it is no longer accessible from JavaScript code in the iframe. + + + While new access attempts are denied, if the object is already obtained by JavaScript code in the iframe, the JavaScript code continues to have access to that object. Calling this method for a name that is already removed or was never added fails. If the iframe is destroyed this method will return fail also. + + + + + Check whether a frame is destroyed. Returns true during the event. + + + + + NavigationStarting is raised when the current frame is requesting permission to navigate to a different URI. + + + A frame navigation will raise a event and a event. All of the event handlers will be run before the event handlers. All of the event handlers share a common object. Whichever event handler is last to change the property will decide if the frame navigation will be cancelled. + Redirects raise this event as well, and the navigation id is the same as the original one. You may block corresponding navigations until the event handler returns. + + + + + ContentLoading is raised before any content is loaded, including scripts added with . ContentLoading is not raised if a same page navigation occurs. + + + This operation follows the event and precedes the and events. + + + + + NavigationCompleted is raised when the current frame has completely loaded (body.onload has been raised) or loading stopped with error. + + + + + DOMContentLoaded is raised when the initial HTML document has been parsed. + + + This aligns with the the document's DOMContentLoaded event in HTML. + + + + + WebMessageReceived is raised when the setting is set and the iframe runs window.chrome.webview.postMessage. + + + The postMessage function is void postMessage(object) where object is any object supported by JSON conversion. + When postMessage is called, the handler's Invoke method will be called with the object parameter postMessage converted to a JSON string. + + + :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="WebMessageReceivedIFrame"::: + + + + + Runs JavaScript code from the javaScript parameter in the current frame. + + The JavaScript code to be run in the current frame. + A JSON encoded string that represents the result of running the provided JavaScript. + + A function that has no explicit return value returns undefined. If the script that was run throws an unhandled exception, then the result is also null. This method is applied asynchronously. + If the method is run before , the script will not be executed and the JSON null will be returned. + This operation works even if is set to false. + + + :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="ExecuteScriptFrame"::: + + + + + Posts the specified webMessageAsJson to the current frame. + + The web message to be posted to the iframe. + + The event args is an instance of MessageEvent. The setting must be true or the message will not be sent. The event arg's data property of the event arg is the webMessageAsJson string parameter parsed as a JSON string into a JavaScript object. The event arg's source property of the event arg is a reference to the window.chrome.webview object. For information about sending messages from the iframe to the host, navigate to . The message is sent asynchronously. If a navigation occurs before the message is posted to the iframe, the message is not be sent. + + + Runs the message event of the window.chrome.webview of the iframe. JavaScript in that document may subscribe and unsubscribe to the event using the following code: + + window.chrome.webview.addEventListener('message', handler) + window.chrome.webview.removeEventListener('message', handler) + + + + + + + + + Posts a message that is a simple string rather than a JSON string representation of a JavaScript object. + + The web message to be posted to the iframe. + + This behaves in exactly the same manner as , but the data property of the event arg of the window.chrome.webview message is a string with the same value as webMessageAsString. Use this instead of if you want to communicate using simple strings rather than JSON objects. + + + + + + + PermissionRequested is raised when content in an iframe or any of its descendant iframes requests permission to access some privileged resources. + + + This relates to the PermissionRequested event on the CoreWebView2. + Both these events will be raised in the case of an iframe requesting permission. The CoreWebView2Frame's event handlers will be invoked before the event handlers on the CoreWebView2. If the Handled property of the PermissionRequestedEventArgs is set to TRUE within the CoreWebView2Frame event handler, then the event will not be raised on the CoreWebView2, and it's event handlers will not be invoked. + In the case of nested iframes, the PermissionRequested event will be raised from the top level iframe. + If a deferral is not taken on the event args, the subsequent scripts are blocked until the event handler returns. If a deferral is taken, the scripts are blocked until the deferral is completed. + + + + + Share a shared buffer object with script of the iframe in the WebView. + + The object to be shared with script. + The desired given to script. + Additional data to be send to script. If it is not null or empty string, and it is not a valid JSON string, will be thrown. + + The script will receive a sharedbufferreceived event from chrome.webview. + The event arg for that event will have the following methods and properties. + + + + Property + Description + + + getBuffer() + A method that returns an ArrayBuffer object with the backing content from the shared buffer. + + + additionalData + An object as the result of parsing additionalDataAsJson as JSON string. This property will be undefined if additionalDataAsJson is nullptr or empty string. + + + source + With a value set as chrome.webview object. + + + + If access is , the script will only have read access to the buffer. + If the script tries to modify the content in a read only buffer, it will cause an access violation in WebView renderer process and crash the renderer process. + + If the shared buffer is already closed, the API throws with error code of RO_E_CLOSED. + The script code should call chrome.webview.releaseBuffer with the shared buffer as the parameter to release underlying resources as soon as it does not need access to the shared buffer any more. + + The application can post the same shared buffer object to multiple web pages or iframes, or post to the same web page or iframe multiple times. + Each PostSharedBufferToScript will create a separate ArrayBuffer object with its own view of the memory and is separately released. + The underlying shared memory will be released when all the views are released. + + Sharing a buffer to script has security risk. You should only share buffer with trusted site. + If a buffer is shared to a untrusted site, possible sensitive information could be leaked. + If a buffer is shared as modifiable by the script and the script modifies it in an unexpected way, it could result in corrupted data that might even crash the application. + + The example code shows how to send data to script for one time read only consumption. + + + :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="OneTimeShareBuffer"::: + :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/assets/sharedBuffer.html" id="ShareBufferScriptCode_1"::: + :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/assets/sharedBuffer.html" id="ShareBufferScriptCode_2"::: + + + + + + Iterator for a collection of HTTP headers. + + + + + + + + + + No COM support; throws instead. + + + No COM support. + + + + + + + + Gets the header in the + or collection at the + current position of the enumerator. + + + + + + true when the iterator has not run out of headers. + + + If the collection over which the iterator is iterating is empty or if the iterator has gone past the end of the collection then this is false. + + + + + HTTP request headers. + + + Used to inspect the HTTP request on event and event. It is possible to modify the HTTP request headers from a event, but not from a event. + + + + + + + + + + + + + Returns an enumerator that iterates through the or collection. + + + + + Gets the header value matching the name. + + The header value matching the name. + + + + Gets the header value matching the name using a . + + The header value matching the name. + + + + Checks whether the headers contain an entry that matches the header name. + + Whether the headers contain an entry that matches the header name. + + + + Adds or updates header that matches the name. + + + + + Removes header that matches the name. + + + + + Gets a over the collection of request headers. + + + + + HTTP response headers. + + + Used to construct a for the event. + + + + + + + + + + + Returns an enumerator that iterates through the or collection. + + + + + Appends header line with name and value. + + The header name to be appended. + The header value to be appended. + + + + Checks whether this CoreWebView2HttpResponseHeaders contain entries matching the header name. + + The name of the header to seek. + + + + Gets the first header value in the collection matching the name. + + The header name. + The first header value in the collection matching the name. + + + + Gets the header values matching the name. + + The header name. + + + + Gets a over the collection of entire . + + + + + Event args for the CoreWebView2InitializationCompleted event. + + + + + Initializes a new instance of the CoreWebView2InitializationCompletedEventArgs class. + + + Exception that occurred during initialization, or null if initialization was successful. + + + + + True if the init task completed successfully. + + + + + The exception thrown from the init task. If the task completed successfully, this property is null. + + + + + Multiple profiles can be created under a single user data directory but with separated cookies, user preference settings, and various data storage etc.. If the CoreWebView2 was created with a , the CoreWebView2Profile will match those specified options. Otherwise if this CoreWebView2 was created without a , then this will be the default CoreWebView2Profile for the corresponding CoreWebView2Environment. + + + Multiple profiles can be created under a single user data directory but with separated cookies, user preference settings, and various data storage etc.. If the CoreWebView2 was created with a , the CoreWebView2Profile will match those specified options. Otherwise if this CoreWebView2 was created without a , then this will be the default CoreWebView2Profile for the corresponding CoreWebView2Environment. + + + Multiple profiles can be created under a single user data directory but with separated cookies, user preference settings, and various data storage etc.. If the CoreWebView2 was created with a , the CoreWebView2Profile will match those specified options. Otherwise if this CoreWebView2 was created without a , then this will be the default CoreWebView2Profile for the corresponding CoreWebView2Environment. + + + Multiple profiles can be created under a single user data directory but with separated cookies, user preference settings, and various data storage etc.. If the CoreWebView2 was created with a , the CoreWebView2Profile will match those specified options. Otherwise if this CoreWebView2 was created without a , then this will be the default CoreWebView2Profile for the corresponding CoreWebView2Environment. + + + Multiple profiles can be created under a single user data directory but with separated cookies, user preference settings, and various data storage etc.. If the CoreWebView2 was created with a , the CoreWebView2Profile will match those specified options. Otherwise if this CoreWebView2 was created without a , then this will be the default CoreWebView2Profile for the corresponding CoreWebView2Environment. + + + Multiple profiles can be created under a single user data directory but with separated cookies, user preference settings, and various data storage etc.. If the CoreWebView2 was created with a , the CoreWebView2Profile will match those specified options. Otherwise if this CoreWebView2 was created without a , then this will be the default CoreWebView2Profile for the corresponding CoreWebView2Environment. + + + + + Clear the browsing data for the specified dataKinds between the + startTime and endTime. Overload the ClearBrowsingDataAsync method to + allow for additional time parameters. + + + + + Clear the entirety of the browsing data associated with the profile + it is called on. It clears the data regardless of timestamp. + + + + + The name of the profile. + + + + + InPrivate mode is enabled or not. + + + + + Full path of the profile directory. + + + + + The default download folder path. + + + The default value is the system default download folder path for the user. The default download folder path is persisted in the user data folder across sessions. The value should be an absolute path to a folder that the user and application can write to. Throws an exception if the value is invalid, and the default download path is not changed. Otherwise the path is changed immediately. If the directory does not yet exist, it is created at the time of the next download. If the host application does not have permission to create the directory, then the user is prompted to provide a new path through the Save As dialog. The user can override the default download folder path for a given download by choosing a different path in the Save As dialog. + + + + + The PreferredColorScheme property sets the overall color scheme of the WebView2s associated with this profile. + + + This sets the color scheme for WebView2 UI like dialogs, prompts, and menus by setting the media feature prefers-color-scheme. + The default value for this is , which will follow whatever color scheme the OS is currently set to. + + + + + Clear the browsing data of the associated profile. + + + Clears browsing data on the profile the method is called on. Additional optional parameters include the start time and end time to clear the browsing data between as well as the data specific data kinds to clear on the profile. The method may be overloaded to take: + + + No parameters - in which the entirety of the data on the profile will be cleared. + + + The data kind(s) - in which the data kind(s) will be cleared for their entirety. + + + The data kind(s), start time, and end time - in which the data kind(s) will be cleared between the start and end time. The start time will be offset by -1.0 and the end time will be offset by +1.0 to include the last fractional second on each respective end. The start time is inclusive in the time period while the end time is exclusive. + + + + The exposed methods are as follows: + + ClearBrowsingDataAsync(CoreWebView2BrowsingDataKinds dataKinds); + ClearBrowsingDataAsync(CoreWebView2BrowsingDataKinds dataKinds, DateTime startTime, DateTime endTime); + ClearBrowsingDataAsync(); + + + + :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="ClearBrowsingData"::: + + + + + The PreferredTrackingPreventionLevel property allows you to control levels of tracking prevention for WebView2 which are associated with a profile. This level would apply to the context of the profile. That is, all WebView2s sharing the same profile will be affected and also the value is persisted in the user data folder. + + + See for descriptions of levels. + + If tracking prevention feature is enabled when creating the WebView2 environment, you can also disable tracking prevention later using this property and value but that doesn't improves runtime performance. + + There is property to enable/disable tracking prevention feature for all the WebView2's created in the same environment. If enabled, PreferredTrackingPreventionLevel is set to by default for all the WebView2's and profiles created in the same environment or is set to the level whatever value was last changed/persisted to the profile. If disabled PreferredTrackingPreventionLevel is not respected by WebView2. If PreferredTrackingPreventionLevel is set when the feature is disabled, the property value get changed and persisted but it will takes effect only if is true. + + See for more details. + + + + + Sets permission state for the given permission kind and origin asynchronously. + + + The state change persists across sessions until it is changed by another call to SetPermissionState, or by setting the State property in PermissionRequestedEventArgs. Setting the state to will erase any state saved in the profile and restore the default behavior. The origin should have a valid scheme and host (e.g. "https://www.example.com"), otherwise the method fails. Additional URI parts like path and fragment are ignored. For example, "https://wwww.example.com/app1/index.html/" is treated the same as "https://wwww.example.com". See the [MDN origin definition](https://developer.mozilla.org/docs/Glossary/Origin) for more details. + + + + + Invokes the handler with a collection of all nondefault permission settings. + + + Use this method to get the permission state set in the current and previous sessions. + + + :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="GetNonDefaultPermissionSettings"::: + + + + + Get the which Creates, adds or updates, gets, or or view the cookies for the current profile. + + + All CoreWebView2s associated with this profile share the same cookie values. Changes to cookies in this cookie manager apply to all CoreWebView2s associated with this profile. + + + + + + Determines whether password information will be autosaved. + + + When disabled, no new password data is saved and no Save/Update Password prompts are displayed. However, if there was password data already saved before disabling this setting, then that password information is auto-populated, suggestions are shown and clicking on one will populate the fields. + When enabled, password information is auto-populated, suggestions are shown and clicking on one will populate the fields, new data is saved, and a Save/Update Password prompt is displayed. The default value is false. It will apply immediately after setting. + This property has the same value as , and changing one will change the other. All WebView2s with the same will share the same value for this property, so for the WebView2s with the same profile, their and will always have the same value. + + + + + Determines whether general form information will be saved and autofilled. + + + General autofill information includes information like names, street and email addresses, phone numbers, and arbitrary input. This excludes password information. When disabled, no suggestions appear, and no new information is saved. + When enabled, information is saved, suggestions appear, and clicking on one will populate the form fields. The default value is true. It will apply immediately after setting. + This property has the same value as , and changing one will change the other. All WebView2s with the same will share the same value for this property, so for the WebView2s with the same profile, their and will always have the same value. + + + + + This is used to complete deferrals on event args that support getting deferrals using the GetDeferral method. This class implements . + + + + + + + + + Protected implementation of Dispose pattern. + + + + + Completes the associated deferred event. + + + Complete should only be run once for each deferral taken. + + + + + This class is deprecated; use CoreWebView2PrivateHostObjectHelper instead. + + + + + A shared memory based buffer object that is created by . The object is presented to script as ArrayBuffer when posted to script with . + + + + + + + + Protected implementation of Dispose pattern. + + + + + The file mapping handle of the shared memory of the buffer. + + + Normal app should use to + get a stream object to access the buffer. + For advanced scenarios, you could use native file mapping APIs to obtain + other views or duplicate this handle to another application process and + create a view from the duplicated handle in that process to access the buffer + from that separate process. + + + + + The size of the shared buffer in bytes. + + + + + The raw memory address of the buffer. + + + You can cast it to pointer to real data types like byte* to access the memory from unsafe code region. + Normal app should use to get a stream object to access the buffer. + + + + + Get an stream object that can be used to access the shared buffer. + + + + + Release the backing shared memory. + + + The application should call Close or when no access to the buffer is needed any more, to ensure that the underlying resources are released timely even if the shared buffer object itself is not released due to some leaked reference. + After the shared buffer is closed, the buffer address and file mapping handle previously obtained becomes invalid and cannot be used anymore. + Properties of the object will also be unaccessible. Operations like Read or Write on the stream objects returned from will also fail. + will also fail. The failures will be represented as with error code of RO_E_CLOSED. + + The script code should call chrome.webview.releaseBuffer with the shared buffer as the parameter to release underlying resources as soon as it does not need access the shared buffer any more. + When script tries to access the buffer after calling chrome.webview.releaseBuffer, JavaScript TypeError exception will be raised complaining about accessing a detached ArrayBuffer, the same exception when trying to access a transferred ArrayBuffer. + + Closing the buffer object on native side doesn't impact access from Script and releasing the buffer from script doesn't impact access to the buffer from native side. The underlying shared memory will be released by the OS when both native and script side release the buffer. + + + + + Constructor + + + + + Read at most bufferSize bytes into buffer and return the effective + number of bytes read in bytesReadPtr (unless null). + + + mscorlib disassembly shows the following MarshalAs parameters + void Read([Out, MarshalAs(UnmanagedType.LPArray, SizeParamIndex=1)] byte[] pv, int cb, IntPtr pcbRead); + This means marshaling code will have found the size of the array buffer in the parameter bufferSize. + + + Critical: calls Marshal.WriteInt32 which LinkDemands, takes pointers as input + + + + + Move the stream pointer to the specified position. + + + System.IO.stream supports searching past the end of the stream, like + OLE streams. + newPositionPtr is not an out parameter because the method is required + to accept NULL pointers. + + + Critical: calls Marshal.WriteInt64 which LinkDemands, takes pointers as input + + + + + Sets stream's size. + + + + + Obtain stream stats. + + + STATSG has to be qualified because it is defined both in System.Runtime.InteropServices and + System.Runtime.InteropServices.ComTypes. + The STATSTG structure is shared by streams, storages and byte arrays. Members irrelevant to streams + or not available from System.IO.Stream are not returned, which leaves only cbSize and grfMode as + meaningful and available pieces of information. + grfStatFlag is used to indicate whether the stream name should be returned and is ignored because + this information is unavailable. + + + + + Write at most bufferSize bytes from buffer. + + + Critical: calls Marshal.WriteInt32 which LinkDemands, takes pointers as input + + + + + Create a clone. + + + Not implemented. + + + + + Read at most bufferSize bytes from the receiver and write them to targetStream. + + + Not implemented. + + + + + Commit changes. + + + Only relevant to transacted streams. + + + + + Lock at most byteCount bytes starting at offset. + + + Not supported by System.IO.Stream. + + + + + Undo writes performed since last Commit. + + + Relevant only to transacted streams. + + + + + Unlock the specified region. + + + Not supported by System.IO.Stream. + + + + + The exception that is thrown when an WebView2 Runtime installation is missing. + + + + + Initializes a new instance of the WebView2RuntimeNotFoundException class. + + + + + Initializes a new instance of the WebView2RuntimeNotFoundException class with a specified error message. + + + The error message that explains the reason for the exception. + + + + + Initializes a new instance of the WebView2RuntimeNotFoundException class with a reference to the inner exception that is the cause of this exception. + + + The exception that is the cause of the current exception. + + + + + Initializes a new instance of the WebView2RuntimeNotFoundException class with a specified error message and a reference to the inner exception that is the cause of this exception. + + + The error message that explains the reason for the exception. + + + The exception that is the cause of the current exception. + + + + + + + + + + + + + + + + + Specifies the web resource request contexts. + + + + + Specifies all resources. + + + + + Specifies a document resources. + + + + + Specifies a CSS resources. + + + + + Specifies an image resources. + + + + + Specifies another media resource such as a video. + + + + + Specifies a font resource. + + + + + Specifies a script resource. + + + + + Specifies an XML HTTP request, Fetch and EventSource HTTP communication. + + + + + Specifies a Fetch API communication. + + + Note that this isn't working. Fetch API requests are fired as a part + of COREWEBVIEW2_WEB_RESOURCE_CONTEXT_XML_HTTP_REQUEST. + + + + Specifies a TextTrack resource. + + + + + Specifies an EventSource API communication. + + + Note that this isn't working. EventSource API requests are fired as a part + of COREWEBVIEW2_WEB_RESOURCE_CONTEXT_XML_HTTP_REQUEST. + + + + Specifies a WebSocket API communication. + + + + + Specifies a Web App Manifest. + + + + + Specifies a Signed HTTP Exchange. + + + + + Specifies a Ping request. + + + + + Specifies a CSP Violation Report. + + + + + Specifies an other resource. + + + + + Indicates the error status values for web navigations. + + + + + Indicates that an unknown error occurred. + + + + + Indicates that the SSL certificate common name does not match the web address. + + + + + Indicates that the SSL certificate has expired. + + + + + Indicates that the SSL client certificate contains errors. + + + + + Indicates that the SSL certificate has been revoked. + + + + + Indicates that the SSL certificate is not valid. The certificate may not match the public key pins for the host name, the certificate is signed by an untrusted authority or using a weak sign algorithm, the certificate claimed DNS names violate name constraints, the certificate contains a weak key, the validity period of the certificate is too long, lack of revocation information or revocation mechanism, non-unique host name, lack of certificate transparency information, or the certificate is chained to a [legacy Symantec root](https://security.googleblog.com/2018/03/distrust-of-symantec-pki-immediate.html). + + + + + Indicates that the host is unreachable. + + + + + Indicates that the connection has timed out. + + + + + Indicates that the server returned an invalid or unrecognized response. + + + + + Indicates that the connection was stopped. + + + + + Indicates that the connection was reset. + + + + + Indicates that the Internet connection has been lost. + + + + + Indicates that a connection to the destination was not established. + + + + + Indicates that the provided host name was not able to be resolved. + + + + + Indicates that the operation was canceled. This status code is also used when the app cancels a navigation via event, and for original navigation if the app navigates the WebView2 in a rapid succession away after the load for original navigation commenced, but before it completed. + + + + + Indicates that the request redirect failed. + + + + + An unexpected error occurred. + + + + + + + Tracking prevention levels. + + + + + Tracking prevention is turned off. + + + + + The least restrictive level of tracking prevention. Set to this level to protect against malicious trackers but allows most other trackers and personalize content and ads. See [Current tracking prevention behavior](/microsoft-edge/web-platform/tracking-prevention#current-tracking-prevention-behavior) for fine-grained information on what is being blocked with this level and can change with different Edge versions. + + + + + The default level of tracking prevention. Set to this level to protect against social media tracking on top of malicious trackers. Content and ads will likely be less personalized. See [Current tracking prevention behavior](/microsoft-edge/web-platform/tracking-prevention#current-tracking-prevention-behavior) for fine-grained information on what is being blocked with this level and can change with different Edge versions. + + + + + The most restrictive level of tracking prevention. Set to this level to protect against malicious trackers and most trackers across sites. Content and ads will likely have minimal personalization. This level blocks the most trackers but could cause some websites to not behave as expected. See [Current tracking prevention behavior](/microsoft-edge/web-platform/tracking-prevention#current-tracking-prevention-behavior) for fine-grained information on what is being blocked with this level and can change with different Edge versions. + + + + + Specifies the desired access from script to . + + + + + Script from web page only has read access to the shared buffer. + + + + + Script from web page has read and write access to the shared buffer. + + + + + Specifies the action type when server certificate error is detected to be used in the . + + + + + Indicates to ignore the warning and continue the request with the TLS certificate. This decision is cached for the RequestUri's host and the server certificate in the session. + + + + + Indicates to reject the certificate and cancel the request. + + + + + Indicates to display the default TLS interstitial error page to user for page navigations. For others TLS certificate is rejected and the request is cancelled. + + + + + Specifies the JavaScript dialog kind used in . + + + + + Indicates that the dialog uses window.alert JavaScript function. + + + + + Indicates that the dialog uses window.confirm JavaScript function. + + + + + Indicates that the dialog uses window.prompt JavaScript function. + + + + + Indicates that the dialog uses window.beforeunload JavaScript event. + + + + + + Specifies the process kind used in . + + + The values in this enum make reference to the process kinds in the Chromium architecture. For more information about what these processes are and what they do, see [Browser Architecture - Inside look at modern web browser](https://developers.google.com/web/updates/2018/09/inside-browser-part1). + + + + + Indicates that the process is browser process. + + + + + Indicates that the process is render process. + + + + + Indicates that the process is utility process. + + + + + Indicates that the process is sandbox helper process. + + + + + Indicates that the process is Gpu process. + + + + + Indicates that the process is ppapi plugin process. + + + + + Indicates that the process is ppapi broker process. + + + + + Specifies the process failure reason used in . For process failures where a process has exited, it indicates the type of issue that produced the process exit. + + + + + Indicates that an unexpected process failure occurred. + + + + + Indicates that the process became unresponsive. This only applies to the main frame's render process. + + + + + Indicates that the process was terminated. For example, from Task Manager. + + + + + Indicates that the process crashed. Most crashes will generate dumps in the location indicated by . + + + + + Indicates that the process failed to launch. + + + + + Indicates that the process died due to running out of memory. + + + + + Indicates the webview2's profile has been deleted. + + + + + Specifies the process failure kind used in . + + + The values in this enum make reference to the process kinds in the Chromium architecture. For more information about what these processes are and what they do, see [Browser Architecture - Inside look at modern web browser](https://developers.google.com/web/updates/2018/09/inside-browser-part1). + + + + + + Indicates that the browser process ended unexpectedly. The WebView automatically moves to the Closed state. The app has to recreate a new WebView to recover from this failure. + + + + + Indicates that the main frame's render process ended unexpectedly. Any subframes in the WebView will be gone too. A new render process is created automatically and navigated to an error page. You can use the method to try to recover from this failure. Alternatively, you can use and recreate the WebView. + + + + + Indicates that the main frame's render process is unresponsive. + + Renderer process unresponsiveness can happen for the following reasons: + + + + + There is a long-running script being executed. For example, the web content in your WebView might be performing a synchronous XHR, or have entered an infinite loop. + + + + + The system is busy. + + + + + The ProcessFailed event will continue to be raised every few seconds until the renderer procees has become responsive again. The application can consider taking action if the event keeps being raised. For example, the application might show UI for the user to decide to keep waiting or reload the page, or navigate away. + + + + + Indicates that a frame-only render process ended unexpectedly. The process exit does not affect the top-level document, only a subset of the subframes within it. The content in these frames is replaced with an error page in the frame. Your application can communicate with the main frame to recover content in the impacted frames, using to get information about the impacted frames. + + + + + Indicates that a utility process ended unexpectedly. The failed process is recreated automatically. Your application does not need to handle recovery for this event, but can use to collect information about the failure, including ProcessDescription. + + + + + Indicates that a sandbox helper process ended unexpectedly. This failure is not fatal. Your application does not need to handle recovery for this event, but can use to collect information about the failure. + + + + + Indicates that the GPU process ended unexpectedly. The failed process is recreated automatically. This failure is not fatal. Your application does not need to handle recovery for this event, but can use to collect information about the failure. + + + + + Indicates that a PPAPI plugin process ended unexpectedly. This failure is not fatal. Your application does not need to handle recovery for this event, but can use to collect information about the failure, including ProcessDescription. + + + + + Indicates that a PPAPI plugin broker process ended unexpectedly. This failure is not fatal. Your application does not need to handle recovery for this event, but can use to collect information about the failure. + + + + + Indicates that a process of unspecified kind ended unexpectedly. Your application can use to collect information about the failure. + + + + + Indicates the status for printing. + + + + + Indicates that the print operation is succeeded. + + + + + Indicates that the printer is not available. + + + + + Indicates that the print operation is failed. + + + + + The orientation for printing, used by the property. + + + + + Print the page(s) in portrait orientation. + + + + + Print the page(s) in landscape orientation. + + + + + Specifies the media size for a print. + + + + + The default media size for a printer. + + + + + Indicate custom media size that is specific to the printer. + + + + + Specifies the duplex option for a print. + + + + + The default duplex for a printer. + + + + + Print on only one side of the sheet. + + + + + Print on both sides of the sheet, flipped along the long edge. + + + + + Print on both sides of the sheet, flipped along the short edge. + + + + + Specifies the print dialog kind. + + + + + Opens the browser print preview dialog. + + + + + Opens the system print dialog. + + + + + Specifies the color mode for a print. + + + + + The default color mode for a printer. + + + + + Indicate that the printed output will be in color. + + + + + Indicate that the printed output will be in shades of gray. + + + + + Specifies the collation for a print. + + + + + The default collation for a printer. + + + + + Indicate that the collation has been selected for the printed output. + + + + + Indicate that the collation has not been selected for the printed output. + + + + + Preferred color scheme for WebView2's associated with a profile. + + + + + Auto color scheme. + + + + + Light color scheme. + + + + + Dark color scheme. + + + + + Pointer event kind used by to convey the kind of pointer event being sent to WebView. + + + + + Corresponds to WM_POINTERACTIVATE. + + + + + Corresponds to WM_POINTERDOWN. + + + + + Corresponds to WM_POINTERENTER. + + + + + Corresponds to WM_POINTERLEAVE. + + + + + Corresponds to WM_POINTERUP. + + + + + Corresponds to WM_POINTERUPDATE. + + + + + Specifies the response to a permission request. + + + + + Specifies that the default browser behavior is used, which normally prompts users for decision. + + + + + Specifies that the permission request is granted. + + + + + Specifies that the permission request is denied. + + + + + Indicates the kind of a permission request. + + + + + Indicates an unknown permission. + + + + + Indicates permission to capture audio. + + + + + Indicates permission to capture video. + + + + + Indicates permission to access geolocation. + + + + + Indicates permission to send web notifications. Apps that would like to show notifications should handle and/or events and no browser permission prompt will be shown for notification requests. Note that push notifications are currently unavailable in WebView2. + + + + + Indicates permission to access generic sensor. Generic Sensor covers ambient-light-sensor, accelerometer, gyroscope, and magnetometer. + + + + + Indicates permission to read the system clipboard without a user gesture. + + + + + Indicates permission to automatically download multiple files. Permission is requested when multiple downloads are triggered in quick succession. + + + + + Indicates permission to read and write to files or folders on the device. Permission is requested when developers use the [File System Access API](https://developer.mozilla.org/docs/Web/API/File_System_Access_API) to show the file or folder picker to the end user, and then request "readwrite" permission for the user's selection. + + + + + Indicates permission to play audio and video automatically on sites. This permission affects the autoplay attribute and play method of the audio and video HTML elements, and the start method of the Web Audio API. See the [Autoplay guide for media and Web Audio APIs](https://developer.mozilla.org/docs/Web/Media/Autoplay_guide) for details. + + + + + Indicates permission to use fonts on the device. Permission is requested when developers use the [Local Font Access API](https://wicg.github.io/local-font-access/) to query the system fonts available for styling web content. + + + + + Indicates permission to send and receive system exclusive messages to/from MIDI (Musical Instrument Digital Interface) devices. Permission is requested when developers use the [Web MIDI API](https://developer.mozilla.org/docs/Web/API/Web_MIDI_API) to request access to system exclusive MIDI messages. + + + + + Indicates permission to open and place windows on the screen. Permission is requested when developers use the [Multi-Screen Window Placement API](https://www.w3.org/TR/window-placement/) to get screen details. + + + + + Specifies the PDF toolbar item types used for the . + + + + + No item. By default the equal to this value. + + + + + The save button on PDF toolbar. + + + + + The print button on PDF toolbar. + + + + + The save as button on PDF toolbar. + + + + + The zoom in button on PDF toolbar. + + + + + The zoom out button on PDF toolbar. + + + + + The rotate button on PDF toolbar. + + + + + The fit to width button on PDF toolbar. + + + + + The page view button on PDF toolbar. + + + + + The contents button on PDF toolbar. + + + + + The page number button on PDF toolbar. + + + + + The search button on PDF toolbar. + + + + + The full screen button on PDF toolbar. + + + + + The setting and more button on PDF toolbar. + + + + + Specifies the navigation kind of each navigation. + + + + + A navigation caused by CoreWebView2.Reload(), location.reload(), the end user using F5 or other UX, or other reload mechanisms to reload the current document without modifying the navigation history. + + + + + A navigation back or forward to a different entry in the session navigation history, like via CoreWebView2.Back(), location.back(), the end user pressing Alt+Left or other UX, or other mechanisms to navigate back or forward in the current session navigation history. + + + + + A navigation to another document, which can be caused by CoreWebView2.Navigate(),window.location.href = ..., or other WebView2 or DOM APIs that navigate to a new URI. + + + + + Specifies the reason for moving focus. + + + + + Specifies that the code is setting focus into WebView. + + + + + Specifies that the focus is moved due to Tab traversal forward. + + + + + Specifies that the focus is moved due to Tab traversal backward. + + + + + Mouse event virtual keys associated with a for . + + + + + No additional keys pressed. + + + + + Left mouse button is down, MK_LBUTTON. + + + + + Right mouse button is down, MK_RBUTTON. + + + + + Shift key is down, MK_SHIFT. + + + + + Ctrl key is down, MK_CONTROL. + + + + + Middle mouse button is down, MK_MBUTTON. + + + + + First X button is down, MK_XBUTTON1. + + + + + Second X button is down, MK_XBUTTON2. + + + + + Mouse event kind used by to convey the kind of mouse event being sent to WebView. + + + + + Mouse horizontal wheel scroll event, WM_MOUSEHWHEEL. + + + + + Left button double click mouse event, WM_LBUTTONDBLCLK. + + + + + Left button down mouse event, WM_LBUTTONDOWN. + + + + + Left button up mouse event, WM_LBUTTONUP. + + + + + Mouse leave event, WM_MOUSELEAVE. + + + + + Middle button double click mouse event, WM_MBUTTONDBLCLK. + + + + + Middle button down mouse event, WM_MBUTTONDOWN. + + + + + Middle button up mouse event, WM_MBUTTONUP. + + + + + Mouse move event, WM_MOUSEMOVE. + + + + + Right button double click mouse event, WM_RBUTTONDBLCLK. + + + + + Right button down mouse event, WM_RBUTTONDOWN. + + + + + Right button up mouse event, WM_RBUTTONUP. + + + + + Mouse wheel scroll event, WM_MOUSEWHEEL. + + + + + First or second X button double click mouse event, WM_XBUTTONDBLCLK. + + + + + First or second X button down mouse event, WM_XBUTTONDOWN. + + + + + First or second X button up mouse event, WM_XBUTTONUP. + + + + + R button down over non client area, WM_NCRBUTTONDOWN. + + + + + R button up over non client area, WM_NCRBUTTONUP. + + + + + Desired memory consumption level of a WebView. + + + + + Normal memory usage target level. + + + + + Low memory usage target level. Used for inactivate WebView for reduced memory consumption. + + + + + Specifies the key event kind that raises an event. + + + + + Specifies that the key event kind corresponds to window message WM_KEYDOWN. + + + + + Specifies that the key event kind corresponds to window message WM_KEYUP. + + + + + Specifies that the key event kind corresponds to window message WM_SYSKEYDOWN. + + + + + Specifies that the key event kind corresponds to window message WM_SYSKEYUP. + + + + + Kind of cross origin resource access allowed for host resources during download. + + + Note that other normal access checks like same origin DOM access check and [Content Security Policy](https://developer.mozilla.org/docs/Web/HTTP/CSP) still apply. + The following table illustrates the host resource cross origin access according to access context and CoreWebView2HostResourceAccessKind. + + + + Cross Origin Access Context + Deny + Allow + DenyCors + + + From DOM like src of img, script or iframe element + Deny + Allow + Allow + + + From Script like Fetch or XMLHttpRequest + Deny + Allow + Deny + + + + + + + All cross origin resource access is denied, including normal sub resource access as src of a script or image element. + + + + + All cross origin resource access is allowed, including accesses that are subject to Cross-Origin Resource Sharing(CORS) check. The behavior is similar to a web site sends back http header Access-Control-Allow-Origin: *. + + + + + Cross origin resource access is allowed for normal sub resource access like as src of a script or image element, while any access that subjects to CORS check will be denied. See [Cross-Origin Resource Sharing](https://developer.mozilla.org/docs/Web/HTTP/CORS) for more information. + + + + + The requested format to get the Favicon from . + + + + + Request the Favicon to be retrieved a Png Format. + + + + + Request the Favicon to be retrieved a Jpeg Format. + + + + + The state of the . + + + + + The download is in progress. + + + + + The connection with the file host was broken. The reason why a download was interrupted can accessed from . See for descriptions of the different kinds of interrupt reasons. Host can check whether an interrupted download can be resumed with . Once resumed, the download state is in progress. + + + + + The download completed successfully. + + + + + The reason why the was interrupted. + + + + + No interrupt reason. + + + + + Generic file error. + + + + + Access denied due to security restrictions. + + + + + Disk full. User should free some space or choose a different location to store the file. + + + + + Result file path with file name is too long. + + + + + File is too large for file system. + + + + + Microsoft Defender Smartscreen detected a virus in the file. + + + + + File was in use, too many files opened, or out of memory. + + + + + File blocked by local policy. + + + + + Security check failed unexpectedly. Microsoft Defender SmartScreen could not scan this file. + + + + + Seeking past the end of a file in opening a file, as part of resuming an interrupted download. The file did not exist or was not as large as expected. Partially downloaded file was truncated or deleted, and download will be restarted automatically. + + + + + Partial file did not match the expected hash and was deleted. Download will be restarted automatically. + + + + + Generic network error. User can retry the download manually. + + + + + Network operation timed out. + + + + + Network connection lost. User can retry the download manually. + + + + + Server has gone down. User can retry the download manually. + + + + + Network request invalid because original or redirected URI is invalid, has an unsupported scheme, or is disallowed by network policy. + + + + + Generic server error. User can retry the download manually. + + + + + Server does not support range requests. + + + + + Server does not have the requested data. + + + + + Server did not authorize access to resource. + + + + + Server certificate problem. + + + + + Server access forbidden. + + + + + Unexpected server response. Responding server may not be intended server. User can retry the download manually. + + + + + Server sent fewer bytes than the Content-Length header. Content-Length header may be invalid or connection may have closed. Download is treated as complete unless there are [strong validators](https://tools.ietf.org/html/rfc7232#section-2) present to interrupt the download. + + + + + Unexpected cross-origin redirect. + + + + + User canceled the download. + + + + + User shut down the WebView. Resuming downloads that were interrupted during shutdown is not yet supported. + + + + + User paused the download. + + + + + WebView crashed. + + + + + The default download dialog can be aligned to any of the WebView corners by setting the property. The default position is top-right corner. + + + + + The top-left corner of the WebView. + + + + + The top-right corner of the WebView. + + + + + The bottom-left corner of the WebView. + + + + + The bottom-right corner of the WebView. + + + + + Kind of cookie SameSite status used in the class. + + + These fields match those as specified in https://developer.mozilla.org/docs/Web/HTTP/Cookies#. + Learn more about SameSite cookies here: https://tools.ietf.org/html/draft-west-first-party-cookies-07 + + + + + None SameSite type. No restrictions on cross-site requests. + + + + + Lax SameSite type. The cookie will be sent with "same-site" requests, and with "cross-site" top level navigation. + + + + + Strict SameSite type. The cookie will only be sent along with "same-site" requests. + + + + + Indicates the kind of context for which the context menu was created for the property. This enum will always represent the active element that caused the context menu request. If there is a selection with multiple images, audio and text, for example, the element that the end user right clicks on within this selection will be the option represented by this enum. + + + + + Indicates that the context menu was created for the page without any additional content. + + + + + Indicates that the context menu was created for an image element. + + + + + Indicates that the context menu was created for selected text. + + + + + Indicates that the context menu was created for an audio element. + + + + + Indicates that the context menu was created for a video element. + + + + + Specifies the menu item kind for the property. + + + + + Specifies a command menu item kind. + + + + + Specifies a check box menu item kind. objects of this kind will need the property to determine current state of the check box. + + + + + Specifies a radio button menu item kind. objects of this kind will need the property to determine current state of the radio button. + + + + + Specifies a separator menu item kind. objects of this kind are used to signal a visual separator with no functionality. + + + + + Specifies a submenu menu item kind. objects of this kind will contain a collection of its children objects. + + + + + The kind of the . + + + + + Specifies smart card certificate. + + + + + Specifies PIN certificate. + + + + + Specifies other certificate. + + + + + Specifies the image format for the method. + + + + + Indicates that the PNG image format is used. + + + + + Indicates that the JPEG image format is used. + + + + + Indicates the kind of browsing data to clear. Or operations can be applied to create a mask representing multiple CoreWebView2BrowsingDataKinds. The resulting mask may be passed to or to clear the corresponding data. + + + + + Specifies file systems data. + + + + + Specifies data stored by the IndexedDB DOM feature. + + + + + Specifies data stored by the localStorage DOM API. + + + + + Specifies data stored by the Web SQL database DOM API. + + + + + Specifies data stored by the CacheStorage DOM API. + + + + + Specifies DOM storage data, now and future. This browsing data kind is inclusive of CoreWebView2BrowsingDataKinds.FileSystems, CoreWebView2BrowsingDataKinds.IndexedDb, CoreWebView2BrowsingDataKinds.WebSql, CoreWebView2BrowsingDataKinds.ServiceWorkers, CoreWebView2BrowsingDataKinds.CacheStorage, and some other data kinds not listed yet to keep consistent with [DOM-accessible storage](https://www.w3.org/TR/clear-site-data/#storage). + + + + + Specifies HTTP cookies data. + + + + + Specifies all site data, now and future. This browsing data kind is inclusive of CoreWebView2BrowsingDataKinds.AllDomStorage and CoreWebView2BrowsingDataKinds.Cookies. New site data types may be added to this data kind in the future. + + + + + Specifies disk cache. + + + + + Specifies download history data. + + + + + Specifies general autofill form data. This excludes password information and includes information like: names, street and email addresses, phone numbers, and arbitrary input. This also includes payment data. + + + + + Specifies password autosave data. + + + + + Specifies browsing history data. + + + + + Specifies settings data. + + + + + Specifies profile data that should be wiped to make it look like a new profile. This does not delete account-scoped data like passwords but will remove access to account-scoped data by signing the user out. Specifies all profile data, now and future. New profile data types may be added to this data kind in the future. This browsing data kind is inclusive of , , , , , , . + + + + + Specifies service workers registered for an origin, and clear will result in termination and deregistration of them. + + + + + Specifies the browser process exit kind used in . + + + + + Indicates that the browser process ended normally. + + + + + Indicates that the browser process ended unexpectedly. A event will also be raised to listening WebViews from the associated to the failed process. + + + + + Mode for how the property is interpreted in relation to the property. + + + + + property represents raw pixels. Physical size of WebView is not impacted by . + + + + + property represents logical pixels and the property is used to get the physical size of the WebView. + + + + + Contains the information packed into the LPARAM sent to a Win32 key event. + + + For more information about WM_KEYDOWN, navigate to [WM_KEYDOWN message](/windows/win32/inputdev/wm-keydown). + + + + + Specifies the repeat count for the current message. + + + + + Specifies the scan code. + + + + + Indicates that the key is an extended key. + + + + + Indicates that a menu key is held down (context code). + + + + + Indicates that the key was held down. + + + + + Indicates that the key was released. + + + + + A value representing RGBA color (Red, Green, Blue, Alpha) for WebView2. + + + Each component takes a value from 0 to 255, with 0 being no intensity and 255 being the highest intensity. + + + + + Specifies the intensity of the Alpha ie. opacity value. 0 is transparent, 255 is opaque. + + + + + Specifies the intensity of the Red color. + + + + + Specifies the intensity of the Green color. + + + + + Specifies the intensity of the Blue color. + + + + + The window features for a WebView popup window. + + + The fields match the windowFeatures passed to window.open() as specified in [Window features](https://developer.mozilla.org/docs/Web/API/Window/open#Window_features) on MDN. There is no requirement for you to respect the values. If your app does not have corresponding UI features (for example, no toolbar) or if all instance of WebView are opened in tabs and do not have distinct size or positions, then your app does not respect the values. You may want to respect values, but perhaps only some apply to the UI of you app. Accordingly, you may respect all, some, or none of the properties as appropriate for your app. For all numeric properties, if the value that is passed to window.open() is outside the range of an uint, the resulting value is uint.MaxValue. If you are not able to parse the value an integer, it is considered 0. If the value is a floating point value, it is rounded down to an integer. + + + + + Indicates whether the left and top values are specified. + + + + + Indicates whether the height and width values are specified. + + + + + Gets the left position of the window. Ignored if is false. + + + + + Gets the top position of the window. Ignored if is false. + + + + + Gets the height of the window. Ignored if is false. + + + + + Gets the width of the window. Ignored if is false. + + + + + Indicates that the menu bar is displayed. + + + + + Indicates that the status bar is displayed. + + + + + Indicates that the browser toolbar is displayed. + + + + + Indicates that the scroll bars are displayed. + + + + + View of the HTTP representation for a web resource response. + + + The properties of this object are not mutable. This response view is used with the event. + + + + + Gets the HTTP response headers as received. + + + + + Gets the HTTP response status code. + + + + + Gets the HTTP response reason phrase. + + + + + Gets the response content stream asynchronously. + + The content failed to load. + + A null stream means no content was found. Note content (if any) for redirect responses is ignored. + This method returns null if content size is more tha 123MB or for navigations that become downloads or if response is downloadable content type (e.g., application/octet-stream). See event to handle the response. + If this method is being called again before a first call has completed, it will complete at the same time all prior calls do. + If this method is being called after a first call has completed, it will return immediately (asynchronously). + + + :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="WebResourceResponseReceived"::: + + + + + Event args for the event. + + + + + Gets the request object for the web resource, as committed. + + + This includes headers added by the network stack that were not be included during the associated event, such as Authentication headers. Modifications to this object have no effect on how the request is processed as it has already been sent. + + + + + Gets view of the response object received for the web resource. + + + + + An HTTP response used with the event. + + + + + Gets HTTP response content as stream. + + + Stream must have all the content data available by the time the event deferral of this response is completed. Stream should be agile or be created from a background thread to prevent performance impact to the UI thread. null means no content data. + When providing the response data, you should consider relevant HTTP request headers just like an HTTP server would do. For example, if the request was for a video resource in a HTML video element, the request may contain the [Range](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Range) header to request only a part of the video that is streaming. In this case, your response stream should be only the portion of the video specified by the range HTTP request headers and you should set the appropriate [Content-Range](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Range) header in the response. + + + + + + Gets the overridden HTTP response headers. + + + + + Gets or sets the HTTP response status code. + + + + + Gets or sets the HTTP response reason phrase. + + + + + Event args for the event. + + + + + Gets the web resource request. + + + The request object may be missing some headers that are added by network stack at a later time. + + + + + Gets or sets the object. + + + If this object is set, the event will be completed with this Response. + An empty object can be created with and then modified to construct the Response. + + + + + Gets the web resource request context. + + + + + Gets a object and put the event into a deferred state. + + + Use this to the event at a later time. + + + + + An HTTP request used with the event. + + + + + Gets or sets the request URI. + + + + + Gets or sets the HTTP request method. + + + + + Gets or sets the HTTP request message body as stream. + + + POST data should be here. If a stream is set, which overrides the message body, the stream must have all the content data available by the time the event deferral of this request is completed. Stream should be agile or be created from a background STA to prevent performance impact to the UI thread. null means no content data. + + + + + + Gets the mutable HTTP request headers. + + + + + Event args for the event. + + + Event args for the event. + + + + + Gets the URI of the document that sent this web message. + + + + + Gets the message posted from the WebView content to the host converted to a JSON string. + + + Run this operation to communicate using JavaScript objects. + + + For example, the following postMessage runs result in the following WebMessageAsJson values: + + + postMessage({'a': 'b'}) "{\"a\": \"b\"}" + postMessage(1.2) "1.2" + postMessage('example') "\"example\"" + + + + + + Gets the message posted from the WebView content to the host as a string. + + The message posted from the WebView content to the host. + The message posted is some other kind of JavaScript type. + + Run this operation to communicate using simple strings. + + + For example the following postMessage runs result in the following values returned by TryWebMessageAsString: + + + postMessage({'a': 'b'}) ArgumentException + postMessage(1.2) ArgumentException + postMessage('example') "example" + + + + + + Additional received WebMessage objects. + + + To pass AdditionalObjects via WebMessage to the app, use the chrome.webview.postMessageWithAdditionalObjects content API. Any DOM object type that can be natively representable that has been passed in to additionalObjects parameter will be accessible here. Currently a WebMessage object can be the type. + Entries in the collection can be nullptr if null or undefined was passed. Cast the object to the native type to access its specific properties. + + object additionalObject = eventArgs.AdditionalObjects[0]; + if (additionalObject is CoreWebView2File) + { + CoreWebView2File file = additionalObject as CoreWebView2File; + } else if ... + + + + + + Event args for the event. + + + + + true if the page being navigated to is a new document. + + + + + Defines properties that enable, disable, or modify WebView features. + + + Changes to and will take effect immediately, while other setting changes made after event do not apply until the next top-level navigation. + + + Defines properties that enable, disable, or modify WebView features. + + + Changes to and will take effect immediately, while other setting changes made after event do not apply until the next top-level navigation. + + + Defines properties that enable, disable, or modify WebView features. + + + Changes to and will take effect immediately, while other setting changes made after event do not apply until the next top-level navigation. + + + Defines properties that enable, disable, or modify WebView features. + + + Changes to and will take effect immediately, while other setting changes made after event do not apply until the next top-level navigation. + + + Defines properties that enable, disable, or modify WebView features. + + + Changes to and will take effect immediately, while other setting changes made after event do not apply until the next top-level navigation. + + + Defines properties that enable, disable, or modify WebView features. + + + Changes to and will take effect immediately, while other setting changes made after event do not apply until the next top-level navigation. + + + Defines properties that enable, disable, or modify WebView features. + + + Changes to and will take effect immediately, while other setting changes made after event do not apply until the next top-level navigation. + + + Defines properties that enable, disable, or modify WebView features. + + + Changes to and will take effect immediately, while other setting changes made after event do not apply until the next top-level navigation. + + + + + Determines whether running JavaScript is enabled in all future navigations in the WebView. + + + This only affects scripts in the document. Scripts injected with runs even if script is disabled. The default value is true. + + + + + Determines whether communication from the host to the top-level HTML document of the WebView is allowed. + + + This is used when loading a new HTML document. If set to true, communication from the host to the top-level HTML document of the WebView is allowed using , , and message event of window.chrome.webview. Communication from the top-level HTML document of the WebView to the host is allowed using window.chrome.webview.postMessage function and the event. If set to false, then communication is disallowed. and fail and window.chrome.webview.postMessage fails by throwing an instance of an Error object. The default value is true. + + + + + + + + Determines whether WebView renders the default JavaScript dialog box. + + + This is used when loading a new HTML document. If set to false, WebView does not render the default JavaScript dialog box (specifically those displayed by the JavaScript alert, confirm, prompt functions and beforeunload event). Instead, WebView raises event that contains all of the information for the dialog and allow the host app to show a custom UI. The default value is true. + + + + + + Determines whether the status bar is displayed. + + + The status bar is usually displayed in the lower left of the WebView and shows things such as the URI of a link when the user hovers over it and other information. The default value is true. The status bar UI can be altered by web content and should not be considered secure. + + + + + Determines whether the user is able to use the context menu or keyboard shortcuts to open the DevTools window. + + + The default value is true. + + + + + Determines whether the default context menus are shown to the user in WebView. + + + The default value is true. + + + + + Determines whether host objects are accessible from the page in WebView. + + + The default value is true. + + + + + Determines whether the user is able to impact the zoom of the WebView. + + + When disabled, the user is not able to zoom using Ctrl++, Ctr+-, or Ctrl+mouse wheel, but the zoom is set using property. The default value is true. + + + + + Determines whether to disable built in error page for navigation failure and render process failure. + + + When disabled, blank page is displayed when related error happens. The default value is true. + + + + + Determines WebView2's User Agent. + + + The default value is the default User Agent of the Edge browser. This property may be overridden if the User-Agent header is set in a request. If the parameter is empty the User Agent will not be updated and the current User Agent will remain. + + + :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="SetUserAgent"::: + + + + + Determines whether browser-specific accelerator keys are enabled. + + + When this setting is set to false, it disables all accelerator keys that access + features specific to a web browser, including but not limited to: + + + + Ctrl+F and F3 for Find on Page + + + Ctrl+P for Print + + + Ctrl+R and F5 for Reload + + + Ctrl+Plus and Ctrl+Minus for zooming + + + Ctrl+Shift-C and F12 for DevTools + + + Special keys for browser functions, such as Back, Forward, and Search + + + + It does not disable accelerator keys related to movement and text editing, such + as: + + + + Home, End, Page Up, and Page Down + + + Ctrl+X, Ctrl+C, Ctrl+V + + + Ctrl+A for Select All + + + Ctrl+Z for Undo + + + + Those accelerator keys will always be enabled unless they are handled in the event. + + This setting has no effect on the event. The event + will be fired for all accelerator keys, whether they are enabled or not. + + The default value of AreBrowserAcceleratorKeysEnabled is true. + + + :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="AllowWebViewShortcutKeys"::: + + + + + Determines whether password information will be autosaved. + + + When disabled, no new password data is saved and no Save/Update Password prompts are displayed. However, if there was password data already saved before disabling this setting, then that password information is auto-populated, suggestions are shown and clicking on one will populate the fields. + When enabled, password information is auto-populated, suggestions are shown and clicking on one will populate the fields, new data is saved, and a Save/Update Password prompt is displayed. The default value is false. It will apply immediately after setting. + This property has the same value as , and changing one will change the other. All WebView2s with the same will share the same value for this property, so for the WebView2s with the same profile, their and will always have the same value. + + + :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="PasswordAutosaveEnabled"::: + + + + + Determines whether general form information will be saved and autofilled. + + + General autofill information includes information like names, street and email addresses, phone numbers, and arbitrary input. This excludes password information. When disabled, no suggestions appear, and no new information is saved. + When enabled, information is saved, suggestions appear, and clicking on one will populate the form fields. The default value is true. It will apply immediately after setting. + This property has the same value as , and changing one will change the other. And all WebView2s that created with the same will share the same value for this property, so for the WebView2s with the same profile, their and will always have the same value. + + + :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="GeneralAutofillEnabled"::: + + + + + + Determines the ability of the end users to use pinching motions on touch input enabled devices to scale the web content in the WebView2. + + + When disabled, the end users cannot use pinching motions on touch input enabled devices to scale the web content in the WebView2. The default value is true. + Pinch-zoom, referred to as "Page Scale" zoom, is performed as a post-rendering step, it changes the page scale factor property and scales the surface the web page is rendered onto when user performs a pinch zooming action. It does not change the layout but rather changes the viewport and clips the web content, the content outside of the viewport isn't visible onscreen and users can't reach this content using mouse. This API only affects the Page Scale zoom and has no effect on the existing browser zoom properties ( and ) or other end user mechanisms for zooming. + + + :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="TogglePinchZoomEnabled"::: + + + + + Determines whether the end user to use swiping gesture on touch input enabled devices to navigate in WebView2. + + + Swiping gesture navigation on touch screen includes: + + + Swipe left/right (swipe horizontally) to navigate to previous/next page in navigation history. + + + Pull to refresh (swipe vertically) the current page. (This feature is currently disabled by default in the browser, to enable in WebView2, set property with --pull-to-refresh switch). + + + It defaults to true. When set to false, the end user cannot swipe to navigate or pull to refresh. This API only affects the overscrolling navigation functionality and has no effect on the scrolling interaction used to explore the web content shown in WebView2. + + + :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="ToggleSwipeNavigationEnabled"::: + + + + + Used to customize the PDF toolbar items. + + + By default, it is and so it displays all of the items. + Changes to this property apply to all CoreWebView2s in the same environment and using the same profile. + Changes to this setting apply only after the next navigation. + + + :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="ToggleHiddenPdfToolbarItems"::: + + + + + Determines whether SmartScreen is enabled when visiting web pages + + + The default value is true. + IsReputationCheckingRequired is used to control whether SmartScreen is enabled or not. + SmartScreen is enabled or disabled for all CoreWebView2s using the same user data folder. + If CoreWebView2Setting.IsReputationCheckingRequired is true for any CoreWebView2 using the same user data folder, then SmartScreen is enabled. If CoreWebView2Setting.IsReputationCheckingRequired is false for all CoreWebView2 using the same user data folder, then SmartScreen is disabled. + When it is changed, the change will be applied to all WebViews using the same user data folder on the next navigation or download. + If the newly created CoreWebview2 does not set SmartScreen to false, when navigating(Such as Navigate(), LoadDataUrl(), ExecuteScript(), etc.), the default value will be applied to all CoreWebview2 using the same user data folder. + SmartScreen of WebView2 apps can be controlled by Windows system setting "SmartScreen for Microsoft Edge", specially, for WebView2 in Windows Store apps, SmartScreen is controlled by another Windows system setting "SmartScreen for Microsoft Store apps". When the Windows setting is enabled, the SmartScreen operates under the control of the `IsReputationCheckingRequired`. When the Windows setting is disabled, the SmartScreen will be disabled regardless of the `IsReputationCheckingRequired` value set in WebView2 apps. In other words, under this circumstance the value of `IsReputationCheckingRequired` will be saved but overridden by system setting. Upon re-enabling the Windows setting, the CoreWebview2 will reference the `IsReputationCheckingRequired` to determine the SmartScreen status. + + + + + Event args for the event. + + + + + The TLS error code for the invalid certificate. + + + + + URI associated with the request for the invalid certificate. + + + + + Returns the . + + + + + The action of the server certificate error detection. + + + The default value is . + + + + + Gets a object. + + + Use this to the event at a later time. + + + + + Event args for the event. + + + + + Gets the URI of the page that requested the dialog box. + + + + + Gets the kind of JavaScript dialog box. + + + + + + Gets the message of the dialog box. + + + From JavaScript this is the first parameter passed to alert, confirm, and prompt and is empty for beforeunload. + + + + + Gets the default value to use for the result of the prompt JavaScript function. + + + This is the second parameter passed to the JavaScript prompt dialog. + + + + + Gets or sets the return value from the JavaScript prompt function if is run. + + + This value is ignored for s other than . If is not run, this value is ignored and false is returned from prompt. + + + + + + Responds with **OK** to confirm, prompt, and beforeunload dialogs. Not run this method to indicate cancel. + + + From JavaScript, this means that the confirm function and beforeunload event returns true if Accept is run. And for the prompt function it returns the value of if Accept is run and otherwise returns false. + + + + + Gets a object. + + + Use this to the event at a later time. + + + + + Provides a set of properties for a process list in the . + + + + + Get the process id of the process. + + + + + Get the kind of the process. + + + + + Event args for the event. + + + Event args for the event. + + + + + Gets the kind of process failure that has occurred. + + + ProcessFailedKind is a combination of process kind (for example, browser, renderer, gpu) and failure (exit, unresponsiveness). Renderer processes are further divided in main frame renderer (RenderProcessExited, RenderProcessUnresponsive) and subframe renderer (FrameRenderProcessExited). To learn about the conditions under which each failure kind occurs, see . + + + + + + Gets the reason for the process failure. + + + Some of the reasons are only applicable to specific values of , and the following values always return the indicated reason value: + + + + ProcessFailedKind + Reason + + + BrowserProcessExited + + Unexpected + + + + RenderProcessUnresponsive + + Unresponsive + + + + + For other values, the reason may be any of the reason values. To learn about what these values mean, see . + + + + + + Gets the exit code of the failing process, for telemetry purposes. + + + The exit code is always 1 when is , and STILL_ACTIVE(259) when is . + + + + + + Gets a description of the failing process, assigned by the WebView2 Runtime. + + + This is a technical English term appropriate for logging or development purposes, and not localized for the end user. It applies to utility processes (for example, "Audio Service", "Video Capture") and plugin processes (for example, "Flash"). The returned string is empty if the WebView2 Runtime did not assign a description to the process. + + + + + Gets the collection of s for frames in the that were being rendered by the failed process. + + + The content in these frames is replaced with an error page. + This is only available when is ; the returned collection is empty for all other process failure kinds, including the case in which the failed process was the renderer for the main frame and subframes within it, for which the failure kind is . + + + + + Settings used by the method. + + + Settings used by the method. + + + + + The orientation can be portrait or landscape. + + + The default orientation is portrait. See . + + + + + The scale factor is a value between 0.1 and 2.0. + + + The default is 1.0. If an invalid value is provided, the current value is not changed and an ArgumentException is thrown. + + + + + The page width in inches. + + + The default width is 8.5 inches. If the provided page width is less than or equal to zero, the current value is not changed and an ArgumentException is thrown. + + + + + The page height in inches. + + + The default height is 11 inches. If the provided page height is less than or equal to zero, the current value is not changed and an ArgumentException is thrown. + + + + + The top margin in inches. + + + The default is 1 cm, or ~0.4 inches. A margin cannot be less than zero. If an invalid value is provided, the current value is not changed and an ArgumentException is thrown. + + + + + The bottom margin in inches. + + + The default is 1 cm, or ~0.4 inches. A margin cannot be less than zero. If an invalid value is provided, the current value is not changed and an ArgumentException is thrown. + + + + + The left margin in inches. + + + The default is 1 cm, or ~0.4 inches. A margin cannot be less than zero. If an invalid value is provided, the current value is not changed and an ArgumentException is thrown. + + + + + The right margin in inches. + + + The default is 1 cm, or ~0.4 inches. A margin cannot be less than zero. If an invalid value is provided, the current value is not changed and an ArgumentException is thrown. + + + + + true if background colors and images should be printed. + + + The default value is false. + + + + + true if only the current end user's selection of HTML in the document should be printed. + + + The default value is false. + + + + + true if header and footer should be printed. + + + The default value is false. The header consists of the date and time of printing, and the title of the page. The footer consists of the URI and page number. The height of the header and footer is 0.5 cm, or ~0.2 inches. + + + + + The title in the header if is true. + + + The default value is the title of the current document. If an empty string or null value is provided, no title is shown in the header. + + + + + The URI in the footer if is true. + + + The default value is the current URI. If an empty string or null value is provided, no URI is shown in the footer. + + + + + Page range to print. Defaults to empty string, which means print all pages. + + + The PageRanges property is a list of page ranges specifying one or more pages that should be printed separated by commas. Any whitespace between page ranges is ignored. + A valid page range is either a single integer identifying the page to print, or a range in the form [start page]-[last page] where start page and last page are integers identifying the first and last inclusive pages respectively to print. + Every page identifier is an integer greater than 0 unless wildcards are used (see below examples). + The first page is 1. + + In a page range of the form [start page]-[last page] the start page number must be larger than 0 and less than or equal to the document's total page count. + If the start page is not present, then 1 is used as the start page. + The last page must be larger than the start page. + If the last page is not present, then the document total page count is used as the last page. + + Repeating a page does not print it multiple times. To print multiple times, use the property. + + The pages are always printed in ascending order, even if specified in non-ascending order. + + If page range is not valid or if a page is greater than document total page count, ArgumentException is thrown. + + The following examples assume a document with 20 total pages. + + + + Example + Result + Notes + + + "2" + Page 2 + + + + "1-4, 9, 3-6, 10, 11" + Pages 1-6, 9-11 + + + + "1-4, -6" + Pages 1-6 + The "-6" is interpreted as "1-6". + + + "2-" + Pages 2-20 + The "2-" is interpreted as "pages 2 to the end of the document". + + + "4-2, 11, -6" + Invalid + "4-2" is an invalid range. + + + "-" + Pages 1-20 + The "-" is interpreted as "page 1 to the end of the document". + + + "1-4dsf, 11" + Invalid + + + + "2-2" + Page 2 + + + + + + + + Prints multiple pages of a document on a single piece of paper. Choose from 1, 2, 4, 6, 9 or 16. + + + The default value is 1. + + If an invalid value is provided, ArgumentException is thrown. + + Below examples shows print output for PagesPerSide and Duplex. + + + + PagesPerSide + Total pages + Two-sided printing + Result + + + 1 + 1 + - + 1 page on the front side. + + + 2 + 1 + Yes + 1 page on the front side. + + + 2 + 4 + - + 2 pages on the first paper and 2 pages on the next paper. + + + 2 + 4 + Yes + 2 pages on the front side and 2 pages on back side. + + + 4 + 4 + Yes + 4 pages on the front side. + + + 4 + 8 + Yes + 4 pages on the front side and 4 pages on the back side. + + + + + + + Number of copies to print. Minimum value is 1 and the maximum copies count is 999. + + + The default value is 1. + + + + + Printer collation. + + + See for descriptions of collation. The default value is . + + Printing uses default value of printer's collation if an invalid value is provided for the specific printer. + + This value is ignored in method. + + + + + Printer color mode. + + + See for descriptions of color modes. The default value is . + + Printing uses default value of printer supported color if an invalid value is provided for the specific printer. + + + + + Printer duplex settings. + + + See for descriptions of duplex. The default value is . + + Printing uses default value of printer's duplex if an invalid value is provided for the specific printer. + + This value is ignored in method. + + + + + Printer media size. + + + See for descriptions of media size. The default value is . + + If media size is , you should set the and . + + Printing uses default value of printer supported media size if an invalid value is provided for the specific printer. + + This value is ignored in method. + + + + + The name of the printer to use. + + + Defaults to empty string. If the printer name is empty string or null, then it prints to the default printer on the user OS. + + If provided printer name doesn't match with the name of any installed printers on the user OS, the method returns with . + + Use [PrintCapabilities](/dotnet/api/system.printing.printcapabilities?view=windowsdesktop-6.0) class to enumerate available printers. + + This value is ignored in method. + + + + + This mostly represents a combined win32 POINTER_INFO, POINTER_TOUCH_INFO, and POINTER_PEN_INFO object. + + + + + Gets or sets the PointerKind of the pointer event. + + + This corresponds to the pointerKind property of the POINTER_INFO struct. The values are defined by the POINTER_INPUT_KIND enum in the Windows SDK (_winuser.h_). Supports PT_PEN and PT_TOUCH. + + + + + Gets or sets the PointerId of the pointer event. + + + This corresponds to the pointerId property of the POINTER_INFO struct as defined in the Windows SDK (_winuser.h_). + + + + + Gets or sets the FrameID of the pointer event. + + + This corresponds to the frameId property of the POINTER_INFO struct as defined in the Windows SDK (_winuser.h_). + + + + + Gets or sets the PointerFlags of the pointer event. + + + This corresponds to the pointerFlags property of the POINTER_INFO struct. The values are defined by the POINTER_FLAGS constants in the Windows SDK (_winuser.h_). + + + + + Gets or sets the PointerDeviceRect of the sourceDevice property of the POINTER_INFO struct as defined in the Windows SDK (_winuser.h_). + + + + + Gets or sets the DisplayRect of the sourceDevice property of the POINTER_INFO struct as defined in the Windows SDK (_winuser.h_). + + + + + Gets or sets the PixelLocation of the pointer event. + + + This corresponds to the ptPixelLocation property of the POINTER_INFO struct as defined in the Windows SDK (_winuser.h_). + + + + + Gets or sets the HimetricLocation of the pointer event. + + + This corresponds to the ptHimetricLocation property of the POINTER_INFO struct as defined in the Windows SDK (_winuser.h_). + + + + + Gets or sets the PixelLocationRaw of the pointer event. + + + This corresponds to the ptPixelLocationRaw property of the POINTER_INFO struct as defined in the Windows SDK (_winuser.h_). + + + + + Gets or sets the HimetricLocationRaw of the pointer event. + + + This corresponds to the ptHimetricLocationRaw property of the POINTER_INFO struct as defined in the Windows SDK (_winuser.h_). + + + + + Gets or sets the Time of the pointer event. + + + This corresponds to the dwTime property of the POINTER_INFO struct as defined in the Windows SDK (_winuser.h_). + + + + + Gets or sets the HistoryCount of the pointer event. + + + This corresponds to the historyCount property of the POINTER_INFO struct as defined in the Windows SDK (_winuser.h_). + + + + + Gets or sets the InputData of the pointer event. + + + This corresponds to the InputData property of the POINTER_INFO struct as defined in the Windows SDK (_winuser.h_). + + + + + Gets or sets the KeyStates of the pointer event. + + + This corresponds to the dwKeyStates property of the POINTER_INFO struct as defined in the Windows SDK (_winuser.h_). + + + + + Gets or sets the PerformanceCount of the pointer event. + + + This corresponds to the PerformanceCount property of the POINTER_INFO struct as defined in the Windows SDK (_winuser.h_). + + + + + Gets or sets the ButtonChangeKind of the pointer event. + + + This corresponds to the ButtonChangeKind property of the POINTER_INFO struct. The values are defined by the POINTER_BUTTON_CHANGE_KIND enum in the Windows SDK (_winuser.h_). + + + + + Gets or sets the PenFlags of the pointer event. + + + This corresponds to the penFlags property of the POINTER_PEN_INFO struct. The values are defined by the PEN_FLAGS constants in the Windows SDK (_winuser.h_). + + + + + Gets or sets the PenMask of the pointer event. + + + This corresponds to the penMask property of the POINTER_PEN_INFO struct. The values are defined by the PEN_MASK constants in the Windows SDK (_winuser.h_). + + + + + Gets or sets the PenPressure of the pointer event. + + + This corresponds to the pressure property of the POINTER_PEN_INFO struct as defined in the Windows SDK (_winuser.h_). + + + + + Gets or sets the PenRotation of the pointer event. + + + This corresponds to the rotation property of the POINTER_PEN_INFO struct as defined in the Windows SDK (_winuser.h_). + + + + + Gets or sets the PenTiltX of the pointer event. + + + This corresponds to the tiltX property of the POINTER_PEN_INFO struct as defined in the Windows SDK (_winuser.h_). + + + + + Gets or sets the PenTiltY of the pointer event. + + + This corresponds to the tiltY property of the POINTER_PEN_INFO struct as defined in the Windows SDK (_winuser.h_). + + + + + Gets or sets the TouchFlags of the pointer event. + + + This corresponds to the touchFlags property of the POINTER_TOUCH_INFO struct. The values are defined by the TOUCH_FLAGS constants in the Windows SDK (_winuser.h_). + + + + + Gets or sets the TouchMask of the pointer event. + + + This corresponds to the touchMask property of the POINTER_TOUCH_INFO struct. The values are defined by the TOUCH_MASK constants in the Windows SDK (_winuser.h_). + + + + + Gets or sets the TouchContact of the pointer event. + + + This corresponds to the rcContact property of the POINTER_TOUCH_INFO struct as defined in the Windows SDK (_winuser.h_). + + + + + Gets or sets the TouchContactRaw of the pointer event. + + + This corresponds to the rcContactRaw property of the POINTER_TOUCH_INFO struct as defined in the Windows SDK (_winuser.h_). + + + + + Gets or sets the TouchOrientation of the pointer event. + + + This corresponds to the orientation property of the POINTER_TOUCH_INFO struct as defined in the Windows SDK (_winuser.h_). + + + + + Gets or sets the TouchPressure of the pointer event. + + + This corresponds to the pressure property of the POINTER_TOUCH_INFO struct as defined in the Windows SDK (_winuser.h_). + + + + + Provides a set of properties for a permission setting. + + + + + The kind of the permission setting. + + + + + The origin of the permission setting. + + + + + The state of the permission setting. + + + + + + Event args for the event. + + + Event args for the event. + + + Event args for the event. + + + + + Gets the origin of the web content that requests the permission. + + + + + Gets the kind of the permission that is requested. + + + + + true when the permission request was initiated through a user gesture such as clicking an anchor tag with target. + + + Being initiated through a user gesture does not mean that user intended to access the associated resource. + + + + + Gets or sets the status of a permission request. For example, whether the request is granted. + + + The default value is . + + + + + Gets a object. + + + Use the deferral object to make the permission decision at a later time. The deferral only applies to the current request, and does not prevent the PermissionRequested event from getting raised for new requests. However, for some permission kinds the WebView will avoid creating a new request if there is a pending request of the same kind. + + + + + The host may set this flag to TRUE to prevent the PermissionRequested event from firing on the CoreWebView2 as well. + + By default, both the PermissionRequested on the CoreWebView2Frame and CoreWebView2 will be fired. + + + + Set the SavesInProfile property to FALSE to not persist the state beyond the current request, and to continue to receive PermissionRequested events for this origin and permission kind. + + + The permission state set from the PermissionRequested event is saved in the profile by default; it is persisted across sessions and becomes the new default behavior for future PermissionRequested events. Browser heuristics can affect whether the event continues to be raised when the state is persisted. + + + + + Event args for the event. + + + Event args for the event. + + + Event args for the event. + + + + + Gets the target uri of the new window request. + + + + + Gets the new window or sets a WebView as a result of the new window requested. + + + Provides a WebView as the target for a window.open() from inside the requesting WebView. If this is set, the top-level window of this WebView is returned as the opened [WindowProxy](https://developer.mozilla.org/docs/glossary/windowproxy) to the opener script. If this is not set, then is checked to determine behavior for the . + The methods which should affect the new web contents like has to be called and completed before setting NewWindow. Other methods which should affect the new web contents like have to be called after setting NewWindow. It is best not to use before setting NewWindow, otherwise it may not work for later added scripts. + WebView provided in the NewWindow property must be on the same as the opener WebView and cannot be navigated. Changes to settings should be made before setting NewWindow to ensure that those settings take effect for the newly setup WebView. The new WebView must have the same profile as the opener WebView. + + + + + Indicates whether the event is handled by host. + + + If this is false and no is set, the WebView opens a popup window and returns the opened WindowProxy to the opener script. Note that in this case, there is no avenue to control the popup window from the app. If set to true and no is set for window.open(), the opened proxy is for a dummy window object, but this window does not load and is immediately closed. The default value is false. + + + + + true when the new window request was initiated through a user gesture such as selecting an anchor tag with target. + + + The Microsoft Edge popup blocker is disabled for WebView so the app is able to use this flag to block non-user initiated popups. + + + + + Gets the window features specified by the window.open() call. These features should be considered for positioning and sizing of new WebView windows. + + + + + Gets a object and put the event into a deferred state. + + + Use this to the window open request at a later time. While this event is deferred the opener window returns a WindowProxy to an un-navigated window, which navigates when the deferral is complete. + + + + + Gets the name of the new window. + + + This window can be created via window.open(url, windowName), where the windowName parameter corresponds to Name property. + If no windowName is passed to window.open, then the Name property will be set to an empty string. Additionally, if window is opened through other means, such as <a target="windowName"> or <iframe name="windowName">, then the Name property will be set accordingly. In the case of target=_blank, the Name property will be an empty string. + Opening a window via Ctrl+clicking a link would result in the Name property being set to an empty string. + + + + + The frame info of the frame where the new window request originated. + + + The OriginalSourceFrameInfo is a snapshot of frame information at the time when the new window was requested. See for details on frame properties. + + + + + Event args for the event. + + + Event args for the event. + + + Event args for the event. + + + + + Gets the uri of the requested navigation. + + + + + true when the new window request was initiated through a user gesture. + + + Examples of user initiated requests are: + - Selecting an anchor tag with target + - Programmatic window open from a script that directly run as a result of user interaction such as via onclick handlers. + Non-user initiated requests are programmatic window opens from a script that are not directly triggered by user interaction, such as those that run while loading a new page or via timers. + The Microsoft Edge popup blocker is disabled for WebView so the app is able to use this flag to block non-user initiated popups. + + + + + true when the navigation is redirected. + + + + + Gets the HTTP request headers for the navigation. + + + Note, you are not able to modify the HTTP request headers in a event. + + + + + + Determines whether to cancel the navigation. + + + If set to true, the navigation is no longer present and the content of the current page is intact. For performance reasons, GET HTTP requests may happen, while the host is responding. You may set cookies and use part of a request for the navigation. Cancellation for navigation to about:blank or frame navigation to srcdoc is not supported and ignored. + + + + + Gets the ID of the navigation. + + + + + Additional allowed frame ancestors set by the host app. + + + The app may set this property to allow a frame to be embedded by additional ancestors besides what is allowed by http header [X-Frame-Options](https://developer.mozilla.org/docs/Web/HTTP/Headers/X-Frame-Options) and [Content-Security-Policy frame-ancestors directive](https://developer.mozilla.org/docs/Web/HTTP/Headers/Content-Security-Policy/frame-ancestors). + If set, a frame ancestor is allowed if it is allowed by the additional allowed frame ancestors or original http header from the site. + Whether an ancestor is allowed by the additional allowed frame ancestors is done the same way as if the site provided it as the source list of the Content-Security-Policy frame-ancestors directive. + For example, if https://example.com and https://www.example.com are the origins of the top page and intermediate iframes that embed a nested site-embedding iframe, and you fully trust those origins, you should set this property to https://example.com https://www.example.com. + + This property gives the app the ability to use iframe to embed sites that otherwise could not be embedded in an iframe in trusted app pages. + This could potentially subject the embedded sites to [Clickjacking](https://wikipedia.org/wiki/Clickjacking) attack from the code running in the embedding web page. Therefore, you should only set this property with origins of fully trusted embedding page and any intermediate iframes. + Whenever possible, you should use the list of specific origins of the top and intermediate frames instead of wildcard characters for this property. + This API is to provide limited support for app scenarios that used to be supported by <webview> element in other solutions like JavaScript UWP apps and Electron. + You should limit the usage of this property to trusted pages, and specific navigation target url, by checking the , and . + + This property is ignored for top level document navigation. + + + + + Gets the navigation kind of the navigation. + + + + + Event args for the event. + + + Event args for the event. + + + + + true when the navigation is successful; false for a navigation that ended up in an error page (failures due to no network, DNS lookup failure, HTTP server responds with 4xx). Note that WebView2 will report the navigation as 'unsuccessful' if the load for the navigation did not reach the expected completion for any reason. Such reasons include potentially catastrophic issues such network and certificate issues, but can also be the result of intended actions such as the app canceling a navigation or navigating away before the original navigation completed. Applications should not just rely on this flag, but also consider the reported WebErrorStatus to determine whether the failure is indeed catastrophic in their context. + + + WebErrorStatuses that may indicate a non-catastrophic failure include: + + + + + + + + + + + + + + This may also be false for additional scenarios such as window.stop() run on navigated page. + + + + + Gets the error code if the navigation failed. + + + + + Gets the ID of the navigation. + + + + + The HTTP status code of the navigation if it involved an HTTP request. For instance, this will usually be 200 if the request was successful, 404 if a page was not found, etc. See https://developer.mozilla.org/docs/Web/HTTP/Status for a list of common status codes. + + + The HttpStatusCode property will be 0 in the following cases: + + + The navigation did not involve an HTTP request. For instance, if it was a navigation to a file:// URL, or if it was a same-document navigation. + + + The navigation failed before a response was received. For instance, if the hostname was not found, or if there was a network error. + + + In those cases, you can get more information from the and properties. + + If the navigation receives a successful HTTP response, but the navigated page calls window.stop() before it finishes loading, then HttpStatusCode may contain a success code like 200, but will be false and will be . + + Since WebView2 handles HTTP continuations and redirects automatically, it is unlikely for HttpStatusCode to ever be in the 1xx or 3xx ranges. + + + + + Event args for the event. + + + + + Gets the reason for WebView to raise the event. + + + + + Indicates whether the event has been handled by the app. + + + If the app has moved the focus to another desired location, it should set Handled property to true. When Handled property is false after the event handler returns, default action is taken. The default action is to try to find the next tab stop child window in the app and try to move focus to that window. If no other window exists to move focus, focus is cycled within the web content of the WebView. + + + + + Event args for the event. + + + + + Gets the URI with the external URI scheme to be launched. + + + + + Gets the origin initiating the external URI scheme launch. + + + The origin will be an empty string if the request is initiated by calling on the external URI scheme. If a script initiates the navigation, the `InitiatingOrigin` will be the top-level document's `Source`, i.e. if `window.location` is set to `"calculator://", the `InitiatingOrigin` will be set to `calculator://`. If the request is initiated from a child frame, the `InitiatingOrigin` will be the source of that child frame. + + + + + true when the launching external URI scheme request was initiated through a user gesture. + + + + + Determines whether to cancel the navigation. + + + + + Gets a object and put the event into a deferred state. + + + Use this to the launching external URI scheme request at a later time. + + + + + Provides a set of properties for a frame in the . + + + + + Gets the name attribute of the frame, as in <iframe name="frame-name" ...>. + + + The returned string is empty when the frame has no name attribute. + + + + + The URI of the document in the frame. + + + + + Event args for the event. + + + + + Gets the created frame. + + + + + + Representation of a DOM[File](https://developer.mozilla.org/docs/Web/API/File) object passed via WebMessage. + + + You can use this object to obtain the path of a File dropped on WebView2. + + + + + The absolute file path. + + + + + Event args for the event. + + + + + Returns the for the download that has started. + + + + + Indicates whether to cancel the download. + + + If canceled, the download save dialog is not displayed regardless of the value and the state is changed to with interrupt reason . + + + + + The path to the file. + + + If setting the path, the host should ensure that it is an absolute path, including the file name, and that the path does not point to an existing file. If the path points to an existing file, the file will be overwritten. If the directory does not exist, it is created. + + + + + Indicates whether to hide the default download dialog. + + + If set to true, the default download dialog is hidden for this download. The download progresses normally if it is not canceled, there will just be no default UI shown. By default the value is false and the default download dialog is shown. + + + + + Gets a object. + + + Use this to the event at a later time. + + + + + Event args for the event. + + + + + Gets the ID of the navigation. + + + + + A Receiver is created for a particular DevTools Protocol event and allows you to subscribe and unsubscribe from that event. + + + Obtained from the WebView object using . + + + + + + DevToolsProtocolEventReceived is raised when the corresponding DevToolsProtocol event is raised. + + + + + + Event args for the event. + + + Event args for the event. + + + + + Gets the parameter object of the corresponding DevToolsProtocol event represented as a JSON string. + + + + + Gets the sessionId of the target where the event originates from. Empty string is returned as sessionId if the event comes from the default session for the top page. + + + + + Represents the information regarding the context menu target. Includes the context selected and the appropriate data used for the actions of a context menu. + + + + + Gets the kind of context that the user selected as . + + + + + Returns true if the context menu is requested on an editable component. + + + + + Returns true if the context menu was requested on the main frame and false if invoked on another frame. + + + + + Gets the uri of the page. + + + + + Gets the uri of the frame. Will match the if is true. + + + + + Returns true if the context menu is requested on HTML containing an anchor tag. + + + + + Gets the uri of the link (if is true, null otherwise). + + + + + Returns true if the context menu is requested on text element that contains an anchor tag. + + + + + Gets the text of the link (if is true, null otherwise). + + + + + Returns true if the context menu is requested on HTML containing a source uri. + + + + + Gets the active source uri of element (if is true, null otherwise). + + + + + Returns true if the context menu is requested on a selection. + + + + + Gets the selected text (if is true, null otherwise). + + + + + Event args for the event. + + + Will contain the selection information and a collection of all of the default context menu items that the WebView would show. Allows the app to draw its own context menu or add/remove from the default context menu. + + + + + Gets the collection of objects. + + + + + Gets the target information associated with the requested context menu. + + + + + + Gets the coordinates where the context menu request occurred in relation to the upper left corner of the WebView bounds. + + + + + Gets or sets the selected 's . + + + When the app handles the event, it can set this to report the selected command from the context menu. The default value is -1 which means that no selection occurred. The app can also set the command ID for a custom context menu item, which will cause the event to be fired, however while command IDs for each custom context menu item is unique during a ContextMenuRequested event, WebView may reassign command ID values of deleted custom ContextMenuItems to new objects and the command ID assigned to the same custom item can be different between each app runtime. The command ID should always be obtained via the property. + + + + + Gets or sets whether the event is handled by host after the event handler completes or after the deferral is completed if there is a taken . + + + If Handled is set to true then WebView2 will not display a context menu and will instead use the property to indicate which, if any, context menu item to invoke. If after the event handler or deferral completes, Handled is set to false then WebView will display a context menu based on the contents of the property. The default value is false. + + + + + Returns a object. + + + Use this operation to complete the event when the custom context menu is closed. + + + + + Represents a context menu item of a context menu displayed by WebView. + + + + + Gets the unlocalized name for the . + + + Use this to distinguish between context menu item types. This will be the English label of the menu item in lower camel case. For example, the "Save as" menu item will be "saveAs". Extension menu items will be "extension", custom menu items will be "custom" and spellcheck items will be "spellCheck". + Some example context menu item names are: + + + + "saveAs" + + + "copyImage" + + + "openLinkInNewWindow" + + + + + + + Gets the localized label for the . Will contain an ampersand for characters to be used as keyboard accelerator. + + + + + Gets the Command ID for the . + + + Use this to report the in event. + + + + + Gets the localized keyboard shortcut for this . + + + It will be the empty string if there is no keyboard shortcut. This is text intended to be displayed to the end user to show the keyboard shortcut. For example this property is Ctrl+Shift+I for the "Inspect" . + + + + + Gets the Icon for the in PNG, Bitmap or SVG formats in the form of an IStream. + + + Stream will be rewound to the start of the image data before being read. + + + + + Gets the kind of as . + + + + + Gets or sets the enabled property of the . Must only be used in the case of a custom context menu item. + + + The default value for this is true. + + + + + Gets or sets the checked property of the . + + + Must only be used for custom context menu items that are of kind or . + + + + + Gets the list of children menu items if the kind is . + + + If the kind is not , will return null. + + + + + CustomItemSelected event is raised when the user selects this . + + + Will only be raised for end developer created context menu items. + + + + + Event args for the event. + + + + + true if the loaded content is an error page. + + + + + Gets the ID of the navigation. + + + + + This class is an extension of the class to support visual hosting. + + + This class is an extension of the class to support visual hosting. + + + This class is an extension of the class to support visual hosting. + + + + + Gets or sets the root visual in the hosting app's visual tree. + + + This visual is where the WebView will connect its visual tree. The app uses this visual to position the WebView within the app. The app still needs to use the property to size the WebView. The RootVisualTarget property can be an IDCompositionVisual or a Windows::UI::Composition::ContainerVisual. WebView will connect its visual tree to the provided visual before returning from the property setter. The app needs to commit on its device setting the RootVisualTarget property. The RootVisualTarget property supports being set to null to disconnect the WebView from the app's visual tree. + + + + + Gets the current cursor that WebView thinks it should be. + + + The cursor should be set in WM_SETCURSOR through Mouse.SetCursor or set on the corresponding parent/ancestor HWND of the WebView through ::SetClassLongPtr. The HCURSOR can be freed so CopyCursor/DestroyCursor is recommended to keep your own copy if you are doing more than immediately setting the cursor. + + + + + Gets the current system cursor ID reported by the underlying rendering engine for WebView. + + + + + The event is raised when WebView thinks the cursor should be changed. + + + For example, when the mouse cursor is currently the default cursor but is then moved over text, it may try to change to the IBeam cursor. + It is expected for the developer to send messages (in addition to messages) through . This is to ensure that the mouse is actually within the WebView that sends out CursorChanged events. + + + + + Sends mouse input to the WebView. + + The mouse event kind. + The virtual keys associated with the eventKind. + The amount of wheel movement. + The absolute position of the mouse, or the amount of motion since the last mouse event was generated, depending on the eventKind. + + If eventKind is or , then mouseData specifies the amount of wheel movement. + A positive value indicates that the wheel was rotated forward, away from the user; a negative value indicates that the wheel was rotated backward, toward the user. One wheel click is defined as WHEEL_DELTA, which is 120. If eventKind is , , or , then mouseData specifies which X buttons were pressed or released. This value should be 1 if the first X button is pressed/released and 2 if the second X button is pressed/released. If eventKind is , then virtualKeys, mouseData, and point should all be zero. If eventKind is any other value, then mouseData should be zero. point is expected to be in the client coordinate space of the WebView. To track mouse events that start in the WebView and can potentially move outside of the WebView and host application, calling SetCapture and ReleaseCapture is recommended. To dismiss hover popups, it is also recommended to send messages. + + + + + Sends pen or pointer input to the WebView. + + The pointer event kind. + The pointer information. + + Accepts touch or pen pointer input of kinds defined in . + Any pointer input from the system must be converted into a first. + + + + + Call this method to inform the CoreWebView2CompositionController that a drag operation has left the WebView. + + + Corresponds to the [ICoreDropOperationTarget.LeaveAsync](/uwp/api/windows.applicationmodel.datatransfer.dragdrop.core.icoredropoperationtarget.leaveasync) method when performing a drag operation into the WebView. + + + + + Event args for the event. + + + + + Returns host name of the server that requested client certificate authentication. + + + Normalization rules applied to the hostname are: + + + + Convert to lowercase characters for ascii characters. + + + Punycode is used for representing non ascii characters. + + + Strip square brackets for IPV6 address. + + + + + + + Returns port of the server that requested client certificate authentication. + + + + + Returns true if the server that issued this request is an http proxy. Returns false if the server is the origin server. + + + + + The list contains Base64 encoding of DER encoded distinguished names of certificate authorities allowed by the server. + + + + + Returns the list of when client certificate authentication is requested. The list contains mutually trusted CA certificate. + + + + + Selected certificate to respond to the server. + + + + + Indicates whether to cancel the certificate selection. + + + If canceled, the request is aborted regardless of the property. By default the value is false. + + + + + Indicates whether the event has been handled by host. + + + Set to true to respond to the server with or without a certificate. If this flag is true with a it responds to the server with the selected certificate otherwise respond to the server without a certificate. By default the value of and are false and display default client certificate selection dialog prompt to allow the user to choose a certificate. The is ignored unless is set to true. + + + + + Gets a object. + + + Use this to the event at a later time. + + + + + Event args for the event. + + + + + The kind of browser process exit that has occurred. + + + + + The process ID of the browser process that has exited. + + + + + Represents a Basic HTTP authentication response that contains a user name and a password as according to RFC7617 (https://tools.ietf.org/html/rfc7617) + + + + + User name provided for authentication. + + + + + Password provided for authentication. + + + + + Event args for the BasicAuthenticationRequested event. Will contain the request that led to the HTTP authorization challenge, the challenge and allows the host to provide authentication response or cancel the request. + + + + + The URI that led to the authentication challenge. For proxy authentication requests, this will be the URI of the proxy server. + + + + + The authentication challenge string. + + + + + Response to the authentication request with credentials. + + + This object will be populated by the app if the host would like to provide authentication credentials. + + + + + Indicates whether to cancel the authentication request. + + + false by default. If set to true, Response will be ignored. + + + + + Gets a object. + + + Use this Deferral to defer the decision to show the Basic Authentication dialog. + + + + + Event args for the event. + + + + + Gets the key event kind that caused the event to run. + + + + + Gets the Win32 virtual key code of the key that was pressed or released. + + + It is one of the Win32 virtual key constants such as VK_RETURN or an (uppercase) ASCII value such as 'A'. Verify whether Ctrl or Alt are pressed by running GetKeyState(VK_CONTROL) or GetKeyState(VK_MENU). + + + + + Gets the LPARAM value that accompanied the window message. + + + See the documentation for the WM_KEYDOWN and WM_KEYUP messages. + + + + + Gets a representing the information passed in the LPARAM of the window message. + + + + + Indicates whether the event is handled by host. + + + If set to true then this prevents the WebView from performing the default action for this accelerator key. Otherwise the WebView will perform the default action for the accelerator key. + + +
+
diff --git a/TestWordAddIn1/bin/Debug/Microsoft.Web.WebView2.WinForms.dll b/TestWordAddIn1/bin/Debug/Microsoft.Web.WebView2.WinForms.dll new file mode 100644 index 0000000..997372a Binary files /dev/null and b/TestWordAddIn1/bin/Debug/Microsoft.Web.WebView2.WinForms.dll differ diff --git a/TestWordAddIn1/bin/Debug/Microsoft.Web.WebView2.WinForms.xml b/TestWordAddIn1/bin/Debug/Microsoft.Web.WebView2.WinForms.xml new file mode 100644 index 0000000..8bce676 --- /dev/null +++ b/TestWordAddIn1/bin/Debug/Microsoft.Web.WebView2.WinForms.xml @@ -0,0 +1,504 @@ + + + + Microsoft.Web.WebView2.WinForms + + + + + This class is a bundle of the most common parameters used to create and instances. + Its main purpose is to be set to in order to customize the environment and/or controller used by a during implicit initialization. + + + This class isn't intended to contain all possible environment or controller customization options. + If you need complete control over the environment and/or controller used by a WebView2 control then you'll need to initialize the control explicitly by + creating your own environment (with ) and/or controller options (with ) and passing them to + *before* you set the property to anything. + See the class documentation for an initialization overview. + + + + + Creates a new instance of with default data for all properties. + + + + + Gets or sets the value to pass as the browserExecutableFolder parameter of when creating an environment with this instance. + + + + + Gets or sets the value to pass as the userDataFolder parameter of when creating an environment with this instance. + + + + + Gets or sets the value to use for the Language property of the CoreWebView2EnvironmentOptions parameter passed to when creating an environment with this instance. + + + + + Gets or sets the value to use for the ProfileName property of the CoreWebView2ControllerOptions parameter passed to CreateCoreWebView2ControllerWithOptionsAsync when creating an controller with this instance. + + + + + Gets or sets the value to pass as the AdditionalBrowserArguments parameter of which is passed to when creating an environment with this instance. + + + + + Gets or sets the value to use for the IsInPrivateModeEnabled property of the CoreWebView2ControllerOptions parameter passed to CreateCoreWebView2ControllerWithOptionsAsync when creating an controller with this instance. + + + + + Create a using the current values of this instance's properties. + + A task which will provide the created environment on completion, or null if no environment-related options are set. + + As long as no other properties on this instance are changed, repeated calls to this method will return the same task/environment as earlier calls. + If some other property is changed then the next call to this method will return a different task/environment. + + + + + Creates a using the current values of this instance's properties. + + A object or null if no controller-related properties are set. + Thrown if the parameter environment is null. + + + + Control to embed WebView2 in WinForms. + + + + + Create a new WebView2 WinForms control. + After construction the property is null. + Call to initialize the underlying . + + + This control is effectively a wrapper around the WebView2 COM API, which you can find documentation for here: https://aka.ms/webview2 + You can directly access the underlying ICoreWebView2 interface and all of its functionality by accessing the property. + Some of the most common COM functionality is also accessible directly through wrapper methods/properties/events on the control. + + Upon creation, the control's CoreWebView2 property will be null. + This is because creating the CoreWebView2 is an expensive operation which involves things like launching Edge browser processes. + There are two ways to cause the CoreWebView2 to be created: + 1) Call the method. This is referred to as explicit initialization. + 2) Set the property. This is referred to as implicit initialization. + Either option will start initialization in the background and return back to the caller without waiting for it to finish. + To specify options regarding the initialization process, either pass your own to EnsureCoreWebView2Async or set the control's property prior to initialization. + + When initialization has finished (regardless of how it was triggered) then the following things will occur, in this order: + 1) The control's event will be invoked. If you need to perform one time setup operations on the CoreWebView2 prior to its use then you should do so in a handler for that event. + 2) If a Uri has been set to the property then the control will start navigating to it in the background (i.e. these steps will continue without waiting for the navigation to finish). + 3) The Task returned from will complete. + + For more details about any of the methods/properties/events involved in the initialization process, see its specific documentation. + + Accelerator key presses (e.g. Ctrl+P) that occur within the control will + fire standard key press events such as OnKeyDown. You can suppress the + control's default implementation of an accelerator key press (e.g. + printing, in the case of Ctrl+P) by setting the Handled property of its + EventArgs to true. Also note that the underlying browser process is + blocked while these handlers execute, so: + + + You should avoid doing a lot of work in these handlers. + + + Some of the WebView2 and CoreWebView2 APIs may throw errors if + invoked within these handlers due to being unable to communicate with + the browser process. + + + If you need to do a lot of work and/or invoke WebView2 APIs in response to + accelerator keys then consider kicking off a background task or queuing + the work for later execution on the UI thread. + + + + + Cleans up any resources being used. + + true if managed resources should be disposed; otherwise, false. + + + + Overrides the base OnPaint event to have custom actions + in designer mode + + The graphics devices which is the source + + + + Overrides the base WndProc events to handle specific window messages. + + The Message object containing the HWND window message and parameters + + + + Gets or sets a bag of options which are used during initialization of the control's . + This property cannot be modified (an exception will be thrown) after initialization of the control's CoreWebView2 has started. + + Thrown if initialization of the control's CoreWebView2 has already started. + + + + Explicitly trigger initialization of the control's . + + + A pre-created that should be used to create the . + Creating your own environment gives you control over several options that affect how the is initialized. + If you pass null (the default value) then a default environment will be created and used automatically. + + + A pre-created that should be used to create the . + Creating your own controller options gives you control over several options that affect how the is initialized. + If you pass a controllerOptions to this method then it will override any settings specified on the property. + If you pass null (the default value) and no value has been set to then a default controllerOptions will be created and used automatically. + + + A Task that represents the background initialization process. + When the task completes then the property will be available for use (i.e. non-null). + Note that the control's event will be invoked before the task completes + or on exceptions. + + + Unless previous initialization has already failed, calling this method additional times with the same parameter will have no effect (any specified environment is ignored) and return the same Task as the first call. + Unless previous initialization has already failed, calling this method after initialization has been implicitly triggered by setting the property will have no effect if no environment is given + and simply return a Task representing that initialization already in progress. + Unless previous initialization has already failed, calling this method with a different environment after initialization has begun will result in an . For example, this can happen if you begin initialization + by setting the property and then call this method with a new environment, if you begin initialization with and then call this method with a new + environment, or if you begin initialization with one environment and then call this method with no environment specified. + When this method is called after previous initialization has failed, it will trigger initialization of the control's again. + Note that even though this method is asynchronous and returns a Task, it still must be called on the UI thread like most public functionality of most UI controls. + + The following summarizes the possible error values and a description of why these errors occur. + + + Error Value + Description + + + HRESULT_FROM_WIN32(ERROR_NOT_SUPPORTED) + *\\Edge\\Application* path used in browserExecutableFolder. + + + HRESULT_FROM_WIN32(ERROR_INVALID_STATE) + Specified options do not match the options of the WebViews that are currently running in the shared browser process. + + + HRESULT_FROM_WIN32(ERROR_INVALID_WINDOW_HANDLE) + WebView2 Initialization failed due to an invalid host HWND parentWindow. + + + HRESULT_FROM_WIN32(ERROR_DISK_FULL) + WebView2 Initialization failed due to reaching the maximum number of installed runtime versions. + + + HRESULT_FROM_WIN32(ERROR_PRODUCT_UNINSTALLED + If the Webview depends upon an installed WebView2 Runtime version and it is uninstalled. + + + HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND) + Could not find Edge installation. + + + HRESULT_FROM_WIN32(ERROR_FILE_EXISTS) + User data folder cannot be created because a file with the same name already exists. + + + E_ACCESSDENIED + Unable to create user data folder, Access Denied. + + + E_FAIL + Edge runtime unable to start. + + + + + + Thrown if this method is called with a different environment than when it was initialized. See Remarks for more info. + + + Thrown if this instance of is already disposed, or if the calling thread isn't the thread which created this object (usually the UI thread). See for more info. + May also be thrown if the browser process has crashed unexpectedly and left the control in an invalid state. We are considering throwing a different type of exception for this case in the future. + + + + + Explicitly trigger initialization of the control's . + + + A pre-created that should be used to create the . + Creating your own environment gives you control over several options that affect how the is initialized. + If you pass null then a default environment will be created and used automatically. + + + A Task that represents the background initialization process. + When the task completes then the property will be available for use (i.e. non-null). + Note that the control's event will be invoked before the task completes + or on exceptions. + + + Unless previous initialization has already failed, calling this method additional times with the same parameter will have no effect (any specified environment is ignored) and return the same Task as the first call. + Unless previous initialization has already failed, calling this method after initialization has been implicitly triggered by setting the property will have no effect if no environment is given + and simply return a Task representing that initialization already in progress. + Unless previous initialization has already failed, calling this method with a different environment after initialization has begun will result in an . For example, this can happen if you begin initialization + by setting the property and then call this method with a new environment, if you begin initialization with and then call this method with a new + environment, or if you begin initialization with one environment and then call this method with no environment specified. + When this method is called after previous initialization has failed, it will trigger initialization of the control's again. + Note that even though this method is asynchronous and returns a Task, it still must be called on the UI thread like most public functionality of most UI controls. + + + Thrown if this method is called with a different environment than when it was initialized. See Remarks for more info. + + + Thrown if this instance of is already disposed, or if the calling thread isn't the thread which created this object (usually the UI thread). See for more info. + May also be thrown if the browser process has crashed unexpectedly and left the control in an invalid state. We are considering throwing a different type of exception for this case in the future. + + + + + This is the private function which implements the actual background initialization task. + Cannot be called if the control is already initialized or has been disposed. + + + The environment to use to create the . + If that is null then a default environment is created with and its default parameters. + + + The controllerOptions to use to create the . + If that is null then a default controllerOptions is created with its default parameters. + + A task representing the background initialization process. + All the event handlers added here need to be removed in . + + + + Protected CreateParams property. Used to set custom window styles to the forms HWND. + + + + + Protected VisibilityChanged handler. + + + + + Protected SizeChanged handler. + + + + + Protected Select method: override this to capture tab direction when WebView control is activated + + + + + Protected OnGotFocus handler. + + + + + Protected OnParentChanged handler. + + + + + True if initialization finished successfully and the control is not disposed yet. + + + + + Recursive retrieval of the parent control + + The control to get the parent for + The root parent control + + + + The underlying CoreWebView2. Use this property to perform more operations on the WebView2 content than is exposed + on the WebView2. This value is null until it is initialized and the object itself has undefined behaviour once the control is disposed. + You can force the underlying CoreWebView2 to + initialize via the method. + + Thrown if the calling thread isn't the thread which created this object (usually the UI thread). See for more info. + + + + The zoom factor for the WebView. + + + + + Enable/disable external drop. + + + + + The Source property is the URI of the top level document of the + WebView2. Setting the Source is equivalent to calling . + Setting the Source will trigger initialization of the , if not already initialized. + The default value of Source is null, indicating that the is not yet initialized. + + Specified value is not an absolute . + Specified value is null and the control is initialized. + + + + + Returns true if the webview can navigate to a next page in the + navigation history via the method. + This is equivalent to the . + If the underlying is not yet initialized, this property is false. + + + + + + Returns true if the webview can navigate to a previous page in the + navigation history via the method. + This is equivalent to the . + If the underlying is not yet initialized, this property is false. + + + + + + The default background color for the WebView. + + + + + Executes the provided script in the top level document of the . + This is equivalent to . + + The underlying is not yet initialized. + Thrown when browser process has unexpectedly and left this control in an invalid state. We are considering throwing a different type of exception for this case in the future. + + + + + Reloads the top level document of the . + This is equivalent to . + + The underlying is not yet initialized. + Thrown when browser process has unexpectedly and left this control in an invalid state. We are considering throwing a different type of exception for this case in the future. + + + + + Navigates to the next page in navigation history. + This is equivalent to . + If the underlying is not yet initialized, this method does nothing. + + + + + + Navigates to the previous page in navigation history. + This is equivalent to . + If the underlying is not yet initialized, this method does nothing. + + + + + + Renders the provided HTML as the top level document of the . + This is equivalent to . + + The underlying is not yet initialized. + Thrown when browser process has unexpectedly and left this control in an invalid state. We are considering throwing a different type of exception for this case in the future. + The htmlContent parameter may not be larger than 2 MB (2 * 1024 * 1024 bytes) in total size. The origin of the new page is about:blank. + + + + + Stops any in progress navigation in the . + This is equivalent to . + If the underlying is not yet initialized, this method does nothing. + + + + + + This event is triggered either 1) when the control's has finished being initialized (regardless of how it was triggered or whether it succeeded) but before it is used for anything + OR 2) the initialization failed. + You should handle this event if you need to perform one time setup operations on the CoreWebView2 which you want to affect all of its usages + (e.g. adding event handlers, configuring settings, installing document creation scripts, adding host objects). + + + This sender will be the WebView2 control, whose CoreWebView2 property will now be valid (i.e. non-null) for the first time + if is true. + Unlikely this event can fire second time (after reporting initialization success first) + if the initialization is followed by navigation which fails. + + + + + NavigationStarting dispatches before a new navigate starts for the top + level document of the . + This is equivalent to the event. + + + + + + NavigationCompleted dispatches after a navigate of the top level + document completes rendering either successfully or not. + This is equivalent to the event. + + + + + + WebMessageReceived dispatches after web content sends a message to the + app host via chrome.webview.postMessage. + This is equivalent to the event. + + + + + + SourceChanged dispatches after the property changes. This may happen + during a navigation or if otherwise the script in the page changes the + URI of the document. + This is equivalent to the event. + + + + + + ContentLoading dispatches after a navigation begins to a new URI and the + content of that URI begins to render. + This is equivalent to the event. + + + + + + ZoomFactorChanged dispatches when the property changes. + This is equivalent to the event. + + + + + + Required designer variable. + + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + diff --git a/TestWordAddIn1/bin/Debug/Microsoft.Web.WebView2.Wpf.dll b/TestWordAddIn1/bin/Debug/Microsoft.Web.WebView2.Wpf.dll new file mode 100644 index 0000000..95ee1e3 Binary files /dev/null and b/TestWordAddIn1/bin/Debug/Microsoft.Web.WebView2.Wpf.dll differ diff --git a/TestWordAddIn1/bin/Debug/Microsoft.Web.WebView2.Wpf.xml b/TestWordAddIn1/bin/Debug/Microsoft.Web.WebView2.Wpf.xml new file mode 100644 index 0000000..5035d26 --- /dev/null +++ b/TestWordAddIn1/bin/Debug/Microsoft.Web.WebView2.Wpf.xml @@ -0,0 +1,1057 @@ + + + + Microsoft.Web.WebView2.Wpf + + + + + This class is a bundle of the most common parameters used to create and instances. + Its main purpose is to be set to in order to customize the environment and/or controller used by a during implicit initialization. + It is also a nice WPF integration utility which allows commonly used environment/controller parameters to be dependency properties and be created and used in markup. + + + This class isn't intended to contain all possible environment or controller customization options. + If you need complete control over the environment and/or controller used by a WebView2 control then you'll need to initialize the control explicitly by + creating your own environment (with ) and/or controller options (with ) and passing them to + *before* you set the property to anything. + See the class documentation for an initialization overview. + + + + + Creates a new instance of with default data for all properties. + + + + + The WPF DependencyProperty which backs the property. + + + + + Gets or sets the value to pass as the browserExecutableFolder parameter of when creating an environment with this instance. + + + + + The WPF DependencyProperty which backs the property. + + + + + Gets or sets the value to pass as the userDataFolder parameter of when creating an environment with this instance. + + + + + The WPF DependencyProperty which backs the property. + + + + + Gets or sets the value to use for the Language property of the CoreWebView2EnvironmentOptions parameter passed to when creating an environment with this instance. + + + + + The WPF DependencyProperty which backs the property. + + + + + Gets or sets the value to use for the AdditionalBrowserArguments property of the CoreWebView2EnvironmentOptions parameter passed to when creating an environment with this instance. + + + + + The WPF DependencyProperty which backs the property. + + + + + Gets or sets the value to use for the AreBrowserExtensionsEnabled property of the CoreWebView2EnvironmentOptions parameter passed to when creating an environment with this instance. + + + + + The WPF DependencyProperty which backs the property. + + + + + Gets or sets the value to use for the ProfileName property of the CoreWebView2ControllerOptions parameter passed to CreateCoreWebView2ControllerWithOptionsAsync when creating an controller with this instance. + + + + + The WPF DependencyProperty which backs the property. + + + + + Gets or sets the value to use for the IsInPrivateModeEnabled property of the CoreWebView2ControllerOptions parameter passed to CreateCoreWebView2ControllerWithOptionsAsync when creating an controller with this instance. + + + + + The WPF DependencyProperty which backs the property. + + + + + Gets or sets the value to use for the ScriptLocale property of the CoreWebView2ControllerOptions parameter passed to CreateCoreWebView2ControllerWithOptionsAsync when creating an controller with this instance. + + + + + Create a using the current values of this instance's properties. + + A task which will provide the created environment on completion, or null if no environment-related options are set. + + As long as no other properties on this instance are changed, repeated calls to this method will return the same task/environment as earlier calls. + If some other property is changed then the next call to this method will return a different task/environment. + + + + + Create a using the current values of this instance's properties. + + A object or null if no controller-related properties are set. + Thrown if the parameter environment is null. + + + + Tracks the conditions which block implicit initialization and whether it has been requested or not. + The analogy is a set of gates which are either open (implicit init allowed) or closed (will have to wait). + All sub-gates must be open before implicit init can proceed. + If implicit init is requested while the gate is open then it happens immediately. + If it's requested while the gate is closed then it occurs when the gate becomes open. + + + It should be reasonably straight-forward to expand this class in the future to: + * add new sub-gates to further restrict when implicit initialization can occur + * support storing and invoking multiple actions next time the gate is open instead of only one + + + + + Tracks whether a sub-gate regarding / is open or closed. + This sub-gate is only closed after calls to `BeginInit` and before an equal number of calls to `EndInit`. + + + We don't want implicit initialization to occur in between those calls, + because implicit initialization is a side effect of setting the Source property, + and side effects of setting properties during that period are supposed to be delayed until `EndInit`. + + + + + How many times has been called without being called. + + + + + Tracks whether a sub-gate regarding is open or closed. + This sub-gate is closed if `SynchronizationContext.Current == null`. + + + Initialization won't work without a `SynchronizationContext` because otherwise an `await` might resume on a different thread. + As far as I know so far this only occurs before an event loop as started on the running thread. + Once there's an event loop running the `SynchronizationContext` ensures that `await`s resume in the same event loop (i.e. same thread). + Although it's a rare corner case, it's possible to create a `Window` w/ `WebView2` before an app's event loop starts. + This sub-gate handles that corner case. + + + + + An action which will trigger initialization next time the gate is open (and only once). + + + This basically tracks whether or not implicit initialization has been requested while the gate is closed. + If this is non-null then it should be a delegate that calls . + + + + + Closes the gate until is called an equal number of times. + + + + + Opens the gate closed by after being called the same number of times. + + + + + A handler that should be attached to an event which indicates that exists. + The best one I know of right now is . + When the handler is called, the gate will re-evaluate its state and potentially allow any pending initialization action. + + + + + Run a given action when the gate is open. + + + If the gate is currently open then the action runs immediately. + Otherwise the action runs next time the gate is discovered to be open. + The action is only ever run once; it will not run again a second/subsequent time the gate opens. + If the gate is closed and another action is already pending then the new action *overwrites* the current one (i.e. the currently stored action will never run). + To "forget" a currently stored action, pass `null`. + + Action to run when the gate is open, or null to clear a previously specified action. + + + + Examine our overall open/closed state and run any pending action if appropriate. + + + + + A control to embed web content in a WPF application. + + + This control is effectively a wrapper around the [WebView2 COM + API](https://aka.ms/webview2). You can directly access the underlying + ICoreWebView2 interface and all of its functionality by accessing the + property. Some of the most common COM + functionality is also accessible directly through wrapper + methods/properties/events on the control. + + Upon creation, the control's property will be + null. This is because creating the is an + expensive operation which involves things like launching Edge browser + processes. There are two ways to cause the to + be created: + + + Call the method. This is + referred to as explicit initialization. + + + Set the property (which could be done from + markup, for example). This is referred to as implicit initialization. + Either option will start initialization in the background and return + back to the caller without waiting for it to finish. + To specify options regarding the initialization process, either pass + your own to or set the control's property prior to initialization. + + + + When initialization has finished (regardless of how it was triggered or + whether it succeeded) then the following things will occur, in this + order: + + + The control's event + will be invoked. If you need to perform one time setup operations on + the prior to its use then you should + do so in a handler for that event. + + + If initialization was successful and a Uri has been set to the property then the control will start navigating to it in + the background (i.e. these steps will continue without waiting for the + navigation to finish). + + + The Task returned from will + complete. + + + + For more details about any of the methods/properties/events involved in + the initialization process, see its specific documentation. + + Because the control's is a very heavyweight + object (potentially responsible for multiple running processes and + megabytes of disk space) the control implements to provide an explicit means to free it. + Calling will release the + and its underlying resources (except any that are also being used by other + WebViews), and reset to null. After has been called the cannot be + re-initialized, and any attempt to use functionality which requires it + will throw an . + + Accelerator key presses (e.g. Ctrl+P) that occur within the control will + fire standard key press events such as OnKeyDown. You can suppress the + control's default implementation of an accelerator key press (e.g. + printing, in the case of Ctrl+P) by setting the Handled property of its + EventArgs to true. Also note that the underlying browser process is + blocked while these handlers execute, so: + + + You should avoid doing a lot of work in these handlers. + + + Some of the WebView2 and CoreWebView2 APIs may throw errors if + invoked within these handlers due to being unable to communicate with + the browser process. + + + If you need to do a lot of work and/or invoke WebView2 APIs in response to + accelerator keys then consider kicking off a background task or queuing + the work for later execution on the UI thread. + + Note that this control extends in order to embed + windows which live outside of the WPF ecosystem. This has some + implications regarding the control's input and output behavior as well as + the functionality it "inherits" from and . + See the and [WPF/Win32 + interop](https://docs.microsoft.com/dotnet/framework/wpf/advanced/wpf-and-win32-interoperation#hwnds-inside-wpf) + documentation for more information. + + + + + + Creates a new instance of a WebView2 control. + Note that the control's will be null until initialized. + See the class documentation for an initialization overview. + + + + + The WPF which backs the property. + + + + + + Gets or sets a bag of options which are used during initialization of the control's . + Setting this property will not work after initialization of the control's has started (the old value will be retained). + See the class documentation for an initialization overview. + + + + + + This is overridden from and is called to instruct us to create our HWND. + + The HWND that we should use as the parent of the one we create. + The HWND that we created. + + + + + This is overridden from and is called to instruct us to destroy our HWND. + + Our HWND that we need to destroy. + + + + + This is overridden from and is called to provide us with Win32 messages that are sent to our hwnd. + + Window receiving the message (should always match our ). + Indicates the message being received. See Win32 documentation for WM_* constant values. + The "wParam" data being provided with the message. Meaning varies by message. + The "lParam" data being provided with the message. Meaning varies by message. + If true then the message will not be forwarded to any (more) handlers. + Return value varies by message. + + + + + Override for painting to draw + + The tools to handle the drawing via . + + + + Accesses the complete functionality of the underlying COM API. + Returns null until initialization has completed. + See the class documentation for an initialization overview. + + + Thrown if the calling thread isn't the thread which created this object (usually the UI thread). See for more info. + May also be thrown if the browser process has crashed unexpectedly and left the control in an invalid state. We are considering throwing a different type of exception for this case in the future. + + Thrown if has already been called on the control. + + + + + + This event is triggered either + 1) when the control's has finished being initialized (regardless of how initialization was triggered) but before it is used for anything, or + 2) if the initialization failed. + You should handle this event if you need to perform one time setup operations on the which you want to affect all of its usages. + (e.g. adding event handlers, configuring settings, installing document creation scripts, adding host objects). + See the class documentation for an initialization overview. + + + This sender will be the control, whose property will now be valid (i.e. non-null) for the first time + if is true. + Unlikely this event can fire second time (after reporting initialization success first) + if the initialization is followed by navigation which fails. + + + + + + Explicitly triggers initialization of the control's . + See the class documentation for an initialization overview. + + + A pre-created that should be used to create the . + Creating your own environment gives you control over several options that affect how the is initialized. + If you pass an environment to this method then it will override any settings specified on the property. + If you pass null (the default value) and no value has been set to then a default environment will be created and used automatically. + + + A pre-created that should be used to create the . + Creating your own controller options gives you control over several options that affect how the is initialized. + If you pass a controllerOptions to this method then it will override any settings specified on the property. + If you pass null (the default value) and no value has been set to then a default controllerOptions will be created and used automatically. + + + A Task that represents the background initialization process. + When the task completes then the property will be available for use (i.e. non-null). + Note that the control's event will be invoked before the task completes. + + + Unless previous initialization has already failed, calling this method additional times with the same parameter will have no effect (any specified environment is ignored) and return the same Task as the first call. + Unless previous initialization has already failed, calling this method after initialization has been implicitly triggered by setting the property will have no effect if no environment is given + and simply return a Task representing that initialization already in progress, unless previous initialization has already failed. + Unless previous initialization has already failed, calling this method with a different environment after initialization has begun will result in an . For example, this can happen if you begin initialization + by setting the property and then call this method with a new environment, if you begin initialization with and then call this method with a new + environment, or if you begin initialization with one environment and then call this method with no environment specified. + When this method is called after previous initialization has failed, it will trigger initialization of the control's again. + Note that even though this method is asynchronous and returns a Task, it still must be called on the UI thread like most public functionality of most UI controls. + + The following summarizes the possible error values and a description of why these errors occur. + + + Error Value + Description + + + HRESULT_FROM_WIN32(ERROR_NOT_SUPPORTED) + *\\Edge\\Application* path used in browserExecutableFolder. + + + HRESULT_FROM_WIN32(ERROR_INVALID_STATE) + Specified options do not match the options of the WebViews that are currently running in the shared browser process. + + + HRESULT_FROM_WIN32(ERROR_INVALID_WINDOW_HANDLE) + WebView2 Initialization failed due to an invalid host HWND parentWindow. + + + HRESULT_FROM_WIN32(ERROR_DISK_FULL) + WebView2 Initialization failed due to reaching the maximum number of installed runtime versions. + + + HRESULT_FROM_WIN32(ERROR_PRODUCT_UNINSTALLED + If the Webview depends upon an installed WebView2 Runtime version and it is uninstalled. + + + HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND) + Could not find Edge installation. + + + HRESULT_FROM_WIN32(ERROR_FILE_EXISTS) + User data folder cannot be created because a file with the same name already exists. + + + E_ACCESSDENIED + Unable to create user data folder, Access Denied. + + + E_FAIL + Edge runtime unable to start. + + + + + + Thrown if this method is called with a different environment than when it was initialized. See Remarks for more info. + + + Thrown if the calling thread isn't the thread which created this object (usually the UI thread). See for more info. + May also be thrown if is null, which probably indicates that the application's event loop hasn't started yet. + May also be thrown if the browser process has crashed unexpectedly and left the control in an invalid state. We are considering throwing a different type of exception for this case in the future. + + Thrown if has already been called on the control. + + + + + + Explicitly triggers initialization of the control's . + See the class documentation for an initialization overview. + + + A pre-created that should be used to create the . + Creating your own environment gives you control over several options that affect how the is initialized. + If you pass an environment to this method then it will override any settings specified on the property. + If you pass null and no value has been set to then a default environment will be created and used automatically. + + + A Task that represents the background initialization process. + When the task completes then the property will be available for use (i.e. non-null). + Note that the control's event will be invoked before the task completes. + + + Unless previous initialization has already failed, calling this method additional times with the same parameter will have no effect (any specified environment is ignored) and return the same Task as the first call. + Unless previous initialization has already failed, calling this method after initialization has been implicitly triggered by setting the property will have no effect if no environment is given + and simply return a Task representing that initialization already in progress, unless previous initialization has already failed. + Unless previous initialization has already failed, calling this method with a different environment after initialization has begun will result in an . For example, this can happen if you begin initialization + by setting the property and then call this method with a new environment, if you begin initialization with and then call this method with a new + environment, or if you begin initialization with one environment and then call this method with no environment specified. + When this method is called after previous initialization has failed, it will trigger initialization of the control's again. + Note that even though this method is asynchronous and returns a Task, it still must be called on the UI thread like most public functionality of most UI controls. + + + Thrown if this method is called with a different environment than when it was initialized. See Remarks for more info. + + + Thrown if the calling thread isn't the thread which created this object (usually the UI thread). See for more info. + May also be thrown if is null, which probably indicates that the application's event loop hasn't started yet. + May also be thrown if the browser process has crashed unexpectedly and left the control in an invalid state. We are considering throwing a different type of exception for this case in the future. + + Thrown if has already been called on the control. + + + + + + This is called by our base class according to the typical implementation of the pattern. + We implement it by releasing all of our underlying COM resources, including our . + + True if a caller is explicitly calling Dispose, false if we're being finalized. + + + + This is an event handler for our CoreWebView2's ProcessFailedEvent + + + + + This is a "gate" which controls whether or not implicit initialization can occur. + If implicit initialization is triggered while the gate is closed, + then the initialization should be delayed until the gate opens. + When we want to trigger implicit initialization we route the call through this gate. + If the gate is open then the initialization will proceed. + If the gate is closed then it will remember to trigger the initialization when it opens. + + + + + Implementation of the ISupportInitialize pattern. + Prevents the control from implicitly initializing its until is called. + Does *not* prevent explicit initialization of the CoreWebView2 (i.e. ). + Mainly intended for use by interactive UI designers. + + + Note that the "Initialize" in ISupportInitialize and the "Init" in BeginInit/EndInit mean + something different and more general than this control's specific concept of initializing + its CoreWebView2 (explicitly or implicitly). This ISupportInitialize pattern is a general + way to set batches of properties on the control to their initial values without triggering + any dependent side effects until all of the values are set (i.e. until EndInit is called). + In the case of this control, a specific side effect to be avoided is triggering implicit + initialization of the CoreWebView2 when setting the Source property. + For example, normally if you set after you've already set Source, + the data set to CreationProperties is ignored because implicit initialization has already started. + However, if you set the two properties (in the same order) in between calls to BeginInit and + EndInit then the implicit initialization of the CoreWebView2 is delayed until EndInit, so the data + set to CreationProperties is still used even though it was set after Source. + + + + + Implementation of the ISupportInitialize pattern. + Invokes any functionality that has been delayed since the corresponding call to . + Mainly intended for use by interactive UI designers. + + + See the documentation of for more information. + + + + + Updates one of our dependency properties to match a new value from the . + It both sets the value and remembers (in _propertyChangingFromCore) that it came from the CoreWebView2 rather than the caller, + allowing the property's "on changed" handler to alter its behavior based on where the new value came from. + It's only intended to be called in a CoreWebView2 event handler that's informing us of a new property value. + It's basically just a wrapper around the inherited SetCurrentValue which also maintains _propertyChangingFromCore. + See the comments on for additional background info. + One more thing worth explicitly stating is that it wraps SetCurrentValue rather than SetValue, + in order to avoid overwriting any OneWay bindings that are set on the specified properties. + Check the link https://stackoverflow.com/q/4230698 for more information about the difference between SetValue and SetCurrentValue. + + The property to change due to an equivalent change in the CoreWebView2. + The new value from the CoreWebView2. + + + + Checks if a given property is currently being updated to match an equivalent change in the . + This method should only be called from a property's "on changed" handler; it has no meaning at any other time. + It is used to determine if the property is changing to match the CoreWebView2 or because the caller set it. + Usually this is used in order to decide if the new value needs to be propagated down to the CoreWebView2. + See the comments on for additional background info. + + The property to check. + True if the property is changing to match the CoreWebView2, or false if the property was changed by the caller. + + + + Changes our controller's ParentWindow to the given HWND, along with any other necessary associated work. + + The new HWND to set as the controller's parent. IntPtr.Zero means that the controller will have no parent and the CoreWebView2 will be hidden. + Whether or not to call as required. Defaults to true. If you pass false then you should call it yourself if required. + + Reparenting the controller isn't necessarily as simple as changing its ParentWindow property, + and this method exists to ensure that any other work that needs to be done at the same time gets done. + The reason that SyncControllerWithParentWindow isn't baked directly into this method is because + sometimes we want to call the Sync functionality without necessarily reparenting (e.g. during initialization). + + + + + Syncs visual/windowing information between the controller and its parent HWND. + This should be called any time a new, non-null HWND is set as the controller's parent, + including when the controller is first created. + + + + + This is a handler for our base UIElement's IsVisibleChanged event. + It's predictably fired whenever IsVisible changes, and IsVisible reflects the actual current visibility status of the control. + We just need to pass this info through to our CoreWebView2Controller so it can save some effort when the control isn't visible. + + + + + This is overridden from and called when our control's location has changed. + The HwndHost takes care of updating the HWND we created. + What we need to do is move our CoreWebView2 to match the new location. + + + + + The WPF which backs the property. + + + + + The top-level which the WebView is currently displaying (or will display once initialization of its is finished). + Generally speaking, getting this property is equivalent to getting the property and setting this property (to a different value) is equivalent to calling the method. + + + Getting this property before the has been initialized will retrieve the last Uri which was set to it, or null (the default) if none has been. + Setting this property before the has been initialized will cause initialization to start in the background (if not already in progress), after which the will navigate to the specified . + This property can never be set back to null or to a relative . + See the class documentation for an initialization overview. + + Thrown if has already been called on the control. + Thrown if the property is set to null. + Thrown if the property is set to a relative (i.e. a whose property is false). + + + + + This is a callback that WPF calls to validate a potential new Source value. + + + True if the value is valid, false if it is not. + If we return false then WPF should respond by throwing an . + + + Note that we unfortunately can't treat null as invalid here because null is valid prior to initialization. + + + + + This is a callback that WPF calls when the WPF Source property's value changes. + This might have been triggered by either: + 1) The caller set Source to programmatically trigger a navigation. + 2) The CoreWebView changed its own source and we're just updating the dependency property to match. + We use to distinguish the two cases. + + + + + A wrapper around the . + The only difference between this event and is the first parameter that's passed to handlers. + Handlers of this event will receive the control, whereas handlers of will receive the instance. + + + + + + This is an event handler for our CoreWebView2's SourceChanged event. + Unsurprisingly, it fires when the CoreWebView2's source URI has been changed. + Note that there are two distinct triggers for this: + 1) The CoreWebView2 was told to navigate programmatically (potentially by us, see SourcePropertyChanged). + 2) The user interacted with the CoreWebView2, e.g. clicked a link. + In either of the above cases, this event might trigger several times due to e.g. redirection. + Aside from propagating to our own event, we just need to update our WPF Source property to match the CoreWebView2's. + + + + + A wrapper around the . + The only difference between this event and is the first parameter that's passed to handlers. + Handlers of this event will receive the control, whereas handlers of will receive the instance. + + + + + + This is an event handler for our CoreWebView2's NavigationStarting event. + We just need to propagate the event to WPF. + + + + + A wrapper around the . + The only difference between this event and is the first parameter that's passed to handlers. + Handlers of this event will receive the control, whereas handlers of will receive the instance. + + + + + + This is an event handler for our CoreWebView2's NavigationCompleted event. + We just need to propagate the event to WPF. + + + + + This is an event handler for our CoreWebView2's HistoryChanged event. + We're handling it in order to update our WPF CanGoBack and CanGoForward properties. + + + + + The WPF which backs the property. + + + + + Returns true if the WebView can navigate to a previous page in the navigation history. + Wrapper around the property of . + If isn't initialized yet then returns false. + + + + + + The WPF which backs the property. + + + + + Returns true if the WebView can navigate to a next page in the navigation history. + Wrapper around the property of . + If isn't initialized yet then returns false. + + + + + + This is overridden from and is called to inform us that tabbing has caused the focus to move into our control/window. + Since WPF can't manage the transition of focus to a non-WPF HWND, it delegates the transition to us here. + So our job is just to place the focus in our external HWND. + + Information about how the focus is moving. + true to indicate that we handled the navigation, or false to indicate that we didn't. + + + + This is overridden from and is called to inform us when we receive the keyboard focus. + We handle this by passing the keyboard focus on to the underlying . + We never want to land in a state where our window (this.Handle) actually has the keyboard focus. + + Arguments from the underlying GotKeyboardFocus event. + + Note that it's actually possible for us to receive keyboard focus without this method being called. + One known case where that happens is when our parent window is deactivated while we have focus, then reactivated. + We handle that case in . + + + + + + This is an event handler for our CoreWebView2Controller's MoveFocusRequested event. + It fires when the CoreWebView2Controller has focus but wants to move it elsewhere in the app. + E.g. this happens when the user tabs past the last item in the CoreWebView2 and focus needs to return to some other app control. + So our job is just to tell WPF to move the focus on to the next control. + Note that we don't propagate this event outward as a standard WPF routed event because we've implemented its purpose here. + If users of the control want to track focus shifting in/out of the control, they should use standard WPF events. + + + + + This is an event handler for our CoreWebView2Controller's GotFocus event. + We just need to propagate the event to WPF. + + + + + This is an event handler for our CoreWebView2Controller's LostFocus event. + We just need to propagate the event to WPF. + + + + + This is an event handler for our CoreWebView2Controller's AcceleratorKeyPressed event. + This is called to inform us about key presses that are likely to have special behavior (e.g. esc, return, Function keys, letters with modifier keys). + WPF can't detect this input because Windows sends it directly to the Win32 CoreWebView2Controller control. + We implement this by generating standard WPF key input events, allowing callers to handle the input in the usual WPF way if they want. + If nobody handles the WPF key events then we'll allow the default CoreWebView2Controller logic (if any) to handle it. + Of the possible options, this implementation should provide the most flexibility to callers. + + + + + This is overridden from and called to allow us to handle key press input. + WPF should never actually call this in response to keyboard events because we're hosting a non-WPF window. + When our window has focus Windows will send the input directly to it rather than to WPF's top-level window and input system. + This override should only be called when we're explicitly forwarding accelerator key input from the CoreWebView2 to WPF (in CoreWebView2Controller_AcceleratorKeyPressed). + Even then, this KeyDownEvent is only triggered because our PreviewKeyDownEvent implementation explicitly triggers it, matching WPF's usual system. + So the process is: + + CoreWebView2Controller_AcceleratorKeyPressed + PreviewKeyDownEvent + KeyDownEvent + OnKeyDown + + . + + + + + See . + + + + + This is the "Preview" (i.e. tunneling) version of , so it actually happens first. + Like OnKeyDown, this will only ever be called if we're explicitly forwarding key presses from the CoreWebView2. + In order to mimic WPF's standard input handling, when we receive this we turn around and fire off the standard bubbling KeyDownEvent. + That way others in the WPF tree see the same standard pair of input events that WPF itself would have triggered if it were handling the key press. + + + + + + See . + + + + + The WPF which backs the property. + + + + + The zoom factor for the WebView. + This property directly exposes , see its documentation for more info. + Getting this property before the has been initialized will retrieve the last value which was set to it, or 1.0 (the default) if none has been. + The most recent value set to this property before the CoreWebView2 has been initialized will be set on it after initialization. + + + + + + This is a callback that WPF calls when our WPF ZoomFactor property's value changes. + This might have been triggered by either: + 1) The caller set ZoomFactor to change the zoom of the CoreWebView2. + 2) The CoreWebView2 changed its own ZoomFactor and we're just updating the dependency property to match. + We use to distinguish the two cases. + + + + + The event is raised when the property changes. + This event directly exposes . + + + + + + + This is an event handler for our CoreWebView2Controller's ZoomFactorChanged event. + Unsurprisingly, it fires when the CoreWebView2Controller's ZoomFactor has been changed. + Note that there are two distinct triggers for this: + 1) The value was changed programmatically (potentially by us, see ZoomFactorPropertyChanged). + 2) The user interacted with the CoreWebView2, e.g. CTRL + Mouse Wheel. + Aside from propagating to our own event, we just need to update our WPF ZoomFactor property to match the CoreWebView2Controller's. + + + + + The WPF which backs the property. + + + + + The default background color for the WebView. + This property directly exposes , see its documentation for more info. + Getting this property before the has been initialized will retrieve the last value which was + set to it, or Color.White (the default) if none has been. + The most recent value set to this property before CoreWebView2Controller has been initialized will be set on it after initialization. + + + + + This is a callback that WPF calls when our WPF DefaultBackgroundColor property's value changes. + Since CoreWebView2Controller does not update this property itself, this is only triggered by the + caller setting DefaultBackgroundColor. + + + + + The WPF which backs the property. + + + + + The AllowExternalDrop property for the WebView. + This property directly exposes , see its documentation for more info. + Getting this property before the has been initialized will retrieve the last value which was + set to it, or true (the default) if none has been. + The most recent value set to this property before CoreWebView2Controller has been initialized will be set on it after initialization. + + + + + This is a callback that WPF calls when our WPF AllowExternalDrop property's value changes. + Since CoreWebView2Controller does not update this property itself, this is only triggered by the + caller setting AllowExternalDrop. + + + + + The WPF which backs the property. + + + + + The foreground color to be used in design mode. + + + + + Navigates the WebView to the previous page in the navigation history. + Equivalent to calling + If hasn't been initialized yet then does nothing. + + + Thrown if the calling thread isn't the thread which created this object (usually the UI thread). See for more info. + May also be thrown if the browser process has crashed unexpectedly and left the control in an invalid state. We are considering throwing a different type of exception for this case in the future. + + Thrown if has already been called on the control. + + + + + + Navigates the WebView to the next page in the navigation history. + Equivalent to calling . + If hasn't been initialized yet then does nothing. + + + Thrown if the calling thread isn't the thread which created this object (usually the UI thread). See for more info. + May also be thrown if the browser process has crashed unexpectedly and left the control in an invalid state. We are considering throwing a different type of exception for this case in the future. + + Thrown if has already been called on the control. + + + + + + Reloads the current page. + Equivalent to calling . + + + Thrown if hasn't been initialized yet, or if the calling thread isn't the thread which created this object (usually the UI thread). See for more info. + May also be thrown if the browser process has crashed unexpectedly and left the control in an invalid state. We are considering throwing a different type of exception for this case in the future. + + Thrown if has already been called on the control. + + + + + + Stops all navigations and pending resource fetches. + Equivalent to calling . + + + Thrown if hasn't been initialized yet, or if the calling thread isn't the thread which created this object (usually the UI thread). See for more info. + May also be thrown if the browser process has crashed unexpectedly and left the control in an invalid state. We are considering throwing a different type of exception for this case in the future. + + Thrown if has already been called on the control. + + + + + + Initiates a navigation to htmlContent as source HTML of a new document. + Equivalent to calling . + + + Thrown if hasn't been initialized yet, or if the calling thread isn't the thread which created this object (usually the UI thread). See for more info. + May also be thrown if the browser process has crashed unexpectedly and left the control in an invalid state. We are considering throwing a different type of exception for this case in the future. + + Thrown if has already been called on the control. + The htmlContent parameter may not be larger than 2 MB (2 * 1024 * 1024 bytes) in total size. The origin of the new page is about:blank. + + + + + + A wrapper around the . + The only difference between this event and is the first parameter that's passed to handlers. + Handlers of this event will receive the control, whereas handlers of will receive the instance. + + + + + + This is an event handler for our CoreWebView2's ContentLoading event. + We just need to propagate the event to WPF. + + + + + Executes JavaScript code from the javaScript parameter in the current top level document rendered in the WebView. + Equivalent to calling . + + + Thrown if hasn't been initialized yet, or if the calling thread isn't the thread which created this object (usually the UI thread). See for more info. + May also be thrown if the browser process has crashed unexpectedly and left the control in an invalid state. We are considering throwing a different type of exception for this case in the future. + + Thrown if has already been called on the control. + + + + + + A wrapper around the . + The only difference between this event and is the first parameter that's passed to handlers. + Handlers of this event will receive the control, whereas handlers of will receive the instance. + + + + + + This is an event handler for our CoreWebView2's WebMessageReceived event. + We just need to propagate the event to WPF. + + + + + True when we're in design mode and shouldn't create an underlying CoreWebView2. + + + + diff --git a/TestWordAddIn1/bin/Debug/Newtonsoft.Json.dll b/TestWordAddIn1/bin/Debug/Newtonsoft.Json.dll new file mode 100644 index 0000000..341d08f Binary files /dev/null and b/TestWordAddIn1/bin/Debug/Newtonsoft.Json.dll differ diff --git a/TestWordAddIn1/bin/Debug/Newtonsoft.Json.xml b/TestWordAddIn1/bin/Debug/Newtonsoft.Json.xml new file mode 100644 index 0000000..2c981ab --- /dev/null +++ b/TestWordAddIn1/bin/Debug/Newtonsoft.Json.xml @@ -0,0 +1,11363 @@ + + + + Newtonsoft.Json + + + + + Represents a BSON Oid (object id). + + + + + Gets or sets the value of the Oid. + + The value of the Oid. + + + + Initializes a new instance of the class. + + The Oid value. + + + + Represents a reader that provides fast, non-cached, forward-only access to serialized BSON data. + + + + + Gets or sets a value indicating whether binary data reading should be compatible with incorrect Json.NET 3.5 written binary. + + + true if binary data reading will be compatible with incorrect Json.NET 3.5 written binary; otherwise, false. + + + + + Gets or sets a value indicating whether the root object will be read as a JSON array. + + + true if the root object will be read as a JSON array; otherwise, false. + + + + + Gets or sets the used when reading values from BSON. + + The used when reading values from BSON. + + + + Initializes a new instance of the class. + + The containing the BSON data to read. + + + + Initializes a new instance of the class. + + The containing the BSON data to read. + + + + Initializes a new instance of the class. + + The containing the BSON data to read. + if set to true the root object will be read as a JSON array. + The used when reading values from BSON. + + + + Initializes a new instance of the class. + + The containing the BSON data to read. + if set to true the root object will be read as a JSON array. + The used when reading values from BSON. + + + + Reads the next JSON token from the underlying . + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Changes the reader's state to . + If is set to true, the underlying is also closed. + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating BSON data. + + + + + Gets or sets the used when writing values to BSON. + When set to no conversion will occur. + + The used when writing values to BSON. + + + + Initializes a new instance of the class. + + The to write to. + + + + Initializes a new instance of the class. + + The to write to. + + + + Flushes whatever is in the buffer to the underlying and also flushes the underlying stream. + + + + + Writes the end. + + The token. + + + + Writes a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes raw JSON. + + The raw JSON to write. + + + + Writes raw JSON where a value is expected and updates the writer's state. + + The raw JSON to write. + + + + Writes the beginning of a JSON array. + + + + + Writes the beginning of a JSON object. + + + + + Writes the property name of a name/value pair on a JSON object. + + The name of the property. + + + + Closes this writer. + If is set to true, the underlying is also closed. + If is set to true, the JSON is auto-completed. + + + + + Writes a value. + An error will raised if the value cannot be written as a single JSON token. + + The value to write. + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a [] value. + + The [] value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a [] value that represents a BSON object id. + + The Object ID value to write. + + + + Writes a BSON regex. + + The regex pattern. + The regex options. + + + + Specifies how constructors are used when initializing objects during deserialization by the . + + + + + First attempt to use the public default constructor, then fall back to a single parameterized constructor, then to the non-public default constructor. + + + + + Json.NET will use a non-public default constructor before falling back to a parameterized constructor. + + + + + Converts a binary value to and from a base 64 string value. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts a to and from JSON and BSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Creates a custom object. + + The object type to convert. + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Creates an object which will then be populated by the serializer. + + Type of the object. + The created object. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Gets a value indicating whether this can write JSON. + + + true if this can write JSON; otherwise, false. + + + + + Converts a to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified value type. + + Type of the value. + + true if this instance can convert the specified value type; otherwise, false. + + + + + Converts a to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified value type. + + Type of the value. + + true if this instance can convert the specified value type; otherwise, false. + + + + + Provides a base class for converting a to and from JSON. + + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts a F# discriminated union type to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts an Entity Framework to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts an to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Gets a value indicating whether this can write JSON. + + + true if this can write JSON; otherwise, false. + + + + + Converts a to and from the ISO 8601 date format (e.g. "2008-04-12T12:53Z"). + + + + + Gets or sets the date time styles used when converting a date to and from JSON. + + The date time styles used when converting a date to and from JSON. + + + + Gets or sets the date time format used when converting a date to and from JSON. + + The date time format used when converting a date to and from JSON. + + + + Gets or sets the culture used when converting a date to and from JSON. + + The culture used when converting a date to and from JSON. + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Converts a to and from a JavaScript Date constructor (e.g. new Date(52231943)). + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing property value of the JSON that is being converted. + The calling serializer. + The object value. + + + + Converts a to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts a to and from JSON and BSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts an to and from its name string value. + + + + + Gets or sets a value indicating whether the written enum text should be camel case. + The default value is false. + + true if the written enum text will be camel case; otherwise, false. + + + + Gets or sets the naming strategy used to resolve how enum text is written. + + The naming strategy used to resolve how enum text is written. + + + + Gets or sets a value indicating whether integer values are allowed when serializing and deserializing. + The default value is true. + + true if integers are allowed when serializing and deserializing; otherwise, false. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + true if the written enum text will be camel case; otherwise, false. + + + + Initializes a new instance of the class. + + The naming strategy used to resolve how enum text is written. + true if integers are allowed when serializing and deserializing; otherwise, false. + + + + Initializes a new instance of the class. + + The of the used to write enum text. + + + + Initializes a new instance of the class. + + The of the used to write enum text. + + The parameter list to use when constructing the described by . + If null, the default constructor is used. + When non-null, there must be a constructor defined in the that exactly matches the number, + order, and type of these parameters. + + + + + Initializes a new instance of the class. + + The of the used to write enum text. + + The parameter list to use when constructing the described by . + If null, the default constructor is used. + When non-null, there must be a constructor defined in the that exactly matches the number, + order, and type of these parameters. + + true if integers are allowed when serializing and deserializing; otherwise, false. + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts a to and from Unix epoch time + + + + + Gets or sets a value indicating whether the dates before Unix epoch + should converted to and from JSON. + + + true to allow converting dates before Unix epoch to and from JSON; + false to throw an exception when a date being converted to or from JSON + occurred before Unix epoch. The default value is false. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + true to allow converting dates before Unix epoch to and from JSON; + false to throw an exception when a date being converted to or from JSON + occurred before Unix epoch. The default value is false. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing property value of the JSON that is being converted. + The calling serializer. + The object value. + + + + Converts a to and from a string (e.g. "1.2.3.4"). + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing property value of the JSON that is being converted. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts XML to and from JSON. + + + + + Gets or sets the name of the root element to insert when deserializing to XML if the JSON structure has produced multiple root elements. + + The name of the deserialized root element. + + + + Gets or sets a value to indicate whether to write the Json.NET array attribute. + This attribute helps preserve arrays when converting the written XML back to JSON. + + true if the array attribute is written to the XML; otherwise, false. + + + + Gets or sets a value indicating whether to write the root JSON object. + + true if the JSON root object is omitted; otherwise, false. + + + + Gets or sets a value indicating whether to encode special characters when converting JSON to XML. + If true, special characters like ':', '@', '?', '#' and '$' in JSON property names aren't used to specify + XML namespaces, attributes or processing directives. Instead special characters are encoded and written + as part of the XML element name. + + true if special characters are encoded; otherwise, false. + + + + Writes the JSON representation of the object. + + The to write to. + The calling serializer. + The value. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Checks if the is a namespace attribute. + + Attribute name to test. + The attribute name prefix if it has one, otherwise an empty string. + true if attribute name is for a namespace attribute, otherwise false. + + + + Determines whether this instance can convert the specified value type. + + Type of the value. + + true if this instance can convert the specified value type; otherwise, false. + + + + + Specifies how dates are formatted when writing JSON text. + + + + + Dates are written in the ISO 8601 format, e.g. "2012-03-21T05:40Z". + + + + + Dates are written in the Microsoft JSON format, e.g. "\/Date(1198908717056)\/". + + + + + Specifies how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON text. + + + + + Date formatted strings are not parsed to a date type and are read as strings. + + + + + Date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed to . + + + + + Date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed to . + + + + + Specifies how to treat the time value when converting between string and . + + + + + Treat as local time. If the object represents a Coordinated Universal Time (UTC), it is converted to the local time. + + + + + Treat as a UTC. If the object represents a local time, it is converted to a UTC. + + + + + Treat as a local time if a is being converted to a string. + If a string is being converted to , convert to a local time if a time zone is specified. + + + + + Time zone information should be preserved when converting. + + + + + The default JSON name table implementation. + + + + + Initializes a new instance of the class. + + + + + Gets a string containing the same characters as the specified range of characters in the given array. + + The character array containing the name to find. + The zero-based index into the array specifying the first character of the name. + The number of characters in the name. + A string containing the same characters as the specified range of characters in the given array. + + + + Adds the specified string into name table. + + The string to add. + This method is not thread-safe. + The resolved string. + + + + Specifies default value handling options for the . + + + + + + + + + Include members where the member value is the same as the member's default value when serializing objects. + Included members are written to JSON. Has no effect when deserializing. + + + + + Ignore members where the member value is the same as the member's default value when serializing objects + so that it is not written to JSON. + This option will ignore all default values (e.g. null for objects and nullable types; 0 for integers, + decimals and floating point numbers; and false for booleans). The default value ignored can be changed by + placing the on the property. + + + + + Members with a default value but no JSON will be set to their default value when deserializing. + + + + + Ignore members where the member value is the same as the member's default value when serializing objects + and set members to their default value when deserializing. + + + + + Specifies float format handling options when writing special floating point numbers, e.g. , + and with . + + + + + Write special floating point values as strings in JSON, e.g. "NaN", "Infinity", "-Infinity". + + + + + Write special floating point values as symbols in JSON, e.g. NaN, Infinity, -Infinity. + Note that this will produce non-valid JSON. + + + + + Write special floating point values as the property's default value in JSON, e.g. 0.0 for a property, null for a of property. + + + + + Specifies how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. + + + + + Floating point numbers are parsed to . + + + + + Floating point numbers are parsed to . + + + + + Specifies formatting options for the . + + + + + No special formatting is applied. This is the default. + + + + + Causes child objects to be indented according to the and settings. + + + + + Provides an interface for using pooled arrays. + + The array type content. + + + + Rent an array from the pool. This array must be returned when it is no longer needed. + + The minimum required length of the array. The returned array may be longer. + The rented array from the pool. This array must be returned when it is no longer needed. + + + + Return an array to the pool. + + The array that is being returned. + + + + Provides an interface to enable a class to return line and position information. + + + + + Gets a value indicating whether the class can return line information. + + + true if and can be provided; otherwise, false. + + + + + Gets the current line number. + + The current line number or 0 if no line information is available (for example, when returns false). + + + + Gets the current line position. + + The current line position or 0 if no line information is available (for example, when returns false). + + + + Instructs the how to serialize the collection. + + + + + Gets or sets a value indicating whether null items are allowed in the collection. + + true if null items are allowed in the collection; otherwise, false. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with a flag indicating whether the array can contain null items. + + A flag indicating whether the array can contain null items. + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + Instructs the to use the specified constructor when deserializing that object. + + + + + Instructs the how to serialize the object. + + + + + Gets or sets the id. + + The id. + + + + Gets or sets the title. + + The title. + + + + Gets or sets the description. + + The description. + + + + Gets or sets the collection's items converter. + + The collection's items converter. + + + + The parameter list to use when constructing the described by . + If null, the default constructor is used. + When non-null, there must be a constructor defined in the that exactly matches the number, + order, and type of these parameters. + + + + [JsonContainer(ItemConverterType = typeof(MyContainerConverter), ItemConverterParameters = new object[] { 123, "Four" })] + + + + + + Gets or sets the of the . + + The of the . + + + + The parameter list to use when constructing the described by . + If null, the default constructor is used. + When non-null, there must be a constructor defined in the that exactly matches the number, + order, and type of these parameters. + + + + [JsonContainer(NamingStrategyType = typeof(MyNamingStrategy), NamingStrategyParameters = new object[] { 123, "Four" })] + + + + + + Gets or sets a value that indicates whether to preserve object references. + + + true to keep object reference; otherwise, false. The default is false. + + + + + Gets or sets a value that indicates whether to preserve collection's items references. + + + true to keep collection's items object references; otherwise, false. The default is false. + + + + + Gets or sets the reference loop handling used when serializing the collection's items. + + The reference loop handling. + + + + Gets or sets the type name handling used when serializing the collection's items. + + The type name handling. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + Provides methods for converting between .NET types and JSON types. + + + + + + + + Gets or sets a function that creates default . + Default settings are automatically used by serialization methods on , + and and on . + To serialize without using any default settings create a with + . + + + + + Represents JavaScript's boolean value true as a string. This field is read-only. + + + + + Represents JavaScript's boolean value false as a string. This field is read-only. + + + + + Represents JavaScript's null as a string. This field is read-only. + + + + + Represents JavaScript's undefined as a string. This field is read-only. + + + + + Represents JavaScript's positive infinity as a string. This field is read-only. + + + + + Represents JavaScript's negative infinity as a string. This field is read-only. + + + + + Represents JavaScript's NaN as a string. This field is read-only. + + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation using the specified. + + The value to convert. + The format the date will be converted to. + The time zone handling when the date is converted to a string. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation using the specified. + + The value to convert. + The format the date will be converted to. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + The string delimiter character. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + The string delimiter character. + The string escape handling. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Serializes the specified object to a JSON string. + + The object to serialize. + A JSON string representation of the object. + + + + Serializes the specified object to a JSON string using formatting. + + The object to serialize. + Indicates how the output should be formatted. + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using a collection of . + + The object to serialize. + A collection of converters used while serializing. + A JSON string representation of the object. + + + + Serializes the specified object to a JSON string using formatting and a collection of . + + The object to serialize. + Indicates how the output should be formatted. + A collection of converters used while serializing. + A JSON string representation of the object. + + + + Serializes the specified object to a JSON string using . + + The object to serialize. + The used to serialize the object. + If this is null, default serialization settings will be used. + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using a type, formatting and . + + The object to serialize. + The used to serialize the object. + If this is null, default serialization settings will be used. + + The type of the value being serialized. + This parameter is used when is to write out the type name if the type of the value does not match. + Specifying the type is optional. + + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using formatting and . + + The object to serialize. + Indicates how the output should be formatted. + The used to serialize the object. + If this is null, default serialization settings will be used. + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using a type, formatting and . + + The object to serialize. + Indicates how the output should be formatted. + The used to serialize the object. + If this is null, default serialization settings will be used. + + The type of the value being serialized. + This parameter is used when is to write out the type name if the type of the value does not match. + Specifying the type is optional. + + + A JSON string representation of the object. + + + + + Deserializes the JSON to a .NET object. + + The JSON to deserialize. + The deserialized object from the JSON string. + + + + Deserializes the JSON to a .NET object using . + + The JSON to deserialize. + + The used to deserialize the object. + If this is null, default serialization settings will be used. + + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type. + + The JSON to deserialize. + The of object being deserialized. + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type. + + The type of the object to deserialize to. + The JSON to deserialize. + The deserialized object from the JSON string. + + + + Deserializes the JSON to the given anonymous type. + + + The anonymous type to deserialize to. This can't be specified + traditionally and must be inferred from the anonymous type passed + as a parameter. + + The JSON to deserialize. + The anonymous type object. + The deserialized anonymous type from the JSON string. + + + + Deserializes the JSON to the given anonymous type using . + + + The anonymous type to deserialize to. This can't be specified + traditionally and must be inferred from the anonymous type passed + as a parameter. + + The JSON to deserialize. + The anonymous type object. + + The used to deserialize the object. + If this is null, default serialization settings will be used. + + The deserialized anonymous type from the JSON string. + + + + Deserializes the JSON to the specified .NET type using a collection of . + + The type of the object to deserialize to. + The JSON to deserialize. + Converters to use while deserializing. + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type using . + + The type of the object to deserialize to. + The object to deserialize. + + The used to deserialize the object. + If this is null, default serialization settings will be used. + + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type using a collection of . + + The JSON to deserialize. + The type of the object to deserialize. + Converters to use while deserializing. + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type using . + + The JSON to deserialize. + The type of the object to deserialize to. + + The used to deserialize the object. + If this is null, default serialization settings will be used. + + The deserialized object from the JSON string. + + + + Populates the object with values from the JSON string. + + The JSON to populate values from. + The target object to populate values onto. + + + + Populates the object with values from the JSON string using . + + The JSON to populate values from. + The target object to populate values onto. + + The used to deserialize the object. + If this is null, default serialization settings will be used. + + + + + Serializes the to a JSON string. + + The node to serialize. + A JSON string of the . + + + + Serializes the to a JSON string using formatting. + + The node to serialize. + Indicates how the output should be formatted. + A JSON string of the . + + + + Serializes the to a JSON string using formatting and omits the root object if is true. + + The node to serialize. + Indicates how the output should be formatted. + Omits writing the root object. + A JSON string of the . + + + + Deserializes the from a JSON string. + + The JSON string. + The deserialized . + + + + Deserializes the from a JSON string nested in a root element specified by . + + The JSON string. + The name of the root element to append when deserializing. + The deserialized . + + + + Deserializes the from a JSON string nested in a root element specified by + and writes a Json.NET array attribute for collections. + + The JSON string. + The name of the root element to append when deserializing. + + A value to indicate whether to write the Json.NET array attribute. + This attribute helps preserve arrays when converting the written XML back to JSON. + + The deserialized . + + + + Deserializes the from a JSON string nested in a root element specified by , + writes a Json.NET array attribute for collections, and encodes special characters. + + The JSON string. + The name of the root element to append when deserializing. + + A value to indicate whether to write the Json.NET array attribute. + This attribute helps preserve arrays when converting the written XML back to JSON. + + + A value to indicate whether to encode special characters when converting JSON to XML. + If true, special characters like ':', '@', '?', '#' and '$' in JSON property names aren't used to specify + XML namespaces, attributes or processing directives. Instead special characters are encoded and written + as part of the XML element name. + + The deserialized . + + + + Serializes the to a JSON string. + + The node to convert to JSON. + A JSON string of the . + + + + Serializes the to a JSON string using formatting. + + The node to convert to JSON. + Indicates how the output should be formatted. + A JSON string of the . + + + + Serializes the to a JSON string using formatting and omits the root object if is true. + + The node to serialize. + Indicates how the output should be formatted. + Omits writing the root object. + A JSON string of the . + + + + Deserializes the from a JSON string. + + The JSON string. + The deserialized . + + + + Deserializes the from a JSON string nested in a root element specified by . + + The JSON string. + The name of the root element to append when deserializing. + The deserialized . + + + + Deserializes the from a JSON string nested in a root element specified by + and writes a Json.NET array attribute for collections. + + The JSON string. + The name of the root element to append when deserializing. + + A value to indicate whether to write the Json.NET array attribute. + This attribute helps preserve arrays when converting the written XML back to JSON. + + The deserialized . + + + + Deserializes the from a JSON string nested in a root element specified by , + writes a Json.NET array attribute for collections, and encodes special characters. + + The JSON string. + The name of the root element to append when deserializing. + + A value to indicate whether to write the Json.NET array attribute. + This attribute helps preserve arrays when converting the written XML back to JSON. + + + A value to indicate whether to encode special characters when converting JSON to XML. + If true, special characters like ':', '@', '?', '#' and '$' in JSON property names aren't used to specify + XML namespaces, attributes or processing directives. Instead special characters are encoded and written + as part of the XML element name. + + The deserialized . + + + + Converts an object to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Gets a value indicating whether this can read JSON. + + true if this can read JSON; otherwise, false. + + + + Gets a value indicating whether this can write JSON. + + true if this can write JSON; otherwise, false. + + + + Converts an object to and from JSON. + + The object type to convert. + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. If there is no existing value then null will be used. + The existing value has a value. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Instructs the to use the specified when serializing the member or class. + + + + + Gets the of the . + + The of the . + + + + The parameter list to use when constructing the described by . + If null, the default constructor is used. + + + + + Initializes a new instance of the class. + + Type of the . + + + + Initializes a new instance of the class. + + Type of the . + Parameter list to use when constructing the . Can be null. + + + + Represents a collection of . + + + + + Instructs the how to serialize the collection. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + The exception thrown when an error occurs during JSON serialization or deserialization. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or null if no inner exception is specified. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is null. + The class name is null or is zero (0). + + + + Instructs the to deserialize properties with no matching class member into the specified collection + and write values during serialization. + + + + + Gets or sets a value that indicates whether to write extension data when serializing the object. + + + true to write extension data when serializing the object; otherwise, false. The default is true. + + + + + Gets or sets a value that indicates whether to read extension data when deserializing the object. + + + true to read extension data when deserializing the object; otherwise, false. The default is true. + + + + + Initializes a new instance of the class. + + + + + Instructs the not to serialize the public field or public read/write property value. + + + + + Base class for a table of atomized string objects. + + + + + Gets a string containing the same characters as the specified range of characters in the given array. + + The character array containing the name to find. + The zero-based index into the array specifying the first character of the name. + The number of characters in the name. + A string containing the same characters as the specified range of characters in the given array. + + + + Instructs the how to serialize the object. + + + + + Gets or sets the member serialization. + + The member serialization. + + + + Gets or sets the missing member handling used when deserializing this object. + + The missing member handling. + + + + Gets or sets how the object's properties with null values are handled during serialization and deserialization. + + How the object's properties with null values are handled during serialization and deserialization. + + + + Gets or sets a value that indicates whether the object's properties are required. + + + A value indicating whether the object's properties are required. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified member serialization. + + The member serialization. + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + Instructs the to always serialize the member with the specified name. + + + + + Gets or sets the type used when serializing the property's collection items. + + The collection's items type. + + + + The parameter list to use when constructing the described by . + If null, the default constructor is used. + When non-null, there must be a constructor defined in the that exactly matches the number, + order, and type of these parameters. + + + + [JsonProperty(ItemConverterType = typeof(MyContainerConverter), ItemConverterParameters = new object[] { 123, "Four" })] + + + + + + Gets or sets the of the . + + The of the . + + + + The parameter list to use when constructing the described by . + If null, the default constructor is used. + When non-null, there must be a constructor defined in the that exactly matches the number, + order, and type of these parameters. + + + + [JsonProperty(NamingStrategyType = typeof(MyNamingStrategy), NamingStrategyParameters = new object[] { 123, "Four" })] + + + + + + Gets or sets the null value handling used when serializing this property. + + The null value handling. + + + + Gets or sets the default value handling used when serializing this property. + + The default value handling. + + + + Gets or sets the reference loop handling used when serializing this property. + + The reference loop handling. + + + + Gets or sets the object creation handling used when deserializing this property. + + The object creation handling. + + + + Gets or sets the type name handling used when serializing this property. + + The type name handling. + + + + Gets or sets whether this property's value is serialized as a reference. + + Whether this property's value is serialized as a reference. + + + + Gets or sets the order of serialization of a member. + + The numeric order of serialization. + + + + Gets or sets a value indicating whether this property is required. + + + A value indicating whether this property is required. + + + + + Gets or sets the name of the property. + + The name of the property. + + + + Gets or sets the reference loop handling used when serializing the property's collection items. + + The collection's items reference loop handling. + + + + Gets or sets the type name handling used when serializing the property's collection items. + + The collection's items type name handling. + + + + Gets or sets whether this property's collection items are serialized as a reference. + + Whether this property's collection items are serialized as a reference. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified name. + + Name of the property. + + + + Represents a reader that provides fast, non-cached, forward-only access to serialized JSON data. + + + + + Asynchronously reads the next JSON token from the source. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous read. The + property returns true if the next token was read successfully; false if there are no more tokens to read. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously skips the children of the current token. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously reads the next JSON token from the source as a of . + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous read. The + property returns the of . This result will be null at the end of an array. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously reads the next JSON token from the source as a []. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous read. The + property returns the []. This result will be null at the end of an array. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously reads the next JSON token from the source as a of . + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous read. The + property returns the of . This result will be null at the end of an array. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously reads the next JSON token from the source as a of . + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous read. The + property returns the of . This result will be null at the end of an array. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously reads the next JSON token from the source as a of . + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous read. The + property returns the of . This result will be null at the end of an array. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously reads the next JSON token from the source as a of . + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous read. The + property returns the of . This result will be null at the end of an array. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously reads the next JSON token from the source as a of . + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous read. The + property returns the of . This result will be null at the end of an array. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously reads the next JSON token from the source as a . + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous read. The + property returns the . This result will be null at the end of an array. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Specifies the state of the reader. + + + + + A read method has not been called. + + + + + The end of the file has been reached successfully. + + + + + Reader is at a property. + + + + + Reader is at the start of an object. + + + + + Reader is in an object. + + + + + Reader is at the start of an array. + + + + + Reader is in an array. + + + + + The method has been called. + + + + + Reader has just read a value. + + + + + Reader is at the start of a constructor. + + + + + Reader is in a constructor. + + + + + An error occurred that prevents the read operation from continuing. + + + + + The end of the file has been reached successfully. + + + + + Gets the current reader state. + + The current reader state. + + + + Gets or sets a value indicating whether the source should be closed when this reader is closed. + + + true to close the source when this reader is closed; otherwise false. The default is true. + + + + + Gets or sets a value indicating whether multiple pieces of JSON content can + be read from a continuous stream without erroring. + + + true to support reading multiple pieces of JSON content; otherwise false. + The default is false. + + + + + Gets the quotation mark character used to enclose the value of a string. + + + + + Gets or sets how time zones are handled when reading JSON. + + + + + Gets or sets how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. + + + + + Gets or sets how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. + + + + + Gets or sets how custom date formatted strings are parsed when reading JSON. + + + + + Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . + A null value means there is no maximum. + The default value is 64. + + + + + Gets the type of the current JSON token. + + + + + Gets the text value of the current JSON token. + + + + + Gets the .NET type for the current JSON token. + + + + + Gets the depth of the current token in the JSON document. + + The depth of the current token in the JSON document. + + + + Gets the path of the current JSON token. + + + + + Gets or sets the culture used when reading JSON. Defaults to . + + + + + Initializes a new instance of the class. + + + + + Reads the next JSON token from the source. + + true if the next token was read successfully; false if there are no more tokens to read. + + + + Reads the next JSON token from the source as a of . + + A of . This method will return null at the end of an array. + + + + Reads the next JSON token from the source as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the source as a []. + + A [] or null if the next JSON token is null. This method will return null at the end of an array. + + + + Reads the next JSON token from the source as a of . + + A of . This method will return null at the end of an array. + + + + Reads the next JSON token from the source as a of . + + A of . This method will return null at the end of an array. + + + + Reads the next JSON token from the source as a of . + + A of . This method will return null at the end of an array. + + + + Reads the next JSON token from the source as a of . + + A of . This method will return null at the end of an array. + + + + Reads the next JSON token from the source as a of . + + A of . This method will return null at the end of an array. + + + + Skips the children of the current token. + + + + + Sets the current token. + + The new token. + + + + Sets the current token and value. + + The new token. + The value. + + + + Sets the current token and value. + + The new token. + The value. + A flag indicating whether the position index inside an array should be updated. + + + + Sets the state based on current token type. + + + + + Releases unmanaged and - optionally - managed resources. + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Changes the reader's state to . + If is set to true, the source is also closed. + + + + + The exception thrown when an error occurs while reading JSON text. + + + + + Gets the line number indicating where the error occurred. + + The line number indicating where the error occurred. + + + + Gets the line position indicating where the error occurred. + + The line position indicating where the error occurred. + + + + Gets the path to the JSON where the error occurred. + + The path to the JSON where the error occurred. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or null if no inner exception is specified. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is null. + The class name is null or is zero (0). + + + + Initializes a new instance of the class + with a specified error message, JSON path, line number, line position, and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The path to the JSON where the error occurred. + The line number indicating where the error occurred. + The line position indicating where the error occurred. + The exception that is the cause of the current exception, or null if no inner exception is specified. + + + + Instructs the to always serialize the member, and to require that the member has a value. + + + + + The exception thrown when an error occurs during JSON serialization or deserialization. + + + + + Gets the line number indicating where the error occurred. + + The line number indicating where the error occurred. + + + + Gets the line position indicating where the error occurred. + + The line position indicating where the error occurred. + + + + Gets the path to the JSON where the error occurred. + + The path to the JSON where the error occurred. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or null if no inner exception is specified. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is null. + The class name is null or is zero (0). + + + + Initializes a new instance of the class + with a specified error message, JSON path, line number, line position, and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The path to the JSON where the error occurred. + The line number indicating where the error occurred. + The line position indicating where the error occurred. + The exception that is the cause of the current exception, or null if no inner exception is specified. + + + + Serializes and deserializes objects into and from the JSON format. + The enables you to control how objects are encoded into JSON. + + + + + Occurs when the errors during serialization and deserialization. + + + + + Gets or sets the used by the serializer when resolving references. + + + + + Gets or sets the used by the serializer when resolving type names. + + + + + Gets or sets the used by the serializer when resolving type names. + + + + + Gets or sets the used by the serializer when writing trace messages. + + The trace writer. + + + + Gets or sets the equality comparer used by the serializer when comparing references. + + The equality comparer. + + + + Gets or sets how type name writing and reading is handled by the serializer. + The default value is . + + + should be used with caution when your application deserializes JSON from an external source. + Incoming types should be validated with a custom + when deserializing with a value other than . + + + + + Gets or sets how a type name assembly is written and resolved by the serializer. + The default value is . + + The type name assembly format. + + + + Gets or sets how a type name assembly is written and resolved by the serializer. + The default value is . + + The type name assembly format. + + + + Gets or sets how object references are preserved by the serializer. + The default value is . + + + + + Gets or sets how reference loops (e.g. a class referencing itself) is handled. + The default value is . + + + + + Gets or sets how missing members (e.g. JSON contains a property that isn't a member on the object) are handled during deserialization. + The default value is . + + + + + Gets or sets how null values are handled during serialization and deserialization. + The default value is . + + + + + Gets or sets how default values are handled during serialization and deserialization. + The default value is . + + + + + Gets or sets how objects are created during deserialization. + The default value is . + + The object creation handling. + + + + Gets or sets how constructors are used during deserialization. + The default value is . + + The constructor handling. + + + + Gets or sets how metadata properties are used during deserialization. + The default value is . + + The metadata properties handling. + + + + Gets a collection that will be used during serialization. + + Collection that will be used during serialization. + + + + Gets or sets the contract resolver used by the serializer when + serializing .NET objects to JSON and vice versa. + + + + + Gets or sets the used by the serializer when invoking serialization callback methods. + + The context. + + + + Indicates how JSON text output is formatted. + The default value is . + + + + + Gets or sets how dates are written to JSON text. + The default value is . + + + + + Gets or sets how time zones are handled during serialization and deserialization. + The default value is . + + + + + Gets or sets how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. + The default value is . + + + + + Gets or sets how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. + The default value is . + + + + + Gets or sets how special floating point numbers, e.g. , + and , + are written as JSON text. + The default value is . + + + + + Gets or sets how strings are escaped when writing JSON text. + The default value is . + + + + + Gets or sets how and values are formatted when writing JSON text, + and the expected date format when reading JSON text. + The default value is "yyyy'-'MM'-'dd'T'HH':'mm':'ss.FFFFFFFK". + + + + + Gets or sets the culture used when reading JSON. + The default value is . + + + + + Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . + A null value means there is no maximum. + The default value is 64. + + + + + Gets a value indicating whether there will be a check for additional JSON content after deserializing an object. + The default value is false. + + + true if there will be a check for additional JSON content after deserializing an object; otherwise, false. + + + + + Initializes a new instance of the class. + + + + + Creates a new instance. + The will not use default settings + from . + + + A new instance. + The will not use default settings + from . + + + + + Creates a new instance using the specified . + The will not use default settings + from . + + The settings to be applied to the . + + A new instance using the specified . + The will not use default settings + from . + + + + + Creates a new instance. + The will use default settings + from . + + + A new instance. + The will use default settings + from . + + + + + Creates a new instance using the specified . + The will use default settings + from as well as the specified . + + The settings to be applied to the . + + A new instance using the specified . + The will use default settings + from as well as the specified . + + + + + Populates the JSON values onto the target object. + + The that contains the JSON structure to read values from. + The target object to populate values onto. + + + + Populates the JSON values onto the target object. + + The that contains the JSON structure to read values from. + The target object to populate values onto. + + + + Deserializes the JSON structure contained by the specified . + + The that contains the JSON structure to deserialize. + The being deserialized. + + + + Deserializes the JSON structure contained by the specified + into an instance of the specified type. + + The containing the object. + The of object being deserialized. + The instance of being deserialized. + + + + Deserializes the JSON structure contained by the specified + into an instance of the specified type. + + The containing the object. + The type of the object to deserialize. + The instance of being deserialized. + + + + Deserializes the JSON structure contained by the specified + into an instance of the specified type. + + The containing the object. + The of object being deserialized. + The instance of being deserialized. + + + + Serializes the specified and writes the JSON structure + using the specified . + + The used to write the JSON structure. + The to serialize. + + + + Serializes the specified and writes the JSON structure + using the specified . + + The used to write the JSON structure. + The to serialize. + + The type of the value being serialized. + This parameter is used when is to write out the type name if the type of the value does not match. + Specifying the type is optional. + + + + + Serializes the specified and writes the JSON structure + using the specified . + + The used to write the JSON structure. + The to serialize. + + The type of the value being serialized. + This parameter is used when is Auto to write out the type name if the type of the value does not match. + Specifying the type is optional. + + + + + Serializes the specified and writes the JSON structure + using the specified . + + The used to write the JSON structure. + The to serialize. + + + + Specifies the settings on a object. + + + + + Gets or sets how reference loops (e.g. a class referencing itself) are handled. + The default value is . + + Reference loop handling. + + + + Gets or sets how missing members (e.g. JSON contains a property that isn't a member on the object) are handled during deserialization. + The default value is . + + Missing member handling. + + + + Gets or sets how objects are created during deserialization. + The default value is . + + The object creation handling. + + + + Gets or sets how null values are handled during serialization and deserialization. + The default value is . + + Null value handling. + + + + Gets or sets how default values are handled during serialization and deserialization. + The default value is . + + The default value handling. + + + + Gets or sets a collection that will be used during serialization. + + The converters. + + + + Gets or sets how object references are preserved by the serializer. + The default value is . + + The preserve references handling. + + + + Gets or sets how type name writing and reading is handled by the serializer. + The default value is . + + + should be used with caution when your application deserializes JSON from an external source. + Incoming types should be validated with a custom + when deserializing with a value other than . + + The type name handling. + + + + Gets or sets how metadata properties are used during deserialization. + The default value is . + + The metadata properties handling. + + + + Gets or sets how a type name assembly is written and resolved by the serializer. + The default value is . + + The type name assembly format. + + + + Gets or sets how a type name assembly is written and resolved by the serializer. + The default value is . + + The type name assembly format. + + + + Gets or sets how constructors are used during deserialization. + The default value is . + + The constructor handling. + + + + Gets or sets the contract resolver used by the serializer when + serializing .NET objects to JSON and vice versa. + + The contract resolver. + + + + Gets or sets the equality comparer used by the serializer when comparing references. + + The equality comparer. + + + + Gets or sets the used by the serializer when resolving references. + + The reference resolver. + + + + Gets or sets a function that creates the used by the serializer when resolving references. + + A function that creates the used by the serializer when resolving references. + + + + Gets or sets the used by the serializer when writing trace messages. + + The trace writer. + + + + Gets or sets the used by the serializer when resolving type names. + + The binder. + + + + Gets or sets the used by the serializer when resolving type names. + + The binder. + + + + Gets or sets the error handler called during serialization and deserialization. + + The error handler called during serialization and deserialization. + + + + Gets or sets the used by the serializer when invoking serialization callback methods. + + The context. + + + + Gets or sets how and values are formatted when writing JSON text, + and the expected date format when reading JSON text. + The default value is "yyyy'-'MM'-'dd'T'HH':'mm':'ss.FFFFFFFK". + + + + + Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . + A null value means there is no maximum. + The default value is 64. + + + + + Indicates how JSON text output is formatted. + The default value is . + + + + + Gets or sets how dates are written to JSON text. + The default value is . + + + + + Gets or sets how time zones are handled during serialization and deserialization. + The default value is . + + + + + Gets or sets how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. + The default value is . + + + + + Gets or sets how special floating point numbers, e.g. , + and , + are written as JSON. + The default value is . + + + + + Gets or sets how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. + The default value is . + + + + + Gets or sets how strings are escaped when writing JSON text. + The default value is . + + + + + Gets or sets the culture used when reading JSON. + The default value is . + + + + + Gets a value indicating whether there will be a check for additional content after deserializing an object. + The default value is false. + + + true if there will be a check for additional content after deserializing an object; otherwise, false. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + using values copied from the passed in . + + + + + Represents a reader that provides fast, non-cached, forward-only access to JSON text data. + + + + + Asynchronously reads the next JSON token from the source. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous read. The + property returns true if the next token was read successfully; false if there are no more tokens to read. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously reads the next JSON token from the source as a of . + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous read. The + property returns the of . This result will be null at the end of an array. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously reads the next JSON token from the source as a []. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous read. The + property returns the []. This result will be null at the end of an array. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously reads the next JSON token from the source as a of . + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous read. The + property returns the of . This result will be null at the end of an array. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously reads the next JSON token from the source as a of . + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous read. The + property returns the of . This result will be null at the end of an array. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously reads the next JSON token from the source as a of . + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous read. The + property returns the of . This result will be null at the end of an array. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously reads the next JSON token from the source as a of . + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous read. The + property returns the of . This result will be null at the end of an array. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously reads the next JSON token from the source as a of . + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous read. The + property returns the of . This result will be null at the end of an array. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously reads the next JSON token from the source as a . + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous read. The + property returns the . This result will be null at the end of an array. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Initializes a new instance of the class with the specified . + + The containing the JSON data to read. + + + + Gets or sets the reader's property name table. + + + + + Gets or sets the reader's character buffer pool. + + + + + Reads the next JSON token from the underlying . + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Reads the next JSON token from the underlying as a of . + + A of . This method will return null at the end of an array. + + + + Reads the next JSON token from the underlying as a of . + + A of . This method will return null at the end of an array. + + + + Reads the next JSON token from the underlying as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the underlying as a []. + + A [] or null if the next JSON token is null. This method will return null at the end of an array. + + + + Reads the next JSON token from the underlying as a of . + + A of . This method will return null at the end of an array. + + + + Reads the next JSON token from the underlying as a of . + + A of . This method will return null at the end of an array. + + + + Reads the next JSON token from the underlying as a of . + + A of . This method will return null at the end of an array. + + + + Reads the next JSON token from the underlying as a of . + + A of . This method will return null at the end of an array. + + + + Changes the reader's state to . + If is set to true, the underlying is also closed. + + + + + Gets a value indicating whether the class can return line information. + + + true if and can be provided; otherwise, false. + + + + + Gets the current line number. + + + The current line number or 0 if no line information is available (for example, returns false). + + + + + Gets the current line position. + + + The current line position or 0 if no line information is available (for example, returns false). + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating JSON data. + + + + + Asynchronously flushes whatever is in the buffer to the destination and also flushes the destination. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes the JSON value delimiter. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes the specified end token. + + The end token to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously closes this writer. + If is set to true, the destination is also closed. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes the end of the current JSON object or array. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes indent characters. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes an indent space. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes raw JSON without changing the writer's state. + + The raw JSON to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a null value. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes the property name of a name/value pair of a JSON object. + + The name of the property. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes the property name of a name/value pair of a JSON object. + + The name of the property. + A flag to indicate whether the text should be escaped when it is written as a JSON property name. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes the beginning of a JSON array. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes the beginning of a JSON object. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes the start of a constructor with the given name. + + The name of the constructor. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes an undefined value. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes the given white space. + + The string of white space characters. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a [] value. + + The [] value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a comment /*...*/ containing the specified text. + + Text to place inside the comment. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes the end of an array. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes the end of a constructor. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes the end of a JSON object. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes raw JSON where a value is expected and updates the writer's state. + + The raw JSON to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Gets or sets the writer's character array pool. + + + + + Gets or sets how many s to write for each level in the hierarchy when is set to . + + + + + Gets or sets which character to use to quote attribute values. + + + + + Gets or sets which character to use for indenting when is set to . + + + + + Gets or sets a value indicating whether object names will be surrounded with quotes. + + + + + Initializes a new instance of the class using the specified . + + The to write to. + + + + Flushes whatever is in the buffer to the underlying and also flushes the underlying . + + + + + Closes this writer. + If is set to true, the underlying is also closed. + If is set to true, the JSON is auto-completed. + + + + + Writes the beginning of a JSON object. + + + + + Writes the beginning of a JSON array. + + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes the specified end token. + + The end token to write. + + + + Writes the property name of a name/value pair on a JSON object. + + The name of the property. + + + + Writes the property name of a name/value pair on a JSON object. + + The name of the property. + A flag to indicate whether the text should be escaped when it is written as a JSON property name. + + + + Writes indent characters. + + + + + Writes the JSON value delimiter. + + + + + Writes an indent space. + + + + + Writes a value. + An error will raised if the value cannot be written as a single JSON token. + + The value to write. + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes raw JSON. + + The raw JSON to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a of value. + + The of value to write. + + + + Writes a value. + + The value to write. + + + + Writes a of value. + + The of value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a [] value. + + The [] value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes the given white space. + + The string of white space characters. + + + + Specifies the type of JSON token. + + + + + This is returned by the if a read method has not been called. + + + + + An object start token. + + + + + An array start token. + + + + + A constructor start token. + + + + + An object property name. + + + + + A comment. + + + + + Raw JSON. + + + + + An integer. + + + + + A float. + + + + + A string. + + + + + A boolean. + + + + + A null token. + + + + + An undefined token. + + + + + An object end token. + + + + + An array end token. + + + + + A constructor end token. + + + + + A Date. + + + + + Byte data. + + + + + + Represents a reader that provides validation. + + + JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. + + + + + + Sets an event handler for receiving schema validation errors. + + + + + Gets the text value of the current JSON token. + + + + + + Gets the depth of the current token in the JSON document. + + The depth of the current token in the JSON document. + + + + Gets the path of the current JSON token. + + + + + Gets the quotation mark character used to enclose the value of a string. + + + + + + Gets the type of the current JSON token. + + + + + + Gets the .NET type for the current JSON token. + + + + + + Initializes a new instance of the class that + validates the content returned from the given . + + The to read from while validating. + + + + Gets or sets the schema. + + The schema. + + + + Gets the used to construct this . + + The specified in the constructor. + + + + Changes the reader's state to . + If is set to true, the underlying is also closed. + + + + + Reads the next JSON token from the underlying as a of . + + A of . + + + + Reads the next JSON token from the underlying as a []. + + + A [] or null if the next JSON token is null. + + + + + Reads the next JSON token from the underlying as a of . + + A of . + + + + Reads the next JSON token from the underlying as a of . + + A of . + + + + Reads the next JSON token from the underlying as a of . + + A of . + + + + Reads the next JSON token from the underlying as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the underlying as a of . + + A of . This method will return null at the end of an array. + + + + Reads the next JSON token from the underlying as a of . + + A of . + + + + Reads the next JSON token from the underlying . + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating JSON data. + + + + + Asynchronously closes this writer. + If is set to true, the destination is also closed. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously flushes whatever is in the buffer to the destination and also flushes the destination. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes the specified end token. + + The end token to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes indent characters. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes the JSON value delimiter. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes an indent space. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes raw JSON without changing the writer's state. + + The raw JSON to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes the end of the current JSON object or array. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes the end of an array. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes the end of a constructor. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes the end of a JSON object. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a null value. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes the property name of a name/value pair of a JSON object. + + The name of the property. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes the property name of a name/value pair of a JSON object. + + The name of the property. + A flag to indicate whether the text should be escaped when it is written as a JSON property name. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes the beginning of a JSON array. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a comment /*...*/ containing the specified text. + + Text to place inside the comment. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes raw JSON where a value is expected and updates the writer's state. + + The raw JSON to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes the start of a constructor with the given name. + + The name of the constructor. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes the beginning of a JSON object. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes the current token. + + The to read the token from. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes the current token. + + The to read the token from. + A flag indicating whether the current token's children should be written. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes the token and its value. + + The to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes the token and its value. + + The to write. + + The value to write. + A value is only required for tokens that have an associated value, e.g. the property name for . + null can be passed to the method for tokens that don't have a value, e.g. . + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a [] value. + + The [] value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes an undefined value. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes the given white space. + + The string of white space characters. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously ets the state of the . + + The being written. + The value being written. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Gets or sets a value indicating whether the destination should be closed when this writer is closed. + + + true to close the destination when this writer is closed; otherwise false. The default is true. + + + + + Gets or sets a value indicating whether the JSON should be auto-completed when this writer is closed. + + + true to auto-complete the JSON when this writer is closed; otherwise false. The default is true. + + + + + Gets the top. + + The top. + + + + Gets the state of the writer. + + + + + Gets the path of the writer. + + + + + Gets or sets a value indicating how JSON text output should be formatted. + + + + + Gets or sets how dates are written to JSON text. + + + + + Gets or sets how time zones are handled when writing JSON text. + + + + + Gets or sets how strings are escaped when writing JSON text. + + + + + Gets or sets how special floating point numbers, e.g. , + and , + are written to JSON text. + + + + + Gets or sets how and values are formatted when writing JSON text. + + + + + Gets or sets the culture used when writing JSON. Defaults to . + + + + + Initializes a new instance of the class. + + + + + Flushes whatever is in the buffer to the destination and also flushes the destination. + + + + + Closes this writer. + If is set to true, the destination is also closed. + If is set to true, the JSON is auto-completed. + + + + + Writes the beginning of a JSON object. + + + + + Writes the end of a JSON object. + + + + + Writes the beginning of a JSON array. + + + + + Writes the end of an array. + + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes the end constructor. + + + + + Writes the property name of a name/value pair of a JSON object. + + The name of the property. + + + + Writes the property name of a name/value pair of a JSON object. + + The name of the property. + A flag to indicate whether the text should be escaped when it is written as a JSON property name. + + + + Writes the end of the current JSON object or array. + + + + + Writes the current token and its children. + + The to read the token from. + + + + Writes the current token. + + The to read the token from. + A flag indicating whether the current token's children should be written. + + + + Writes the token and its value. + + The to write. + + The value to write. + A value is only required for tokens that have an associated value, e.g. the property name for . + null can be passed to the method for tokens that don't have a value, e.g. . + + + + + Writes the token. + + The to write. + + + + Writes the specified end token. + + The end token to write. + + + + Writes indent characters. + + + + + Writes the JSON value delimiter. + + + + + Writes an indent space. + + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes raw JSON without changing the writer's state. + + The raw JSON to write. + + + + Writes raw JSON where a value is expected and updates the writer's state. + + The raw JSON to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a of value. + + The of value to write. + + + + Writes a of value. + + The of value to write. + + + + Writes a of value. + + The of value to write. + + + + Writes a of value. + + The of value to write. + + + + Writes a of value. + + The of value to write. + + + + Writes a of value. + + The of value to write. + + + + Writes a of value. + + The of value to write. + + + + Writes a of value. + + The of value to write. + + + + Writes a of value. + + The of value to write. + + + + Writes a of value. + + The of value to write. + + + + Writes a of value. + + The of value to write. + + + + Writes a of value. + + The of value to write. + + + + Writes a of value. + + The of value to write. + + + + Writes a of value. + + The of value to write. + + + + Writes a of value. + + The of value to write. + + + + Writes a of value. + + The of value to write. + + + + Writes a of value. + + The of value to write. + + + + Writes a [] value. + + The [] value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + An error will raised if the value cannot be written as a single JSON token. + + The value to write. + + + + Writes a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes the given white space. + + The string of white space characters. + + + + Releases unmanaged and - optionally - managed resources. + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Sets the state of the . + + The being written. + The value being written. + + + + The exception thrown when an error occurs while writing JSON text. + + + + + Gets the path to the JSON where the error occurred. + + The path to the JSON where the error occurred. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or null if no inner exception is specified. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is null. + The class name is null or is zero (0). + + + + Initializes a new instance of the class + with a specified error message, JSON path and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The path to the JSON where the error occurred. + The exception that is the cause of the current exception, or null if no inner exception is specified. + + + + Specifies how JSON comments are handled when loading JSON. + + + + + Ignore comments. + + + + + Load comments as a with type . + + + + + Specifies how duplicate property names are handled when loading JSON. + + + + + Replace the existing value when there is a duplicate property. The value of the last property in the JSON object will be used. + + + + + Ignore the new value when there is a duplicate property. The value of the first property in the JSON object will be used. + + + + + Throw a when a duplicate property is encountered. + + + + + Contains the LINQ to JSON extension methods. + + + + + Returns a collection of tokens that contains the ancestors of every token in the source collection. + + The type of the objects in source, constrained to . + An of that contains the source collection. + An of that contains the ancestors of every token in the source collection. + + + + Returns a collection of tokens that contains every token in the source collection, and the ancestors of every token in the source collection. + + The type of the objects in source, constrained to . + An of that contains the source collection. + An of that contains every token in the source collection, the ancestors of every token in the source collection. + + + + Returns a collection of tokens that contains the descendants of every token in the source collection. + + The type of the objects in source, constrained to . + An of that contains the source collection. + An of that contains the descendants of every token in the source collection. + + + + Returns a collection of tokens that contains every token in the source collection, and the descendants of every token in the source collection. + + The type of the objects in source, constrained to . + An of that contains the source collection. + An of that contains every token in the source collection, and the descendants of every token in the source collection. + + + + Returns a collection of child properties of every object in the source collection. + + An of that contains the source collection. + An of that contains the properties of every object in the source collection. + + + + Returns a collection of child values of every object in the source collection with the given key. + + An of that contains the source collection. + The token key. + An of that contains the values of every token in the source collection with the given key. + + + + Returns a collection of child values of every object in the source collection. + + An of that contains the source collection. + An of that contains the values of every token in the source collection. + + + + Returns a collection of converted child values of every object in the source collection with the given key. + + The type to convert the values to. + An of that contains the source collection. + The token key. + An that contains the converted values of every token in the source collection with the given key. + + + + Returns a collection of converted child values of every object in the source collection. + + The type to convert the values to. + An of that contains the source collection. + An that contains the converted values of every token in the source collection. + + + + Converts the value. + + The type to convert the value to. + A cast as a of . + A converted value. + + + + Converts the value. + + The source collection type. + The type to convert the value to. + A cast as a of . + A converted value. + + + + Returns a collection of child tokens of every array in the source collection. + + The source collection type. + An of that contains the source collection. + An of that contains the values of every token in the source collection. + + + + Returns a collection of converted child tokens of every array in the source collection. + + An of that contains the source collection. + The type to convert the values to. + The source collection type. + An that contains the converted values of every token in the source collection. + + + + Returns the input typed as . + + An of that contains the source collection. + The input typed as . + + + + Returns the input typed as . + + The source collection type. + An of that contains the source collection. + The input typed as . + + + + Represents a collection of objects. + + The type of token. + + + + Gets the of with the specified key. + + + + + + Represents a JSON array. + + + + + + + + Writes this token to a asynchronously. + + A into which this method will write. + The token to monitor for cancellation requests. + A collection of which will be used when writing the token. + A that represents the asynchronous write operation. + + + + Asynchronously loads a from a . + + A that will be read for the content of the . + If this is null, default load settings will be used. + The token to monitor for cancellation requests. The default value is . + A representing the asynchronous load. The property contains the JSON that was read from the specified . + + + + Asynchronously loads a from a . + + A that will be read for the content of the . + The used to load the JSON. + If this is null, default load settings will be used. + The token to monitor for cancellation requests. The default value is . + A representing the asynchronous load. The property contains the JSON that was read from the specified . + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets the node type for this . + + The type. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the specified content. + + The contents of the array. + + + + Initializes a new instance of the class with the specified content. + + The contents of the array. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Loads an from a . + + A that will be read for the content of the . + The used to load the JSON. + If this is null, default load settings will be used. + A that contains the JSON that was read from the specified . + + + + Load a from a string that contains JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + + + + Load a from a string that contains JSON. + + A that contains JSON. + The used to load the JSON. + If this is null, default load settings will be used. + A populated from the string that contains JSON. + + + + + + + Creates a from an object. + + The object that will be used to create . + A with the values of the specified object. + + + + Creates a from an object. + + The object that will be used to create . + The that will be used to read the object. + A with the values of the specified object. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Gets the with the specified key. + + The with the specified key. + + + + Gets or sets the at the specified index. + + + + + + Determines the index of a specific item in the . + + The object to locate in the . + + The index of if found in the list; otherwise, -1. + + + + + Inserts an item to the at the specified index. + + The zero-based index at which should be inserted. + The object to insert into the . + + is not a valid index in the . + + + + + Removes the item at the specified index. + + The zero-based index of the item to remove. + + is not a valid index in the . + + + + + Returns an enumerator that iterates through the collection. + + + A of that can be used to iterate through the collection. + + + + + Adds an item to the . + + The object to add to the . + + + + Removes all items from the . + + + + + Determines whether the contains a specific value. + + The object to locate in the . + + true if is found in the ; otherwise, false. + + + + + Copies the elements of the to an array, starting at a particular array index. + + The array. + Index of the array. + + + + Gets a value indicating whether the is read-only. + + true if the is read-only; otherwise, false. + + + + Removes the first occurrence of a specific object from the . + + The object to remove from the . + + true if was successfully removed from the ; otherwise, false. This method also returns false if is not found in the original . + + + + + Represents a JSON constructor. + + + + + Writes this token to a asynchronously. + + A into which this method will write. + The token to monitor for cancellation requests. + A collection of which will be used when writing the token. + A that represents the asynchronous write operation. + + + + Asynchronously loads a from a . + + A that will be read for the content of the . + The token to monitor for cancellation requests. The default value is . + + A that represents the asynchronous load. The + property returns a that contains the JSON that was read from the specified . + + + + Asynchronously loads a from a . + + A that will be read for the content of the . + The used to load the JSON. + If this is null, default load settings will be used. + The token to monitor for cancellation requests. The default value is . + + A that represents the asynchronous load. The + property returns a that contains the JSON that was read from the specified . + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets or sets the name of this constructor. + + The constructor name. + + + + Gets the node type for this . + + The type. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the specified name and content. + + The constructor name. + The contents of the constructor. + + + + Initializes a new instance of the class with the specified name and content. + + The constructor name. + The contents of the constructor. + + + + Initializes a new instance of the class with the specified name. + + The constructor name. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Gets the with the specified key. + + The with the specified key. + + + + Loads a from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Loads a from a . + + A that will be read for the content of the . + The used to load the JSON. + If this is null, default load settings will be used. + A that contains the JSON that was read from the specified . + + + + Represents a token that can contain other tokens. + + + + + Occurs when the list changes or an item in the list changes. + + + + + Occurs before an item is added to the collection. + + + + + Occurs when the items list of the collection has changed, or the collection is reset. + + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Raises the event. + + The instance containing the event data. + + + + Raises the event. + + The instance containing the event data. + + + + Raises the event. + + The instance containing the event data. + + + + Gets a value indicating whether this token has child tokens. + + + true if this token has child values; otherwise, false. + + + + + Get the first child token of this token. + + + A containing the first child token of the . + + + + + Get the last child token of this token. + + + A containing the last child token of the . + + + + + Returns a collection of the child tokens of this token, in document order. + + + An of containing the child tokens of this , in document order. + + + + + Returns a collection of the child values of this token, in document order. + + The type to convert the values to. + + A containing the child values of this , in document order. + + + + + Returns a collection of the descendant tokens for this token in document order. + + An of containing the descendant tokens of the . + + + + Returns a collection of the tokens that contain this token, and all descendant tokens of this token, in document order. + + An of containing this token, and all the descendant tokens of the . + + + + Adds the specified content as children of this . + + The content to be added. + + + + Adds the specified content as the first children of this . + + The content to be added. + + + + Creates a that can be used to add tokens to the . + + A that is ready to have content written to it. + + + + Replaces the child nodes of this token with the specified content. + + The content. + + + + Removes the child nodes from this token. + + + + + Merge the specified content into this . + + The content to be merged. + + + + Merge the specified content into this using . + + The content to be merged. + The used to merge the content. + + + + Gets the count of child JSON tokens. + + The count of child JSON tokens. + + + + Represents a collection of objects. + + The type of token. + + + + An empty collection of objects. + + + + + Initializes a new instance of the struct. + + The enumerable. + + + + Returns an enumerator that can be used to iterate through the collection. + + + A that can be used to iterate through the collection. + + + + + Gets the of with the specified key. + + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Represents a JSON object. + + + + + + + + Writes this token to a asynchronously. + + A into which this method will write. + The token to monitor for cancellation requests. + A collection of which will be used when writing the token. + A that represents the asynchronous write operation. + + + + Asynchronously loads a from a . + + A that will be read for the content of the . + The token to monitor for cancellation requests. The default value is . + + A that represents the asynchronous load. The + property returns a that contains the JSON that was read from the specified . + + + + Asynchronously loads a from a . + + A that will be read for the content of the . + The used to load the JSON. + If this is null, default load settings will be used. + The token to monitor for cancellation requests. The default value is . + + A that represents the asynchronous load. The + property returns a that contains the JSON that was read from the specified . + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Occurs when a property value changes. + + + + + Occurs when a property value is changing. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the specified content. + + The contents of the object. + + + + Initializes a new instance of the class with the specified content. + + The contents of the object. + + + + Gets the node type for this . + + The type. + + + + Gets an of of this object's properties. + + An of of this object's properties. + + + + Gets a with the specified name. + + The property name. + A with the specified name or null. + + + + Gets the with the specified name. + The exact name will be searched for first and if no matching property is found then + the will be used to match a property. + + The property name. + One of the enumeration values that specifies how the strings will be compared. + A matched with the specified name or null. + + + + Gets a of of this object's property values. + + A of of this object's property values. + + + + Gets the with the specified key. + + The with the specified key. + + + + Gets or sets the with the specified property name. + + + + + + Loads a from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + is not valid JSON. + + + + + Loads a from a . + + A that will be read for the content of the . + The used to load the JSON. + If this is null, default load settings will be used. + A that contains the JSON that was read from the specified . + + is not valid JSON. + + + + + Load a from a string that contains JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + is not valid JSON. + + + + + + + + Load a from a string that contains JSON. + + A that contains JSON. + The used to load the JSON. + If this is null, default load settings will be used. + A populated from the string that contains JSON. + + is not valid JSON. + + + + + + + + Creates a from an object. + + The object that will be used to create . + A with the values of the specified object. + + + + Creates a from an object. + + The object that will be used to create . + The that will be used to read the object. + A with the values of the specified object. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Gets the with the specified property name. + + Name of the property. + The with the specified property name. + + + + Gets the with the specified property name. + The exact property name will be searched for first and if no matching property is found then + the will be used to match a property. + + Name of the property. + One of the enumeration values that specifies how the strings will be compared. + The with the specified property name. + + + + Tries to get the with the specified property name. + The exact property name will be searched for first and if no matching property is found then + the will be used to match a property. + + Name of the property. + The value. + One of the enumeration values that specifies how the strings will be compared. + true if a value was successfully retrieved; otherwise, false. + + + + Adds the specified property name. + + Name of the property. + The value. + + + + Determines whether the JSON object has the specified property name. + + Name of the property. + true if the JSON object has the specified property name; otherwise, false. + + + + Removes the property with the specified name. + + Name of the property. + true if item was successfully removed; otherwise, false. + + + + Tries to get the with the specified property name. + + Name of the property. + The value. + true if a value was successfully retrieved; otherwise, false. + + + + Returns an enumerator that can be used to iterate through the collection. + + + A that can be used to iterate through the collection. + + + + + Raises the event with the provided arguments. + + Name of the property. + + + + Raises the event with the provided arguments. + + Name of the property. + + + + Returns the responsible for binding operations performed on this object. + + The expression tree representation of the runtime value. + + The to bind this object. + + + + + Represents a JSON property. + + + + + Writes this token to a asynchronously. + + A into which this method will write. + The token to monitor for cancellation requests. + A collection of which will be used when writing the token. + A that represents the asynchronous write operation. + + + + Asynchronously loads a from a . + + A that will be read for the content of the . + The token to monitor for cancellation requests. The default value is . + A representing the asynchronous creation. The + property returns a that contains the JSON that was read from the specified . + + + + Asynchronously loads a from a . + + A that will be read for the content of the . + The used to load the JSON. + If this is null, default load settings will be used. + The token to monitor for cancellation requests. The default value is . + A representing the asynchronous creation. The + property returns a that contains the JSON that was read from the specified . + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets the property name. + + The property name. + + + + Gets or sets the property value. + + The property value. + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Gets the node type for this . + + The type. + + + + Initializes a new instance of the class. + + The property name. + The property content. + + + + Initializes a new instance of the class. + + The property name. + The property content. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Loads a from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Loads a from a . + + A that will be read for the content of the . + The used to load the JSON. + If this is null, default load settings will be used. + A that contains the JSON that was read from the specified . + + + + Represents a view of a . + + + + + Initializes a new instance of the class. + + The name. + + + + When overridden in a derived class, returns whether resetting an object changes its value. + + + true if resetting the component changes its value; otherwise, false. + + The component to test for reset capability. + + + + When overridden in a derived class, gets the current value of the property on a component. + + + The value of a property for a given component. + + The component with the property for which to retrieve the value. + + + + When overridden in a derived class, resets the value for this property of the component to the default value. + + The component with the property value that is to be reset to the default value. + + + + When overridden in a derived class, sets the value of the component to a different value. + + The component with the property value that is to be set. + The new value. + + + + When overridden in a derived class, determines a value indicating whether the value of this property needs to be persisted. + + + true if the property should be persisted; otherwise, false. + + The component with the property to be examined for persistence. + + + + When overridden in a derived class, gets the type of the component this property is bound to. + + + A that represents the type of component this property is bound to. + When the or + + methods are invoked, the object specified might be an instance of this type. + + + + + When overridden in a derived class, gets a value indicating whether this property is read-only. + + + true if the property is read-only; otherwise, false. + + + + + When overridden in a derived class, gets the type of the property. + + + A that represents the type of the property. + + + + + Gets the hash code for the name of the member. + + + + The hash code for the name of the member. + + + + + Represents a raw JSON string. + + + + + Asynchronously creates an instance of with the content of the reader's current token. + + The reader. + The token to monitor for cancellation requests. The default value is . + A representing the asynchronous creation. The + property returns an instance of with the content of the reader's current token. + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class. + + The raw json. + + + + Creates an instance of with the content of the reader's current token. + + The reader. + An instance of with the content of the reader's current token. + + + + Specifies the settings used when cloning JSON. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a flag that indicates whether to copy annotations when cloning a . + The default value is true. + + + A flag that indicates whether to copy annotations when cloning a . + + + + + Specifies the settings used when loading JSON. + + + + + Initializes a new instance of the class. + + + + + Gets or sets how JSON comments are handled when loading JSON. + The default value is . + + The JSON comment handling. + + + + Gets or sets how JSON line info is handled when loading JSON. + The default value is . + + The JSON line info handling. + + + + Gets or sets how duplicate property names in JSON objects are handled when loading JSON. + The default value is . + + The JSON duplicate property name handling. + + + + Specifies the settings used when merging JSON. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the method used when merging JSON arrays. + + The method used when merging JSON arrays. + + + + Gets or sets how null value properties are merged. + + How null value properties are merged. + + + + Gets or sets the comparison used to match property names while merging. + The exact property name will be searched for first and if no matching property is found then + the will be used to match a property. + + The comparison used to match property names while merging. + + + + Specifies the settings used when selecting JSON. + + + + + Gets or sets a timeout that will be used when executing regular expressions. + + The timeout that will be used when executing regular expressions. + + + + Gets or sets a flag that indicates whether an error should be thrown if + no tokens are found when evaluating part of the expression. + + + A flag that indicates whether an error should be thrown if + no tokens are found when evaluating part of the expression. + + + + + Represents an abstract JSON token. + + + + + Writes this token to a asynchronously. + + A into which this method will write. + The token to monitor for cancellation requests. + A collection of which will be used when writing the token. + A that represents the asynchronous write operation. + + + + Writes this token to a asynchronously. + + A into which this method will write. + A collection of which will be used when writing the token. + A that represents the asynchronous write operation. + + + + Asynchronously creates a from a . + + An positioned at the token to read into this . + The token to monitor for cancellation requests. The default value is . + + A that represents the asynchronous creation. The + property returns a that contains + the token and its descendant tokens + that were read from the reader. The runtime type of the token is determined + by the token type of the first token encountered in the reader. + + + + + Asynchronously creates a from a . + + An positioned at the token to read into this . + The used to load the JSON. + If this is null, default load settings will be used. + The token to monitor for cancellation requests. The default value is . + + A that represents the asynchronous creation. The + property returns a that contains + the token and its descendant tokens + that were read from the reader. The runtime type of the token is determined + by the token type of the first token encountered in the reader. + + + + + Asynchronously creates a from a . + + A positioned at the token to read into this . + The token to monitor for cancellation requests. The default value is . + + A that represents the asynchronous creation. The + property returns a that contains the token and its descendant tokens + that were read from the reader. The runtime type of the token is determined + by the token type of the first token encountered in the reader. + + + + + Asynchronously creates a from a . + + A positioned at the token to read into this . + The used to load the JSON. + If this is null, default load settings will be used. + The token to monitor for cancellation requests. The default value is . + + A that represents the asynchronous creation. The + property returns a that contains the token and its descendant tokens + that were read from the reader. The runtime type of the token is determined + by the token type of the first token encountered in the reader. + + + + + Gets a comparer that can compare two tokens for value equality. + + A that can compare two nodes for value equality. + + + + Gets or sets the parent. + + The parent. + + + + Gets the root of this . + + The root of this . + + + + Gets the node type for this . + + The type. + + + + Gets a value indicating whether this token has child tokens. + + + true if this token has child values; otherwise, false. + + + + + Compares the values of two tokens, including the values of all descendant tokens. + + The first to compare. + The second to compare. + true if the tokens are equal; otherwise false. + + + + Gets the next sibling token of this node. + + The that contains the next sibling token. + + + + Gets the previous sibling token of this node. + + The that contains the previous sibling token. + + + + Gets the path of the JSON token. + + + + + Adds the specified content immediately after this token. + + A content object that contains simple content or a collection of content objects to be added after this token. + + + + Adds the specified content immediately before this token. + + A content object that contains simple content or a collection of content objects to be added before this token. + + + + Returns a collection of the ancestor tokens of this token. + + A collection of the ancestor tokens of this token. + + + + Returns a collection of tokens that contain this token, and the ancestors of this token. + + A collection of tokens that contain this token, and the ancestors of this token. + + + + Returns a collection of the sibling tokens after this token, in document order. + + A collection of the sibling tokens after this tokens, in document order. + + + + Returns a collection of the sibling tokens before this token, in document order. + + A collection of the sibling tokens before this token, in document order. + + + + Gets the with the specified key. + + The with the specified key. + + + + Gets the with the specified key converted to the specified type. + + The type to convert the token to. + The token key. + The converted token value. + + + + Get the first child token of this token. + + A containing the first child token of the . + + + + Get the last child token of this token. + + A containing the last child token of the . + + + + Returns a collection of the child tokens of this token, in document order. + + An of containing the child tokens of this , in document order. + + + + Returns a collection of the child tokens of this token, in document order, filtered by the specified type. + + The type to filter the child tokens on. + A containing the child tokens of this , in document order. + + + + Returns a collection of the child values of this token, in document order. + + The type to convert the values to. + A containing the child values of this , in document order. + + + + Removes this token from its parent. + + + + + Replaces this token with the specified token. + + The value. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Returns the indented JSON for this token. + + + ToString() returns a non-JSON string value for tokens with a type of . + If you want the JSON for all token types then you should use . + + + The indented JSON for this token. + + + + + Returns the JSON for this token using the given formatting and converters. + + Indicates how the output should be formatted. + A collection of s which will be used when writing the token. + The JSON for this token using the given formatting and converters. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to of . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to of . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to of . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to of . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to of . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to of . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to of . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to of . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to of . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to of . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to of . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to of . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to of . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to of . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to of . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to of . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to of . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to []. + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to of . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to of . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from of to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from of to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from of to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from of to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from of to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from of to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from of to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from of to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from of to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from of to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from of to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from of to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from of to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from of to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from of to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from [] to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from of to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from of to . + + The value to create a from. + The initialized with the specified value. + + + + Creates a for this token. + + A that can be used to read this token and its descendants. + + + + Creates a from an object. + + The object that will be used to create . + A with the value of the specified object. + + + + Creates a from an object using the specified . + + The object that will be used to create . + The that will be used when reading the object. + A with the value of the specified object. + + + + Creates an instance of the specified .NET type from the . + + The object type that the token will be deserialized to. + The new object created from the JSON value. + + + + Creates an instance of the specified .NET type from the . + + The object type that the token will be deserialized to. + The new object created from the JSON value. + + + + Creates an instance of the specified .NET type from the using the specified . + + The object type that the token will be deserialized to. + The that will be used when creating the object. + The new object created from the JSON value. + + + + Creates an instance of the specified .NET type from the using the specified . + + The object type that the token will be deserialized to. + The that will be used when creating the object. + The new object created from the JSON value. + + + + Creates a from a . + + A positioned at the token to read into this . + + A that contains the token and its descendant tokens + that were read from the reader. The runtime type of the token is determined + by the token type of the first token encountered in the reader. + + + + + Creates a from a . + + An positioned at the token to read into this . + The used to load the JSON. + If this is null, default load settings will be used. + + A that contains the token and its descendant tokens + that were read from the reader. The runtime type of the token is determined + by the token type of the first token encountered in the reader. + + + + + Load a from a string that contains JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + Load a from a string that contains JSON. + + A that contains JSON. + The used to load the JSON. + If this is null, default load settings will be used. + A populated from the string that contains JSON. + + + + Creates a from a . + + A positioned at the token to read into this . + The used to load the JSON. + If this is null, default load settings will be used. + + A that contains the token and its descendant tokens + that were read from the reader. The runtime type of the token is determined + by the token type of the first token encountered in the reader. + + + + + Creates a from a . + + A positioned at the token to read into this . + + A that contains the token and its descendant tokens + that were read from the reader. The runtime type of the token is determined + by the token type of the first token encountered in the reader. + + + + + Selects a using a JSONPath expression. Selects the token that matches the object path. + + + A that contains a JSONPath expression. + + A , or null. + + + + Selects a using a JSONPath expression. Selects the token that matches the object path. + + + A that contains a JSONPath expression. + + A flag to indicate whether an error should be thrown if no tokens are found when evaluating part of the expression. + A . + + + + Selects a using a JSONPath expression. Selects the token that matches the object path. + + + A that contains a JSONPath expression. + + The used to select tokens. + A . + + + + Selects a collection of elements using a JSONPath expression. + + + A that contains a JSONPath expression. + + An of that contains the selected elements. + + + + Selects a collection of elements using a JSONPath expression. + + + A that contains a JSONPath expression. + + A flag to indicate whether an error should be thrown if no tokens are found when evaluating part of the expression. + An of that contains the selected elements. + + + + Selects a collection of elements using a JSONPath expression. + + + A that contains a JSONPath expression. + + The used to select tokens. + An of that contains the selected elements. + + + + Returns the responsible for binding operations performed on this object. + + The expression tree representation of the runtime value. + + The to bind this object. + + + + + Returns the responsible for binding operations performed on this object. + + The expression tree representation of the runtime value. + + The to bind this object. + + + + + Creates a new instance of the . All child tokens are recursively cloned. + + A new instance of the . + + + + Creates a new instance of the . All child tokens are recursively cloned. + + A object to configure cloning settings. + A new instance of the . + + + + Adds an object to the annotation list of this . + + The annotation to add. + + + + Get the first annotation object of the specified type from this . + + The type of the annotation to retrieve. + The first annotation object that matches the specified type, or null if no annotation is of the specified type. + + + + Gets the first annotation object of the specified type from this . + + The of the annotation to retrieve. + The first annotation object that matches the specified type, or null if no annotation is of the specified type. + + + + Gets a collection of annotations of the specified type for this . + + The type of the annotations to retrieve. + An that contains the annotations for this . + + + + Gets a collection of annotations of the specified type for this . + + The of the annotations to retrieve. + An of that contains the annotations that match the specified type for this . + + + + Removes the annotations of the specified type from this . + + The type of annotations to remove. + + + + Removes the annotations of the specified type from this . + + The of annotations to remove. + + + + Compares tokens to determine whether they are equal. + + + + + Determines whether the specified objects are equal. + + The first object of type to compare. + The second object of type to compare. + + true if the specified objects are equal; otherwise, false. + + + + + Returns a hash code for the specified object. + + The for which a hash code is to be returned. + A hash code for the specified object. + The type of is a reference type and is null. + + + + Represents a reader that provides fast, non-cached, forward-only access to serialized JSON data. + + + + + Gets the at the reader's current position. + + + + + Initializes a new instance of the class. + + The token to read from. + + + + Initializes a new instance of the class. + + The token to read from. + The initial path of the token. It is prepended to the returned . + + + + Reads the next JSON token from the underlying . + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Gets the path of the current JSON token. + + + + + Specifies the type of token. + + + + + No token type has been set. + + + + + A JSON object. + + + + + A JSON array. + + + + + A JSON constructor. + + + + + A JSON object property. + + + + + A comment. + + + + + An integer value. + + + + + A float value. + + + + + A string value. + + + + + A boolean value. + + + + + A null value. + + + + + An undefined value. + + + + + A date value. + + + + + A raw JSON value. + + + + + A collection of bytes value. + + + + + A Guid value. + + + + + A Uri value. + + + + + A TimeSpan value. + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating JSON data. + + + + + Gets the at the writer's current position. + + + + + Gets the token being written. + + The token being written. + + + + Initializes a new instance of the class writing to the given . + + The container being written to. + + + + Initializes a new instance of the class. + + + + + Flushes whatever is in the buffer to the underlying . + + + + + Closes this writer. + If is set to true, the JSON is auto-completed. + + + Setting to true has no additional effect, since the underlying is a type that cannot be closed. + + + + + Writes the beginning of a JSON object. + + + + + Writes the beginning of a JSON array. + + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes the end. + + The token. + + + + Writes the property name of a name/value pair on a JSON object. + + The name of the property. + + + + Writes a value. + An error will be raised if the value cannot be written as a single JSON token. + + The value to write. + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes raw JSON. + + The raw JSON to write. + + + + Writes a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a [] value. + + The [] value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Represents a value in JSON (string, integer, date, etc). + + + + + Writes this token to a asynchronously. + + A into which this method will write. + The token to monitor for cancellation requests. + A collection of which will be used when writing the token. + A that represents the asynchronous write operation. + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Gets a value indicating whether this token has child tokens. + + + true if this token has child values; otherwise, false. + + + + + Creates a comment with the given value. + + The value. + A comment with the given value. + + + + Creates a string with the given value. + + The value. + A string with the given value. + + + + Creates a null value. + + A null value. + + + + Creates a undefined value. + + A undefined value. + + + + Gets the node type for this . + + The type. + + + + Gets or sets the underlying token value. + + The underlying token value. + + + + Writes this token to a . + + A into which this method will write. + A collection of s which will be used when writing the token. + + + + Indicates whether the current object is equal to another object of the same type. + + + true if the current object is equal to the parameter; otherwise, false. + + An object to compare with this object. + + + + Determines whether the specified is equal to the current . + + The to compare with the current . + + true if the specified is equal to the current ; otherwise, false. + + + + + Serves as a hash function for a particular type. + + + A hash code for the current . + + + + + Returns a that represents this instance. + + + ToString() returns a non-JSON string value for tokens with a type of . + If you want the JSON for all token types then you should use . + + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format provider. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + The format provider. + + A that represents this instance. + + + + + Returns the responsible for binding operations performed on this object. + + The expression tree representation of the runtime value. + + The to bind this object. + + + + + Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object. + + An object to compare with this instance. + + A 32-bit signed integer that indicates the relative order of the objects being compared. The return value has these meanings: + Value + Meaning + Less than zero + This instance is less than . + Zero + This instance is equal to . + Greater than zero + This instance is greater than . + + + is not of the same type as this instance. + + + + + Specifies how line information is handled when loading JSON. + + + + + Ignore line information. + + + + + Load line information. + + + + + Specifies how JSON arrays are merged together. + + + + Concatenate arrays. + + + Union arrays, skipping items that already exist. + + + Replace all array items. + + + Merge array items together, matched by index. + + + + Specifies how null value properties are merged. + + + + + The content's null value properties will be ignored during merging. + + + + + The content's null value properties will be merged. + + + + + Specifies the member serialization options for the . + + + + + All public members are serialized by default. Members can be excluded using or . + This is the default member serialization mode. + + + + + Only members marked with or are serialized. + This member serialization mode can also be set by marking the class with . + + + + + All public and private fields are serialized. Members can be excluded using or . + This member serialization mode can also be set by marking the class with + and setting IgnoreSerializableAttribute on to false. + + + + + Specifies metadata property handling options for the . + + + + + Read metadata properties located at the start of a JSON object. + + + + + Read metadata properties located anywhere in a JSON object. Note that this setting will impact performance. + + + + + Do not try to read metadata properties. + + + + + Specifies missing member handling options for the . + + + + + Ignore a missing member and do not attempt to deserialize it. + + + + + Throw a when a missing member is encountered during deserialization. + + + + + Specifies null value handling options for the . + + + + + + + + + Include null values when serializing and deserializing objects. + + + + + Ignore null values when serializing and deserializing objects. + + + + + Specifies how object creation is handled by the . + + + + + Reuse existing objects, create new objects when needed. + + + + + Only reuse existing objects. + + + + + Always create new objects. + + + + + Specifies reference handling options for the . + Note that references cannot be preserved when a value is set via a non-default constructor such as types that implement . + + + + + + + + Do not preserve references when serializing types. + + + + + Preserve references when serializing into a JSON object structure. + + + + + Preserve references when serializing into a JSON array structure. + + + + + Preserve references when serializing. + + + + + Specifies reference loop handling options for the . + + + + + Throw a when a loop is encountered. + + + + + Ignore loop references and do not serialize. + + + + + Serialize loop references. + + + + + Indicating whether a property is required. + + + + + The property is not required. The default state. + + + + + The property must be defined in JSON but can be a null value. + + + + + The property must be defined in JSON and cannot be a null value. + + + + + The property is not required but it cannot be a null value. + + + + + + Contains the JSON schema extension methods. + + + JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. + + + + + + + Determines whether the is valid. + + + JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. + + + The source to test. + The schema to test with. + + true if the specified is valid; otherwise, false. + + + + + + Determines whether the is valid. + + + JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. + + + The source to test. + The schema to test with. + When this method returns, contains any error messages generated while validating. + + true if the specified is valid; otherwise, false. + + + + + + Validates the specified . + + + JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. + + + The source to test. + The schema to test with. + + + + + Validates the specified . + + + JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. + + + The source to test. + The schema to test with. + The validation event handler. + + + + + An in-memory representation of a JSON Schema. + + + JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. + + + + + + Gets or sets the id. + + + + + Gets or sets the title. + + + + + Gets or sets whether the object is required. + + + + + Gets or sets whether the object is read-only. + + + + + Gets or sets whether the object is visible to users. + + + + + Gets or sets whether the object is transient. + + + + + Gets or sets the description of the object. + + + + + Gets or sets the types of values allowed by the object. + + The type. + + + + Gets or sets the pattern. + + The pattern. + + + + Gets or sets the minimum length. + + The minimum length. + + + + Gets or sets the maximum length. + + The maximum length. + + + + Gets or sets a number that the value should be divisible by. + + A number that the value should be divisible by. + + + + Gets or sets the minimum. + + The minimum. + + + + Gets or sets the maximum. + + The maximum. + + + + Gets or sets a flag indicating whether the value can not equal the number defined by the minimum attribute (). + + A flag indicating whether the value can not equal the number defined by the minimum attribute (). + + + + Gets or sets a flag indicating whether the value can not equal the number defined by the maximum attribute (). + + A flag indicating whether the value can not equal the number defined by the maximum attribute (). + + + + Gets or sets the minimum number of items. + + The minimum number of items. + + + + Gets or sets the maximum number of items. + + The maximum number of items. + + + + Gets or sets the of items. + + The of items. + + + + Gets or sets a value indicating whether items in an array are validated using the instance at their array position from . + + + true if items are validated using their array position; otherwise, false. + + + + + Gets or sets the of additional items. + + The of additional items. + + + + Gets or sets a value indicating whether additional items are allowed. + + + true if additional items are allowed; otherwise, false. + + + + + Gets or sets whether the array items must be unique. + + + + + Gets or sets the of properties. + + The of properties. + + + + Gets or sets the of additional properties. + + The of additional properties. + + + + Gets or sets the pattern properties. + + The pattern properties. + + + + Gets or sets a value indicating whether additional properties are allowed. + + + true if additional properties are allowed; otherwise, false. + + + + + Gets or sets the required property if this property is present. + + The required property if this property is present. + + + + Gets or sets the a collection of valid enum values allowed. + + A collection of valid enum values allowed. + + + + Gets or sets disallowed types. + + The disallowed types. + + + + Gets or sets the default value. + + The default value. + + + + Gets or sets the collection of that this schema extends. + + The collection of that this schema extends. + + + + Gets or sets the format. + + The format. + + + + Initializes a new instance of the class. + + + + + Reads a from the specified . + + The containing the JSON Schema to read. + The object representing the JSON Schema. + + + + Reads a from the specified . + + The containing the JSON Schema to read. + The to use when resolving schema references. + The object representing the JSON Schema. + + + + Load a from a string that contains JSON Schema. + + A that contains JSON Schema. + A populated from the string that contains JSON Schema. + + + + Load a from a string that contains JSON Schema using the specified . + + A that contains JSON Schema. + The resolver. + A populated from the string that contains JSON Schema. + + + + Writes this schema to a . + + A into which this method will write. + + + + Writes this schema to a using the specified . + + A into which this method will write. + The resolver used. + + + + Returns a that represents the current . + + + A that represents the current . + + + + + + Returns detailed information about the schema exception. + + + JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. + + + + + + Gets the line number indicating where the error occurred. + + The line number indicating where the error occurred. + + + + Gets the line position indicating where the error occurred. + + The line position indicating where the error occurred. + + + + Gets the path to the JSON where the error occurred. + + The path to the JSON where the error occurred. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or null if no inner exception is specified. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is null. + The class name is null or is zero (0). + + + + + Generates a from a specified . + + + JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. + + + + + + Gets or sets how undefined schemas are handled by the serializer. + + + + + Gets or sets the contract resolver. + + The contract resolver. + + + + Generate a from the specified type. + + The type to generate a from. + A generated from the specified type. + + + + Generate a from the specified type. + + The type to generate a from. + The used to resolve schema references. + A generated from the specified type. + + + + Generate a from the specified type. + + The type to generate a from. + Specify whether the generated root will be nullable. + A generated from the specified type. + + + + Generate a from the specified type. + + The type to generate a from. + The used to resolve schema references. + Specify whether the generated root will be nullable. + A generated from the specified type. + + + + + Resolves from an id. + + + JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. + + + + + + Gets or sets the loaded schemas. + + The loaded schemas. + + + + Initializes a new instance of the class. + + + + + Gets a for the specified reference. + + The id. + A for the specified reference. + + + + + The value types allowed by the . + + + JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. + + + + + + No type specified. + + + + + String type. + + + + + Float type. + + + + + Integer type. + + + + + Boolean type. + + + + + Object type. + + + + + Array type. + + + + + Null type. + + + + + Any type. + + + + + + Specifies undefined schema Id handling options for the . + + + JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. + + + + + + Do not infer a schema Id. + + + + + Use the .NET type name as the schema Id. + + + + + Use the assembly qualified .NET type name as the schema Id. + + + + + + Returns detailed information related to the . + + + JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. + + + + + + Gets the associated with the validation error. + + The JsonSchemaException associated with the validation error. + + + + Gets the path of the JSON location where the validation error occurred. + + The path of the JSON location where the validation error occurred. + + + + Gets the text description corresponding to the validation error. + + The text description. + + + + + Represents the callback method that will handle JSON schema validation events and the . + + + JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. + + + + + + A camel case naming strategy. + + + + + Initializes a new instance of the class. + + + A flag indicating whether dictionary keys should be processed. + + + A flag indicating whether explicitly specified property names should be processed, + e.g. a property name customized with a . + + + + + Initializes a new instance of the class. + + + A flag indicating whether dictionary keys should be processed. + + + A flag indicating whether explicitly specified property names should be processed, + e.g. a property name customized with a . + + + A flag indicating whether extension data names should be processed. + + + + + Initializes a new instance of the class. + + + + + Resolves the specified property name. + + The property name to resolve. + The resolved property name. + + + + Resolves member mappings for a type, camel casing property names. + + + + + Initializes a new instance of the class. + + + + + Resolves the contract for a given type. + + The type to resolve a contract for. + The contract for a given type. + + + + Used by to resolve a for a given . + + + + + Gets a value indicating whether members are being get and set using dynamic code generation. + This value is determined by the runtime permissions available. + + + true if using dynamic code generation; otherwise, false. + + + + + Gets or sets the default members search flags. + + The default members search flags. + + + + Gets or sets a value indicating whether compiler generated members should be serialized. + + + true if serialized compiler generated members; otherwise, false. + + + + + Gets or sets a value indicating whether to ignore the interface when serializing and deserializing types. + + + true if the interface will be ignored when serializing and deserializing types; otherwise, false. + + + + + Gets or sets a value indicating whether to ignore the attribute when serializing and deserializing types. + + + true if the attribute will be ignored when serializing and deserializing types; otherwise, false. + + + + + Gets or sets a value indicating whether to ignore IsSpecified members when serializing and deserializing types. + + + true if the IsSpecified members will be ignored when serializing and deserializing types; otherwise, false. + + + + + Gets or sets a value indicating whether to ignore ShouldSerialize members when serializing and deserializing types. + + + true if the ShouldSerialize members will be ignored when serializing and deserializing types; otherwise, false. + + + + + Gets or sets the naming strategy used to resolve how property names and dictionary keys are serialized. + + The naming strategy used to resolve how property names and dictionary keys are serialized. + + + + Initializes a new instance of the class. + + + + + Resolves the contract for a given type. + + The type to resolve a contract for. + The contract for a given type. + + + + Gets the serializable members for the type. + + The type to get serializable members for. + The serializable members for the type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates the constructor parameters. + + The constructor to create properties for. + The type's member properties. + Properties for the given . + + + + Creates a for the given . + + The matching member property. + The constructor parameter. + A created for the given . + + + + Resolves the default for the contract. + + Type of the object. + The contract's default . + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Determines which contract type is created for the given type. + + Type of the object. + A for the given type. + + + + Creates properties for the given . + + The type to create properties for. + /// The member serialization mode for the type. + Properties for the given . + + + + Creates the used by the serializer to get and set values from a member. + + The member. + The used by the serializer to get and set values from a member. + + + + Creates a for the given . + + The member's parent . + The member to create a for. + A created for the given . + + + + Resolves the name of the property. + + Name of the property. + Resolved name of the property. + + + + Resolves the name of the extension data. By default no changes are made to extension data names. + + Name of the extension data. + Resolved name of the extension data. + + + + Resolves the key of the dictionary. By default is used to resolve dictionary keys. + + Key of the dictionary. + Resolved key of the dictionary. + + + + Gets the resolved name of the property. + + Name of the property. + Name of the property. + + + + The default naming strategy. Property names and dictionary keys are unchanged. + + + + + Resolves the specified property name. + + The property name to resolve. + The resolved property name. + + + + The default serialization binder used when resolving and loading classes from type names. + + + + + Initializes a new instance of the class. + + + + + When overridden in a derived class, controls the binding of a serialized object to a type. + + Specifies the name of the serialized object. + Specifies the name of the serialized object. + + The type of the object the formatter creates a new instance of. + + + + + When overridden in a derived class, controls the binding of a serialized object to a type. + + The type of the object the formatter creates a new instance of. + Specifies the name of the serialized object. + Specifies the name of the serialized object. + + + + Represents a trace writer that writes to the application's instances. + + + + + Gets the that will be used to filter the trace messages passed to the writer. + For example a filter level of will exclude messages and include , + and messages. + + + The that will be used to filter the trace messages passed to the writer. + + + + + Writes the specified trace level, message and optional exception. + + The at which to write this trace. + The trace message. + The trace exception. This parameter is optional. + + + + Get and set values for a using dynamic methods. + + + + + Initializes a new instance of the class. + + The member info. + + + + Sets the value. + + The target to set the value on. + The value to set on the target. + + + + Gets the value. + + The target to get the value from. + The value. + + + + Provides information surrounding an error. + + + + + Gets the error. + + The error. + + + + Gets the original object that caused the error. + + The original object that caused the error. + + + + Gets the member that caused the error. + + The member that caused the error. + + + + Gets the path of the JSON location where the error occurred. + + The path of the JSON location where the error occurred. + + + + Gets or sets a value indicating whether this is handled. + + true if handled; otherwise, false. + + + + Provides data for the Error event. + + + + + Gets the current object the error event is being raised against. + + The current object the error event is being raised against. + + + + Gets the error context. + + The error context. + + + + Initializes a new instance of the class. + + The current object. + The error context. + + + + Get and set values for a using dynamic methods. + + + + + Initializes a new instance of the class. + + The member info. + + + + Sets the value. + + The target to set the value on. + The value to set on the target. + + + + Gets the value. + + The target to get the value from. + The value. + + + + Provides methods to get attributes. + + + + + Returns a collection of all of the attributes, or an empty collection if there are no attributes. + + When true, look up the hierarchy chain for the inherited custom attribute. + A collection of s, or an empty collection. + + + + Returns a collection of attributes, identified by type, or an empty collection if there are no attributes. + + The type of the attributes. + When true, look up the hierarchy chain for the inherited custom attribute. + A collection of s, or an empty collection. + + + + Used by to resolve a for a given . + + + + + + + + + Resolves the contract for a given type. + + The type to resolve a contract for. + The contract for a given type. + + + + Used to resolve references when serializing and deserializing JSON by the . + + + + + Resolves a reference to its object. + + The serialization context. + The reference to resolve. + The object that was resolved from the reference. + + + + Gets the reference for the specified object. + + The serialization context. + The object to get a reference for. + The reference to the object. + + + + Determines whether the specified object is referenced. + + The serialization context. + The object to test for a reference. + + true if the specified object is referenced; otherwise, false. + + + + + Adds a reference to the specified object. + + The serialization context. + The reference. + The object to reference. + + + + Allows users to control class loading and mandate what class to load. + + + + + When implemented, controls the binding of a serialized object to a type. + + Specifies the name of the serialized object. + Specifies the name of the serialized object + The type of the object the formatter creates a new instance of. + + + + When implemented, controls the binding of a serialized object to a type. + + The type of the object the formatter creates a new instance of. + Specifies the name of the serialized object. + Specifies the name of the serialized object. + + + + Represents a trace writer. + + + + + Gets the that will be used to filter the trace messages passed to the writer. + For example a filter level of will exclude messages and include , + and messages. + + The that will be used to filter the trace messages passed to the writer. + + + + Writes the specified trace level, message and optional exception. + + The at which to write this trace. + The trace message. + The trace exception. This parameter is optional. + + + + Provides methods to get and set values. + + + + + Sets the value. + + The target to set the value on. + The value to set on the target. + + + + Gets the value. + + The target to get the value from. + The value. + + + + Contract details for a used by the . + + + + + Gets the of the collection items. + + The of the collection items. + + + + Gets a value indicating whether the collection type is a multidimensional array. + + true if the collection type is a multidimensional array; otherwise, false. + + + + Gets or sets the function used to create the object. When set this function will override . + + The function used to create the object. + + + + Gets a value indicating whether the creator has a parameter with the collection values. + + true if the creator has a parameter with the collection values; otherwise, false. + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Contract details for a used by the . + + + + + Gets or sets the default collection items . + + The converter. + + + + Gets or sets a value indicating whether the collection items preserve object references. + + true if collection items preserve object references; otherwise, false. + + + + Gets or sets the collection item reference loop handling. + + The reference loop handling. + + + + Gets or sets the collection item type name handling. + + The type name handling. + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Handles serialization callback events. + + The object that raised the callback event. + The streaming context. + + + + Handles serialization error callback events. + + The object that raised the callback event. + The streaming context. + The error context. + + + + Sets extension data for an object during deserialization. + + The object to set extension data on. + The extension data key. + The extension data value. + + + + Gets extension data for an object during serialization. + + The object to set extension data on. + + + + Contract details for a used by the . + + + + + Gets the underlying type for the contract. + + The underlying type for the contract. + + + + Gets or sets the type created during deserialization. + + The type created during deserialization. + + + + Gets or sets whether this type contract is serialized as a reference. + + Whether this type contract is serialized as a reference. + + + + Gets or sets the default for this contract. + + The converter. + + + + Gets the internally resolved for the contract's type. + This converter is used as a fallback converter when no other converter is resolved. + Setting will always override this converter. + + + + + Gets or sets all methods called immediately after deserialization of the object. + + The methods called immediately after deserialization of the object. + + + + Gets or sets all methods called during deserialization of the object. + + The methods called during deserialization of the object. + + + + Gets or sets all methods called after serialization of the object graph. + + The methods called after serialization of the object graph. + + + + Gets or sets all methods called before serialization of the object. + + The methods called before serialization of the object. + + + + Gets or sets all method called when an error is thrown during the serialization of the object. + + The methods called when an error is thrown during the serialization of the object. + + + + Gets or sets the default creator method used to create the object. + + The default creator method used to create the object. + + + + Gets or sets a value indicating whether the default creator is non-public. + + true if the default object creator is non-public; otherwise, false. + + + + Contract details for a used by the . + + + + + Gets or sets the dictionary key resolver. + + The dictionary key resolver. + + + + Gets the of the dictionary keys. + + The of the dictionary keys. + + + + Gets the of the dictionary values. + + The of the dictionary values. + + + + Gets or sets the function used to create the object. When set this function will override . + + The function used to create the object. + + + + Gets a value indicating whether the creator has a parameter with the dictionary values. + + true if the creator has a parameter with the dictionary values; otherwise, false. + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Contract details for a used by the . + + + + + Gets the object's properties. + + The object's properties. + + + + Gets or sets the property name resolver. + + The property name resolver. + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Contract details for a used by the . + + + + + Gets or sets the object constructor. + + The object constructor. + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Contract details for a used by the . + + + + + Gets or sets the object member serialization. + + The member object serialization. + + + + Gets or sets the missing member handling used when deserializing this object. + + The missing member handling. + + + + Gets or sets a value that indicates whether the object's properties are required. + + + A value indicating whether the object's properties are required. + + + + + Gets or sets how the object's properties with null values are handled during serialization and deserialization. + + How the object's properties with null values are handled during serialization and deserialization. + + + + Gets the object's properties. + + The object's properties. + + + + Gets a collection of instances that define the parameters used with . + + + + + Gets or sets the function used to create the object. When set this function will override . + This function is called with a collection of arguments which are defined by the collection. + + The function used to create the object. + + + + Gets or sets the extension data setter. + + + + + Gets or sets the extension data getter. + + + + + Gets or sets the extension data value type. + + + + + Gets or sets the extension data name resolver. + + The extension data name resolver. + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Maps a JSON property to a .NET member or constructor parameter. + + + + + Gets or sets the name of the property. + + The name of the property. + + + + Gets or sets the type that declared this property. + + The type that declared this property. + + + + Gets or sets the order of serialization of a member. + + The numeric order of serialization. + + + + Gets or sets the name of the underlying member or parameter. + + The name of the underlying member or parameter. + + + + Gets the that will get and set the during serialization. + + The that will get and set the during serialization. + + + + Gets or sets the for this property. + + The for this property. + + + + Gets or sets the type of the property. + + The type of the property. + + + + Gets or sets the for the property. + If set this converter takes precedence over the contract converter for the property type. + + The converter. + + + + Gets or sets the member converter. + + The member converter. + + + + Gets or sets a value indicating whether this is ignored. + + true if ignored; otherwise, false. + + + + Gets or sets a value indicating whether this is readable. + + true if readable; otherwise, false. + + + + Gets or sets a value indicating whether this is writable. + + true if writable; otherwise, false. + + + + Gets or sets a value indicating whether this has a member attribute. + + true if has a member attribute; otherwise, false. + + + + Gets the default value. + + The default value. + + + + Gets or sets a value indicating whether this is required. + + A value indicating whether this is required. + + + + Gets a value indicating whether has a value specified. + + + + + Gets or sets a value indicating whether this property preserves object references. + + + true if this instance is reference; otherwise, false. + + + + + Gets or sets the property null value handling. + + The null value handling. + + + + Gets or sets the property default value handling. + + The default value handling. + + + + Gets or sets the property reference loop handling. + + The reference loop handling. + + + + Gets or sets the property object creation handling. + + The object creation handling. + + + + Gets or sets or sets the type name handling. + + The type name handling. + + + + Gets or sets a predicate used to determine whether the property should be serialized. + + A predicate used to determine whether the property should be serialized. + + + + Gets or sets a predicate used to determine whether the property should be deserialized. + + A predicate used to determine whether the property should be deserialized. + + + + Gets or sets a predicate used to determine whether the property should be serialized. + + A predicate used to determine whether the property should be serialized. + + + + Gets or sets an action used to set whether the property has been deserialized. + + An action used to set whether the property has been deserialized. + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Gets or sets the converter used when serializing the property's collection items. + + The collection's items converter. + + + + Gets or sets whether this property's collection items are serialized as a reference. + + Whether this property's collection items are serialized as a reference. + + + + Gets or sets the type name handling used when serializing the property's collection items. + + The collection's items type name handling. + + + + Gets or sets the reference loop handling used when serializing the property's collection items. + + The collection's items reference loop handling. + + + + A collection of objects. + + + + + Initializes a new instance of the class. + + The type. + + + + When implemented in a derived class, extracts the key from the specified element. + + The element from which to extract the key. + The key for the specified element. + + + + Adds a object. + + The property to add to the collection. + + + + Gets the closest matching object. + First attempts to get an exact case match of and then + a case insensitive match. + + Name of the property. + A matching property if found. + + + + Gets a property by property name. + + The name of the property to get. + Type property name string comparison. + A matching property if found. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Lookup and create an instance of the type described by the argument. + + The type to create. + Optional arguments to pass to an initializing constructor of the JsonConverter. + If null, the default constructor is used. + + + + A kebab case naming strategy. + + + + + Initializes a new instance of the class. + + + A flag indicating whether dictionary keys should be processed. + + + A flag indicating whether explicitly specified property names should be processed, + e.g. a property name customized with a . + + + + + Initializes a new instance of the class. + + + A flag indicating whether dictionary keys should be processed. + + + A flag indicating whether explicitly specified property names should be processed, + e.g. a property name customized with a . + + + A flag indicating whether extension data names should be processed. + + + + + Initializes a new instance of the class. + + + + + Resolves the specified property name. + + The property name to resolve. + The resolved property name. + + + + Represents a trace writer that writes to memory. When the trace message limit is + reached then old trace messages will be removed as new messages are added. + + + + + Gets the that will be used to filter the trace messages passed to the writer. + For example a filter level of will exclude messages and include , + and messages. + + + The that will be used to filter the trace messages passed to the writer. + + + + + Initializes a new instance of the class. + + + + + Writes the specified trace level, message and optional exception. + + The at which to write this trace. + The trace message. + The trace exception. This parameter is optional. + + + + Returns an enumeration of the most recent trace messages. + + An enumeration of the most recent trace messages. + + + + Returns a of the most recent trace messages. + + + A of the most recent trace messages. + + + + + A base class for resolving how property names and dictionary keys are serialized. + + + + + A flag indicating whether dictionary keys should be processed. + Defaults to false. + + + + + A flag indicating whether extension data names should be processed. + Defaults to false. + + + + + A flag indicating whether explicitly specified property names, + e.g. a property name customized with a , should be processed. + Defaults to false. + + + + + Gets the serialized name for a given property name. + + The initial property name. + A flag indicating whether the property has had a name explicitly specified. + The serialized property name. + + + + Gets the serialized name for a given extension data name. + + The initial extension data name. + The serialized extension data name. + + + + Gets the serialized key for a given dictionary key. + + The initial dictionary key. + The serialized dictionary key. + + + + Resolves the specified property name. + + The property name to resolve. + The resolved property name. + + + + Hash code calculation + + + + + + Object equality implementation + + + + + + + Compare to another NamingStrategy + + + + + + + Represents a method that constructs an object. + + The object type to create. + + + + When applied to a method, specifies that the method is called when an error occurs serializing an object. + + + + + Provides methods to get attributes from a , , or . + + + + + Initializes a new instance of the class. + + The instance to get attributes for. This parameter should be a , , or . + + + + Returns a collection of all of the attributes, or an empty collection if there are no attributes. + + When true, look up the hierarchy chain for the inherited custom attribute. + A collection of s, or an empty collection. + + + + Returns a collection of attributes, identified by type, or an empty collection if there are no attributes. + + The type of the attributes. + When true, look up the hierarchy chain for the inherited custom attribute. + A collection of s, or an empty collection. + + + + Get and set values for a using reflection. + + + + + Initializes a new instance of the class. + + The member info. + + + + Sets the value. + + The target to set the value on. + The value to set on the target. + + + + Gets the value. + + The target to get the value from. + The value. + + + + A snake case naming strategy. + + + + + Initializes a new instance of the class. + + + A flag indicating whether dictionary keys should be processed. + + + A flag indicating whether explicitly specified property names should be processed, + e.g. a property name customized with a . + + + + + Initializes a new instance of the class. + + + A flag indicating whether dictionary keys should be processed. + + + A flag indicating whether explicitly specified property names should be processed, + e.g. a property name customized with a . + + + A flag indicating whether extension data names should be processed. + + + + + Initializes a new instance of the class. + + + + + Resolves the specified property name. + + The property name to resolve. + The resolved property name. + + + + Specifies how strings are escaped when writing JSON text. + + + + + Only control characters (e.g. newline) are escaped. + + + + + All non-ASCII and control characters (e.g. newline) are escaped. + + + + + HTML (<, >, &, ', ") and control characters (e.g. newline) are escaped. + + + + + Indicates the method that will be used during deserialization for locating and loading assemblies. + + + + + In simple mode, the assembly used during deserialization need not match exactly the assembly used during serialization. Specifically, the version numbers need not match as the LoadWithPartialName method of the class is used to load the assembly. + + + + + In full mode, the assembly used during deserialization must match exactly the assembly used during serialization. The Load method of the class is used to load the assembly. + + + + + Specifies type name handling options for the . + + + should be used with caution when your application deserializes JSON from an external source. + Incoming types should be validated with a custom + when deserializing with a value other than . + + + + + Do not include the .NET type name when serializing types. + + + + + Include the .NET type name when serializing into a JSON object structure. + + + + + Include the .NET type name when serializing into a JSON array structure. + + + + + Always include the .NET type name when serializing. + + + + + Include the .NET type name when the type of the object being serialized is not the same as its declared type. + Note that this doesn't include the root serialized object by default. To include the root object's type name in JSON + you must specify a root type object with + or . + + + + + Determines whether the collection is null or empty. + + The collection. + + true if the collection is null or empty; otherwise, false. + + + + + Adds the elements of the specified collection to the specified generic . + + The list to add to. + The collection of elements to add. + + + + Converts the value to the specified type. If the value is unable to be converted, the + value is checked whether it assignable to the specified type. + + The value to convert. + The culture to use when converting. + The type to convert or cast the value to. + + The converted type. If conversion was unsuccessful, the initial value + is returned if assignable to the target type. + + + + + Helper method for generating a MetaObject which calls a + specific method on Dynamic that returns a result + + + + + Helper method for generating a MetaObject which calls a + specific method on Dynamic, but uses one of the arguments for + the result. + + + + + Helper method for generating a MetaObject which calls a + specific method on Dynamic, but uses one of the arguments for + the result. + + + + + Returns a Restrictions object which includes our current restrictions merged + with a restriction limiting our type + + + + + Helper class for serializing immutable collections. + Note that this is used by all builds, even those that don't support immutable collections, in case the DLL is GACed + https://github.com/JamesNK/Newtonsoft.Json/issues/652 + + + + + Gets the type of the typed collection's items. + + The type. + The type of the typed collection's items. + + + + Gets the member's underlying type. + + The member. + The underlying type of the member. + + + + Determines whether the property is an indexed property. + + The property. + + true if the property is an indexed property; otherwise, false. + + + + + Gets the member's value on the object. + + The member. + The target object. + The member's value on the object. + + + + Sets the member's value on the target object. + + The member. + The target. + The value. + + + + Determines whether the specified MemberInfo can be read. + + The MemberInfo to determine whether can be read. + /// if set to true then allow the member to be gotten non-publicly. + + true if the specified MemberInfo can be read; otherwise, false. + + + + + Determines whether the specified MemberInfo can be set. + + The MemberInfo to determine whether can be set. + if set to true then allow the member to be set non-publicly. + if set to true then allow the member to be set if read-only. + + true if the specified MemberInfo can be set; otherwise, false. + + + + + Builds a string. Unlike this class lets you reuse its internal buffer. + + + + + Determines whether the string is all white space. Empty string will return false. + + The string to test whether it is all white space. + + true if the string is all white space; otherwise, false. + + + + + Specifies the state of the . + + + + + An exception has been thrown, which has left the in an invalid state. + You may call the method to put the in the Closed state. + Any other method calls result in an being thrown. + + + + + The method has been called. + + + + + An object is being written. + + + + + An array is being written. + + + + + A constructor is being written. + + + + + A property is being written. + + + + + A write method has not been called. + + + + Specifies that an output will not be null even if the corresponding type allows it. + + + Specifies that when a method returns , the parameter will not be null even if the corresponding type allows it. + + + Initializes the attribute with the specified return value condition. + + The return value condition. If the method returns this value, the associated parameter will not be null. + + + + Gets the return value condition. + + + Specifies that an output may be null even if the corresponding type disallows it. + + + Specifies that null is allowed as an input even if the corresponding type disallows it. + + + + Specifies that the method will not return if the associated Boolean parameter is passed the specified value. + + + + + Initializes a new instance of the class. + + + The condition parameter value. Code after the method will be considered unreachable by diagnostics if the argument to + the associated parameter matches this value. + + + + Gets the condition parameter value. + + + diff --git a/TestWordAddIn1/bin/Debug/TestWordAddIn1.dll b/TestWordAddIn1/bin/Debug/TestWordAddIn1.dll new file mode 100644 index 0000000..6b0c91d Binary files /dev/null and b/TestWordAddIn1/bin/Debug/TestWordAddIn1.dll differ diff --git a/TestWordAddIn1/bin/Debug/TestWordAddIn1.dll.manifest b/TestWordAddIn1/bin/Debug/TestWordAddIn1.dll.manifest new file mode 100644 index 0000000..08bbc97 --- /dev/null +++ b/TestWordAddIn1/bin/Debug/TestWordAddIn1.dll.manifest @@ -0,0 +1,299 @@ + + + + TestWordAddIn1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + jLCTF8Mm6bD4PDN+rnzN6q0+ReXaNgPh68kMWgatFwI= + + + + + + + + + + + + QEXzPAzBlZUKqSkIurX5BPQfBPVMsiGcEd3d8CaOGk0= + + + + + + + + + + + + taZn+3ECNB1fTv5G6ncuSlPRqiamdXMlbH3EK2VZzYA= + + + + + + + + + + + + 2yawinvxMZchtXyC/atA8ytJq0Rpe+denBy3kjwT3B8= + + + + + + + + + + + + 4eJ697B+7t9c5xqSVfBCKBam/FhJpIPGcU4bRyBE+p0= + + + + + + + + + + + + dH99TrQL1fiS5gwbyVDWfbZls/4Ana2m1uEhSeOQloQ= + + + + + + + + + + + + CM2g3np/1F5t5e3Fj+/WQ0iXFaBnb6jnguJIFAvMOwo= + + + + + + + + + + ivea5fxkRlmCDJQ8qHHuRS3uvuOyEpGtBQiCt5WNROc= + + + + + + + + + KLiY5EMykclpzU87xGN3sZVSetkTjfL6VyQ862cXprk= + + + + + + + + + VlnLrp89QSZiUVZxpsha7+CO7hcRjD3hMwov7XTcQV8= + + + + + + + + + zJibc8ltLuxh1OuCrNbWEvrsD09qR6rx3kHez2v6a3U= + + + + + + + + + + + + + + + + + + TestWordAddIn1 + TestWordAddIn1 + + + + + + + + +wts3Vp58Osb+sJPQMwStHRsIe4v6MM40H+Jkvu4Jp2U=ER8oNT37lx6Vq9zxz066j9waj9Kgh/48WvPT3S7qk7VhgdTERJF8n2IWpJLsK6g3Xcb1GILsMlusCsDjGLv4LyVpsOi6Gq6uA7/1A7Ra+7uhjpmp6VdKVIFN3XfKuqcF/JELvPXdN2Q34zybYxnTk7wshIS1+z3opiIdFaLtyEY=txUdurGTZRvUFLzUgOyFmMXylssAYI+b05Ejg/+o+qnzVhKuYhwHISNImDK6dCZpaoihu/pYHAb7asdNBKFkDqmVC/dwwnYcMtlA9prTa2pa83Rq+jioQsxrMObeol6wPDzU13dhR01hjebL6pA1RG7R/YlNQOg7Oi4QjvApxNU=AQABCN=HOMEDEV\home-devmKEloFVvAa0MUiLEHkn9PasZsOHdMaIj35c5zm+qR9k=QM3VNEH11XOhprFOH4Q/ypdiumQxmssviMCb2mf9hxgJRjrp2AHUGR2IfcQE8ip7vn4X9kdusFz86XfHt5NIxMZj8aOfhE6iDC+2P8j3Kh+A80tRXOBHAxJ+doFxMoJQVxRXrbuHLrNgTOml/WAJ2MMm7EqPO34iRFbx6useBbc=txUdurGTZRvUFLzUgOyFmMXylssAYI+b05Ejg/+o+qnzVhKuYhwHISNImDK6dCZpaoihu/pYHAb7asdNBKFkDqmVC/dwwnYcMtlA9prTa2pa83Rq+jioQsxrMObeol6wPDzU13dhR01hjebL6pA1RG7R/YlNQOg7Oi4QjvApxNU=AQABMIIB2TCCAUKgAwIBAgIQT/24iygaaY1J3MDjVc3PHDANBgkqhkiG9w0BAQsFADArMSkwJwYDVQQDHiAASABPAE0ARQBEAEUAVgBcAGgAbwBtAGUALQBkAGUAdjAeFw0yMzA3MTAxMDQ4MDZaFw0yNDA3MDkxNjQ4MDZaMCsxKTAnBgNVBAMeIABIAE8ATQBFAEQARQBWAFwAaABvAG0AZQAtAGQAZQB2MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC3FR26sZNlG9QUvNSA7IWYxfKWywBgj5vTkSOD/6j6qfNWEq5iHAchI0iYMrp0JmlqiKG7+lgcBvtqx00EoWQOqZUL93DCdhwy2UD2mtNralrzdGr6OKhCzGsw5t6iXrA8PNTXd2FHTWGN5svqkDVEbtH9iU1A6Ds6LhCO8CnE1QIDAQABMA0GCSqGSIb3DQEBCwUAA4GBABfM5SOoFxwCKEVI5EyW8+JOr7ql7MaUbSRY5bWhVqJQaxkcPUmhifjjI+0J/fHwkhQ9Zxinq1Jp0tBN+RfqIqWxVkz8fM0kcWdVs4Vyn69PksrgeSbT6teFfTbXbGeiVhkw1G+2i2PhIh7PrfqTZ+v09BJsBTz0KA7IhnxjdGMd \ No newline at end of file diff --git a/TestWordAddIn1/bin/Debug/TestWordAddIn1.pdb b/TestWordAddIn1/bin/Debug/TestWordAddIn1.pdb new file mode 100644 index 0000000..fe118cb Binary files /dev/null and b/TestWordAddIn1/bin/Debug/TestWordAddIn1.pdb differ diff --git a/TestWordAddIn1/bin/Debug/TestWordAddIn1.vsto b/TestWordAddIn1/bin/Debug/TestWordAddIn1.vsto new file mode 100644 index 0000000..1eeaf79 --- /dev/null +++ b/TestWordAddIn1/bin/Debug/TestWordAddIn1.vsto @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + +TiCqdYlfYd9pbZYnheLpZSHomFoNtR7icr3z59uauo= + + + +DAoKVF8Kyf/VQw2ttnwEkD+8hKbRY4MvfoP2HqQDdkA=AgdUmYVv3bt+r1thHXwCWgVIpZ6Ez8hNN2naoyGbGjM9Qr5foRp2Mp2dUi0yc0iefd1rXp60hCzAMchwfUBb6Z3i10CPL3VSnqclL1jqZXBn/XACDujXXbOo3i+c/vZaIFP3KpMqH36LoUY0uiXUSMCaRA/zpw+m/oys0Sbec0M=txUdurGTZRvUFLzUgOyFmMXylssAYI+b05Ejg/+o+qnzVhKuYhwHISNImDK6dCZpaoihu/pYHAb7asdNBKFkDqmVC/dwwnYcMtlA9prTa2pa83Rq+jioQsxrMObeol6wPDzU13dhR01hjebL6pA1RG7R/YlNQOg7Oi4QjvApxNU=AQABCN=HOMEDEV\home-devYfobTaVzdURmWpL4516wlA7IiYa9nSyfDYjT3XNb57g=d8XNqPAvvq3ZOtMl9/PLVwkfJ5+mF4QiQ+2hMRIBjybdJn98FBh0FA91XfQm8ijOy4v+4D9jF7BE0IKU5YITCTqNGv1twVpjiwohVZOtqVi3juLPeZdWkGu+AeT+DEWCU5osoO3lTddQr01fOjh+ddQGNbNMaajRgFmyC9Q9Ysw=txUdurGTZRvUFLzUgOyFmMXylssAYI+b05Ejg/+o+qnzVhKuYhwHISNImDK6dCZpaoihu/pYHAb7asdNBKFkDqmVC/dwwnYcMtlA9prTa2pa83Rq+jioQsxrMObeol6wPDzU13dhR01hjebL6pA1RG7R/YlNQOg7Oi4QjvApxNU=AQABMIIB2TCCAUKgAwIBAgIQT/24iygaaY1J3MDjVc3PHDANBgkqhkiG9w0BAQsFADArMSkwJwYDVQQDHiAASABPAE0ARQBEAEUAVgBcAGgAbwBtAGUALQBkAGUAdjAeFw0yMzA3MTAxMDQ4MDZaFw0yNDA3MDkxNjQ4MDZaMCsxKTAnBgNVBAMeIABIAE8ATQBFAEQARQBWAFwAaABvAG0AZQAtAGQAZQB2MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC3FR26sZNlG9QUvNSA7IWYxfKWywBgj5vTkSOD/6j6qfNWEq5iHAchI0iYMrp0JmlqiKG7+lgcBvtqx00EoWQOqZUL93DCdhwy2UD2mtNralrzdGr6OKhCzGsw5t6iXrA8PNTXd2FHTWGN5svqkDVEbtH9iU1A6Ds6LhCO8CnE1QIDAQABMA0GCSqGSIb3DQEBCwUAA4GBABfM5SOoFxwCKEVI5EyW8+JOr7ql7MaUbSRY5bWhVqJQaxkcPUmhifjjI+0J/fHwkhQ9Zxinq1Jp0tBN+RfqIqWxVkz8fM0kcWdVs4Vyn69PksrgeSbT6teFfTbXbGeiVhkw1G+2i2PhIh7PrfqTZ+v09BJsBTz0KA7IhnxjdGMd \ No newline at end of file diff --git a/TestWordAddIn1/bin/Debug/UtilLib.dll b/TestWordAddIn1/bin/Debug/UtilLib.dll new file mode 100644 index 0000000..587590b Binary files /dev/null and b/TestWordAddIn1/bin/Debug/UtilLib.dll differ diff --git a/TestWordAddIn1/bin/Debug/UtilLib.dll.config b/TestWordAddIn1/bin/Debug/UtilLib.dll.config new file mode 100644 index 0000000..b50c74f --- /dev/null +++ b/TestWordAddIn1/bin/Debug/UtilLib.dll.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/TestWordAddIn1/bin/Debug/UtilLib.pdb b/TestWordAddIn1/bin/Debug/UtilLib.pdb new file mode 100644 index 0000000..31795ea Binary files /dev/null and b/TestWordAddIn1/bin/Debug/UtilLib.pdb differ diff --git a/TestWordAddIn1/bin/Debug/runtimes/win-arm64/native/WebView2Loader.dll b/TestWordAddIn1/bin/Debug/runtimes/win-arm64/native/WebView2Loader.dll new file mode 100644 index 0000000..50c9df3 Binary files /dev/null and b/TestWordAddIn1/bin/Debug/runtimes/win-arm64/native/WebView2Loader.dll differ diff --git a/TestWordAddIn1/bin/Debug/runtimes/win-x64/native/WebView2Loader.dll b/TestWordAddIn1/bin/Debug/runtimes/win-x64/native/WebView2Loader.dll new file mode 100644 index 0000000..4fc572d Binary files /dev/null and b/TestWordAddIn1/bin/Debug/runtimes/win-x64/native/WebView2Loader.dll differ diff --git a/TestWordAddIn1/bin/Debug/runtimes/win-x86/native/WebView2Loader.dll b/TestWordAddIn1/bin/Debug/runtimes/win-x86/native/WebView2Loader.dll new file mode 100644 index 0000000..3eadfa3 Binary files /dev/null and b/TestWordAddIn1/bin/Debug/runtimes/win-x86/native/WebView2Loader.dll differ diff --git a/TestWordAddIn1/bin/Debug/web/index.html b/TestWordAddIn1/bin/Debug/web/index.html new file mode 100644 index 0000000..e9c8fdd --- /dev/null +++ b/TestWordAddIn1/bin/Debug/web/index.html @@ -0,0 +1,24 @@ + + + + test + + + + + + + + \ No newline at end of file diff --git a/TestWordAddIn1/bin/Release/Microsoft.Office.Tools.Common.v4.0.Utilities.dll b/TestWordAddIn1/bin/Release/Microsoft.Office.Tools.Common.v4.0.Utilities.dll new file mode 100644 index 0000000..03a6ef8 Binary files /dev/null and b/TestWordAddIn1/bin/Release/Microsoft.Office.Tools.Common.v4.0.Utilities.dll differ diff --git a/TestWordAddIn1/bin/Release/TestWordAddIn1.dll b/TestWordAddIn1/bin/Release/TestWordAddIn1.dll new file mode 100644 index 0000000..0bd8013 Binary files /dev/null and b/TestWordAddIn1/bin/Release/TestWordAddIn1.dll differ diff --git a/TestWordAddIn1/bin/Release/TestWordAddIn1.dll.manifest b/TestWordAddIn1/bin/Release/TestWordAddIn1.dll.manifest new file mode 100644 index 0000000..575f921 --- /dev/null +++ b/TestWordAddIn1/bin/Release/TestWordAddIn1.dll.manifest @@ -0,0 +1,178 @@ + + + + TestWordAddIn1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + jLCTF8Mm6bD4PDN+rnzN6q0+ReXaNgPh68kMWgatFwI= + + + + + + + + + + + + yl0efTqJKDcvrAsIOAU0HXFgwjAS+iL1bY0IlTRGEpQ= + + + + + + + + + + + + + + + + + + + TestWordAddIn1 + TestWordAddIn1 + + + + + + + + +1FGRfzUcRAVVyliyycKLcSJasSWkks+qivclkuWiNxs=ZlbrrnBsO0O6h+ef8tUqN3cTWM1xZ0Df5O5YhwYsPlEsip6CjnHMTr7P335JxDKnY0eEWqRXazu03xT6qQ9J4RPqBtk1kcOOUpe+IvjHfT29Q/fkHPSe8PfwemzvJ+uK+cqfyRvlh4RVasUMEOthsC/jrPtuQn9P/sZnzprkrZQ=txUdurGTZRvUFLzUgOyFmMXylssAYI+b05Ejg/+o+qnzVhKuYhwHISNImDK6dCZpaoihu/pYHAb7asdNBKFkDqmVC/dwwnYcMtlA9prTa2pa83Rq+jioQsxrMObeol6wPDzU13dhR01hjebL6pA1RG7R/YlNQOg7Oi4QjvApxNU=AQABCN=HOMEDEV\home-deviLkA/knbQyhKtLCF70VIeFJv3S4Mnl2qgMHvQQfPlJs=rhz8AEk0TtBRpJzEjDlzj7uJeozhL7psUqKeDWN/47ANHWmWSd6AlkXDejmf1sQjZTrF95O5y0owttwcQJfn9ywzJPO1Mge/wDlqvuvqtcYSDLQb5GTKQqOvISpcBK2IrWkeo/1U/xrruqyNjTiWx93U8+GAUhQY1Imy3t2dupI=txUdurGTZRvUFLzUgOyFmMXylssAYI+b05Ejg/+o+qnzVhKuYhwHISNImDK6dCZpaoihu/pYHAb7asdNBKFkDqmVC/dwwnYcMtlA9prTa2pa83Rq+jioQsxrMObeol6wPDzU13dhR01hjebL6pA1RG7R/YlNQOg7Oi4QjvApxNU=AQABMIIB2TCCAUKgAwIBAgIQT/24iygaaY1J3MDjVc3PHDANBgkqhkiG9w0BAQsFADArMSkwJwYDVQQDHiAASABPAE0ARQBEAEUAVgBcAGgAbwBtAGUALQBkAGUAdjAeFw0yMzA3MTAxMDQ4MDZaFw0yNDA3MDkxNjQ4MDZaMCsxKTAnBgNVBAMeIABIAE8ATQBFAEQARQBWAFwAaABvAG0AZQAtAGQAZQB2MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC3FR26sZNlG9QUvNSA7IWYxfKWywBgj5vTkSOD/6j6qfNWEq5iHAchI0iYMrp0JmlqiKG7+lgcBvtqx00EoWQOqZUL93DCdhwy2UD2mtNralrzdGr6OKhCzGsw5t6iXrA8PNTXd2FHTWGN5svqkDVEbtH9iU1A6Ds6LhCO8CnE1QIDAQABMA0GCSqGSIb3DQEBCwUAA4GBABfM5SOoFxwCKEVI5EyW8+JOr7ql7MaUbSRY5bWhVqJQaxkcPUmhifjjI+0J/fHwkhQ9Zxinq1Jp0tBN+RfqIqWxVkz8fM0kcWdVs4Vyn69PksrgeSbT6teFfTbXbGeiVhkw1G+2i2PhIh7PrfqTZ+v09BJsBTz0KA7IhnxjdGMd \ No newline at end of file diff --git a/TestWordAddIn1/bin/Release/TestWordAddIn1.pdb b/TestWordAddIn1/bin/Release/TestWordAddIn1.pdb new file mode 100644 index 0000000..d3b79c2 Binary files /dev/null and b/TestWordAddIn1/bin/Release/TestWordAddIn1.pdb differ diff --git a/TestWordAddIn1/bin/Release/TestWordAddIn1.vsto b/TestWordAddIn1/bin/Release/TestWordAddIn1.vsto new file mode 100644 index 0000000..9a49dac --- /dev/null +++ b/TestWordAddIn1/bin/Release/TestWordAddIn1.vsto @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + nI/Ql57xbXZCf80NY6gA6dKBylbd9z5syX7SSvyclpY= + + + +7Ojm2huZE8SgTTvU8oghYEGkYULbBHHW0giv91h31vk=Fdb0k3fLfzIOOoAOm0C6IFkSWdCp7J7dw+0LvGwPVjzdNXpGG+yFZN0N9zdqwlRKLq/sRNONcVfwKmxaAMogoZ6bZgI854PhjgHmx/8aKifzPXY33RO16HMTltkJAJronqAyUVs/HGvKZOKFu9XuNIzJwbHfcfLIOXMVeSuWz00=txUdurGTZRvUFLzUgOyFmMXylssAYI+b05Ejg/+o+qnzVhKuYhwHISNImDK6dCZpaoihu/pYHAb7asdNBKFkDqmVC/dwwnYcMtlA9prTa2pa83Rq+jioQsxrMObeol6wPDzU13dhR01hjebL6pA1RG7R/YlNQOg7Oi4QjvApxNU=AQABCN=HOMEDEV\home-dev0TzZiHOxhy3/Ez36t7+h1vbH0Wh3TJGoHTdOMdLbfpA=kdGGZqGxkWDQLC+euFtP67TdIZklfTSyfcfCv6qdPQZ4HanTv/SRiYPHCPkRPcymlltLvKY8w6824A5V8Er8KDNZ00wLaQDfvWDiIJNwMu7Jt/VFCSPNh2RZWzWqV97/MRRa85dTUGLK7f2zgfwxUoJharPYLOz70ZY66oDc3sU=txUdurGTZRvUFLzUgOyFmMXylssAYI+b05Ejg/+o+qnzVhKuYhwHISNImDK6dCZpaoihu/pYHAb7asdNBKFkDqmVC/dwwnYcMtlA9prTa2pa83Rq+jioQsxrMObeol6wPDzU13dhR01hjebL6pA1RG7R/YlNQOg7Oi4QjvApxNU=AQABMIIB2TCCAUKgAwIBAgIQT/24iygaaY1J3MDjVc3PHDANBgkqhkiG9w0BAQsFADArMSkwJwYDVQQDHiAASABPAE0ARQBEAEUAVgBcAGgAbwBtAGUALQBkAGUAdjAeFw0yMzA3MTAxMDQ4MDZaFw0yNDA3MDkxNjQ4MDZaMCsxKTAnBgNVBAMeIABIAE8ATQBFAEQARQBWAFwAaABvAG0AZQAtAGQAZQB2MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC3FR26sZNlG9QUvNSA7IWYxfKWywBgj5vTkSOD/6j6qfNWEq5iHAchI0iYMrp0JmlqiKG7+lgcBvtqx00EoWQOqZUL93DCdhwy2UD2mtNralrzdGr6OKhCzGsw5t6iXrA8PNTXd2FHTWGN5svqkDVEbtH9iU1A6Ds6LhCO8CnE1QIDAQABMA0GCSqGSIb3DQEBCwUAA4GBABfM5SOoFxwCKEVI5EyW8+JOr7ql7MaUbSRY5bWhVqJQaxkcPUmhifjjI+0J/fHwkhQ9Zxinq1Jp0tBN+RfqIqWxVkz8fM0kcWdVs4Vyn69PksrgeSbT6teFfTbXbGeiVhkw1G+2i2PhIh7PrfqTZ+v09BJsBTz0KA7IhnxjdGMd \ No newline at end of file diff --git a/TestWordAddIn1/obj/Debug/.NETFramework,Version=v4.6.2.AssemblyAttributes.cs b/TestWordAddIn1/obj/Debug/.NETFramework,Version=v4.6.2.AssemblyAttributes.cs new file mode 100644 index 0000000..edc4647 --- /dev/null +++ b/TestWordAddIn1/obj/Debug/.NETFramework,Version=v4.6.2.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.6.2", FrameworkDisplayName = ".NET Framework 4.6.2")] diff --git a/TestWordAddIn1/obj/Debug/DesignTimeResolveAssemblyReferences.cache b/TestWordAddIn1/obj/Debug/DesignTimeResolveAssemblyReferences.cache new file mode 100644 index 0000000..1cb6feb Binary files /dev/null and b/TestWordAddIn1/obj/Debug/DesignTimeResolveAssemblyReferences.cache differ diff --git a/TestWordAddIn1/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/TestWordAddIn1/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache new file mode 100644 index 0000000..600850c Binary files /dev/null and b/TestWordAddIn1/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache differ diff --git a/TestWordAddIn1/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll b/TestWordAddIn1/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll new file mode 100644 index 0000000..cb6b3d0 Binary files /dev/null and b/TestWordAddIn1/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll differ diff --git a/TestWordAddIn1/obj/Debug/TestWordAddIn1.Form1.resources b/TestWordAddIn1/obj/Debug/TestWordAddIn1.Form1.resources new file mode 100644 index 0000000..6c05a97 Binary files /dev/null and b/TestWordAddIn1/obj/Debug/TestWordAddIn1.Form1.resources differ diff --git a/TestWordAddIn1/obj/Debug/TestWordAddIn1.ProofreadItem.resources b/TestWordAddIn1/obj/Debug/TestWordAddIn1.ProofreadItem.resources new file mode 100644 index 0000000..6c05a97 Binary files /dev/null and b/TestWordAddIn1/obj/Debug/TestWordAddIn1.ProofreadItem.resources differ diff --git a/TestWordAddIn1/obj/Debug/TestWordAddIn1.ProofreadPanel.resources b/TestWordAddIn1/obj/Debug/TestWordAddIn1.ProofreadPanel.resources new file mode 100644 index 0000000..6c05a97 Binary files /dev/null and b/TestWordAddIn1/obj/Debug/TestWordAddIn1.ProofreadPanel.resources differ diff --git a/TestWordAddIn1/obj/Debug/TestWordAddIn1.Properties.Resources.resources b/TestWordAddIn1/obj/Debug/TestWordAddIn1.Properties.Resources.resources new file mode 100644 index 0000000..7dbba6e Binary files /dev/null and b/TestWordAddIn1/obj/Debug/TestWordAddIn1.Properties.Resources.resources differ diff --git a/TestWordAddIn1/obj/Debug/TestWordAddIn1.Ribbon1.resources b/TestWordAddIn1/obj/Debug/TestWordAddIn1.Ribbon1.resources new file mode 100644 index 0000000..6c05a97 Binary files /dev/null and b/TestWordAddIn1/obj/Debug/TestWordAddIn1.Ribbon1.resources differ diff --git a/TestWordAddIn1/obj/Debug/TestWordAddIn1.csproj.AssemblyReference.cache b/TestWordAddIn1/obj/Debug/TestWordAddIn1.csproj.AssemblyReference.cache new file mode 100644 index 0000000..689d776 Binary files /dev/null and b/TestWordAddIn1/obj/Debug/TestWordAddIn1.csproj.AssemblyReference.cache differ diff --git a/TestWordAddIn1/obj/Debug/TestWordAddIn1.csproj.CopyComplete b/TestWordAddIn1/obj/Debug/TestWordAddIn1.csproj.CopyComplete new file mode 100644 index 0000000..e69de29 diff --git a/TestWordAddIn1/obj/Debug/TestWordAddIn1.csproj.CoreCompileInputs.cache b/TestWordAddIn1/obj/Debug/TestWordAddIn1.csproj.CoreCompileInputs.cache new file mode 100644 index 0000000..8d138eb --- /dev/null +++ b/TestWordAddIn1/obj/Debug/TestWordAddIn1.csproj.CoreCompileInputs.cache @@ -0,0 +1 @@ +46fabd4c02277f5287e9e4cc8a8baf270df54dfc diff --git a/TestWordAddIn1/obj/Debug/TestWordAddIn1.csproj.FileListAbsolute.txt b/TestWordAddIn1/obj/Debug/TestWordAddIn1.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..2948895 --- /dev/null +++ b/TestWordAddIn1/obj/Debug/TestWordAddIn1.csproj.FileListAbsolute.txt @@ -0,0 +1,31 @@ +C:\Users\home-dev\source\repos\TestWordAddIn1\TestWordAddIn1\bin\Debug\TestWordAddIn1.dll +C:\Users\home-dev\source\repos\TestWordAddIn1\TestWordAddIn1\bin\Debug\TestWordAddIn1.pdb +C:\Users\home-dev\source\repos\TestWordAddIn1\TestWordAddIn1\bin\Debug\TestWordAddIn1.dll.manifest +C:\Users\home-dev\source\repos\TestWordAddIn1\TestWordAddIn1\bin\Debug\TestWordAddIn1.vsto +C:\Users\home-dev\source\repos\TestWordAddIn1\TestWordAddIn1\bin\Debug\Microsoft.Office.Tools.Common.v4.0.Utilities.dll +C:\Users\home-dev\source\repos\TestWordAddIn1\TestWordAddIn1\obj\Debug\TestWordAddIn1.csproj.AssemblyReference.cache +C:\Users\home-dev\source\repos\TestWordAddIn1\TestWordAddIn1\obj\Debug\TestWordAddIn1.Properties.Resources.resources +C:\Users\home-dev\source\repos\TestWordAddIn1\TestWordAddIn1\obj\Debug\TestWordAddIn1.Ribbon1.resources +C:\Users\home-dev\source\repos\TestWordAddIn1\TestWordAddIn1\obj\Debug\TestWordAddIn1.csproj.GenerateResource.cache +C:\Users\home-dev\source\repos\TestWordAddIn1\TestWordAddIn1\obj\Debug\TestWordAddIn1.csproj.CoreCompileInputs.cache +C:\Users\home-dev\source\repos\TestWordAddIn1\TestWordAddIn1\obj\Debug\TestWordAddIn1.csproj.CopyComplete +C:\Users\home-dev\source\repos\TestWordAddIn1\TestWordAddIn1\obj\Debug\TestWordAddIn1.dll +C:\Users\home-dev\source\repos\TestWordAddIn1\TestWordAddIn1\obj\Debug\TestWordAddIn1.pdb +C:\Users\home-dev\source\repos\TestWordAddIn1\TestWordAddIn1\obj\Debug\TestWordAddIn1.Form1.resources +C:\Users\home-dev\source\repos\TestWordAddIn1\TestWordAddIn1\bin\Debug\Newtonsoft.Json.dll +C:\Users\home-dev\source\repos\TestWordAddIn1\TestWordAddIn1\bin\Debug\Newtonsoft.Json.xml +C:\Users\home-dev\source\repos\TestWordAddIn1\TestWordAddIn1\obj\Debug\TestWordAddIn1.ProofreadPanel.resources +C:\Users\home-dev\source\repos\TestWordAddIn1\TestWordAddIn1\bin\Debug\runtimes\win-x86\native\WebView2Loader.dll +C:\Users\home-dev\source\repos\TestWordAddIn1\TestWordAddIn1\bin\Debug\runtimes\win-x64\native\WebView2Loader.dll +C:\Users\home-dev\source\repos\TestWordAddIn1\TestWordAddIn1\bin\Debug\runtimes\win-arm64\native\WebView2Loader.dll +C:\Users\home-dev\source\repos\TestWordAddIn1\TestWordAddIn1\bin\Debug\Microsoft.Web.WebView2.Core.dll +C:\Users\home-dev\source\repos\TestWordAddIn1\TestWordAddIn1\bin\Debug\Microsoft.Web.WebView2.WinForms.dll +C:\Users\home-dev\source\repos\TestWordAddIn1\TestWordAddIn1\bin\Debug\Microsoft.Web.WebView2.Wpf.dll +C:\Users\home-dev\source\repos\TestWordAddIn1\TestWordAddIn1\bin\Debug\Microsoft.Web.WebView2.Core.xml +C:\Users\home-dev\source\repos\TestWordAddIn1\TestWordAddIn1\bin\Debug\Microsoft.Web.WebView2.WinForms.xml +C:\Users\home-dev\source\repos\TestWordAddIn1\TestWordAddIn1\bin\Debug\Microsoft.Web.WebView2.Wpf.xml +C:\Users\home-dev\source\repos\TestWordAddIn1\TestWordAddIn1\bin\Debug\web\index.html +C:\Users\home-dev\source\repos\TestWordAddIn1\TestWordAddIn1\obj\Debug\TestWordAddIn1.ProofreadItem.resources +C:\Users\home-dev\source\repos\TestWordAddIn1\TestWordAddIn1\bin\Debug\UtilLib.dll +C:\Users\home-dev\source\repos\TestWordAddIn1\TestWordAddIn1\bin\Debug\UtilLib.pdb +C:\Users\home-dev\source\repos\TestWordAddIn1\TestWordAddIn1\bin\Debug\UtilLib.dll.config diff --git a/TestWordAddIn1/obj/Debug/TestWordAddIn1.csproj.GenerateResource.cache b/TestWordAddIn1/obj/Debug/TestWordAddIn1.csproj.GenerateResource.cache new file mode 100644 index 0000000..c339374 Binary files /dev/null and b/TestWordAddIn1/obj/Debug/TestWordAddIn1.csproj.GenerateResource.cache differ diff --git a/TestWordAddIn1/obj/Debug/TestWordAddIn1.dll b/TestWordAddIn1/obj/Debug/TestWordAddIn1.dll new file mode 100644 index 0000000..6b0c91d Binary files /dev/null and b/TestWordAddIn1/obj/Debug/TestWordAddIn1.dll differ diff --git a/TestWordAddIn1/obj/Debug/TestWordAddIn1.pdb b/TestWordAddIn1/obj/Debug/TestWordAddIn1.pdb new file mode 100644 index 0000000..fe118cb Binary files /dev/null and b/TestWordAddIn1/obj/Debug/TestWordAddIn1.pdb differ diff --git a/TestWordAddIn1/obj/Release/.NETFramework,Version=v4.6.2.AssemblyAttributes.cs b/TestWordAddIn1/obj/Release/.NETFramework,Version=v4.6.2.AssemblyAttributes.cs new file mode 100644 index 0000000..edc4647 --- /dev/null +++ b/TestWordAddIn1/obj/Release/.NETFramework,Version=v4.6.2.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.6.2", FrameworkDisplayName = ".NET Framework 4.6.2")] diff --git a/TestWordAddIn1/obj/Release/DesignTimeResolveAssemblyReferences.cache b/TestWordAddIn1/obj/Release/DesignTimeResolveAssemblyReferences.cache new file mode 100644 index 0000000..3323826 Binary files /dev/null and b/TestWordAddIn1/obj/Release/DesignTimeResolveAssemblyReferences.cache differ diff --git a/TestWordAddIn1/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache b/TestWordAddIn1/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache new file mode 100644 index 0000000..03c577c Binary files /dev/null and b/TestWordAddIn1/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache differ diff --git a/TestWordAddIn1/obj/Release/TempPE/Properties.Resources.Designer.cs.dll b/TestWordAddIn1/obj/Release/TempPE/Properties.Resources.Designer.cs.dll new file mode 100644 index 0000000..35745c4 Binary files /dev/null and b/TestWordAddIn1/obj/Release/TempPE/Properties.Resources.Designer.cs.dll differ diff --git a/TestWordAddIn1/obj/Release/TestWordAddIn1.Form1.resources b/TestWordAddIn1/obj/Release/TestWordAddIn1.Form1.resources new file mode 100644 index 0000000..6c05a97 Binary files /dev/null and b/TestWordAddIn1/obj/Release/TestWordAddIn1.Form1.resources differ diff --git a/TestWordAddIn1/obj/Release/TestWordAddIn1.Properties.Resources.resources b/TestWordAddIn1/obj/Release/TestWordAddIn1.Properties.Resources.resources new file mode 100644 index 0000000..fbfbc9d Binary files /dev/null and b/TestWordAddIn1/obj/Release/TestWordAddIn1.Properties.Resources.resources differ diff --git a/TestWordAddIn1/obj/Release/TestWordAddIn1.Ribbon1.resources b/TestWordAddIn1/obj/Release/TestWordAddIn1.Ribbon1.resources new file mode 100644 index 0000000..6c05a97 Binary files /dev/null and b/TestWordAddIn1/obj/Release/TestWordAddIn1.Ribbon1.resources differ diff --git a/TestWordAddIn1/obj/Release/TestWordAddIn1.csproj.AssemblyReference.cache b/TestWordAddIn1/obj/Release/TestWordAddIn1.csproj.AssemblyReference.cache new file mode 100644 index 0000000..a59cabf Binary files /dev/null and b/TestWordAddIn1/obj/Release/TestWordAddIn1.csproj.AssemblyReference.cache differ diff --git a/TestWordAddIn1/obj/Release/TestWordAddIn1.csproj.CopyComplete b/TestWordAddIn1/obj/Release/TestWordAddIn1.csproj.CopyComplete new file mode 100644 index 0000000..e69de29 diff --git a/TestWordAddIn1/obj/Release/TestWordAddIn1.csproj.CoreCompileInputs.cache b/TestWordAddIn1/obj/Release/TestWordAddIn1.csproj.CoreCompileInputs.cache new file mode 100644 index 0000000..e28e1c3 --- /dev/null +++ b/TestWordAddIn1/obj/Release/TestWordAddIn1.csproj.CoreCompileInputs.cache @@ -0,0 +1 @@ +487d1bb5458f1f46fd33ce520a82e0b8d2655794 diff --git a/TestWordAddIn1/obj/Release/TestWordAddIn1.csproj.FileListAbsolute.txt b/TestWordAddIn1/obj/Release/TestWordAddIn1.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..c637ab1 --- /dev/null +++ b/TestWordAddIn1/obj/Release/TestWordAddIn1.csproj.FileListAbsolute.txt @@ -0,0 +1,14 @@ +C:\Users\home-dev\source\repos\TestWordAddIn1\TestWordAddIn1\bin\Release\TestWordAddIn1.dll +C:\Users\home-dev\source\repos\TestWordAddIn1\TestWordAddIn1\bin\Release\TestWordAddIn1.pdb +C:\Users\home-dev\source\repos\TestWordAddIn1\TestWordAddIn1\bin\Release\TestWordAddIn1.dll.manifest +C:\Users\home-dev\source\repos\TestWordAddIn1\TestWordAddIn1\bin\Release\TestWordAddIn1.vsto +C:\Users\home-dev\source\repos\TestWordAddIn1\TestWordAddIn1\bin\Release\Microsoft.Office.Tools.Common.v4.0.Utilities.dll +C:\Users\home-dev\source\repos\TestWordAddIn1\TestWordAddIn1\obj\Release\TestWordAddIn1.csproj.AssemblyReference.cache +C:\Users\home-dev\source\repos\TestWordAddIn1\TestWordAddIn1\obj\Release\TestWordAddIn1.Form1.resources +C:\Users\home-dev\source\repos\TestWordAddIn1\TestWordAddIn1\obj\Release\TestWordAddIn1.Properties.Resources.resources +C:\Users\home-dev\source\repos\TestWordAddIn1\TestWordAddIn1\obj\Release\TestWordAddIn1.Ribbon1.resources +C:\Users\home-dev\source\repos\TestWordAddIn1\TestWordAddIn1\obj\Release\TestWordAddIn1.csproj.GenerateResource.cache +C:\Users\home-dev\source\repos\TestWordAddIn1\TestWordAddIn1\obj\Release\TestWordAddIn1.csproj.CoreCompileInputs.cache +C:\Users\home-dev\source\repos\TestWordAddIn1\TestWordAddIn1\obj\Release\TestWordAddIn1.csproj.CopyComplete +C:\Users\home-dev\source\repos\TestWordAddIn1\TestWordAddIn1\obj\Release\TestWordAddIn1.dll +C:\Users\home-dev\source\repos\TestWordAddIn1\TestWordAddIn1\obj\Release\TestWordAddIn1.pdb diff --git a/TestWordAddIn1/obj/Release/TestWordAddIn1.csproj.GenerateResource.cache b/TestWordAddIn1/obj/Release/TestWordAddIn1.csproj.GenerateResource.cache new file mode 100644 index 0000000..9464dc9 Binary files /dev/null and b/TestWordAddIn1/obj/Release/TestWordAddIn1.csproj.GenerateResource.cache differ diff --git a/TestWordAddIn1/obj/Release/TestWordAddIn1.dll b/TestWordAddIn1/obj/Release/TestWordAddIn1.dll new file mode 100644 index 0000000..0bd8013 Binary files /dev/null and b/TestWordAddIn1/obj/Release/TestWordAddIn1.dll differ diff --git a/TestWordAddIn1/obj/Release/TestWordAddIn1.pdb b/TestWordAddIn1/obj/Release/TestWordAddIn1.pdb new file mode 100644 index 0000000..d3b79c2 Binary files /dev/null and b/TestWordAddIn1/obj/Release/TestWordAddIn1.pdb differ diff --git a/TestWordAddIn1/packages.config b/TestWordAddIn1/packages.config new file mode 100644 index 0000000..ab76337 --- /dev/null +++ b/TestWordAddIn1/packages.config @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/TestWordAddIn1/web/index.html b/TestWordAddIn1/web/index.html new file mode 100644 index 0000000..e9c8fdd --- /dev/null +++ b/TestWordAddIn1/web/index.html @@ -0,0 +1,24 @@ + + + + test + + + + + + + + \ No newline at end of file diff --git a/UtilLib/API.cs b/UtilLib/API.cs new file mode 100644 index 0000000..d6edadc --- /dev/null +++ b/UtilLib/API.cs @@ -0,0 +1,20 @@ +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace UtilLib +{ + public class API + { + private static readonly string API_URL = "http://test.wx.wm-app.xyz/proofread.json"; + public static ProofreadResult GetProofreadResult() + { + var content = Http.Get(API_URL); + var result = JsonConvert.DeserializeObject>(content); + return result.Data; + } + } +} diff --git a/UtilLib/AcceptEnum.cs b/UtilLib/AcceptEnum.cs new file mode 100644 index 0000000..10f57fd --- /dev/null +++ b/UtilLib/AcceptEnum.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace UtilLib +{ + public enum AcceptEnum + { + /// + /// 默认(未处理) + /// + Default = 0, + /// + /// 复核 + /// + Review = 1, + /// + /// 采纳 + /// + Accept = 2, + /// + /// 忽略 + /// + Ignore = 3 + } +} diff --git a/UtilLib/App.config b/UtilLib/App.config new file mode 100644 index 0000000..b50c74f --- /dev/null +++ b/UtilLib/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/UtilLib/Colors.cs b/UtilLib/Colors.cs new file mode 100644 index 0000000..5410999 --- /dev/null +++ b/UtilLib/Colors.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace UtilLib +{ + public class Colors + { + public static Color FromHex(string hex) + { + hex = hex.TrimStart('#'); + int hexValue = Convert.ToInt32(hex, 16); + byte red = (byte)((hexValue >> 16) & 0xFF); + byte green = (byte)((hexValue >> 8) & 0xFF); + byte blue = (byte)(hexValue & 0xFF); + return FromRGB(red, green, blue); + } + public static Color FromRGB(byte red, byte green, byte blue) + { + return Color.FromArgb(red, green, blue); + } + } +} diff --git a/UtilLib/Correct.cs b/UtilLib/Correct.cs new file mode 100644 index 0000000..8e3dbc9 --- /dev/null +++ b/UtilLib/Correct.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace UtilLib +{ + public class Correct + { + public string Key { get; set; } + public int Offset { get; set; } + public string New_text { get; set; } + public string Insert { get; set; } + public int Insert_len { get; set; } + + public List Diffs { get; set; } + } +} diff --git a/UtilLib/DiffItem.cs b/UtilLib/DiffItem.cs new file mode 100644 index 0000000..3a7a52e --- /dev/null +++ b/UtilLib/DiffItem.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace UtilLib +{ + public class DiffItem + { + public string Tag { get; set; } + public string Origin { get; set; } + public string Text { get; set; } + public int Start { get; set; } + public int End { get; set; } + public int Id { get; set; } + public int Idx { get; set; } + public AcceptEnum IsAccept { get; set; } + public ProofreadType Type { get; set; } + } +} diff --git a/UtilLib/Http.cs b/UtilLib/Http.cs new file mode 100644 index 0000000..34c1ed7 --- /dev/null +++ b/UtilLib/Http.cs @@ -0,0 +1,19 @@ +using System; +using System.IO; +using System.Net; + +namespace UtilLib +{ + internal class Http + { + public static String Get(string url) + { + HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url); + var res = req.GetResponse(); + using (var reader = new StreamReader(res.GetResponseStream())) + { + return reader.ReadToEnd(); + } + } + } +} diff --git a/UtilLib/ProofreadResult.cs b/UtilLib/ProofreadResult.cs new file mode 100644 index 0000000..dfb5693 --- /dev/null +++ b/UtilLib/ProofreadResult.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace UtilLib +{ + public class ProofreadResult + { + public object AbnormalCount { get; set; } + public List CorrectedSet { get; set; } + public object History { get; set; } + + /* + "id": 1326, + "isBlackWord": true, + "isOrigin": 2, + "isWhiteWord": true, + "name": "失业在家的日子-最新", + "status": 3 + */ + public int Id { get; set; } + public bool IsBlackWord { get; set; } + public int IsOrigin { get; set; } + public bool IsWhiteWord { get; set; } + public int Status { get; set; } + public string Name { get; set; } + } +} diff --git a/UtilLib/ProofreadType.cs b/UtilLib/ProofreadType.cs new file mode 100644 index 0000000..1efda8a --- /dev/null +++ b/UtilLib/ProofreadType.cs @@ -0,0 +1,72 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace UtilLib +{ + public enum ProofreadType + { + /// + /// 未知 + /// + unknown, + /// + /// 黑名单 + /// + blackWord, + /** + * 字错 + */ + characterError, + /** + * 词错 + */ + wordError, + /** + * 数字错 + */ + numberError, + /** + * 计量单位错 + */ + unitsError, + /** + * 标点错 + */ + punctuationError, + /** + * 语法错 + */ + grammarError, + /** + * 知识性差错 + */ + knowledgeableError, + /** + * 倾向性差错 + */ + tendentiousError, + /** + * 不⼀致 + */ + inconsistentError, + /** + * 格式错 + */ + formatError, + /// + /// 敏感词 + /// + sensitive, + /// + /// 黑名单-替换 + /// + blackWordReplace = 14, + /// + /// 黑名单-拦截 + /// + blackWordBlock = 15, + } +} diff --git a/UtilLib/Response.cs b/UtilLib/Response.cs new file mode 100644 index 0000000..f958a7e --- /dev/null +++ b/UtilLib/Response.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace UtilLib +{ + public class Response + { + public int Code { get; set; } + public string Msg { get; set; } + public T Data { get; set; } + } + +} \ No newline at end of file diff --git a/UtilLib/TypeConfig.cs b/UtilLib/TypeConfig.cs new file mode 100644 index 0000000..b670cb1 --- /dev/null +++ b/UtilLib/TypeConfig.cs @@ -0,0 +1,83 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace UtilLib +{ + public class TypeConfig + { + /* + {id:[ProofreadTypeEnum.blackWord, ProofreadTypeEnum.blackWordBlock, ProofreadTypeEnum.blackWordReplace], type: 'black',acceptAll:[ProofreadTypeEnum.blackWordReplace],ignoreAll:[ProofreadTypeEnum.blackWordBlock, ProofreadTypeEnum.blackWordReplace], count: 0, text: '黑名单', color: '#2A2A2A',key:'blackWord'}, + {id:ProofreadTypeEnum.characterError,type: 'char', count: 0, text: '提示', color: '#FD6643',key:'characterError'}, + { id: ProofreadTypeEnum.wordError,type: 'word', count: 0, text: '词错', color: '#29CEC0',key: 'wordError'}, + { id: ProofreadTypeEnum.numberError,type: 'number', count: 0, text: '数字错', color: '#c9c9c9',key: 'numberError'}, + { id: ProofreadTypeEnum.punctuationError,type: 'symbol', count: 0, text: '标点错', color: '#558CB7',key: 'punctuationError'}, + { id: ProofreadTypeEnum.unitsError,type: 'unit', count: 0, text: '计量单位错', color: '#77F1AE',key: 'unitsError'}, + { id: ProofreadTypeEnum.grammarError,type: 'syntax', count: 0, text: '语法错误', color: '#CDAFE5',key: 'grammarError'}, + { id: ProofreadTypeEnum.knowledgeableError,type: 'info', count: 0, text: '知识性错误', color: '#B2CCE6',key: 'knowledgeableError'}, + { id: ProofreadTypeEnum.tendentiousError,type: 'tendency', count: 0, text: '倾向性错误', color: '#E2AACA',key: 'tendentiousError'}, + { id: ProofreadTypeEnum.inconsistentError,type: 'inconsistent', count: 0, text: '不一致错误', color: '#E0AAAC',key: 'inconsistentError'}, + { id: ProofreadTypeEnum.formatError,type: 'format', count: 0, text: '格式错误', color: '#E9D0A7',key: 'formatError'}, + { id: ProofreadTypeEnum.sensitive,type: 'sensitive', count: 0, text: '敏感词', color: '#e971ba',key: 'sensitive'}, + */ + public ProofreadType Type { get; set; } + public string Text { get; set; } + public string Name { get; set; } + public string Color { get; set; } + + public static TypeConfig BlackWord = new TypeConfig(ProofreadType.blackWord, "黑名单", "black", "#2A2A2A"); + public static TypeConfig BlackWordBlock = new TypeConfig(ProofreadType.blackWordBlock, "黑名单", "black", "#2A2A2A"); + public static TypeConfig BlackWordReplace = new TypeConfig(ProofreadType.blackWordReplace, "黑名单", "black", "#2A2A2A"); + public static TypeConfig CharacterError = new TypeConfig(ProofreadType.characterError, "提示", "characterError", "#FD6643"); + public static TypeConfig WordError = new TypeConfig(ProofreadType.wordError, "词错", "wordError", "#29CEC0"); + public static TypeConfig NumberError = new TypeConfig(ProofreadType.numberError, "数字错", "numberError", "#c9c9c9"); + public static TypeConfig PunctuationError = new TypeConfig(ProofreadType.punctuationError, "标点错", "punctuationError", "#558CB7"); + public static TypeConfig UnitsError = new TypeConfig(ProofreadType.unitsError, "计量单位错", "unitsError", "#77F1AE"); + public static TypeConfig GrammarError = new TypeConfig(ProofreadType.grammarError, "语法错误", "grammarError", "#CDAFE5"); + public static TypeConfig KnowledgeableError = new TypeConfig(ProofreadType.knowledgeableError, "知识性错误", "knowledgeableError", "#B2CCE6"); + public static TypeConfig TendentiousError = new TypeConfig(ProofreadType.tendentiousError, "倾向性错误", "tendentiousError", "#E2AACA"); + public static TypeConfig InconsistentError = new TypeConfig(ProofreadType.inconsistentError, "不一致错误", "inconsistentError", "#E0AAAC"); + public static TypeConfig FormatError = new TypeConfig(ProofreadType.formatError, "格式错误", "formatError", "#E9D0A7"); + public static TypeConfig Sensitive = new TypeConfig(ProofreadType.sensitive, "敏感词", "sensitive", "#e971ba"); + + private static Dictionary AllTypeConfig = null; + + public TypeConfig(ProofreadType type, string text, string name, string color) + { + this.Type = type; + this.Text = text; + this.Name = name; + this.Color = color; + } + public TypeConfig() + { + + } + static void Init() + { + if (AllTypeConfig != null) return; + AllTypeConfig = new Dictionary(); + AllTypeConfig.Add(ProofreadType.punctuationError, PunctuationError); + AllTypeConfig.Add(ProofreadType.numberError, NumberError); + AllTypeConfig.Add(ProofreadType.tendentiousError, TendentiousError); + AllTypeConfig.Add(ProofreadType.wordError, WordError); + AllTypeConfig.Add(ProofreadType.blackWord, BlackWord); + AllTypeConfig.Add(ProofreadType.blackWordBlock, BlackWordBlock); + AllTypeConfig.Add(ProofreadType.blackWordReplace, BlackWordReplace); + AllTypeConfig.Add(ProofreadType.characterError, CharacterError); + AllTypeConfig.Add(ProofreadType.formatError, FormatError); + AllTypeConfig.Add(ProofreadType.grammarError, GrammarError); + AllTypeConfig.Add(ProofreadType.inconsistentError, InconsistentError); + AllTypeConfig.Add(ProofreadType.knowledgeableError, KnowledgeableError); + AllTypeConfig.Add(ProofreadType.sensitive, Sensitive); + } + + public static TypeConfig Get(ProofreadType type) + { + Init(); + return AllTypeConfig[type]; + } + } +} diff --git a/UtilLib/UtilLib.csproj b/UtilLib/UtilLib.csproj new file mode 100644 index 0000000..346b633 --- /dev/null +++ b/UtilLib/UtilLib.csproj @@ -0,0 +1,65 @@ + + + + + Debug + AnyCPU + {724D79C5-93B5-4BD7-9964-A05CCEFD3BFA} + Library + UtilLib + UtilLib + v4.6.2 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + ..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/UtilLib/WebActionMessage.cs b/UtilLib/WebActionMessage.cs new file mode 100644 index 0000000..2c549a3 --- /dev/null +++ b/UtilLib/WebActionMessage.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace UtilLib +{ + public class WebActionMessage + { + public WebActionMessage() + { } + public WebActionMessage(string action, object data) + { + Action = action; + Data = data; + } + + public string Action { get; set; } + public object Data { get; set; } + } +} diff --git a/UtilLib/bin/Debug/Newtonsoft.Json.dll b/UtilLib/bin/Debug/Newtonsoft.Json.dll new file mode 100644 index 0000000..341d08f Binary files /dev/null and b/UtilLib/bin/Debug/Newtonsoft.Json.dll differ diff --git a/UtilLib/bin/Debug/Newtonsoft.Json.xml b/UtilLib/bin/Debug/Newtonsoft.Json.xml new file mode 100644 index 0000000..2c981ab --- /dev/null +++ b/UtilLib/bin/Debug/Newtonsoft.Json.xml @@ -0,0 +1,11363 @@ + + + + Newtonsoft.Json + + + + + Represents a BSON Oid (object id). + + + + + Gets or sets the value of the Oid. + + The value of the Oid. + + + + Initializes a new instance of the class. + + The Oid value. + + + + Represents a reader that provides fast, non-cached, forward-only access to serialized BSON data. + + + + + Gets or sets a value indicating whether binary data reading should be compatible with incorrect Json.NET 3.5 written binary. + + + true if binary data reading will be compatible with incorrect Json.NET 3.5 written binary; otherwise, false. + + + + + Gets or sets a value indicating whether the root object will be read as a JSON array. + + + true if the root object will be read as a JSON array; otherwise, false. + + + + + Gets or sets the used when reading values from BSON. + + The used when reading values from BSON. + + + + Initializes a new instance of the class. + + The containing the BSON data to read. + + + + Initializes a new instance of the class. + + The containing the BSON data to read. + + + + Initializes a new instance of the class. + + The containing the BSON data to read. + if set to true the root object will be read as a JSON array. + The used when reading values from BSON. + + + + Initializes a new instance of the class. + + The containing the BSON data to read. + if set to true the root object will be read as a JSON array. + The used when reading values from BSON. + + + + Reads the next JSON token from the underlying . + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Changes the reader's state to . + If is set to true, the underlying is also closed. + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating BSON data. + + + + + Gets or sets the used when writing values to BSON. + When set to no conversion will occur. + + The used when writing values to BSON. + + + + Initializes a new instance of the class. + + The to write to. + + + + Initializes a new instance of the class. + + The to write to. + + + + Flushes whatever is in the buffer to the underlying and also flushes the underlying stream. + + + + + Writes the end. + + The token. + + + + Writes a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes raw JSON. + + The raw JSON to write. + + + + Writes raw JSON where a value is expected and updates the writer's state. + + The raw JSON to write. + + + + Writes the beginning of a JSON array. + + + + + Writes the beginning of a JSON object. + + + + + Writes the property name of a name/value pair on a JSON object. + + The name of the property. + + + + Closes this writer. + If is set to true, the underlying is also closed. + If is set to true, the JSON is auto-completed. + + + + + Writes a value. + An error will raised if the value cannot be written as a single JSON token. + + The value to write. + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a [] value. + + The [] value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a [] value that represents a BSON object id. + + The Object ID value to write. + + + + Writes a BSON regex. + + The regex pattern. + The regex options. + + + + Specifies how constructors are used when initializing objects during deserialization by the . + + + + + First attempt to use the public default constructor, then fall back to a single parameterized constructor, then to the non-public default constructor. + + + + + Json.NET will use a non-public default constructor before falling back to a parameterized constructor. + + + + + Converts a binary value to and from a base 64 string value. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts a to and from JSON and BSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Creates a custom object. + + The object type to convert. + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Creates an object which will then be populated by the serializer. + + Type of the object. + The created object. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Gets a value indicating whether this can write JSON. + + + true if this can write JSON; otherwise, false. + + + + + Converts a to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified value type. + + Type of the value. + + true if this instance can convert the specified value type; otherwise, false. + + + + + Converts a to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified value type. + + Type of the value. + + true if this instance can convert the specified value type; otherwise, false. + + + + + Provides a base class for converting a to and from JSON. + + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts a F# discriminated union type to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts an Entity Framework to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts an to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Gets a value indicating whether this can write JSON. + + + true if this can write JSON; otherwise, false. + + + + + Converts a to and from the ISO 8601 date format (e.g. "2008-04-12T12:53Z"). + + + + + Gets or sets the date time styles used when converting a date to and from JSON. + + The date time styles used when converting a date to and from JSON. + + + + Gets or sets the date time format used when converting a date to and from JSON. + + The date time format used when converting a date to and from JSON. + + + + Gets or sets the culture used when converting a date to and from JSON. + + The culture used when converting a date to and from JSON. + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Converts a to and from a JavaScript Date constructor (e.g. new Date(52231943)). + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing property value of the JSON that is being converted. + The calling serializer. + The object value. + + + + Converts a to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts a to and from JSON and BSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts an to and from its name string value. + + + + + Gets or sets a value indicating whether the written enum text should be camel case. + The default value is false. + + true if the written enum text will be camel case; otherwise, false. + + + + Gets or sets the naming strategy used to resolve how enum text is written. + + The naming strategy used to resolve how enum text is written. + + + + Gets or sets a value indicating whether integer values are allowed when serializing and deserializing. + The default value is true. + + true if integers are allowed when serializing and deserializing; otherwise, false. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + true if the written enum text will be camel case; otherwise, false. + + + + Initializes a new instance of the class. + + The naming strategy used to resolve how enum text is written. + true if integers are allowed when serializing and deserializing; otherwise, false. + + + + Initializes a new instance of the class. + + The of the used to write enum text. + + + + Initializes a new instance of the class. + + The of the used to write enum text. + + The parameter list to use when constructing the described by . + If null, the default constructor is used. + When non-null, there must be a constructor defined in the that exactly matches the number, + order, and type of these parameters. + + + + + Initializes a new instance of the class. + + The of the used to write enum text. + + The parameter list to use when constructing the described by . + If null, the default constructor is used. + When non-null, there must be a constructor defined in the that exactly matches the number, + order, and type of these parameters. + + true if integers are allowed when serializing and deserializing; otherwise, false. + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts a to and from Unix epoch time + + + + + Gets or sets a value indicating whether the dates before Unix epoch + should converted to and from JSON. + + + true to allow converting dates before Unix epoch to and from JSON; + false to throw an exception when a date being converted to or from JSON + occurred before Unix epoch. The default value is false. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + true to allow converting dates before Unix epoch to and from JSON; + false to throw an exception when a date being converted to or from JSON + occurred before Unix epoch. The default value is false. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing property value of the JSON that is being converted. + The calling serializer. + The object value. + + + + Converts a to and from a string (e.g. "1.2.3.4"). + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing property value of the JSON that is being converted. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts XML to and from JSON. + + + + + Gets or sets the name of the root element to insert when deserializing to XML if the JSON structure has produced multiple root elements. + + The name of the deserialized root element. + + + + Gets or sets a value to indicate whether to write the Json.NET array attribute. + This attribute helps preserve arrays when converting the written XML back to JSON. + + true if the array attribute is written to the XML; otherwise, false. + + + + Gets or sets a value indicating whether to write the root JSON object. + + true if the JSON root object is omitted; otherwise, false. + + + + Gets or sets a value indicating whether to encode special characters when converting JSON to XML. + If true, special characters like ':', '@', '?', '#' and '$' in JSON property names aren't used to specify + XML namespaces, attributes or processing directives. Instead special characters are encoded and written + as part of the XML element name. + + true if special characters are encoded; otherwise, false. + + + + Writes the JSON representation of the object. + + The to write to. + The calling serializer. + The value. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Checks if the is a namespace attribute. + + Attribute name to test. + The attribute name prefix if it has one, otherwise an empty string. + true if attribute name is for a namespace attribute, otherwise false. + + + + Determines whether this instance can convert the specified value type. + + Type of the value. + + true if this instance can convert the specified value type; otherwise, false. + + + + + Specifies how dates are formatted when writing JSON text. + + + + + Dates are written in the ISO 8601 format, e.g. "2012-03-21T05:40Z". + + + + + Dates are written in the Microsoft JSON format, e.g. "\/Date(1198908717056)\/". + + + + + Specifies how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON text. + + + + + Date formatted strings are not parsed to a date type and are read as strings. + + + + + Date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed to . + + + + + Date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed to . + + + + + Specifies how to treat the time value when converting between string and . + + + + + Treat as local time. If the object represents a Coordinated Universal Time (UTC), it is converted to the local time. + + + + + Treat as a UTC. If the object represents a local time, it is converted to a UTC. + + + + + Treat as a local time if a is being converted to a string. + If a string is being converted to , convert to a local time if a time zone is specified. + + + + + Time zone information should be preserved when converting. + + + + + The default JSON name table implementation. + + + + + Initializes a new instance of the class. + + + + + Gets a string containing the same characters as the specified range of characters in the given array. + + The character array containing the name to find. + The zero-based index into the array specifying the first character of the name. + The number of characters in the name. + A string containing the same characters as the specified range of characters in the given array. + + + + Adds the specified string into name table. + + The string to add. + This method is not thread-safe. + The resolved string. + + + + Specifies default value handling options for the . + + + + + + + + + Include members where the member value is the same as the member's default value when serializing objects. + Included members are written to JSON. Has no effect when deserializing. + + + + + Ignore members where the member value is the same as the member's default value when serializing objects + so that it is not written to JSON. + This option will ignore all default values (e.g. null for objects and nullable types; 0 for integers, + decimals and floating point numbers; and false for booleans). The default value ignored can be changed by + placing the on the property. + + + + + Members with a default value but no JSON will be set to their default value when deserializing. + + + + + Ignore members where the member value is the same as the member's default value when serializing objects + and set members to their default value when deserializing. + + + + + Specifies float format handling options when writing special floating point numbers, e.g. , + and with . + + + + + Write special floating point values as strings in JSON, e.g. "NaN", "Infinity", "-Infinity". + + + + + Write special floating point values as symbols in JSON, e.g. NaN, Infinity, -Infinity. + Note that this will produce non-valid JSON. + + + + + Write special floating point values as the property's default value in JSON, e.g. 0.0 for a property, null for a of property. + + + + + Specifies how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. + + + + + Floating point numbers are parsed to . + + + + + Floating point numbers are parsed to . + + + + + Specifies formatting options for the . + + + + + No special formatting is applied. This is the default. + + + + + Causes child objects to be indented according to the and settings. + + + + + Provides an interface for using pooled arrays. + + The array type content. + + + + Rent an array from the pool. This array must be returned when it is no longer needed. + + The minimum required length of the array. The returned array may be longer. + The rented array from the pool. This array must be returned when it is no longer needed. + + + + Return an array to the pool. + + The array that is being returned. + + + + Provides an interface to enable a class to return line and position information. + + + + + Gets a value indicating whether the class can return line information. + + + true if and can be provided; otherwise, false. + + + + + Gets the current line number. + + The current line number or 0 if no line information is available (for example, when returns false). + + + + Gets the current line position. + + The current line position or 0 if no line information is available (for example, when returns false). + + + + Instructs the how to serialize the collection. + + + + + Gets or sets a value indicating whether null items are allowed in the collection. + + true if null items are allowed in the collection; otherwise, false. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with a flag indicating whether the array can contain null items. + + A flag indicating whether the array can contain null items. + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + Instructs the to use the specified constructor when deserializing that object. + + + + + Instructs the how to serialize the object. + + + + + Gets or sets the id. + + The id. + + + + Gets or sets the title. + + The title. + + + + Gets or sets the description. + + The description. + + + + Gets or sets the collection's items converter. + + The collection's items converter. + + + + The parameter list to use when constructing the described by . + If null, the default constructor is used. + When non-null, there must be a constructor defined in the that exactly matches the number, + order, and type of these parameters. + + + + [JsonContainer(ItemConverterType = typeof(MyContainerConverter), ItemConverterParameters = new object[] { 123, "Four" })] + + + + + + Gets or sets the of the . + + The of the . + + + + The parameter list to use when constructing the described by . + If null, the default constructor is used. + When non-null, there must be a constructor defined in the that exactly matches the number, + order, and type of these parameters. + + + + [JsonContainer(NamingStrategyType = typeof(MyNamingStrategy), NamingStrategyParameters = new object[] { 123, "Four" })] + + + + + + Gets or sets a value that indicates whether to preserve object references. + + + true to keep object reference; otherwise, false. The default is false. + + + + + Gets or sets a value that indicates whether to preserve collection's items references. + + + true to keep collection's items object references; otherwise, false. The default is false. + + + + + Gets or sets the reference loop handling used when serializing the collection's items. + + The reference loop handling. + + + + Gets or sets the type name handling used when serializing the collection's items. + + The type name handling. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + Provides methods for converting between .NET types and JSON types. + + + + + + + + Gets or sets a function that creates default . + Default settings are automatically used by serialization methods on , + and and on . + To serialize without using any default settings create a with + . + + + + + Represents JavaScript's boolean value true as a string. This field is read-only. + + + + + Represents JavaScript's boolean value false as a string. This field is read-only. + + + + + Represents JavaScript's null as a string. This field is read-only. + + + + + Represents JavaScript's undefined as a string. This field is read-only. + + + + + Represents JavaScript's positive infinity as a string. This field is read-only. + + + + + Represents JavaScript's negative infinity as a string. This field is read-only. + + + + + Represents JavaScript's NaN as a string. This field is read-only. + + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation using the specified. + + The value to convert. + The format the date will be converted to. + The time zone handling when the date is converted to a string. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation using the specified. + + The value to convert. + The format the date will be converted to. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + The string delimiter character. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + The string delimiter character. + The string escape handling. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Serializes the specified object to a JSON string. + + The object to serialize. + A JSON string representation of the object. + + + + Serializes the specified object to a JSON string using formatting. + + The object to serialize. + Indicates how the output should be formatted. + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using a collection of . + + The object to serialize. + A collection of converters used while serializing. + A JSON string representation of the object. + + + + Serializes the specified object to a JSON string using formatting and a collection of . + + The object to serialize. + Indicates how the output should be formatted. + A collection of converters used while serializing. + A JSON string representation of the object. + + + + Serializes the specified object to a JSON string using . + + The object to serialize. + The used to serialize the object. + If this is null, default serialization settings will be used. + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using a type, formatting and . + + The object to serialize. + The used to serialize the object. + If this is null, default serialization settings will be used. + + The type of the value being serialized. + This parameter is used when is to write out the type name if the type of the value does not match. + Specifying the type is optional. + + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using formatting and . + + The object to serialize. + Indicates how the output should be formatted. + The used to serialize the object. + If this is null, default serialization settings will be used. + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using a type, formatting and . + + The object to serialize. + Indicates how the output should be formatted. + The used to serialize the object. + If this is null, default serialization settings will be used. + + The type of the value being serialized. + This parameter is used when is to write out the type name if the type of the value does not match. + Specifying the type is optional. + + + A JSON string representation of the object. + + + + + Deserializes the JSON to a .NET object. + + The JSON to deserialize. + The deserialized object from the JSON string. + + + + Deserializes the JSON to a .NET object using . + + The JSON to deserialize. + + The used to deserialize the object. + If this is null, default serialization settings will be used. + + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type. + + The JSON to deserialize. + The of object being deserialized. + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type. + + The type of the object to deserialize to. + The JSON to deserialize. + The deserialized object from the JSON string. + + + + Deserializes the JSON to the given anonymous type. + + + The anonymous type to deserialize to. This can't be specified + traditionally and must be inferred from the anonymous type passed + as a parameter. + + The JSON to deserialize. + The anonymous type object. + The deserialized anonymous type from the JSON string. + + + + Deserializes the JSON to the given anonymous type using . + + + The anonymous type to deserialize to. This can't be specified + traditionally and must be inferred from the anonymous type passed + as a parameter. + + The JSON to deserialize. + The anonymous type object. + + The used to deserialize the object. + If this is null, default serialization settings will be used. + + The deserialized anonymous type from the JSON string. + + + + Deserializes the JSON to the specified .NET type using a collection of . + + The type of the object to deserialize to. + The JSON to deserialize. + Converters to use while deserializing. + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type using . + + The type of the object to deserialize to. + The object to deserialize. + + The used to deserialize the object. + If this is null, default serialization settings will be used. + + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type using a collection of . + + The JSON to deserialize. + The type of the object to deserialize. + Converters to use while deserializing. + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type using . + + The JSON to deserialize. + The type of the object to deserialize to. + + The used to deserialize the object. + If this is null, default serialization settings will be used. + + The deserialized object from the JSON string. + + + + Populates the object with values from the JSON string. + + The JSON to populate values from. + The target object to populate values onto. + + + + Populates the object with values from the JSON string using . + + The JSON to populate values from. + The target object to populate values onto. + + The used to deserialize the object. + If this is null, default serialization settings will be used. + + + + + Serializes the to a JSON string. + + The node to serialize. + A JSON string of the . + + + + Serializes the to a JSON string using formatting. + + The node to serialize. + Indicates how the output should be formatted. + A JSON string of the . + + + + Serializes the to a JSON string using formatting and omits the root object if is true. + + The node to serialize. + Indicates how the output should be formatted. + Omits writing the root object. + A JSON string of the . + + + + Deserializes the from a JSON string. + + The JSON string. + The deserialized . + + + + Deserializes the from a JSON string nested in a root element specified by . + + The JSON string. + The name of the root element to append when deserializing. + The deserialized . + + + + Deserializes the from a JSON string nested in a root element specified by + and writes a Json.NET array attribute for collections. + + The JSON string. + The name of the root element to append when deserializing. + + A value to indicate whether to write the Json.NET array attribute. + This attribute helps preserve arrays when converting the written XML back to JSON. + + The deserialized . + + + + Deserializes the from a JSON string nested in a root element specified by , + writes a Json.NET array attribute for collections, and encodes special characters. + + The JSON string. + The name of the root element to append when deserializing. + + A value to indicate whether to write the Json.NET array attribute. + This attribute helps preserve arrays when converting the written XML back to JSON. + + + A value to indicate whether to encode special characters when converting JSON to XML. + If true, special characters like ':', '@', '?', '#' and '$' in JSON property names aren't used to specify + XML namespaces, attributes or processing directives. Instead special characters are encoded and written + as part of the XML element name. + + The deserialized . + + + + Serializes the to a JSON string. + + The node to convert to JSON. + A JSON string of the . + + + + Serializes the to a JSON string using formatting. + + The node to convert to JSON. + Indicates how the output should be formatted. + A JSON string of the . + + + + Serializes the to a JSON string using formatting and omits the root object if is true. + + The node to serialize. + Indicates how the output should be formatted. + Omits writing the root object. + A JSON string of the . + + + + Deserializes the from a JSON string. + + The JSON string. + The deserialized . + + + + Deserializes the from a JSON string nested in a root element specified by . + + The JSON string. + The name of the root element to append when deserializing. + The deserialized . + + + + Deserializes the from a JSON string nested in a root element specified by + and writes a Json.NET array attribute for collections. + + The JSON string. + The name of the root element to append when deserializing. + + A value to indicate whether to write the Json.NET array attribute. + This attribute helps preserve arrays when converting the written XML back to JSON. + + The deserialized . + + + + Deserializes the from a JSON string nested in a root element specified by , + writes a Json.NET array attribute for collections, and encodes special characters. + + The JSON string. + The name of the root element to append when deserializing. + + A value to indicate whether to write the Json.NET array attribute. + This attribute helps preserve arrays when converting the written XML back to JSON. + + + A value to indicate whether to encode special characters when converting JSON to XML. + If true, special characters like ':', '@', '?', '#' and '$' in JSON property names aren't used to specify + XML namespaces, attributes or processing directives. Instead special characters are encoded and written + as part of the XML element name. + + The deserialized . + + + + Converts an object to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Gets a value indicating whether this can read JSON. + + true if this can read JSON; otherwise, false. + + + + Gets a value indicating whether this can write JSON. + + true if this can write JSON; otherwise, false. + + + + Converts an object to and from JSON. + + The object type to convert. + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. If there is no existing value then null will be used. + The existing value has a value. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Instructs the to use the specified when serializing the member or class. + + + + + Gets the of the . + + The of the . + + + + The parameter list to use when constructing the described by . + If null, the default constructor is used. + + + + + Initializes a new instance of the class. + + Type of the . + + + + Initializes a new instance of the class. + + Type of the . + Parameter list to use when constructing the . Can be null. + + + + Represents a collection of . + + + + + Instructs the how to serialize the collection. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + The exception thrown when an error occurs during JSON serialization or deserialization. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or null if no inner exception is specified. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is null. + The class name is null or is zero (0). + + + + Instructs the to deserialize properties with no matching class member into the specified collection + and write values during serialization. + + + + + Gets or sets a value that indicates whether to write extension data when serializing the object. + + + true to write extension data when serializing the object; otherwise, false. The default is true. + + + + + Gets or sets a value that indicates whether to read extension data when deserializing the object. + + + true to read extension data when deserializing the object; otherwise, false. The default is true. + + + + + Initializes a new instance of the class. + + + + + Instructs the not to serialize the public field or public read/write property value. + + + + + Base class for a table of atomized string objects. + + + + + Gets a string containing the same characters as the specified range of characters in the given array. + + The character array containing the name to find. + The zero-based index into the array specifying the first character of the name. + The number of characters in the name. + A string containing the same characters as the specified range of characters in the given array. + + + + Instructs the how to serialize the object. + + + + + Gets or sets the member serialization. + + The member serialization. + + + + Gets or sets the missing member handling used when deserializing this object. + + The missing member handling. + + + + Gets or sets how the object's properties with null values are handled during serialization and deserialization. + + How the object's properties with null values are handled during serialization and deserialization. + + + + Gets or sets a value that indicates whether the object's properties are required. + + + A value indicating whether the object's properties are required. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified member serialization. + + The member serialization. + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + Instructs the to always serialize the member with the specified name. + + + + + Gets or sets the type used when serializing the property's collection items. + + The collection's items type. + + + + The parameter list to use when constructing the described by . + If null, the default constructor is used. + When non-null, there must be a constructor defined in the that exactly matches the number, + order, and type of these parameters. + + + + [JsonProperty(ItemConverterType = typeof(MyContainerConverter), ItemConverterParameters = new object[] { 123, "Four" })] + + + + + + Gets or sets the of the . + + The of the . + + + + The parameter list to use when constructing the described by . + If null, the default constructor is used. + When non-null, there must be a constructor defined in the that exactly matches the number, + order, and type of these parameters. + + + + [JsonProperty(NamingStrategyType = typeof(MyNamingStrategy), NamingStrategyParameters = new object[] { 123, "Four" })] + + + + + + Gets or sets the null value handling used when serializing this property. + + The null value handling. + + + + Gets or sets the default value handling used when serializing this property. + + The default value handling. + + + + Gets or sets the reference loop handling used when serializing this property. + + The reference loop handling. + + + + Gets or sets the object creation handling used when deserializing this property. + + The object creation handling. + + + + Gets or sets the type name handling used when serializing this property. + + The type name handling. + + + + Gets or sets whether this property's value is serialized as a reference. + + Whether this property's value is serialized as a reference. + + + + Gets or sets the order of serialization of a member. + + The numeric order of serialization. + + + + Gets or sets a value indicating whether this property is required. + + + A value indicating whether this property is required. + + + + + Gets or sets the name of the property. + + The name of the property. + + + + Gets or sets the reference loop handling used when serializing the property's collection items. + + The collection's items reference loop handling. + + + + Gets or sets the type name handling used when serializing the property's collection items. + + The collection's items type name handling. + + + + Gets or sets whether this property's collection items are serialized as a reference. + + Whether this property's collection items are serialized as a reference. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified name. + + Name of the property. + + + + Represents a reader that provides fast, non-cached, forward-only access to serialized JSON data. + + + + + Asynchronously reads the next JSON token from the source. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous read. The + property returns true if the next token was read successfully; false if there are no more tokens to read. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously skips the children of the current token. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously reads the next JSON token from the source as a of . + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous read. The + property returns the of . This result will be null at the end of an array. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously reads the next JSON token from the source as a []. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous read. The + property returns the []. This result will be null at the end of an array. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously reads the next JSON token from the source as a of . + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous read. The + property returns the of . This result will be null at the end of an array. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously reads the next JSON token from the source as a of . + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous read. The + property returns the of . This result will be null at the end of an array. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously reads the next JSON token from the source as a of . + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous read. The + property returns the of . This result will be null at the end of an array. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously reads the next JSON token from the source as a of . + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous read. The + property returns the of . This result will be null at the end of an array. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously reads the next JSON token from the source as a of . + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous read. The + property returns the of . This result will be null at the end of an array. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously reads the next JSON token from the source as a . + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous read. The + property returns the . This result will be null at the end of an array. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Specifies the state of the reader. + + + + + A read method has not been called. + + + + + The end of the file has been reached successfully. + + + + + Reader is at a property. + + + + + Reader is at the start of an object. + + + + + Reader is in an object. + + + + + Reader is at the start of an array. + + + + + Reader is in an array. + + + + + The method has been called. + + + + + Reader has just read a value. + + + + + Reader is at the start of a constructor. + + + + + Reader is in a constructor. + + + + + An error occurred that prevents the read operation from continuing. + + + + + The end of the file has been reached successfully. + + + + + Gets the current reader state. + + The current reader state. + + + + Gets or sets a value indicating whether the source should be closed when this reader is closed. + + + true to close the source when this reader is closed; otherwise false. The default is true. + + + + + Gets or sets a value indicating whether multiple pieces of JSON content can + be read from a continuous stream without erroring. + + + true to support reading multiple pieces of JSON content; otherwise false. + The default is false. + + + + + Gets the quotation mark character used to enclose the value of a string. + + + + + Gets or sets how time zones are handled when reading JSON. + + + + + Gets or sets how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. + + + + + Gets or sets how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. + + + + + Gets or sets how custom date formatted strings are parsed when reading JSON. + + + + + Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . + A null value means there is no maximum. + The default value is 64. + + + + + Gets the type of the current JSON token. + + + + + Gets the text value of the current JSON token. + + + + + Gets the .NET type for the current JSON token. + + + + + Gets the depth of the current token in the JSON document. + + The depth of the current token in the JSON document. + + + + Gets the path of the current JSON token. + + + + + Gets or sets the culture used when reading JSON. Defaults to . + + + + + Initializes a new instance of the class. + + + + + Reads the next JSON token from the source. + + true if the next token was read successfully; false if there are no more tokens to read. + + + + Reads the next JSON token from the source as a of . + + A of . This method will return null at the end of an array. + + + + Reads the next JSON token from the source as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the source as a []. + + A [] or null if the next JSON token is null. This method will return null at the end of an array. + + + + Reads the next JSON token from the source as a of . + + A of . This method will return null at the end of an array. + + + + Reads the next JSON token from the source as a of . + + A of . This method will return null at the end of an array. + + + + Reads the next JSON token from the source as a of . + + A of . This method will return null at the end of an array. + + + + Reads the next JSON token from the source as a of . + + A of . This method will return null at the end of an array. + + + + Reads the next JSON token from the source as a of . + + A of . This method will return null at the end of an array. + + + + Skips the children of the current token. + + + + + Sets the current token. + + The new token. + + + + Sets the current token and value. + + The new token. + The value. + + + + Sets the current token and value. + + The new token. + The value. + A flag indicating whether the position index inside an array should be updated. + + + + Sets the state based on current token type. + + + + + Releases unmanaged and - optionally - managed resources. + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Changes the reader's state to . + If is set to true, the source is also closed. + + + + + The exception thrown when an error occurs while reading JSON text. + + + + + Gets the line number indicating where the error occurred. + + The line number indicating where the error occurred. + + + + Gets the line position indicating where the error occurred. + + The line position indicating where the error occurred. + + + + Gets the path to the JSON where the error occurred. + + The path to the JSON where the error occurred. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or null if no inner exception is specified. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is null. + The class name is null or is zero (0). + + + + Initializes a new instance of the class + with a specified error message, JSON path, line number, line position, and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The path to the JSON where the error occurred. + The line number indicating where the error occurred. + The line position indicating where the error occurred. + The exception that is the cause of the current exception, or null if no inner exception is specified. + + + + Instructs the to always serialize the member, and to require that the member has a value. + + + + + The exception thrown when an error occurs during JSON serialization or deserialization. + + + + + Gets the line number indicating where the error occurred. + + The line number indicating where the error occurred. + + + + Gets the line position indicating where the error occurred. + + The line position indicating where the error occurred. + + + + Gets the path to the JSON where the error occurred. + + The path to the JSON where the error occurred. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or null if no inner exception is specified. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is null. + The class name is null or is zero (0). + + + + Initializes a new instance of the class + with a specified error message, JSON path, line number, line position, and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The path to the JSON where the error occurred. + The line number indicating where the error occurred. + The line position indicating where the error occurred. + The exception that is the cause of the current exception, or null if no inner exception is specified. + + + + Serializes and deserializes objects into and from the JSON format. + The enables you to control how objects are encoded into JSON. + + + + + Occurs when the errors during serialization and deserialization. + + + + + Gets or sets the used by the serializer when resolving references. + + + + + Gets or sets the used by the serializer when resolving type names. + + + + + Gets or sets the used by the serializer when resolving type names. + + + + + Gets or sets the used by the serializer when writing trace messages. + + The trace writer. + + + + Gets or sets the equality comparer used by the serializer when comparing references. + + The equality comparer. + + + + Gets or sets how type name writing and reading is handled by the serializer. + The default value is . + + + should be used with caution when your application deserializes JSON from an external source. + Incoming types should be validated with a custom + when deserializing with a value other than . + + + + + Gets or sets how a type name assembly is written and resolved by the serializer. + The default value is . + + The type name assembly format. + + + + Gets or sets how a type name assembly is written and resolved by the serializer. + The default value is . + + The type name assembly format. + + + + Gets or sets how object references are preserved by the serializer. + The default value is . + + + + + Gets or sets how reference loops (e.g. a class referencing itself) is handled. + The default value is . + + + + + Gets or sets how missing members (e.g. JSON contains a property that isn't a member on the object) are handled during deserialization. + The default value is . + + + + + Gets or sets how null values are handled during serialization and deserialization. + The default value is . + + + + + Gets or sets how default values are handled during serialization and deserialization. + The default value is . + + + + + Gets or sets how objects are created during deserialization. + The default value is . + + The object creation handling. + + + + Gets or sets how constructors are used during deserialization. + The default value is . + + The constructor handling. + + + + Gets or sets how metadata properties are used during deserialization. + The default value is . + + The metadata properties handling. + + + + Gets a collection that will be used during serialization. + + Collection that will be used during serialization. + + + + Gets or sets the contract resolver used by the serializer when + serializing .NET objects to JSON and vice versa. + + + + + Gets or sets the used by the serializer when invoking serialization callback methods. + + The context. + + + + Indicates how JSON text output is formatted. + The default value is . + + + + + Gets or sets how dates are written to JSON text. + The default value is . + + + + + Gets or sets how time zones are handled during serialization and deserialization. + The default value is . + + + + + Gets or sets how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. + The default value is . + + + + + Gets or sets how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. + The default value is . + + + + + Gets or sets how special floating point numbers, e.g. , + and , + are written as JSON text. + The default value is . + + + + + Gets or sets how strings are escaped when writing JSON text. + The default value is . + + + + + Gets or sets how and values are formatted when writing JSON text, + and the expected date format when reading JSON text. + The default value is "yyyy'-'MM'-'dd'T'HH':'mm':'ss.FFFFFFFK". + + + + + Gets or sets the culture used when reading JSON. + The default value is . + + + + + Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . + A null value means there is no maximum. + The default value is 64. + + + + + Gets a value indicating whether there will be a check for additional JSON content after deserializing an object. + The default value is false. + + + true if there will be a check for additional JSON content after deserializing an object; otherwise, false. + + + + + Initializes a new instance of the class. + + + + + Creates a new instance. + The will not use default settings + from . + + + A new instance. + The will not use default settings + from . + + + + + Creates a new instance using the specified . + The will not use default settings + from . + + The settings to be applied to the . + + A new instance using the specified . + The will not use default settings + from . + + + + + Creates a new instance. + The will use default settings + from . + + + A new instance. + The will use default settings + from . + + + + + Creates a new instance using the specified . + The will use default settings + from as well as the specified . + + The settings to be applied to the . + + A new instance using the specified . + The will use default settings + from as well as the specified . + + + + + Populates the JSON values onto the target object. + + The that contains the JSON structure to read values from. + The target object to populate values onto. + + + + Populates the JSON values onto the target object. + + The that contains the JSON structure to read values from. + The target object to populate values onto. + + + + Deserializes the JSON structure contained by the specified . + + The that contains the JSON structure to deserialize. + The being deserialized. + + + + Deserializes the JSON structure contained by the specified + into an instance of the specified type. + + The containing the object. + The of object being deserialized. + The instance of being deserialized. + + + + Deserializes the JSON structure contained by the specified + into an instance of the specified type. + + The containing the object. + The type of the object to deserialize. + The instance of being deserialized. + + + + Deserializes the JSON structure contained by the specified + into an instance of the specified type. + + The containing the object. + The of object being deserialized. + The instance of being deserialized. + + + + Serializes the specified and writes the JSON structure + using the specified . + + The used to write the JSON structure. + The to serialize. + + + + Serializes the specified and writes the JSON structure + using the specified . + + The used to write the JSON structure. + The to serialize. + + The type of the value being serialized. + This parameter is used when is to write out the type name if the type of the value does not match. + Specifying the type is optional. + + + + + Serializes the specified and writes the JSON structure + using the specified . + + The used to write the JSON structure. + The to serialize. + + The type of the value being serialized. + This parameter is used when is Auto to write out the type name if the type of the value does not match. + Specifying the type is optional. + + + + + Serializes the specified and writes the JSON structure + using the specified . + + The used to write the JSON structure. + The to serialize. + + + + Specifies the settings on a object. + + + + + Gets or sets how reference loops (e.g. a class referencing itself) are handled. + The default value is . + + Reference loop handling. + + + + Gets or sets how missing members (e.g. JSON contains a property that isn't a member on the object) are handled during deserialization. + The default value is . + + Missing member handling. + + + + Gets or sets how objects are created during deserialization. + The default value is . + + The object creation handling. + + + + Gets or sets how null values are handled during serialization and deserialization. + The default value is . + + Null value handling. + + + + Gets or sets how default values are handled during serialization and deserialization. + The default value is . + + The default value handling. + + + + Gets or sets a collection that will be used during serialization. + + The converters. + + + + Gets or sets how object references are preserved by the serializer. + The default value is . + + The preserve references handling. + + + + Gets or sets how type name writing and reading is handled by the serializer. + The default value is . + + + should be used with caution when your application deserializes JSON from an external source. + Incoming types should be validated with a custom + when deserializing with a value other than . + + The type name handling. + + + + Gets or sets how metadata properties are used during deserialization. + The default value is . + + The metadata properties handling. + + + + Gets or sets how a type name assembly is written and resolved by the serializer. + The default value is . + + The type name assembly format. + + + + Gets or sets how a type name assembly is written and resolved by the serializer. + The default value is . + + The type name assembly format. + + + + Gets or sets how constructors are used during deserialization. + The default value is . + + The constructor handling. + + + + Gets or sets the contract resolver used by the serializer when + serializing .NET objects to JSON and vice versa. + + The contract resolver. + + + + Gets or sets the equality comparer used by the serializer when comparing references. + + The equality comparer. + + + + Gets or sets the used by the serializer when resolving references. + + The reference resolver. + + + + Gets or sets a function that creates the used by the serializer when resolving references. + + A function that creates the used by the serializer when resolving references. + + + + Gets or sets the used by the serializer when writing trace messages. + + The trace writer. + + + + Gets or sets the used by the serializer when resolving type names. + + The binder. + + + + Gets or sets the used by the serializer when resolving type names. + + The binder. + + + + Gets or sets the error handler called during serialization and deserialization. + + The error handler called during serialization and deserialization. + + + + Gets or sets the used by the serializer when invoking serialization callback methods. + + The context. + + + + Gets or sets how and values are formatted when writing JSON text, + and the expected date format when reading JSON text. + The default value is "yyyy'-'MM'-'dd'T'HH':'mm':'ss.FFFFFFFK". + + + + + Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . + A null value means there is no maximum. + The default value is 64. + + + + + Indicates how JSON text output is formatted. + The default value is . + + + + + Gets or sets how dates are written to JSON text. + The default value is . + + + + + Gets or sets how time zones are handled during serialization and deserialization. + The default value is . + + + + + Gets or sets how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. + The default value is . + + + + + Gets or sets how special floating point numbers, e.g. , + and , + are written as JSON. + The default value is . + + + + + Gets or sets how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. + The default value is . + + + + + Gets or sets how strings are escaped when writing JSON text. + The default value is . + + + + + Gets or sets the culture used when reading JSON. + The default value is . + + + + + Gets a value indicating whether there will be a check for additional content after deserializing an object. + The default value is false. + + + true if there will be a check for additional content after deserializing an object; otherwise, false. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + using values copied from the passed in . + + + + + Represents a reader that provides fast, non-cached, forward-only access to JSON text data. + + + + + Asynchronously reads the next JSON token from the source. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous read. The + property returns true if the next token was read successfully; false if there are no more tokens to read. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously reads the next JSON token from the source as a of . + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous read. The + property returns the of . This result will be null at the end of an array. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously reads the next JSON token from the source as a []. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous read. The + property returns the []. This result will be null at the end of an array. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously reads the next JSON token from the source as a of . + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous read. The + property returns the of . This result will be null at the end of an array. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously reads the next JSON token from the source as a of . + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous read. The + property returns the of . This result will be null at the end of an array. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously reads the next JSON token from the source as a of . + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous read. The + property returns the of . This result will be null at the end of an array. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously reads the next JSON token from the source as a of . + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous read. The + property returns the of . This result will be null at the end of an array. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously reads the next JSON token from the source as a of . + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous read. The + property returns the of . This result will be null at the end of an array. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously reads the next JSON token from the source as a . + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous read. The + property returns the . This result will be null at the end of an array. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Initializes a new instance of the class with the specified . + + The containing the JSON data to read. + + + + Gets or sets the reader's property name table. + + + + + Gets or sets the reader's character buffer pool. + + + + + Reads the next JSON token from the underlying . + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Reads the next JSON token from the underlying as a of . + + A of . This method will return null at the end of an array. + + + + Reads the next JSON token from the underlying as a of . + + A of . This method will return null at the end of an array. + + + + Reads the next JSON token from the underlying as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the underlying as a []. + + A [] or null if the next JSON token is null. This method will return null at the end of an array. + + + + Reads the next JSON token from the underlying as a of . + + A of . This method will return null at the end of an array. + + + + Reads the next JSON token from the underlying as a of . + + A of . This method will return null at the end of an array. + + + + Reads the next JSON token from the underlying as a of . + + A of . This method will return null at the end of an array. + + + + Reads the next JSON token from the underlying as a of . + + A of . This method will return null at the end of an array. + + + + Changes the reader's state to . + If is set to true, the underlying is also closed. + + + + + Gets a value indicating whether the class can return line information. + + + true if and can be provided; otherwise, false. + + + + + Gets the current line number. + + + The current line number or 0 if no line information is available (for example, returns false). + + + + + Gets the current line position. + + + The current line position or 0 if no line information is available (for example, returns false). + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating JSON data. + + + + + Asynchronously flushes whatever is in the buffer to the destination and also flushes the destination. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes the JSON value delimiter. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes the specified end token. + + The end token to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously closes this writer. + If is set to true, the destination is also closed. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes the end of the current JSON object or array. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes indent characters. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes an indent space. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes raw JSON without changing the writer's state. + + The raw JSON to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a null value. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes the property name of a name/value pair of a JSON object. + + The name of the property. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes the property name of a name/value pair of a JSON object. + + The name of the property. + A flag to indicate whether the text should be escaped when it is written as a JSON property name. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes the beginning of a JSON array. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes the beginning of a JSON object. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes the start of a constructor with the given name. + + The name of the constructor. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes an undefined value. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes the given white space. + + The string of white space characters. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a [] value. + + The [] value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a comment /*...*/ containing the specified text. + + Text to place inside the comment. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes the end of an array. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes the end of a constructor. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes the end of a JSON object. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes raw JSON where a value is expected and updates the writer's state. + + The raw JSON to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Gets or sets the writer's character array pool. + + + + + Gets or sets how many s to write for each level in the hierarchy when is set to . + + + + + Gets or sets which character to use to quote attribute values. + + + + + Gets or sets which character to use for indenting when is set to . + + + + + Gets or sets a value indicating whether object names will be surrounded with quotes. + + + + + Initializes a new instance of the class using the specified . + + The to write to. + + + + Flushes whatever is in the buffer to the underlying and also flushes the underlying . + + + + + Closes this writer. + If is set to true, the underlying is also closed. + If is set to true, the JSON is auto-completed. + + + + + Writes the beginning of a JSON object. + + + + + Writes the beginning of a JSON array. + + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes the specified end token. + + The end token to write. + + + + Writes the property name of a name/value pair on a JSON object. + + The name of the property. + + + + Writes the property name of a name/value pair on a JSON object. + + The name of the property. + A flag to indicate whether the text should be escaped when it is written as a JSON property name. + + + + Writes indent characters. + + + + + Writes the JSON value delimiter. + + + + + Writes an indent space. + + + + + Writes a value. + An error will raised if the value cannot be written as a single JSON token. + + The value to write. + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes raw JSON. + + The raw JSON to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a of value. + + The of value to write. + + + + Writes a value. + + The value to write. + + + + Writes a of value. + + The of value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a [] value. + + The [] value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes the given white space. + + The string of white space characters. + + + + Specifies the type of JSON token. + + + + + This is returned by the if a read method has not been called. + + + + + An object start token. + + + + + An array start token. + + + + + A constructor start token. + + + + + An object property name. + + + + + A comment. + + + + + Raw JSON. + + + + + An integer. + + + + + A float. + + + + + A string. + + + + + A boolean. + + + + + A null token. + + + + + An undefined token. + + + + + An object end token. + + + + + An array end token. + + + + + A constructor end token. + + + + + A Date. + + + + + Byte data. + + + + + + Represents a reader that provides validation. + + + JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. + + + + + + Sets an event handler for receiving schema validation errors. + + + + + Gets the text value of the current JSON token. + + + + + + Gets the depth of the current token in the JSON document. + + The depth of the current token in the JSON document. + + + + Gets the path of the current JSON token. + + + + + Gets the quotation mark character used to enclose the value of a string. + + + + + + Gets the type of the current JSON token. + + + + + + Gets the .NET type for the current JSON token. + + + + + + Initializes a new instance of the class that + validates the content returned from the given . + + The to read from while validating. + + + + Gets or sets the schema. + + The schema. + + + + Gets the used to construct this . + + The specified in the constructor. + + + + Changes the reader's state to . + If is set to true, the underlying is also closed. + + + + + Reads the next JSON token from the underlying as a of . + + A of . + + + + Reads the next JSON token from the underlying as a []. + + + A [] or null if the next JSON token is null. + + + + + Reads the next JSON token from the underlying as a of . + + A of . + + + + Reads the next JSON token from the underlying as a of . + + A of . + + + + Reads the next JSON token from the underlying as a of . + + A of . + + + + Reads the next JSON token from the underlying as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the underlying as a of . + + A of . This method will return null at the end of an array. + + + + Reads the next JSON token from the underlying as a of . + + A of . + + + + Reads the next JSON token from the underlying . + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating JSON data. + + + + + Asynchronously closes this writer. + If is set to true, the destination is also closed. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously flushes whatever is in the buffer to the destination and also flushes the destination. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes the specified end token. + + The end token to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes indent characters. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes the JSON value delimiter. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes an indent space. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes raw JSON without changing the writer's state. + + The raw JSON to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes the end of the current JSON object or array. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes the end of an array. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes the end of a constructor. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes the end of a JSON object. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a null value. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes the property name of a name/value pair of a JSON object. + + The name of the property. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes the property name of a name/value pair of a JSON object. + + The name of the property. + A flag to indicate whether the text should be escaped when it is written as a JSON property name. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes the beginning of a JSON array. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a comment /*...*/ containing the specified text. + + Text to place inside the comment. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes raw JSON where a value is expected and updates the writer's state. + + The raw JSON to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes the start of a constructor with the given name. + + The name of the constructor. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes the beginning of a JSON object. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes the current token. + + The to read the token from. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes the current token. + + The to read the token from. + A flag indicating whether the current token's children should be written. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes the token and its value. + + The to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes the token and its value. + + The to write. + + The value to write. + A value is only required for tokens that have an associated value, e.g. the property name for . + null can be passed to the method for tokens that don't have a value, e.g. . + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a [] value. + + The [] value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes an undefined value. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes the given white space. + + The string of white space characters. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously ets the state of the . + + The being written. + The value being written. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Gets or sets a value indicating whether the destination should be closed when this writer is closed. + + + true to close the destination when this writer is closed; otherwise false. The default is true. + + + + + Gets or sets a value indicating whether the JSON should be auto-completed when this writer is closed. + + + true to auto-complete the JSON when this writer is closed; otherwise false. The default is true. + + + + + Gets the top. + + The top. + + + + Gets the state of the writer. + + + + + Gets the path of the writer. + + + + + Gets or sets a value indicating how JSON text output should be formatted. + + + + + Gets or sets how dates are written to JSON text. + + + + + Gets or sets how time zones are handled when writing JSON text. + + + + + Gets or sets how strings are escaped when writing JSON text. + + + + + Gets or sets how special floating point numbers, e.g. , + and , + are written to JSON text. + + + + + Gets or sets how and values are formatted when writing JSON text. + + + + + Gets or sets the culture used when writing JSON. Defaults to . + + + + + Initializes a new instance of the class. + + + + + Flushes whatever is in the buffer to the destination and also flushes the destination. + + + + + Closes this writer. + If is set to true, the destination is also closed. + If is set to true, the JSON is auto-completed. + + + + + Writes the beginning of a JSON object. + + + + + Writes the end of a JSON object. + + + + + Writes the beginning of a JSON array. + + + + + Writes the end of an array. + + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes the end constructor. + + + + + Writes the property name of a name/value pair of a JSON object. + + The name of the property. + + + + Writes the property name of a name/value pair of a JSON object. + + The name of the property. + A flag to indicate whether the text should be escaped when it is written as a JSON property name. + + + + Writes the end of the current JSON object or array. + + + + + Writes the current token and its children. + + The to read the token from. + + + + Writes the current token. + + The to read the token from. + A flag indicating whether the current token's children should be written. + + + + Writes the token and its value. + + The to write. + + The value to write. + A value is only required for tokens that have an associated value, e.g. the property name for . + null can be passed to the method for tokens that don't have a value, e.g. . + + + + + Writes the token. + + The to write. + + + + Writes the specified end token. + + The end token to write. + + + + Writes indent characters. + + + + + Writes the JSON value delimiter. + + + + + Writes an indent space. + + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes raw JSON without changing the writer's state. + + The raw JSON to write. + + + + Writes raw JSON where a value is expected and updates the writer's state. + + The raw JSON to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a of value. + + The of value to write. + + + + Writes a of value. + + The of value to write. + + + + Writes a of value. + + The of value to write. + + + + Writes a of value. + + The of value to write. + + + + Writes a of value. + + The of value to write. + + + + Writes a of value. + + The of value to write. + + + + Writes a of value. + + The of value to write. + + + + Writes a of value. + + The of value to write. + + + + Writes a of value. + + The of value to write. + + + + Writes a of value. + + The of value to write. + + + + Writes a of value. + + The of value to write. + + + + Writes a of value. + + The of value to write. + + + + Writes a of value. + + The of value to write. + + + + Writes a of value. + + The of value to write. + + + + Writes a of value. + + The of value to write. + + + + Writes a of value. + + The of value to write. + + + + Writes a of value. + + The of value to write. + + + + Writes a [] value. + + The [] value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + An error will raised if the value cannot be written as a single JSON token. + + The value to write. + + + + Writes a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes the given white space. + + The string of white space characters. + + + + Releases unmanaged and - optionally - managed resources. + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Sets the state of the . + + The being written. + The value being written. + + + + The exception thrown when an error occurs while writing JSON text. + + + + + Gets the path to the JSON where the error occurred. + + The path to the JSON where the error occurred. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or null if no inner exception is specified. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is null. + The class name is null or is zero (0). + + + + Initializes a new instance of the class + with a specified error message, JSON path and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The path to the JSON where the error occurred. + The exception that is the cause of the current exception, or null if no inner exception is specified. + + + + Specifies how JSON comments are handled when loading JSON. + + + + + Ignore comments. + + + + + Load comments as a with type . + + + + + Specifies how duplicate property names are handled when loading JSON. + + + + + Replace the existing value when there is a duplicate property. The value of the last property in the JSON object will be used. + + + + + Ignore the new value when there is a duplicate property. The value of the first property in the JSON object will be used. + + + + + Throw a when a duplicate property is encountered. + + + + + Contains the LINQ to JSON extension methods. + + + + + Returns a collection of tokens that contains the ancestors of every token in the source collection. + + The type of the objects in source, constrained to . + An of that contains the source collection. + An of that contains the ancestors of every token in the source collection. + + + + Returns a collection of tokens that contains every token in the source collection, and the ancestors of every token in the source collection. + + The type of the objects in source, constrained to . + An of that contains the source collection. + An of that contains every token in the source collection, the ancestors of every token in the source collection. + + + + Returns a collection of tokens that contains the descendants of every token in the source collection. + + The type of the objects in source, constrained to . + An of that contains the source collection. + An of that contains the descendants of every token in the source collection. + + + + Returns a collection of tokens that contains every token in the source collection, and the descendants of every token in the source collection. + + The type of the objects in source, constrained to . + An of that contains the source collection. + An of that contains every token in the source collection, and the descendants of every token in the source collection. + + + + Returns a collection of child properties of every object in the source collection. + + An of that contains the source collection. + An of that contains the properties of every object in the source collection. + + + + Returns a collection of child values of every object in the source collection with the given key. + + An of that contains the source collection. + The token key. + An of that contains the values of every token in the source collection with the given key. + + + + Returns a collection of child values of every object in the source collection. + + An of that contains the source collection. + An of that contains the values of every token in the source collection. + + + + Returns a collection of converted child values of every object in the source collection with the given key. + + The type to convert the values to. + An of that contains the source collection. + The token key. + An that contains the converted values of every token in the source collection with the given key. + + + + Returns a collection of converted child values of every object in the source collection. + + The type to convert the values to. + An of that contains the source collection. + An that contains the converted values of every token in the source collection. + + + + Converts the value. + + The type to convert the value to. + A cast as a of . + A converted value. + + + + Converts the value. + + The source collection type. + The type to convert the value to. + A cast as a of . + A converted value. + + + + Returns a collection of child tokens of every array in the source collection. + + The source collection type. + An of that contains the source collection. + An of that contains the values of every token in the source collection. + + + + Returns a collection of converted child tokens of every array in the source collection. + + An of that contains the source collection. + The type to convert the values to. + The source collection type. + An that contains the converted values of every token in the source collection. + + + + Returns the input typed as . + + An of that contains the source collection. + The input typed as . + + + + Returns the input typed as . + + The source collection type. + An of that contains the source collection. + The input typed as . + + + + Represents a collection of objects. + + The type of token. + + + + Gets the of with the specified key. + + + + + + Represents a JSON array. + + + + + + + + Writes this token to a asynchronously. + + A into which this method will write. + The token to monitor for cancellation requests. + A collection of which will be used when writing the token. + A that represents the asynchronous write operation. + + + + Asynchronously loads a from a . + + A that will be read for the content of the . + If this is null, default load settings will be used. + The token to monitor for cancellation requests. The default value is . + A representing the asynchronous load. The property contains the JSON that was read from the specified . + + + + Asynchronously loads a from a . + + A that will be read for the content of the . + The used to load the JSON. + If this is null, default load settings will be used. + The token to monitor for cancellation requests. The default value is . + A representing the asynchronous load. The property contains the JSON that was read from the specified . + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets the node type for this . + + The type. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the specified content. + + The contents of the array. + + + + Initializes a new instance of the class with the specified content. + + The contents of the array. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Loads an from a . + + A that will be read for the content of the . + The used to load the JSON. + If this is null, default load settings will be used. + A that contains the JSON that was read from the specified . + + + + Load a from a string that contains JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + + + + Load a from a string that contains JSON. + + A that contains JSON. + The used to load the JSON. + If this is null, default load settings will be used. + A populated from the string that contains JSON. + + + + + + + Creates a from an object. + + The object that will be used to create . + A with the values of the specified object. + + + + Creates a from an object. + + The object that will be used to create . + The that will be used to read the object. + A with the values of the specified object. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Gets the with the specified key. + + The with the specified key. + + + + Gets or sets the at the specified index. + + + + + + Determines the index of a specific item in the . + + The object to locate in the . + + The index of if found in the list; otherwise, -1. + + + + + Inserts an item to the at the specified index. + + The zero-based index at which should be inserted. + The object to insert into the . + + is not a valid index in the . + + + + + Removes the item at the specified index. + + The zero-based index of the item to remove. + + is not a valid index in the . + + + + + Returns an enumerator that iterates through the collection. + + + A of that can be used to iterate through the collection. + + + + + Adds an item to the . + + The object to add to the . + + + + Removes all items from the . + + + + + Determines whether the contains a specific value. + + The object to locate in the . + + true if is found in the ; otherwise, false. + + + + + Copies the elements of the to an array, starting at a particular array index. + + The array. + Index of the array. + + + + Gets a value indicating whether the is read-only. + + true if the is read-only; otherwise, false. + + + + Removes the first occurrence of a specific object from the . + + The object to remove from the . + + true if was successfully removed from the ; otherwise, false. This method also returns false if is not found in the original . + + + + + Represents a JSON constructor. + + + + + Writes this token to a asynchronously. + + A into which this method will write. + The token to monitor for cancellation requests. + A collection of which will be used when writing the token. + A that represents the asynchronous write operation. + + + + Asynchronously loads a from a . + + A that will be read for the content of the . + The token to monitor for cancellation requests. The default value is . + + A that represents the asynchronous load. The + property returns a that contains the JSON that was read from the specified . + + + + Asynchronously loads a from a . + + A that will be read for the content of the . + The used to load the JSON. + If this is null, default load settings will be used. + The token to monitor for cancellation requests. The default value is . + + A that represents the asynchronous load. The + property returns a that contains the JSON that was read from the specified . + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets or sets the name of this constructor. + + The constructor name. + + + + Gets the node type for this . + + The type. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the specified name and content. + + The constructor name. + The contents of the constructor. + + + + Initializes a new instance of the class with the specified name and content. + + The constructor name. + The contents of the constructor. + + + + Initializes a new instance of the class with the specified name. + + The constructor name. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Gets the with the specified key. + + The with the specified key. + + + + Loads a from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Loads a from a . + + A that will be read for the content of the . + The used to load the JSON. + If this is null, default load settings will be used. + A that contains the JSON that was read from the specified . + + + + Represents a token that can contain other tokens. + + + + + Occurs when the list changes or an item in the list changes. + + + + + Occurs before an item is added to the collection. + + + + + Occurs when the items list of the collection has changed, or the collection is reset. + + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Raises the event. + + The instance containing the event data. + + + + Raises the event. + + The instance containing the event data. + + + + Raises the event. + + The instance containing the event data. + + + + Gets a value indicating whether this token has child tokens. + + + true if this token has child values; otherwise, false. + + + + + Get the first child token of this token. + + + A containing the first child token of the . + + + + + Get the last child token of this token. + + + A containing the last child token of the . + + + + + Returns a collection of the child tokens of this token, in document order. + + + An of containing the child tokens of this , in document order. + + + + + Returns a collection of the child values of this token, in document order. + + The type to convert the values to. + + A containing the child values of this , in document order. + + + + + Returns a collection of the descendant tokens for this token in document order. + + An of containing the descendant tokens of the . + + + + Returns a collection of the tokens that contain this token, and all descendant tokens of this token, in document order. + + An of containing this token, and all the descendant tokens of the . + + + + Adds the specified content as children of this . + + The content to be added. + + + + Adds the specified content as the first children of this . + + The content to be added. + + + + Creates a that can be used to add tokens to the . + + A that is ready to have content written to it. + + + + Replaces the child nodes of this token with the specified content. + + The content. + + + + Removes the child nodes from this token. + + + + + Merge the specified content into this . + + The content to be merged. + + + + Merge the specified content into this using . + + The content to be merged. + The used to merge the content. + + + + Gets the count of child JSON tokens. + + The count of child JSON tokens. + + + + Represents a collection of objects. + + The type of token. + + + + An empty collection of objects. + + + + + Initializes a new instance of the struct. + + The enumerable. + + + + Returns an enumerator that can be used to iterate through the collection. + + + A that can be used to iterate through the collection. + + + + + Gets the of with the specified key. + + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Represents a JSON object. + + + + + + + + Writes this token to a asynchronously. + + A into which this method will write. + The token to monitor for cancellation requests. + A collection of which will be used when writing the token. + A that represents the asynchronous write operation. + + + + Asynchronously loads a from a . + + A that will be read for the content of the . + The token to monitor for cancellation requests. The default value is . + + A that represents the asynchronous load. The + property returns a that contains the JSON that was read from the specified . + + + + Asynchronously loads a from a . + + A that will be read for the content of the . + The used to load the JSON. + If this is null, default load settings will be used. + The token to monitor for cancellation requests. The default value is . + + A that represents the asynchronous load. The + property returns a that contains the JSON that was read from the specified . + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Occurs when a property value changes. + + + + + Occurs when a property value is changing. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the specified content. + + The contents of the object. + + + + Initializes a new instance of the class with the specified content. + + The contents of the object. + + + + Gets the node type for this . + + The type. + + + + Gets an of of this object's properties. + + An of of this object's properties. + + + + Gets a with the specified name. + + The property name. + A with the specified name or null. + + + + Gets the with the specified name. + The exact name will be searched for first and if no matching property is found then + the will be used to match a property. + + The property name. + One of the enumeration values that specifies how the strings will be compared. + A matched with the specified name or null. + + + + Gets a of of this object's property values. + + A of of this object's property values. + + + + Gets the with the specified key. + + The with the specified key. + + + + Gets or sets the with the specified property name. + + + + + + Loads a from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + is not valid JSON. + + + + + Loads a from a . + + A that will be read for the content of the . + The used to load the JSON. + If this is null, default load settings will be used. + A that contains the JSON that was read from the specified . + + is not valid JSON. + + + + + Load a from a string that contains JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + is not valid JSON. + + + + + + + + Load a from a string that contains JSON. + + A that contains JSON. + The used to load the JSON. + If this is null, default load settings will be used. + A populated from the string that contains JSON. + + is not valid JSON. + + + + + + + + Creates a from an object. + + The object that will be used to create . + A with the values of the specified object. + + + + Creates a from an object. + + The object that will be used to create . + The that will be used to read the object. + A with the values of the specified object. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Gets the with the specified property name. + + Name of the property. + The with the specified property name. + + + + Gets the with the specified property name. + The exact property name will be searched for first and if no matching property is found then + the will be used to match a property. + + Name of the property. + One of the enumeration values that specifies how the strings will be compared. + The with the specified property name. + + + + Tries to get the with the specified property name. + The exact property name will be searched for first and if no matching property is found then + the will be used to match a property. + + Name of the property. + The value. + One of the enumeration values that specifies how the strings will be compared. + true if a value was successfully retrieved; otherwise, false. + + + + Adds the specified property name. + + Name of the property. + The value. + + + + Determines whether the JSON object has the specified property name. + + Name of the property. + true if the JSON object has the specified property name; otherwise, false. + + + + Removes the property with the specified name. + + Name of the property. + true if item was successfully removed; otherwise, false. + + + + Tries to get the with the specified property name. + + Name of the property. + The value. + true if a value was successfully retrieved; otherwise, false. + + + + Returns an enumerator that can be used to iterate through the collection. + + + A that can be used to iterate through the collection. + + + + + Raises the event with the provided arguments. + + Name of the property. + + + + Raises the event with the provided arguments. + + Name of the property. + + + + Returns the responsible for binding operations performed on this object. + + The expression tree representation of the runtime value. + + The to bind this object. + + + + + Represents a JSON property. + + + + + Writes this token to a asynchronously. + + A into which this method will write. + The token to monitor for cancellation requests. + A collection of which will be used when writing the token. + A that represents the asynchronous write operation. + + + + Asynchronously loads a from a . + + A that will be read for the content of the . + The token to monitor for cancellation requests. The default value is . + A representing the asynchronous creation. The + property returns a that contains the JSON that was read from the specified . + + + + Asynchronously loads a from a . + + A that will be read for the content of the . + The used to load the JSON. + If this is null, default load settings will be used. + The token to monitor for cancellation requests. The default value is . + A representing the asynchronous creation. The + property returns a that contains the JSON that was read from the specified . + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets the property name. + + The property name. + + + + Gets or sets the property value. + + The property value. + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Gets the node type for this . + + The type. + + + + Initializes a new instance of the class. + + The property name. + The property content. + + + + Initializes a new instance of the class. + + The property name. + The property content. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Loads a from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Loads a from a . + + A that will be read for the content of the . + The used to load the JSON. + If this is null, default load settings will be used. + A that contains the JSON that was read from the specified . + + + + Represents a view of a . + + + + + Initializes a new instance of the class. + + The name. + + + + When overridden in a derived class, returns whether resetting an object changes its value. + + + true if resetting the component changes its value; otherwise, false. + + The component to test for reset capability. + + + + When overridden in a derived class, gets the current value of the property on a component. + + + The value of a property for a given component. + + The component with the property for which to retrieve the value. + + + + When overridden in a derived class, resets the value for this property of the component to the default value. + + The component with the property value that is to be reset to the default value. + + + + When overridden in a derived class, sets the value of the component to a different value. + + The component with the property value that is to be set. + The new value. + + + + When overridden in a derived class, determines a value indicating whether the value of this property needs to be persisted. + + + true if the property should be persisted; otherwise, false. + + The component with the property to be examined for persistence. + + + + When overridden in a derived class, gets the type of the component this property is bound to. + + + A that represents the type of component this property is bound to. + When the or + + methods are invoked, the object specified might be an instance of this type. + + + + + When overridden in a derived class, gets a value indicating whether this property is read-only. + + + true if the property is read-only; otherwise, false. + + + + + When overridden in a derived class, gets the type of the property. + + + A that represents the type of the property. + + + + + Gets the hash code for the name of the member. + + + + The hash code for the name of the member. + + + + + Represents a raw JSON string. + + + + + Asynchronously creates an instance of with the content of the reader's current token. + + The reader. + The token to monitor for cancellation requests. The default value is . + A representing the asynchronous creation. The + property returns an instance of with the content of the reader's current token. + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class. + + The raw json. + + + + Creates an instance of with the content of the reader's current token. + + The reader. + An instance of with the content of the reader's current token. + + + + Specifies the settings used when cloning JSON. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a flag that indicates whether to copy annotations when cloning a . + The default value is true. + + + A flag that indicates whether to copy annotations when cloning a . + + + + + Specifies the settings used when loading JSON. + + + + + Initializes a new instance of the class. + + + + + Gets or sets how JSON comments are handled when loading JSON. + The default value is . + + The JSON comment handling. + + + + Gets or sets how JSON line info is handled when loading JSON. + The default value is . + + The JSON line info handling. + + + + Gets or sets how duplicate property names in JSON objects are handled when loading JSON. + The default value is . + + The JSON duplicate property name handling. + + + + Specifies the settings used when merging JSON. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the method used when merging JSON arrays. + + The method used when merging JSON arrays. + + + + Gets or sets how null value properties are merged. + + How null value properties are merged. + + + + Gets or sets the comparison used to match property names while merging. + The exact property name will be searched for first and if no matching property is found then + the will be used to match a property. + + The comparison used to match property names while merging. + + + + Specifies the settings used when selecting JSON. + + + + + Gets or sets a timeout that will be used when executing regular expressions. + + The timeout that will be used when executing regular expressions. + + + + Gets or sets a flag that indicates whether an error should be thrown if + no tokens are found when evaluating part of the expression. + + + A flag that indicates whether an error should be thrown if + no tokens are found when evaluating part of the expression. + + + + + Represents an abstract JSON token. + + + + + Writes this token to a asynchronously. + + A into which this method will write. + The token to monitor for cancellation requests. + A collection of which will be used when writing the token. + A that represents the asynchronous write operation. + + + + Writes this token to a asynchronously. + + A into which this method will write. + A collection of which will be used when writing the token. + A that represents the asynchronous write operation. + + + + Asynchronously creates a from a . + + An positioned at the token to read into this . + The token to monitor for cancellation requests. The default value is . + + A that represents the asynchronous creation. The + property returns a that contains + the token and its descendant tokens + that were read from the reader. The runtime type of the token is determined + by the token type of the first token encountered in the reader. + + + + + Asynchronously creates a from a . + + An positioned at the token to read into this . + The used to load the JSON. + If this is null, default load settings will be used. + The token to monitor for cancellation requests. The default value is . + + A that represents the asynchronous creation. The + property returns a that contains + the token and its descendant tokens + that were read from the reader. The runtime type of the token is determined + by the token type of the first token encountered in the reader. + + + + + Asynchronously creates a from a . + + A positioned at the token to read into this . + The token to monitor for cancellation requests. The default value is . + + A that represents the asynchronous creation. The + property returns a that contains the token and its descendant tokens + that were read from the reader. The runtime type of the token is determined + by the token type of the first token encountered in the reader. + + + + + Asynchronously creates a from a . + + A positioned at the token to read into this . + The used to load the JSON. + If this is null, default load settings will be used. + The token to monitor for cancellation requests. The default value is . + + A that represents the asynchronous creation. The + property returns a that contains the token and its descendant tokens + that were read from the reader. The runtime type of the token is determined + by the token type of the first token encountered in the reader. + + + + + Gets a comparer that can compare two tokens for value equality. + + A that can compare two nodes for value equality. + + + + Gets or sets the parent. + + The parent. + + + + Gets the root of this . + + The root of this . + + + + Gets the node type for this . + + The type. + + + + Gets a value indicating whether this token has child tokens. + + + true if this token has child values; otherwise, false. + + + + + Compares the values of two tokens, including the values of all descendant tokens. + + The first to compare. + The second to compare. + true if the tokens are equal; otherwise false. + + + + Gets the next sibling token of this node. + + The that contains the next sibling token. + + + + Gets the previous sibling token of this node. + + The that contains the previous sibling token. + + + + Gets the path of the JSON token. + + + + + Adds the specified content immediately after this token. + + A content object that contains simple content or a collection of content objects to be added after this token. + + + + Adds the specified content immediately before this token. + + A content object that contains simple content or a collection of content objects to be added before this token. + + + + Returns a collection of the ancestor tokens of this token. + + A collection of the ancestor tokens of this token. + + + + Returns a collection of tokens that contain this token, and the ancestors of this token. + + A collection of tokens that contain this token, and the ancestors of this token. + + + + Returns a collection of the sibling tokens after this token, in document order. + + A collection of the sibling tokens after this tokens, in document order. + + + + Returns a collection of the sibling tokens before this token, in document order. + + A collection of the sibling tokens before this token, in document order. + + + + Gets the with the specified key. + + The with the specified key. + + + + Gets the with the specified key converted to the specified type. + + The type to convert the token to. + The token key. + The converted token value. + + + + Get the first child token of this token. + + A containing the first child token of the . + + + + Get the last child token of this token. + + A containing the last child token of the . + + + + Returns a collection of the child tokens of this token, in document order. + + An of containing the child tokens of this , in document order. + + + + Returns a collection of the child tokens of this token, in document order, filtered by the specified type. + + The type to filter the child tokens on. + A containing the child tokens of this , in document order. + + + + Returns a collection of the child values of this token, in document order. + + The type to convert the values to. + A containing the child values of this , in document order. + + + + Removes this token from its parent. + + + + + Replaces this token with the specified token. + + The value. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Returns the indented JSON for this token. + + + ToString() returns a non-JSON string value for tokens with a type of . + If you want the JSON for all token types then you should use . + + + The indented JSON for this token. + + + + + Returns the JSON for this token using the given formatting and converters. + + Indicates how the output should be formatted. + A collection of s which will be used when writing the token. + The JSON for this token using the given formatting and converters. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to of . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to of . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to of . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to of . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to of . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to of . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to of . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to of . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to of . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to of . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to of . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to of . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to of . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to of . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to of . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to of . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to of . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to []. + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to of . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to of . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from of to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from of to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from of to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from of to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from of to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from of to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from of to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from of to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from of to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from of to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from of to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from of to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from of to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from of to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from of to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from [] to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from of to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from of to . + + The value to create a from. + The initialized with the specified value. + + + + Creates a for this token. + + A that can be used to read this token and its descendants. + + + + Creates a from an object. + + The object that will be used to create . + A with the value of the specified object. + + + + Creates a from an object using the specified . + + The object that will be used to create . + The that will be used when reading the object. + A with the value of the specified object. + + + + Creates an instance of the specified .NET type from the . + + The object type that the token will be deserialized to. + The new object created from the JSON value. + + + + Creates an instance of the specified .NET type from the . + + The object type that the token will be deserialized to. + The new object created from the JSON value. + + + + Creates an instance of the specified .NET type from the using the specified . + + The object type that the token will be deserialized to. + The that will be used when creating the object. + The new object created from the JSON value. + + + + Creates an instance of the specified .NET type from the using the specified . + + The object type that the token will be deserialized to. + The that will be used when creating the object. + The new object created from the JSON value. + + + + Creates a from a . + + A positioned at the token to read into this . + + A that contains the token and its descendant tokens + that were read from the reader. The runtime type of the token is determined + by the token type of the first token encountered in the reader. + + + + + Creates a from a . + + An positioned at the token to read into this . + The used to load the JSON. + If this is null, default load settings will be used. + + A that contains the token and its descendant tokens + that were read from the reader. The runtime type of the token is determined + by the token type of the first token encountered in the reader. + + + + + Load a from a string that contains JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + Load a from a string that contains JSON. + + A that contains JSON. + The used to load the JSON. + If this is null, default load settings will be used. + A populated from the string that contains JSON. + + + + Creates a from a . + + A positioned at the token to read into this . + The used to load the JSON. + If this is null, default load settings will be used. + + A that contains the token and its descendant tokens + that were read from the reader. The runtime type of the token is determined + by the token type of the first token encountered in the reader. + + + + + Creates a from a . + + A positioned at the token to read into this . + + A that contains the token and its descendant tokens + that were read from the reader. The runtime type of the token is determined + by the token type of the first token encountered in the reader. + + + + + Selects a using a JSONPath expression. Selects the token that matches the object path. + + + A that contains a JSONPath expression. + + A , or null. + + + + Selects a using a JSONPath expression. Selects the token that matches the object path. + + + A that contains a JSONPath expression. + + A flag to indicate whether an error should be thrown if no tokens are found when evaluating part of the expression. + A . + + + + Selects a using a JSONPath expression. Selects the token that matches the object path. + + + A that contains a JSONPath expression. + + The used to select tokens. + A . + + + + Selects a collection of elements using a JSONPath expression. + + + A that contains a JSONPath expression. + + An of that contains the selected elements. + + + + Selects a collection of elements using a JSONPath expression. + + + A that contains a JSONPath expression. + + A flag to indicate whether an error should be thrown if no tokens are found when evaluating part of the expression. + An of that contains the selected elements. + + + + Selects a collection of elements using a JSONPath expression. + + + A that contains a JSONPath expression. + + The used to select tokens. + An of that contains the selected elements. + + + + Returns the responsible for binding operations performed on this object. + + The expression tree representation of the runtime value. + + The to bind this object. + + + + + Returns the responsible for binding operations performed on this object. + + The expression tree representation of the runtime value. + + The to bind this object. + + + + + Creates a new instance of the . All child tokens are recursively cloned. + + A new instance of the . + + + + Creates a new instance of the . All child tokens are recursively cloned. + + A object to configure cloning settings. + A new instance of the . + + + + Adds an object to the annotation list of this . + + The annotation to add. + + + + Get the first annotation object of the specified type from this . + + The type of the annotation to retrieve. + The first annotation object that matches the specified type, or null if no annotation is of the specified type. + + + + Gets the first annotation object of the specified type from this . + + The of the annotation to retrieve. + The first annotation object that matches the specified type, or null if no annotation is of the specified type. + + + + Gets a collection of annotations of the specified type for this . + + The type of the annotations to retrieve. + An that contains the annotations for this . + + + + Gets a collection of annotations of the specified type for this . + + The of the annotations to retrieve. + An of that contains the annotations that match the specified type for this . + + + + Removes the annotations of the specified type from this . + + The type of annotations to remove. + + + + Removes the annotations of the specified type from this . + + The of annotations to remove. + + + + Compares tokens to determine whether they are equal. + + + + + Determines whether the specified objects are equal. + + The first object of type to compare. + The second object of type to compare. + + true if the specified objects are equal; otherwise, false. + + + + + Returns a hash code for the specified object. + + The for which a hash code is to be returned. + A hash code for the specified object. + The type of is a reference type and is null. + + + + Represents a reader that provides fast, non-cached, forward-only access to serialized JSON data. + + + + + Gets the at the reader's current position. + + + + + Initializes a new instance of the class. + + The token to read from. + + + + Initializes a new instance of the class. + + The token to read from. + The initial path of the token. It is prepended to the returned . + + + + Reads the next JSON token from the underlying . + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Gets the path of the current JSON token. + + + + + Specifies the type of token. + + + + + No token type has been set. + + + + + A JSON object. + + + + + A JSON array. + + + + + A JSON constructor. + + + + + A JSON object property. + + + + + A comment. + + + + + An integer value. + + + + + A float value. + + + + + A string value. + + + + + A boolean value. + + + + + A null value. + + + + + An undefined value. + + + + + A date value. + + + + + A raw JSON value. + + + + + A collection of bytes value. + + + + + A Guid value. + + + + + A Uri value. + + + + + A TimeSpan value. + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating JSON data. + + + + + Gets the at the writer's current position. + + + + + Gets the token being written. + + The token being written. + + + + Initializes a new instance of the class writing to the given . + + The container being written to. + + + + Initializes a new instance of the class. + + + + + Flushes whatever is in the buffer to the underlying . + + + + + Closes this writer. + If is set to true, the JSON is auto-completed. + + + Setting to true has no additional effect, since the underlying is a type that cannot be closed. + + + + + Writes the beginning of a JSON object. + + + + + Writes the beginning of a JSON array. + + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes the end. + + The token. + + + + Writes the property name of a name/value pair on a JSON object. + + The name of the property. + + + + Writes a value. + An error will be raised if the value cannot be written as a single JSON token. + + The value to write. + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes raw JSON. + + The raw JSON to write. + + + + Writes a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a [] value. + + The [] value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Represents a value in JSON (string, integer, date, etc). + + + + + Writes this token to a asynchronously. + + A into which this method will write. + The token to monitor for cancellation requests. + A collection of which will be used when writing the token. + A that represents the asynchronous write operation. + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Gets a value indicating whether this token has child tokens. + + + true if this token has child values; otherwise, false. + + + + + Creates a comment with the given value. + + The value. + A comment with the given value. + + + + Creates a string with the given value. + + The value. + A string with the given value. + + + + Creates a null value. + + A null value. + + + + Creates a undefined value. + + A undefined value. + + + + Gets the node type for this . + + The type. + + + + Gets or sets the underlying token value. + + The underlying token value. + + + + Writes this token to a . + + A into which this method will write. + A collection of s which will be used when writing the token. + + + + Indicates whether the current object is equal to another object of the same type. + + + true if the current object is equal to the parameter; otherwise, false. + + An object to compare with this object. + + + + Determines whether the specified is equal to the current . + + The to compare with the current . + + true if the specified is equal to the current ; otherwise, false. + + + + + Serves as a hash function for a particular type. + + + A hash code for the current . + + + + + Returns a that represents this instance. + + + ToString() returns a non-JSON string value for tokens with a type of . + If you want the JSON for all token types then you should use . + + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format provider. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + The format provider. + + A that represents this instance. + + + + + Returns the responsible for binding operations performed on this object. + + The expression tree representation of the runtime value. + + The to bind this object. + + + + + Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object. + + An object to compare with this instance. + + A 32-bit signed integer that indicates the relative order of the objects being compared. The return value has these meanings: + Value + Meaning + Less than zero + This instance is less than . + Zero + This instance is equal to . + Greater than zero + This instance is greater than . + + + is not of the same type as this instance. + + + + + Specifies how line information is handled when loading JSON. + + + + + Ignore line information. + + + + + Load line information. + + + + + Specifies how JSON arrays are merged together. + + + + Concatenate arrays. + + + Union arrays, skipping items that already exist. + + + Replace all array items. + + + Merge array items together, matched by index. + + + + Specifies how null value properties are merged. + + + + + The content's null value properties will be ignored during merging. + + + + + The content's null value properties will be merged. + + + + + Specifies the member serialization options for the . + + + + + All public members are serialized by default. Members can be excluded using or . + This is the default member serialization mode. + + + + + Only members marked with or are serialized. + This member serialization mode can also be set by marking the class with . + + + + + All public and private fields are serialized. Members can be excluded using or . + This member serialization mode can also be set by marking the class with + and setting IgnoreSerializableAttribute on to false. + + + + + Specifies metadata property handling options for the . + + + + + Read metadata properties located at the start of a JSON object. + + + + + Read metadata properties located anywhere in a JSON object. Note that this setting will impact performance. + + + + + Do not try to read metadata properties. + + + + + Specifies missing member handling options for the . + + + + + Ignore a missing member and do not attempt to deserialize it. + + + + + Throw a when a missing member is encountered during deserialization. + + + + + Specifies null value handling options for the . + + + + + + + + + Include null values when serializing and deserializing objects. + + + + + Ignore null values when serializing and deserializing objects. + + + + + Specifies how object creation is handled by the . + + + + + Reuse existing objects, create new objects when needed. + + + + + Only reuse existing objects. + + + + + Always create new objects. + + + + + Specifies reference handling options for the . + Note that references cannot be preserved when a value is set via a non-default constructor such as types that implement . + + + + + + + + Do not preserve references when serializing types. + + + + + Preserve references when serializing into a JSON object structure. + + + + + Preserve references when serializing into a JSON array structure. + + + + + Preserve references when serializing. + + + + + Specifies reference loop handling options for the . + + + + + Throw a when a loop is encountered. + + + + + Ignore loop references and do not serialize. + + + + + Serialize loop references. + + + + + Indicating whether a property is required. + + + + + The property is not required. The default state. + + + + + The property must be defined in JSON but can be a null value. + + + + + The property must be defined in JSON and cannot be a null value. + + + + + The property is not required but it cannot be a null value. + + + + + + Contains the JSON schema extension methods. + + + JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. + + + + + + + Determines whether the is valid. + + + JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. + + + The source to test. + The schema to test with. + + true if the specified is valid; otherwise, false. + + + + + + Determines whether the is valid. + + + JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. + + + The source to test. + The schema to test with. + When this method returns, contains any error messages generated while validating. + + true if the specified is valid; otherwise, false. + + + + + + Validates the specified . + + + JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. + + + The source to test. + The schema to test with. + + + + + Validates the specified . + + + JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. + + + The source to test. + The schema to test with. + The validation event handler. + + + + + An in-memory representation of a JSON Schema. + + + JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. + + + + + + Gets or sets the id. + + + + + Gets or sets the title. + + + + + Gets or sets whether the object is required. + + + + + Gets or sets whether the object is read-only. + + + + + Gets or sets whether the object is visible to users. + + + + + Gets or sets whether the object is transient. + + + + + Gets or sets the description of the object. + + + + + Gets or sets the types of values allowed by the object. + + The type. + + + + Gets or sets the pattern. + + The pattern. + + + + Gets or sets the minimum length. + + The minimum length. + + + + Gets or sets the maximum length. + + The maximum length. + + + + Gets or sets a number that the value should be divisible by. + + A number that the value should be divisible by. + + + + Gets or sets the minimum. + + The minimum. + + + + Gets or sets the maximum. + + The maximum. + + + + Gets or sets a flag indicating whether the value can not equal the number defined by the minimum attribute (). + + A flag indicating whether the value can not equal the number defined by the minimum attribute (). + + + + Gets or sets a flag indicating whether the value can not equal the number defined by the maximum attribute (). + + A flag indicating whether the value can not equal the number defined by the maximum attribute (). + + + + Gets or sets the minimum number of items. + + The minimum number of items. + + + + Gets or sets the maximum number of items. + + The maximum number of items. + + + + Gets or sets the of items. + + The of items. + + + + Gets or sets a value indicating whether items in an array are validated using the instance at their array position from . + + + true if items are validated using their array position; otherwise, false. + + + + + Gets or sets the of additional items. + + The of additional items. + + + + Gets or sets a value indicating whether additional items are allowed. + + + true if additional items are allowed; otherwise, false. + + + + + Gets or sets whether the array items must be unique. + + + + + Gets or sets the of properties. + + The of properties. + + + + Gets or sets the of additional properties. + + The of additional properties. + + + + Gets or sets the pattern properties. + + The pattern properties. + + + + Gets or sets a value indicating whether additional properties are allowed. + + + true if additional properties are allowed; otherwise, false. + + + + + Gets or sets the required property if this property is present. + + The required property if this property is present. + + + + Gets or sets the a collection of valid enum values allowed. + + A collection of valid enum values allowed. + + + + Gets or sets disallowed types. + + The disallowed types. + + + + Gets or sets the default value. + + The default value. + + + + Gets or sets the collection of that this schema extends. + + The collection of that this schema extends. + + + + Gets or sets the format. + + The format. + + + + Initializes a new instance of the class. + + + + + Reads a from the specified . + + The containing the JSON Schema to read. + The object representing the JSON Schema. + + + + Reads a from the specified . + + The containing the JSON Schema to read. + The to use when resolving schema references. + The object representing the JSON Schema. + + + + Load a from a string that contains JSON Schema. + + A that contains JSON Schema. + A populated from the string that contains JSON Schema. + + + + Load a from a string that contains JSON Schema using the specified . + + A that contains JSON Schema. + The resolver. + A populated from the string that contains JSON Schema. + + + + Writes this schema to a . + + A into which this method will write. + + + + Writes this schema to a using the specified . + + A into which this method will write. + The resolver used. + + + + Returns a that represents the current . + + + A that represents the current . + + + + + + Returns detailed information about the schema exception. + + + JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. + + + + + + Gets the line number indicating where the error occurred. + + The line number indicating where the error occurred. + + + + Gets the line position indicating where the error occurred. + + The line position indicating where the error occurred. + + + + Gets the path to the JSON where the error occurred. + + The path to the JSON where the error occurred. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or null if no inner exception is specified. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is null. + The class name is null or is zero (0). + + + + + Generates a from a specified . + + + JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. + + + + + + Gets or sets how undefined schemas are handled by the serializer. + + + + + Gets or sets the contract resolver. + + The contract resolver. + + + + Generate a from the specified type. + + The type to generate a from. + A generated from the specified type. + + + + Generate a from the specified type. + + The type to generate a from. + The used to resolve schema references. + A generated from the specified type. + + + + Generate a from the specified type. + + The type to generate a from. + Specify whether the generated root will be nullable. + A generated from the specified type. + + + + Generate a from the specified type. + + The type to generate a from. + The used to resolve schema references. + Specify whether the generated root will be nullable. + A generated from the specified type. + + + + + Resolves from an id. + + + JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. + + + + + + Gets or sets the loaded schemas. + + The loaded schemas. + + + + Initializes a new instance of the class. + + + + + Gets a for the specified reference. + + The id. + A for the specified reference. + + + + + The value types allowed by the . + + + JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. + + + + + + No type specified. + + + + + String type. + + + + + Float type. + + + + + Integer type. + + + + + Boolean type. + + + + + Object type. + + + + + Array type. + + + + + Null type. + + + + + Any type. + + + + + + Specifies undefined schema Id handling options for the . + + + JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. + + + + + + Do not infer a schema Id. + + + + + Use the .NET type name as the schema Id. + + + + + Use the assembly qualified .NET type name as the schema Id. + + + + + + Returns detailed information related to the . + + + JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. + + + + + + Gets the associated with the validation error. + + The JsonSchemaException associated with the validation error. + + + + Gets the path of the JSON location where the validation error occurred. + + The path of the JSON location where the validation error occurred. + + + + Gets the text description corresponding to the validation error. + + The text description. + + + + + Represents the callback method that will handle JSON schema validation events and the . + + + JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. + + + + + + A camel case naming strategy. + + + + + Initializes a new instance of the class. + + + A flag indicating whether dictionary keys should be processed. + + + A flag indicating whether explicitly specified property names should be processed, + e.g. a property name customized with a . + + + + + Initializes a new instance of the class. + + + A flag indicating whether dictionary keys should be processed. + + + A flag indicating whether explicitly specified property names should be processed, + e.g. a property name customized with a . + + + A flag indicating whether extension data names should be processed. + + + + + Initializes a new instance of the class. + + + + + Resolves the specified property name. + + The property name to resolve. + The resolved property name. + + + + Resolves member mappings for a type, camel casing property names. + + + + + Initializes a new instance of the class. + + + + + Resolves the contract for a given type. + + The type to resolve a contract for. + The contract for a given type. + + + + Used by to resolve a for a given . + + + + + Gets a value indicating whether members are being get and set using dynamic code generation. + This value is determined by the runtime permissions available. + + + true if using dynamic code generation; otherwise, false. + + + + + Gets or sets the default members search flags. + + The default members search flags. + + + + Gets or sets a value indicating whether compiler generated members should be serialized. + + + true if serialized compiler generated members; otherwise, false. + + + + + Gets or sets a value indicating whether to ignore the interface when serializing and deserializing types. + + + true if the interface will be ignored when serializing and deserializing types; otherwise, false. + + + + + Gets or sets a value indicating whether to ignore the attribute when serializing and deserializing types. + + + true if the attribute will be ignored when serializing and deserializing types; otherwise, false. + + + + + Gets or sets a value indicating whether to ignore IsSpecified members when serializing and deserializing types. + + + true if the IsSpecified members will be ignored when serializing and deserializing types; otherwise, false. + + + + + Gets or sets a value indicating whether to ignore ShouldSerialize members when serializing and deserializing types. + + + true if the ShouldSerialize members will be ignored when serializing and deserializing types; otherwise, false. + + + + + Gets or sets the naming strategy used to resolve how property names and dictionary keys are serialized. + + The naming strategy used to resolve how property names and dictionary keys are serialized. + + + + Initializes a new instance of the class. + + + + + Resolves the contract for a given type. + + The type to resolve a contract for. + The contract for a given type. + + + + Gets the serializable members for the type. + + The type to get serializable members for. + The serializable members for the type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates the constructor parameters. + + The constructor to create properties for. + The type's member properties. + Properties for the given . + + + + Creates a for the given . + + The matching member property. + The constructor parameter. + A created for the given . + + + + Resolves the default for the contract. + + Type of the object. + The contract's default . + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Determines which contract type is created for the given type. + + Type of the object. + A for the given type. + + + + Creates properties for the given . + + The type to create properties for. + /// The member serialization mode for the type. + Properties for the given . + + + + Creates the used by the serializer to get and set values from a member. + + The member. + The used by the serializer to get and set values from a member. + + + + Creates a for the given . + + The member's parent . + The member to create a for. + A created for the given . + + + + Resolves the name of the property. + + Name of the property. + Resolved name of the property. + + + + Resolves the name of the extension data. By default no changes are made to extension data names. + + Name of the extension data. + Resolved name of the extension data. + + + + Resolves the key of the dictionary. By default is used to resolve dictionary keys. + + Key of the dictionary. + Resolved key of the dictionary. + + + + Gets the resolved name of the property. + + Name of the property. + Name of the property. + + + + The default naming strategy. Property names and dictionary keys are unchanged. + + + + + Resolves the specified property name. + + The property name to resolve. + The resolved property name. + + + + The default serialization binder used when resolving and loading classes from type names. + + + + + Initializes a new instance of the class. + + + + + When overridden in a derived class, controls the binding of a serialized object to a type. + + Specifies the name of the serialized object. + Specifies the name of the serialized object. + + The type of the object the formatter creates a new instance of. + + + + + When overridden in a derived class, controls the binding of a serialized object to a type. + + The type of the object the formatter creates a new instance of. + Specifies the name of the serialized object. + Specifies the name of the serialized object. + + + + Represents a trace writer that writes to the application's instances. + + + + + Gets the that will be used to filter the trace messages passed to the writer. + For example a filter level of will exclude messages and include , + and messages. + + + The that will be used to filter the trace messages passed to the writer. + + + + + Writes the specified trace level, message and optional exception. + + The at which to write this trace. + The trace message. + The trace exception. This parameter is optional. + + + + Get and set values for a using dynamic methods. + + + + + Initializes a new instance of the class. + + The member info. + + + + Sets the value. + + The target to set the value on. + The value to set on the target. + + + + Gets the value. + + The target to get the value from. + The value. + + + + Provides information surrounding an error. + + + + + Gets the error. + + The error. + + + + Gets the original object that caused the error. + + The original object that caused the error. + + + + Gets the member that caused the error. + + The member that caused the error. + + + + Gets the path of the JSON location where the error occurred. + + The path of the JSON location where the error occurred. + + + + Gets or sets a value indicating whether this is handled. + + true if handled; otherwise, false. + + + + Provides data for the Error event. + + + + + Gets the current object the error event is being raised against. + + The current object the error event is being raised against. + + + + Gets the error context. + + The error context. + + + + Initializes a new instance of the class. + + The current object. + The error context. + + + + Get and set values for a using dynamic methods. + + + + + Initializes a new instance of the class. + + The member info. + + + + Sets the value. + + The target to set the value on. + The value to set on the target. + + + + Gets the value. + + The target to get the value from. + The value. + + + + Provides methods to get attributes. + + + + + Returns a collection of all of the attributes, or an empty collection if there are no attributes. + + When true, look up the hierarchy chain for the inherited custom attribute. + A collection of s, or an empty collection. + + + + Returns a collection of attributes, identified by type, or an empty collection if there are no attributes. + + The type of the attributes. + When true, look up the hierarchy chain for the inherited custom attribute. + A collection of s, or an empty collection. + + + + Used by to resolve a for a given . + + + + + + + + + Resolves the contract for a given type. + + The type to resolve a contract for. + The contract for a given type. + + + + Used to resolve references when serializing and deserializing JSON by the . + + + + + Resolves a reference to its object. + + The serialization context. + The reference to resolve. + The object that was resolved from the reference. + + + + Gets the reference for the specified object. + + The serialization context. + The object to get a reference for. + The reference to the object. + + + + Determines whether the specified object is referenced. + + The serialization context. + The object to test for a reference. + + true if the specified object is referenced; otherwise, false. + + + + + Adds a reference to the specified object. + + The serialization context. + The reference. + The object to reference. + + + + Allows users to control class loading and mandate what class to load. + + + + + When implemented, controls the binding of a serialized object to a type. + + Specifies the name of the serialized object. + Specifies the name of the serialized object + The type of the object the formatter creates a new instance of. + + + + When implemented, controls the binding of a serialized object to a type. + + The type of the object the formatter creates a new instance of. + Specifies the name of the serialized object. + Specifies the name of the serialized object. + + + + Represents a trace writer. + + + + + Gets the that will be used to filter the trace messages passed to the writer. + For example a filter level of will exclude messages and include , + and messages. + + The that will be used to filter the trace messages passed to the writer. + + + + Writes the specified trace level, message and optional exception. + + The at which to write this trace. + The trace message. + The trace exception. This parameter is optional. + + + + Provides methods to get and set values. + + + + + Sets the value. + + The target to set the value on. + The value to set on the target. + + + + Gets the value. + + The target to get the value from. + The value. + + + + Contract details for a used by the . + + + + + Gets the of the collection items. + + The of the collection items. + + + + Gets a value indicating whether the collection type is a multidimensional array. + + true if the collection type is a multidimensional array; otherwise, false. + + + + Gets or sets the function used to create the object. When set this function will override . + + The function used to create the object. + + + + Gets a value indicating whether the creator has a parameter with the collection values. + + true if the creator has a parameter with the collection values; otherwise, false. + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Contract details for a used by the . + + + + + Gets or sets the default collection items . + + The converter. + + + + Gets or sets a value indicating whether the collection items preserve object references. + + true if collection items preserve object references; otherwise, false. + + + + Gets or sets the collection item reference loop handling. + + The reference loop handling. + + + + Gets or sets the collection item type name handling. + + The type name handling. + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Handles serialization callback events. + + The object that raised the callback event. + The streaming context. + + + + Handles serialization error callback events. + + The object that raised the callback event. + The streaming context. + The error context. + + + + Sets extension data for an object during deserialization. + + The object to set extension data on. + The extension data key. + The extension data value. + + + + Gets extension data for an object during serialization. + + The object to set extension data on. + + + + Contract details for a used by the . + + + + + Gets the underlying type for the contract. + + The underlying type for the contract. + + + + Gets or sets the type created during deserialization. + + The type created during deserialization. + + + + Gets or sets whether this type contract is serialized as a reference. + + Whether this type contract is serialized as a reference. + + + + Gets or sets the default for this contract. + + The converter. + + + + Gets the internally resolved for the contract's type. + This converter is used as a fallback converter when no other converter is resolved. + Setting will always override this converter. + + + + + Gets or sets all methods called immediately after deserialization of the object. + + The methods called immediately after deserialization of the object. + + + + Gets or sets all methods called during deserialization of the object. + + The methods called during deserialization of the object. + + + + Gets or sets all methods called after serialization of the object graph. + + The methods called after serialization of the object graph. + + + + Gets or sets all methods called before serialization of the object. + + The methods called before serialization of the object. + + + + Gets or sets all method called when an error is thrown during the serialization of the object. + + The methods called when an error is thrown during the serialization of the object. + + + + Gets or sets the default creator method used to create the object. + + The default creator method used to create the object. + + + + Gets or sets a value indicating whether the default creator is non-public. + + true if the default object creator is non-public; otherwise, false. + + + + Contract details for a used by the . + + + + + Gets or sets the dictionary key resolver. + + The dictionary key resolver. + + + + Gets the of the dictionary keys. + + The of the dictionary keys. + + + + Gets the of the dictionary values. + + The of the dictionary values. + + + + Gets or sets the function used to create the object. When set this function will override . + + The function used to create the object. + + + + Gets a value indicating whether the creator has a parameter with the dictionary values. + + true if the creator has a parameter with the dictionary values; otherwise, false. + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Contract details for a used by the . + + + + + Gets the object's properties. + + The object's properties. + + + + Gets or sets the property name resolver. + + The property name resolver. + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Contract details for a used by the . + + + + + Gets or sets the object constructor. + + The object constructor. + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Contract details for a used by the . + + + + + Gets or sets the object member serialization. + + The member object serialization. + + + + Gets or sets the missing member handling used when deserializing this object. + + The missing member handling. + + + + Gets or sets a value that indicates whether the object's properties are required. + + + A value indicating whether the object's properties are required. + + + + + Gets or sets how the object's properties with null values are handled during serialization and deserialization. + + How the object's properties with null values are handled during serialization and deserialization. + + + + Gets the object's properties. + + The object's properties. + + + + Gets a collection of instances that define the parameters used with . + + + + + Gets or sets the function used to create the object. When set this function will override . + This function is called with a collection of arguments which are defined by the collection. + + The function used to create the object. + + + + Gets or sets the extension data setter. + + + + + Gets or sets the extension data getter. + + + + + Gets or sets the extension data value type. + + + + + Gets or sets the extension data name resolver. + + The extension data name resolver. + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Maps a JSON property to a .NET member or constructor parameter. + + + + + Gets or sets the name of the property. + + The name of the property. + + + + Gets or sets the type that declared this property. + + The type that declared this property. + + + + Gets or sets the order of serialization of a member. + + The numeric order of serialization. + + + + Gets or sets the name of the underlying member or parameter. + + The name of the underlying member or parameter. + + + + Gets the that will get and set the during serialization. + + The that will get and set the during serialization. + + + + Gets or sets the for this property. + + The for this property. + + + + Gets or sets the type of the property. + + The type of the property. + + + + Gets or sets the for the property. + If set this converter takes precedence over the contract converter for the property type. + + The converter. + + + + Gets or sets the member converter. + + The member converter. + + + + Gets or sets a value indicating whether this is ignored. + + true if ignored; otherwise, false. + + + + Gets or sets a value indicating whether this is readable. + + true if readable; otherwise, false. + + + + Gets or sets a value indicating whether this is writable. + + true if writable; otherwise, false. + + + + Gets or sets a value indicating whether this has a member attribute. + + true if has a member attribute; otherwise, false. + + + + Gets the default value. + + The default value. + + + + Gets or sets a value indicating whether this is required. + + A value indicating whether this is required. + + + + Gets a value indicating whether has a value specified. + + + + + Gets or sets a value indicating whether this property preserves object references. + + + true if this instance is reference; otherwise, false. + + + + + Gets or sets the property null value handling. + + The null value handling. + + + + Gets or sets the property default value handling. + + The default value handling. + + + + Gets or sets the property reference loop handling. + + The reference loop handling. + + + + Gets or sets the property object creation handling. + + The object creation handling. + + + + Gets or sets or sets the type name handling. + + The type name handling. + + + + Gets or sets a predicate used to determine whether the property should be serialized. + + A predicate used to determine whether the property should be serialized. + + + + Gets or sets a predicate used to determine whether the property should be deserialized. + + A predicate used to determine whether the property should be deserialized. + + + + Gets or sets a predicate used to determine whether the property should be serialized. + + A predicate used to determine whether the property should be serialized. + + + + Gets or sets an action used to set whether the property has been deserialized. + + An action used to set whether the property has been deserialized. + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Gets or sets the converter used when serializing the property's collection items. + + The collection's items converter. + + + + Gets or sets whether this property's collection items are serialized as a reference. + + Whether this property's collection items are serialized as a reference. + + + + Gets or sets the type name handling used when serializing the property's collection items. + + The collection's items type name handling. + + + + Gets or sets the reference loop handling used when serializing the property's collection items. + + The collection's items reference loop handling. + + + + A collection of objects. + + + + + Initializes a new instance of the class. + + The type. + + + + When implemented in a derived class, extracts the key from the specified element. + + The element from which to extract the key. + The key for the specified element. + + + + Adds a object. + + The property to add to the collection. + + + + Gets the closest matching object. + First attempts to get an exact case match of and then + a case insensitive match. + + Name of the property. + A matching property if found. + + + + Gets a property by property name. + + The name of the property to get. + Type property name string comparison. + A matching property if found. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Lookup and create an instance of the type described by the argument. + + The type to create. + Optional arguments to pass to an initializing constructor of the JsonConverter. + If null, the default constructor is used. + + + + A kebab case naming strategy. + + + + + Initializes a new instance of the class. + + + A flag indicating whether dictionary keys should be processed. + + + A flag indicating whether explicitly specified property names should be processed, + e.g. a property name customized with a . + + + + + Initializes a new instance of the class. + + + A flag indicating whether dictionary keys should be processed. + + + A flag indicating whether explicitly specified property names should be processed, + e.g. a property name customized with a . + + + A flag indicating whether extension data names should be processed. + + + + + Initializes a new instance of the class. + + + + + Resolves the specified property name. + + The property name to resolve. + The resolved property name. + + + + Represents a trace writer that writes to memory. When the trace message limit is + reached then old trace messages will be removed as new messages are added. + + + + + Gets the that will be used to filter the trace messages passed to the writer. + For example a filter level of will exclude messages and include , + and messages. + + + The that will be used to filter the trace messages passed to the writer. + + + + + Initializes a new instance of the class. + + + + + Writes the specified trace level, message and optional exception. + + The at which to write this trace. + The trace message. + The trace exception. This parameter is optional. + + + + Returns an enumeration of the most recent trace messages. + + An enumeration of the most recent trace messages. + + + + Returns a of the most recent trace messages. + + + A of the most recent trace messages. + + + + + A base class for resolving how property names and dictionary keys are serialized. + + + + + A flag indicating whether dictionary keys should be processed. + Defaults to false. + + + + + A flag indicating whether extension data names should be processed. + Defaults to false. + + + + + A flag indicating whether explicitly specified property names, + e.g. a property name customized with a , should be processed. + Defaults to false. + + + + + Gets the serialized name for a given property name. + + The initial property name. + A flag indicating whether the property has had a name explicitly specified. + The serialized property name. + + + + Gets the serialized name for a given extension data name. + + The initial extension data name. + The serialized extension data name. + + + + Gets the serialized key for a given dictionary key. + + The initial dictionary key. + The serialized dictionary key. + + + + Resolves the specified property name. + + The property name to resolve. + The resolved property name. + + + + Hash code calculation + + + + + + Object equality implementation + + + + + + + Compare to another NamingStrategy + + + + + + + Represents a method that constructs an object. + + The object type to create. + + + + When applied to a method, specifies that the method is called when an error occurs serializing an object. + + + + + Provides methods to get attributes from a , , or . + + + + + Initializes a new instance of the class. + + The instance to get attributes for. This parameter should be a , , or . + + + + Returns a collection of all of the attributes, or an empty collection if there are no attributes. + + When true, look up the hierarchy chain for the inherited custom attribute. + A collection of s, or an empty collection. + + + + Returns a collection of attributes, identified by type, or an empty collection if there are no attributes. + + The type of the attributes. + When true, look up the hierarchy chain for the inherited custom attribute. + A collection of s, or an empty collection. + + + + Get and set values for a using reflection. + + + + + Initializes a new instance of the class. + + The member info. + + + + Sets the value. + + The target to set the value on. + The value to set on the target. + + + + Gets the value. + + The target to get the value from. + The value. + + + + A snake case naming strategy. + + + + + Initializes a new instance of the class. + + + A flag indicating whether dictionary keys should be processed. + + + A flag indicating whether explicitly specified property names should be processed, + e.g. a property name customized with a . + + + + + Initializes a new instance of the class. + + + A flag indicating whether dictionary keys should be processed. + + + A flag indicating whether explicitly specified property names should be processed, + e.g. a property name customized with a . + + + A flag indicating whether extension data names should be processed. + + + + + Initializes a new instance of the class. + + + + + Resolves the specified property name. + + The property name to resolve. + The resolved property name. + + + + Specifies how strings are escaped when writing JSON text. + + + + + Only control characters (e.g. newline) are escaped. + + + + + All non-ASCII and control characters (e.g. newline) are escaped. + + + + + HTML (<, >, &, ', ") and control characters (e.g. newline) are escaped. + + + + + Indicates the method that will be used during deserialization for locating and loading assemblies. + + + + + In simple mode, the assembly used during deserialization need not match exactly the assembly used during serialization. Specifically, the version numbers need not match as the LoadWithPartialName method of the class is used to load the assembly. + + + + + In full mode, the assembly used during deserialization must match exactly the assembly used during serialization. The Load method of the class is used to load the assembly. + + + + + Specifies type name handling options for the . + + + should be used with caution when your application deserializes JSON from an external source. + Incoming types should be validated with a custom + when deserializing with a value other than . + + + + + Do not include the .NET type name when serializing types. + + + + + Include the .NET type name when serializing into a JSON object structure. + + + + + Include the .NET type name when serializing into a JSON array structure. + + + + + Always include the .NET type name when serializing. + + + + + Include the .NET type name when the type of the object being serialized is not the same as its declared type. + Note that this doesn't include the root serialized object by default. To include the root object's type name in JSON + you must specify a root type object with + or . + + + + + Determines whether the collection is null or empty. + + The collection. + + true if the collection is null or empty; otherwise, false. + + + + + Adds the elements of the specified collection to the specified generic . + + The list to add to. + The collection of elements to add. + + + + Converts the value to the specified type. If the value is unable to be converted, the + value is checked whether it assignable to the specified type. + + The value to convert. + The culture to use when converting. + The type to convert or cast the value to. + + The converted type. If conversion was unsuccessful, the initial value + is returned if assignable to the target type. + + + + + Helper method for generating a MetaObject which calls a + specific method on Dynamic that returns a result + + + + + Helper method for generating a MetaObject which calls a + specific method on Dynamic, but uses one of the arguments for + the result. + + + + + Helper method for generating a MetaObject which calls a + specific method on Dynamic, but uses one of the arguments for + the result. + + + + + Returns a Restrictions object which includes our current restrictions merged + with a restriction limiting our type + + + + + Helper class for serializing immutable collections. + Note that this is used by all builds, even those that don't support immutable collections, in case the DLL is GACed + https://github.com/JamesNK/Newtonsoft.Json/issues/652 + + + + + Gets the type of the typed collection's items. + + The type. + The type of the typed collection's items. + + + + Gets the member's underlying type. + + The member. + The underlying type of the member. + + + + Determines whether the property is an indexed property. + + The property. + + true if the property is an indexed property; otherwise, false. + + + + + Gets the member's value on the object. + + The member. + The target object. + The member's value on the object. + + + + Sets the member's value on the target object. + + The member. + The target. + The value. + + + + Determines whether the specified MemberInfo can be read. + + The MemberInfo to determine whether can be read. + /// if set to true then allow the member to be gotten non-publicly. + + true if the specified MemberInfo can be read; otherwise, false. + + + + + Determines whether the specified MemberInfo can be set. + + The MemberInfo to determine whether can be set. + if set to true then allow the member to be set non-publicly. + if set to true then allow the member to be set if read-only. + + true if the specified MemberInfo can be set; otherwise, false. + + + + + Builds a string. Unlike this class lets you reuse its internal buffer. + + + + + Determines whether the string is all white space. Empty string will return false. + + The string to test whether it is all white space. + + true if the string is all white space; otherwise, false. + + + + + Specifies the state of the . + + + + + An exception has been thrown, which has left the in an invalid state. + You may call the method to put the in the Closed state. + Any other method calls result in an being thrown. + + + + + The method has been called. + + + + + An object is being written. + + + + + An array is being written. + + + + + A constructor is being written. + + + + + A property is being written. + + + + + A write method has not been called. + + + + Specifies that an output will not be null even if the corresponding type allows it. + + + Specifies that when a method returns , the parameter will not be null even if the corresponding type allows it. + + + Initializes the attribute with the specified return value condition. + + The return value condition. If the method returns this value, the associated parameter will not be null. + + + + Gets the return value condition. + + + Specifies that an output may be null even if the corresponding type disallows it. + + + Specifies that null is allowed as an input even if the corresponding type disallows it. + + + + Specifies that the method will not return if the associated Boolean parameter is passed the specified value. + + + + + Initializes a new instance of the class. + + + The condition parameter value. Code after the method will be considered unreachable by diagnostics if the argument to + the associated parameter matches this value. + + + + Gets the condition parameter value. + + + diff --git a/UtilLib/bin/Debug/UtilLib.dll b/UtilLib/bin/Debug/UtilLib.dll new file mode 100644 index 0000000..587590b Binary files /dev/null and b/UtilLib/bin/Debug/UtilLib.dll differ diff --git a/UtilLib/bin/Debug/UtilLib.dll.config b/UtilLib/bin/Debug/UtilLib.dll.config new file mode 100644 index 0000000..b50c74f --- /dev/null +++ b/UtilLib/bin/Debug/UtilLib.dll.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/UtilLib/bin/Debug/UtilLib.pdb b/UtilLib/bin/Debug/UtilLib.pdb new file mode 100644 index 0000000..31795ea Binary files /dev/null and b/UtilLib/bin/Debug/UtilLib.pdb differ diff --git a/UtilLib/obj/Debug/.NETFramework,Version=v4.6.2.AssemblyAttributes.cs b/UtilLib/obj/Debug/.NETFramework,Version=v4.6.2.AssemblyAttributes.cs new file mode 100644 index 0000000..edc4647 --- /dev/null +++ b/UtilLib/obj/Debug/.NETFramework,Version=v4.6.2.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.6.2", FrameworkDisplayName = ".NET Framework 4.6.2")] diff --git a/UtilLib/obj/Debug/DesignTimeResolveAssemblyReferences.cache b/UtilLib/obj/Debug/DesignTimeResolveAssemblyReferences.cache new file mode 100644 index 0000000..7e998a7 Binary files /dev/null and b/UtilLib/obj/Debug/DesignTimeResolveAssemblyReferences.cache differ diff --git a/UtilLib/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/UtilLib/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache new file mode 100644 index 0000000..7e556fd Binary files /dev/null and b/UtilLib/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache differ diff --git a/UtilLib/obj/Debug/UtilLib.csproj.AssemblyReference.cache b/UtilLib/obj/Debug/UtilLib.csproj.AssemblyReference.cache new file mode 100644 index 0000000..6a732cc Binary files /dev/null and b/UtilLib/obj/Debug/UtilLib.csproj.AssemblyReference.cache differ diff --git a/UtilLib/obj/Debug/UtilLib.csproj.CopyComplete b/UtilLib/obj/Debug/UtilLib.csproj.CopyComplete new file mode 100644 index 0000000..e69de29 diff --git a/UtilLib/obj/Debug/UtilLib.csproj.CoreCompileInputs.cache b/UtilLib/obj/Debug/UtilLib.csproj.CoreCompileInputs.cache new file mode 100644 index 0000000..7d5b06b --- /dev/null +++ b/UtilLib/obj/Debug/UtilLib.csproj.CoreCompileInputs.cache @@ -0,0 +1 @@ +fb8f34c352a3d8044db8982ce7a7eb73c62ae6db diff --git a/UtilLib/obj/Debug/UtilLib.csproj.FileListAbsolute.txt b/UtilLib/obj/Debug/UtilLib.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..cf72296 --- /dev/null +++ b/UtilLib/obj/Debug/UtilLib.csproj.FileListAbsolute.txt @@ -0,0 +1,10 @@ +C:\Users\home-dev\source\repos\TestWordAddIn1\UtilLib\obj\Debug\UtilLib.csproj.AssemblyReference.cache +C:\Users\home-dev\source\repos\TestWordAddIn1\UtilLib\obj\Debug\UtilLib.csproj.CoreCompileInputs.cache +C:\Users\home-dev\source\repos\TestWordAddIn1\UtilLib\bin\Debug\UtilLib.dll.config +C:\Users\home-dev\source\repos\TestWordAddIn1\UtilLib\bin\Debug\UtilLib.dll +C:\Users\home-dev\source\repos\TestWordAddIn1\UtilLib\bin\Debug\UtilLib.pdb +C:\Users\home-dev\source\repos\TestWordAddIn1\UtilLib\bin\Debug\Newtonsoft.Json.dll +C:\Users\home-dev\source\repos\TestWordAddIn1\UtilLib\bin\Debug\Newtonsoft.Json.xml +C:\Users\home-dev\source\repos\TestWordAddIn1\UtilLib\obj\Debug\UtilLib.csproj.CopyComplete +C:\Users\home-dev\source\repos\TestWordAddIn1\UtilLib\obj\Debug\UtilLib.dll +C:\Users\home-dev\source\repos\TestWordAddIn1\UtilLib\obj\Debug\UtilLib.pdb diff --git a/UtilLib/obj/Debug/UtilLib.dll b/UtilLib/obj/Debug/UtilLib.dll new file mode 100644 index 0000000..587590b Binary files /dev/null and b/UtilLib/obj/Debug/UtilLib.dll differ diff --git a/UtilLib/obj/Debug/UtilLib.pdb b/UtilLib/obj/Debug/UtilLib.pdb new file mode 100644 index 0000000..31795ea Binary files /dev/null and b/UtilLib/obj/Debug/UtilLib.pdb differ diff --git a/UtilLib/packages.config b/UtilLib/packages.config new file mode 100644 index 0000000..6f243a9 --- /dev/null +++ b/UtilLib/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Webview2WinFormsApp/AutoAdaptWindowsSize.cs b/Webview2WinFormsApp/AutoAdaptWindowsSize.cs new file mode 100644 index 0000000..279bbbc --- /dev/null +++ b/Webview2WinFormsApp/AutoAdaptWindowsSize.cs @@ -0,0 +1,119 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +//using System.Linq; +using System.Text; +using System.Windows.Forms; +using System.Drawing.Drawing2D; + +namespace Webview2WinFormsApp +{ + class AutoAdaptWindowsSize //窗口缩放对象 + { + double formOriginalWidth;//窗体高度原始宽度 + double formOriginalHeight;//窗体原始 + double scaleX;//水平缩放比例 + double scaleY;//垂直缩放比例 + readonly Dictionary ControlsInfo = new Dictionary();//控件中心Left,Top,控件Width,控件Height,控件字体Size + + private Form _form; + Panel Win_Panel1 = new Panel(); + public AutoAdaptWindowsSize(Form form) + { + _form = form; + + //代码生成一个容器panel1,添加至窗体 + _form.Controls.Add(Win_Panel1); + Win_Panel1.BorderStyle = BorderStyle.None; //容器border样式 + Win_Panel1.Dock = DockStyle.Fill; //设置填充,下面添加控件至容器完成后,容器会填充窗口 + Win_Panel1.BackColor = Color.Transparent; // 这里默认的背景颜色是form的背景颜色,如果form页面时图片,需要将这里的颜色设置成透明,否则会被覆盖。 + //将窗体所有控件添加至panel1 + while (_form.Controls[0].Name.Trim() != "") + { + foreach (Control item in _form.Controls) + { + + if (item.Name.Trim() != "" && item.Name.Trim() != Win_Panel1.Name.Trim()) + { + Win_Panel1.Controls.Add(item); + } + } + } + + //保存窗体和控件初始大小 + InitControlsInfo(Win_Panel1); + } + + public void InitControlsInfo(Control ctrlContainer) + { + if (ctrlContainer.Parent == _form)//获取窗体的高度和宽度 + { + formOriginalWidth = Convert.ToDouble(ctrlContainer.Width); + formOriginalHeight = Convert.ToDouble(ctrlContainer.Height); + } + foreach (Control item in ctrlContainer.Controls) + { + if (item.Name.Trim() != "") + { + //添加信息:键值:控件名,内容:据左边距离,距顶部距离,控件宽度,控件高度,控件字体。 + ControlsInfo.Add(item.Name, (item.Left + item.Width / 2) + "," + (item.Top + item.Height / 2) + "," + item.Width + "," + item.Height + "," + item.Font.Size); + } + if ((item as UserControl) == null && item.Controls.Count > 0) + { + InitControlsInfo(item); + } + } + + } + public void FormSizeChanged() + { + try + { + if (ControlsInfo.Count > 0)//如果字典中有数据,即窗体改变 + { + ControlsZoomScale(Win_Panel1);//表示pannel控件 + ControlsChange(Win_Panel1); + } + } + catch { } + } + private void ControlsZoomScale(Control ctrlContainer) + { + scaleX = (Convert.ToDouble(ctrlContainer.Width) / formOriginalWidth); + scaleY = (Convert.ToDouble(ctrlContainer.Height) / formOriginalHeight); + } + + // 改变控件大小 + + private void ControlsChange(Control ctrlContainer) + { + double[] pos = new double[5];//pos数组保存当前控件中心Left,Top,控件Width,控件Height,控件字体Size + foreach (Control item in ctrlContainer.Controls)//遍历控件 + { + if (item.Name.Trim() != "")//如果控件名不是空,则执行 + { + if ((item as UserControl) == null && item.Controls.Count > 0)//如果不是自定义控件 + { + ControlsChange(item);//循环执行 + } + string[] strs = ControlsInfo[item.Name].Split(',');//从字典中查出的数据,以‘,’分割成字符串组 + + for (int i = 0; i < 5; i++) + { + pos[i] = Convert.ToDouble(strs[i]);//添加到临时数组 + } + double itemWidth = pos[2] * scaleX; //计算控件宽度,double类型 + double itemHeight = pos[3] * scaleY; //计算控件高度 + item.Left = Convert.ToInt32(pos[0] * scaleX - itemWidth / 2);//计算控件距离左边距离 + item.Top = Convert.ToInt32(pos[1] * scaleY - itemHeight / 2);//计算控件距离顶部距离 + item.Width = Convert.ToInt32(itemWidth);//控件宽度,int类型 + item.Height = Convert.ToInt32(itemHeight);//控件高度 + if (float.Parse((pos[4] * Math.Min(scaleX, scaleY)).ToString()) != 0) //缩放字体大小不能为0 + { item.Font = new Font(item.Font.Name, float.Parse((pos[4] * Math.Min(scaleX, scaleY)).ToString())); } //字体 + } + } + } + } +} \ No newline at end of file diff --git a/Webview2WinFormsApp/Bridge.cs b/Webview2WinFormsApp/Bridge.cs new file mode 100644 index 0000000..7602639 --- /dev/null +++ b/Webview2WinFormsApp/Bridge.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Webview2WinFormsApp +{ + public class Bridge + { + public void Test() + { + System.Windows.Forms.MessageBox.Show("Webview2WinFormsApp.Bridge.Test()!"); + } + } +} diff --git a/Webview2WinFormsApp/Form1.Designer.cs b/Webview2WinFormsApp/Form1.Designer.cs new file mode 100644 index 0000000..f730e5b --- /dev/null +++ b/Webview2WinFormsApp/Form1.Designer.cs @@ -0,0 +1,106 @@ +namespace Webview2WinFormsApp +{ + partial class Form1 + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + webView21 = new Microsoft.Web.WebView2.WinForms.WebView2(); + menuStrip1 = new MenuStrip(); + 文件ToolStripMenuItem = new ToolStripMenuItem(); + 编辑ToolStripMenuItem = new ToolStripMenuItem(); + 视图ToolStripMenuItem = new ToolStripMenuItem(); + ((System.ComponentModel.ISupportInitialize)webView21).BeginInit(); + menuStrip1.SuspendLayout(); + SuspendLayout(); + // + // webView21 + // + webView21.AllowExternalDrop = true; + webView21.CreationProperties = null; + webView21.DefaultBackgroundColor = Color.White; + webView21.Dock = DockStyle.Fill; + webView21.Location = new Point(0, 25); + webView21.Name = "webView21"; + webView21.Size = new Size(998, 600); + webView21.TabIndex = 0; + webView21.ZoomFactor = 1D; + webView21.CoreWebView2InitializationCompleted += webView21_CoreWebView2InitializationCompleted; + // + // menuStrip1 + // + menuStrip1.Items.AddRange(new ToolStripItem[] { 文件ToolStripMenuItem, 编辑ToolStripMenuItem, 视图ToolStripMenuItem }); + menuStrip1.Location = new Point(0, 0); + menuStrip1.Name = "menuStrip1"; + menuStrip1.Size = new Size(998, 25); + menuStrip1.TabIndex = 1; + menuStrip1.Text = "menuStrip1"; + // + // 文件ToolStripMenuItem + // + 文件ToolStripMenuItem.Name = "文件ToolStripMenuItem"; + 文件ToolStripMenuItem.Size = new Size(44, 21); + 文件ToolStripMenuItem.Text = "文件"; + // + // 编辑ToolStripMenuItem + // + 编辑ToolStripMenuItem.Name = "编辑ToolStripMenuItem"; + 编辑ToolStripMenuItem.Size = new Size(44, 21); + 编辑ToolStripMenuItem.Text = "编辑"; + // + // 视图ToolStripMenuItem + // + 视图ToolStripMenuItem.Name = "视图ToolStripMenuItem"; + 视图ToolStripMenuItem.Size = new Size(44, 21); + 视图ToolStripMenuItem.Text = "视图"; + // + // Form1 + // + AutoScaleDimensions = new SizeF(7F, 17F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(998, 625); + Controls.Add(webView21); + Controls.Add(menuStrip1); + MainMenuStrip = menuStrip1; + Name = "Form1"; + Text = "Form1"; + Load += Form1_Load; + ((System.ComponentModel.ISupportInitialize)webView21).EndInit(); + menuStrip1.ResumeLayout(false); + menuStrip1.PerformLayout(); + ResumeLayout(false); + PerformLayout(); + } + + #endregion + + private Microsoft.Web.WebView2.WinForms.WebView2 webView21; + private MenuStrip menuStrip1; + private ToolStripMenuItem 文件ToolStripMenuItem; + private ToolStripMenuItem 编辑ToolStripMenuItem; + private ToolStripMenuItem 视图ToolStripMenuItem; + } +} \ No newline at end of file diff --git a/Webview2WinFormsApp/Form1.cs b/Webview2WinFormsApp/Form1.cs new file mode 100644 index 0000000..e25aad7 --- /dev/null +++ b/Webview2WinFormsApp/Form1.cs @@ -0,0 +1,41 @@ +namespace Webview2WinFormsApp +{ + public partial class Form1 : Form + { + /// + /// https://www.bilibili.com/read/cv23844020/ + /// + private AutoAdaptWindowsSize autoSize; + public Form1() + { + InitializeComponent(); + autoSize = new AutoAdaptWindowsSize(this); + this.SizeChanged += Form1_SizeChanged; + } + + private void Form1_SizeChanged(object? sender, EventArgs e) + { + if (autoSize != null) // һжϣŲֲ100%ʱ򣬻ᱨ + { + autoSize.FormSizeChanged(); + } + } + + private void Form1_Load(object sender, EventArgs e) + { + webView21.Source = new Uri(AppDomain.CurrentDomain.BaseDirectory + "\\web\\index.html"); + } + + private void webView21_CoreWebView2InitializationCompleted(object sender, Microsoft.Web.WebView2.Core.CoreWebView2InitializationCompletedEventArgs e) + { + if (e.IsSuccess) + { + Console.WriteLine("webView21_CoreWebView2InitializationCompleted"); + var bridge = new Bridge(); + // + webView21.CoreWebView2.AddHostObjectToScript("bridge", bridge); + webView21.Source = new Uri(AppDomain.CurrentDomain.BaseDirectory + "\\web\\index.html"); + } + } + } +} \ No newline at end of file diff --git a/Webview2WinFormsApp/Form1.resx b/Webview2WinFormsApp/Form1.resx new file mode 100644 index 0000000..a0623c8 --- /dev/null +++ b/Webview2WinFormsApp/Form1.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + \ No newline at end of file diff --git a/Webview2WinFormsApp/Form2.Designer.cs b/Webview2WinFormsApp/Form2.Designer.cs new file mode 100644 index 0000000..485c137 --- /dev/null +++ b/Webview2WinFormsApp/Form2.Designer.cs @@ -0,0 +1,61 @@ +namespace Webview2WinFormsApp +{ + partial class Form2 + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + panel1 = new Panel(); + SuspendLayout(); + // + // panel1 + // + panel1.AutoScroll = true; + panel1.Dock = DockStyle.Fill; + panel1.Location = new Point(0, 0); + panel1.Name = "panel1"; + panel1.Padding = new Padding(10); + panel1.Size = new Size(878, 699); + panel1.TabIndex = 0; + // + // Form2 + // + AutoScaleDimensions = new SizeF(7F, 17F); + AutoScaleMode = AutoScaleMode.Font; + BackColor = Color.White; + ClientSize = new Size(878, 699); + Controls.Add(panel1); + Name = "Form2"; + Text = "Form2"; + Load += Form2_Load; + ResumeLayout(false); + } + + #endregion + + private Panel panel1; + } +} \ No newline at end of file diff --git a/Webview2WinFormsApp/Form2.cs b/Webview2WinFormsApp/Form2.cs new file mode 100644 index 0000000..90b4761 --- /dev/null +++ b/Webview2WinFormsApp/Form2.cs @@ -0,0 +1,46 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using UtilLib; + +namespace Webview2WinFormsApp +{ + public partial class Form2 : Form + { + public Form2() + { + InitializeComponent(); + } + + private readonly int ItemHeight = 90; + private readonly List Items = new List(); + + private void Form2_Load(object sender, EventArgs e) + { + panel1.AutoScroll = true; + var result = API.GetProofreadResult(); + int index = 0; + foreach (var correct in result.CorrectedSet) + { + if (correct.Diffs != null) + { + foreach (var it in correct.Diffs) + { + ProofreadItem item = new ProofreadItem(); + item.SetProofreadItem(it); + Items.Add(item); + item.Location = new Point(10, (ItemHeight + 10) * index); + panel1.Controls.Add(item); + index++; + } + } + } + } + } +} diff --git a/Webview2WinFormsApp/Form2.resx b/Webview2WinFormsApp/Form2.resx new file mode 100644 index 0000000..af32865 --- /dev/null +++ b/Webview2WinFormsApp/Form2.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Webview2WinFormsApp/Model.cs b/Webview2WinFormsApp/Model.cs new file mode 100644 index 0000000..779ad4f --- /dev/null +++ b/Webview2WinFormsApp/Model.cs @@ -0,0 +1,70 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace TestWordAddIn1 +{ + internal class Model + { + } + + internal class DiffItem + { + + } + internal class Correct + { + public string Key { get; set; } + public int Offset { get; set; } + public string New_text { get; set; } + public string Insert { get; set; } + public int Insert_len { get; set; } + + public List Diffs { get; set; } + } + + internal class ProofreadResult + { + public object AbnormalCount { get; set; } + public List CorrectedSet { get; set; } + public object History { get; set; } + + /* + "id": 1326, + "isBlackWord": true, + "isOrigin": 2, + "isWhiteWord": true, + "name": "失业在家的日子-最新", + "status": 3 + */ + public int Id { get; set; } + public bool IsBlackWord { get; set; } + public int IsOrigin { get; set; } + public bool IsWhiteWord { get; set; } + public int Status { get; set; } + public string Name { get; set; } + } + + internal class Response + { + public int Code { get; set; } + public string Msg { get; set; } + public T Data { get; set; } + } + + internal class WebActionMessage + { + public WebActionMessage() + { } + public WebActionMessage(string action, object data) + { + Action = action; + Data = data; + } + + public string Action { get; set; } + public object Data { get; set; } + } +} diff --git a/Webview2WinFormsApp/Program.cs b/Webview2WinFormsApp/Program.cs new file mode 100644 index 0000000..3a1fc05 --- /dev/null +++ b/Webview2WinFormsApp/Program.cs @@ -0,0 +1,17 @@ +namespace Webview2WinFormsApp +{ + internal static class Program + { + /// + /// The main entry point for the application. + /// + [STAThread] + static void Main() + { + // To customize application configuration such as set high DPI settings or default font, + // see https://aka.ms/applicationconfiguration. + ApplicationConfiguration.Initialize(); + Application.Run(new Form2()); + } + } +} \ No newline at end of file diff --git a/Webview2WinFormsApp/ProofreadItem.Designer.cs b/Webview2WinFormsApp/ProofreadItem.Designer.cs new file mode 100644 index 0000000..71211a8 --- /dev/null +++ b/Webview2WinFormsApp/ProofreadItem.Designer.cs @@ -0,0 +1,115 @@ +namespace Webview2WinFormsApp +{ + partial class ProofreadItem + { + /// + /// 必需的设计器变量。 + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 清理所有正在使用的资源。 + /// + /// 如果应释放托管资源,为 true;否则为 false。 + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region 组件设计器生成的代码 + + /// + /// 设计器支持所需的方法 - 不要修改 + /// 使用代码编辑器修改此方法的内容。 + /// + private void InitializeComponent() + { + origin = new Label(); + type = new Label(); + description = new Label(); + button1 = new Button(); + button2 = new Button(); + SuspendLayout(); + // + // origin + // + origin.AutoSize = true; + origin.Location = new Point(21, 17); + origin.Name = "origin"; + origin.Size = new Size(42, 17); + origin.TabIndex = 0; + origin.Text = "origin"; + // + // type + // + type.AutoSize = true; + type.Location = new Point(80, 18); + type.Name = "type"; + type.Size = new Size(33, 17); + type.TabIndex = 1; + type.Text = "type"; + // + // description + // + description.AutoSize = true; + description.Location = new Point(14, 48); + description.Name = "description"; + description.Size = new Size(73, 17); + description.TabIndex = 2; + description.Text = "description"; + // + // button1 + // + button1.BackgroundImage = Properties.Resources.check; + button1.BackgroundImageLayout = ImageLayout.Stretch; + button1.Cursor = Cursors.Hand; + button1.Location = new Point(269, 18); + button1.Name = "button1"; + button1.Size = new Size(26, 26); + button1.TabIndex = 3; + button1.UseVisualStyleBackColor = true; + // + // button2 + // + button2.BackgroundImage = Properties.Resources.minus_bold; + button2.BackgroundImageLayout = ImageLayout.Stretch; + button2.Cursor = Cursors.Hand; + button2.Location = new Point(301, 18); + button2.Name = "button2"; + button2.Size = new Size(26, 26); + button2.TabIndex = 4; + button2.UseVisualStyleBackColor = true; + // + // ProofreadItem + // + AutoScaleDimensions = new SizeF(7F, 17F); + AutoScaleMode = AutoScaleMode.Font; + BackColor = Color.WhiteSmoke; + Controls.Add(button2); + Controls.Add(button1); + Controls.Add(description); + Controls.Add(type); + Controls.Add(origin); + Name = "ProofreadItem"; + Size = new Size(350, 90); + Load += ProofreadItem_Load; + Click += ProofreadItem_Click; + MouseEnter += ProofreadItem_MouseEnter; + MouseLeave += ProofreadItem_MouseLeave; + ResumeLayout(false); + PerformLayout(); + } + + #endregion + + private Label origin; + private Label type; + private Label description; + private Button button1; + private Button button2; + } +} diff --git a/Webview2WinFormsApp/ProofreadItem.cs b/Webview2WinFormsApp/ProofreadItem.cs new file mode 100644 index 0000000..517d00a --- /dev/null +++ b/Webview2WinFormsApp/ProofreadItem.cs @@ -0,0 +1,82 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using UtilLib; + +namespace Webview2WinFormsApp +{ + public partial class ProofreadItem : UserControl + { + + private readonly Color BG_NORMAL = Color.WhiteSmoke; + private readonly Color BG_HOVER = Color.AliceBlue; + private readonly Color BG_ACTIVE = Color.AliceBlue; + public ProofreadItem() + { + InitializeComponent(); + this.BackColor = BG_NORMAL; + } + + private void ProofreadItem_MouseEnter(object sender, EventArgs e) + { + this.BackColor = BG_HOVER; + Console.WriteLine("ProofreadItem_MouseEnter"); + } + + private void ProofreadItem_MouseLeave(object sender, EventArgs e) + { + this.BackColor = BG_NORMAL; + Console.WriteLine("ProofreadItem_MouseLeave"); + } + + private void ProofreadItem_Click(object sender, EventArgs e) + { + this.BackColor = BG_ACTIVE; + Console.WriteLine("ProofreadItem_Click"); + } + + public void SetProofreadItem(DiffItem it) + { + var typeConfig = TypeConfig.Get(it.Type); + type.Text = typeConfig.Text; + type.Visible = false; + + if (it.Type == ProofreadType.blackWord + || it.Type == ProofreadType.blackWordBlock + || it.Type == ProofreadType.sensitive) + { + description.Text = "【敏感词】建议查看"; + } + else + { + if (it.Tag == "r") + { + origin.Text = it.Origin + ">" + it.Text; + description.Text = string.Format("【{0}】建议选用“{1}”", typeConfig.Text, it.Text); + } + else if (it.Tag == "i") + { + origin.Text = it.Text + " 新增"; + description.Text = string.Format("【{0}】建议新增", typeConfig.Text); + } + else + { + origin.Text = it.Origin + " 删除"; + description.Text = string.Format("【{0}】建议删除", typeConfig.Text); + } + } + + } + + private void ProofreadItem_Load(object sender, EventArgs e) + { + + } + } +} diff --git a/Webview2WinFormsApp/ProofreadItem.resx b/Webview2WinFormsApp/ProofreadItem.resx new file mode 100644 index 0000000..af32865 --- /dev/null +++ b/Webview2WinFormsApp/ProofreadItem.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Webview2WinFormsApp/Properties/Resources.Designer.cs b/Webview2WinFormsApp/Properties/Resources.Designer.cs new file mode 100644 index 0000000..79e390d --- /dev/null +++ b/Webview2WinFormsApp/Properties/Resources.Designer.cs @@ -0,0 +1,83 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +namespace Webview2WinFormsApp.Properties { + using System; + + + /// + /// 一个强类型的资源类,用于查找本地化的字符串等。 + /// + // 此类是由 StronglyTypedResourceBuilder + // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 + // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen + // (以 /str 作为命令选项),或重新生成 VS 项目。 + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// 返回此类使用的缓存的 ResourceManager 实例。 + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Webview2WinFormsApp.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// 重写当前线程的 CurrentUICulture 属性,对 + /// 使用此强类型资源类的所有资源查找执行重写。 + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap check { + get { + object obj = ResourceManager.GetObject("check", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap minus_bold { + get { + object obj = ResourceManager.GetObject("minus-bold", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + } +} diff --git a/Webview2WinFormsApp/Properties/Resources.resx b/Webview2WinFormsApp/Properties/Resources.resx new file mode 100644 index 0000000..03ed0f2 --- /dev/null +++ b/Webview2WinFormsApp/Properties/Resources.resx @@ -0,0 +1,127 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + ..\Resources\check.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\minus-bold.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + \ No newline at end of file diff --git a/Webview2WinFormsApp/Resources/check.png b/Webview2WinFormsApp/Resources/check.png new file mode 100644 index 0000000..e6f7e50 Binary files /dev/null and b/Webview2WinFormsApp/Resources/check.png differ diff --git a/Webview2WinFormsApp/Resources/minus-bold.png b/Webview2WinFormsApp/Resources/minus-bold.png new file mode 100644 index 0000000..eabc9b5 Binary files /dev/null and b/Webview2WinFormsApp/Resources/minus-bold.png differ diff --git a/Webview2WinFormsApp/Webview2WinFormsApp.csproj b/Webview2WinFormsApp/Webview2WinFormsApp.csproj new file mode 100644 index 0000000..4401e67 --- /dev/null +++ b/Webview2WinFormsApp/Webview2WinFormsApp.csproj @@ -0,0 +1,44 @@ + + + + WinExe + net6.0-windows + enable + true + enable + + + + + + + + + Always + + + + + + + + + + + + + + True + True + Resources.resx + + + + + + ResXFileCodeGenerator + Resources.Designer.cs + + + + \ No newline at end of file diff --git a/Webview2WinFormsApp/Webview2WinFormsApp.csproj.user b/Webview2WinFormsApp/Webview2WinFormsApp.csproj.user new file mode 100644 index 0000000..a4af2c7 --- /dev/null +++ b/Webview2WinFormsApp/Webview2WinFormsApp.csproj.user @@ -0,0 +1,14 @@ + + + + + Form + + + Form + + + UserControl + + + \ No newline at end of file diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Microsoft.Web.WebView2.Core.dll b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Microsoft.Web.WebView2.Core.dll new file mode 100644 index 0000000..62ef253 Binary files /dev/null and b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Microsoft.Web.WebView2.Core.dll differ diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Microsoft.Web.WebView2.WinForms.dll b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Microsoft.Web.WebView2.WinForms.dll new file mode 100644 index 0000000..68fbc9e Binary files /dev/null and b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Microsoft.Web.WebView2.WinForms.dll differ diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Microsoft.Web.WebView2.Wpf.dll b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Microsoft.Web.WebView2.Wpf.dll new file mode 100644 index 0000000..19bbe66 Binary files /dev/null and b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Microsoft.Web.WebView2.Wpf.dll differ diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Newtonsoft.Json.dll b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Newtonsoft.Json.dll new file mode 100644 index 0000000..341d08f Binary files /dev/null and b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Newtonsoft.Json.dll differ diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Newtonsoft.Json.xml b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Newtonsoft.Json.xml new file mode 100644 index 0000000..2c981ab --- /dev/null +++ b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Newtonsoft.Json.xml @@ -0,0 +1,11363 @@ + + + + Newtonsoft.Json + + + + + Represents a BSON Oid (object id). + + + + + Gets or sets the value of the Oid. + + The value of the Oid. + + + + Initializes a new instance of the class. + + The Oid value. + + + + Represents a reader that provides fast, non-cached, forward-only access to serialized BSON data. + + + + + Gets or sets a value indicating whether binary data reading should be compatible with incorrect Json.NET 3.5 written binary. + + + true if binary data reading will be compatible with incorrect Json.NET 3.5 written binary; otherwise, false. + + + + + Gets or sets a value indicating whether the root object will be read as a JSON array. + + + true if the root object will be read as a JSON array; otherwise, false. + + + + + Gets or sets the used when reading values from BSON. + + The used when reading values from BSON. + + + + Initializes a new instance of the class. + + The containing the BSON data to read. + + + + Initializes a new instance of the class. + + The containing the BSON data to read. + + + + Initializes a new instance of the class. + + The containing the BSON data to read. + if set to true the root object will be read as a JSON array. + The used when reading values from BSON. + + + + Initializes a new instance of the class. + + The containing the BSON data to read. + if set to true the root object will be read as a JSON array. + The used when reading values from BSON. + + + + Reads the next JSON token from the underlying . + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Changes the reader's state to . + If is set to true, the underlying is also closed. + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating BSON data. + + + + + Gets or sets the used when writing values to BSON. + When set to no conversion will occur. + + The used when writing values to BSON. + + + + Initializes a new instance of the class. + + The to write to. + + + + Initializes a new instance of the class. + + The to write to. + + + + Flushes whatever is in the buffer to the underlying and also flushes the underlying stream. + + + + + Writes the end. + + The token. + + + + Writes a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes raw JSON. + + The raw JSON to write. + + + + Writes raw JSON where a value is expected and updates the writer's state. + + The raw JSON to write. + + + + Writes the beginning of a JSON array. + + + + + Writes the beginning of a JSON object. + + + + + Writes the property name of a name/value pair on a JSON object. + + The name of the property. + + + + Closes this writer. + If is set to true, the underlying is also closed. + If is set to true, the JSON is auto-completed. + + + + + Writes a value. + An error will raised if the value cannot be written as a single JSON token. + + The value to write. + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a [] value. + + The [] value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a [] value that represents a BSON object id. + + The Object ID value to write. + + + + Writes a BSON regex. + + The regex pattern. + The regex options. + + + + Specifies how constructors are used when initializing objects during deserialization by the . + + + + + First attempt to use the public default constructor, then fall back to a single parameterized constructor, then to the non-public default constructor. + + + + + Json.NET will use a non-public default constructor before falling back to a parameterized constructor. + + + + + Converts a binary value to and from a base 64 string value. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts a to and from JSON and BSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Creates a custom object. + + The object type to convert. + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Creates an object which will then be populated by the serializer. + + Type of the object. + The created object. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Gets a value indicating whether this can write JSON. + + + true if this can write JSON; otherwise, false. + + + + + Converts a to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified value type. + + Type of the value. + + true if this instance can convert the specified value type; otherwise, false. + + + + + Converts a to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified value type. + + Type of the value. + + true if this instance can convert the specified value type; otherwise, false. + + + + + Provides a base class for converting a to and from JSON. + + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts a F# discriminated union type to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts an Entity Framework to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts an to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Gets a value indicating whether this can write JSON. + + + true if this can write JSON; otherwise, false. + + + + + Converts a to and from the ISO 8601 date format (e.g. "2008-04-12T12:53Z"). + + + + + Gets or sets the date time styles used when converting a date to and from JSON. + + The date time styles used when converting a date to and from JSON. + + + + Gets or sets the date time format used when converting a date to and from JSON. + + The date time format used when converting a date to and from JSON. + + + + Gets or sets the culture used when converting a date to and from JSON. + + The culture used when converting a date to and from JSON. + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Converts a to and from a JavaScript Date constructor (e.g. new Date(52231943)). + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing property value of the JSON that is being converted. + The calling serializer. + The object value. + + + + Converts a to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts a to and from JSON and BSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts an to and from its name string value. + + + + + Gets or sets a value indicating whether the written enum text should be camel case. + The default value is false. + + true if the written enum text will be camel case; otherwise, false. + + + + Gets or sets the naming strategy used to resolve how enum text is written. + + The naming strategy used to resolve how enum text is written. + + + + Gets or sets a value indicating whether integer values are allowed when serializing and deserializing. + The default value is true. + + true if integers are allowed when serializing and deserializing; otherwise, false. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + true if the written enum text will be camel case; otherwise, false. + + + + Initializes a new instance of the class. + + The naming strategy used to resolve how enum text is written. + true if integers are allowed when serializing and deserializing; otherwise, false. + + + + Initializes a new instance of the class. + + The of the used to write enum text. + + + + Initializes a new instance of the class. + + The of the used to write enum text. + + The parameter list to use when constructing the described by . + If null, the default constructor is used. + When non-null, there must be a constructor defined in the that exactly matches the number, + order, and type of these parameters. + + + + + Initializes a new instance of the class. + + The of the used to write enum text. + + The parameter list to use when constructing the described by . + If null, the default constructor is used. + When non-null, there must be a constructor defined in the that exactly matches the number, + order, and type of these parameters. + + true if integers are allowed when serializing and deserializing; otherwise, false. + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts a to and from Unix epoch time + + + + + Gets or sets a value indicating whether the dates before Unix epoch + should converted to and from JSON. + + + true to allow converting dates before Unix epoch to and from JSON; + false to throw an exception when a date being converted to or from JSON + occurred before Unix epoch. The default value is false. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + true to allow converting dates before Unix epoch to and from JSON; + false to throw an exception when a date being converted to or from JSON + occurred before Unix epoch. The default value is false. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing property value of the JSON that is being converted. + The calling serializer. + The object value. + + + + Converts a to and from a string (e.g. "1.2.3.4"). + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing property value of the JSON that is being converted. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts XML to and from JSON. + + + + + Gets or sets the name of the root element to insert when deserializing to XML if the JSON structure has produced multiple root elements. + + The name of the deserialized root element. + + + + Gets or sets a value to indicate whether to write the Json.NET array attribute. + This attribute helps preserve arrays when converting the written XML back to JSON. + + true if the array attribute is written to the XML; otherwise, false. + + + + Gets or sets a value indicating whether to write the root JSON object. + + true if the JSON root object is omitted; otherwise, false. + + + + Gets or sets a value indicating whether to encode special characters when converting JSON to XML. + If true, special characters like ':', '@', '?', '#' and '$' in JSON property names aren't used to specify + XML namespaces, attributes or processing directives. Instead special characters are encoded and written + as part of the XML element name. + + true if special characters are encoded; otherwise, false. + + + + Writes the JSON representation of the object. + + The to write to. + The calling serializer. + The value. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Checks if the is a namespace attribute. + + Attribute name to test. + The attribute name prefix if it has one, otherwise an empty string. + true if attribute name is for a namespace attribute, otherwise false. + + + + Determines whether this instance can convert the specified value type. + + Type of the value. + + true if this instance can convert the specified value type; otherwise, false. + + + + + Specifies how dates are formatted when writing JSON text. + + + + + Dates are written in the ISO 8601 format, e.g. "2012-03-21T05:40Z". + + + + + Dates are written in the Microsoft JSON format, e.g. "\/Date(1198908717056)\/". + + + + + Specifies how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON text. + + + + + Date formatted strings are not parsed to a date type and are read as strings. + + + + + Date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed to . + + + + + Date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed to . + + + + + Specifies how to treat the time value when converting between string and . + + + + + Treat as local time. If the object represents a Coordinated Universal Time (UTC), it is converted to the local time. + + + + + Treat as a UTC. If the object represents a local time, it is converted to a UTC. + + + + + Treat as a local time if a is being converted to a string. + If a string is being converted to , convert to a local time if a time zone is specified. + + + + + Time zone information should be preserved when converting. + + + + + The default JSON name table implementation. + + + + + Initializes a new instance of the class. + + + + + Gets a string containing the same characters as the specified range of characters in the given array. + + The character array containing the name to find. + The zero-based index into the array specifying the first character of the name. + The number of characters in the name. + A string containing the same characters as the specified range of characters in the given array. + + + + Adds the specified string into name table. + + The string to add. + This method is not thread-safe. + The resolved string. + + + + Specifies default value handling options for the . + + + + + + + + + Include members where the member value is the same as the member's default value when serializing objects. + Included members are written to JSON. Has no effect when deserializing. + + + + + Ignore members where the member value is the same as the member's default value when serializing objects + so that it is not written to JSON. + This option will ignore all default values (e.g. null for objects and nullable types; 0 for integers, + decimals and floating point numbers; and false for booleans). The default value ignored can be changed by + placing the on the property. + + + + + Members with a default value but no JSON will be set to their default value when deserializing. + + + + + Ignore members where the member value is the same as the member's default value when serializing objects + and set members to their default value when deserializing. + + + + + Specifies float format handling options when writing special floating point numbers, e.g. , + and with . + + + + + Write special floating point values as strings in JSON, e.g. "NaN", "Infinity", "-Infinity". + + + + + Write special floating point values as symbols in JSON, e.g. NaN, Infinity, -Infinity. + Note that this will produce non-valid JSON. + + + + + Write special floating point values as the property's default value in JSON, e.g. 0.0 for a property, null for a of property. + + + + + Specifies how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. + + + + + Floating point numbers are parsed to . + + + + + Floating point numbers are parsed to . + + + + + Specifies formatting options for the . + + + + + No special formatting is applied. This is the default. + + + + + Causes child objects to be indented according to the and settings. + + + + + Provides an interface for using pooled arrays. + + The array type content. + + + + Rent an array from the pool. This array must be returned when it is no longer needed. + + The minimum required length of the array. The returned array may be longer. + The rented array from the pool. This array must be returned when it is no longer needed. + + + + Return an array to the pool. + + The array that is being returned. + + + + Provides an interface to enable a class to return line and position information. + + + + + Gets a value indicating whether the class can return line information. + + + true if and can be provided; otherwise, false. + + + + + Gets the current line number. + + The current line number or 0 if no line information is available (for example, when returns false). + + + + Gets the current line position. + + The current line position or 0 if no line information is available (for example, when returns false). + + + + Instructs the how to serialize the collection. + + + + + Gets or sets a value indicating whether null items are allowed in the collection. + + true if null items are allowed in the collection; otherwise, false. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with a flag indicating whether the array can contain null items. + + A flag indicating whether the array can contain null items. + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + Instructs the to use the specified constructor when deserializing that object. + + + + + Instructs the how to serialize the object. + + + + + Gets or sets the id. + + The id. + + + + Gets or sets the title. + + The title. + + + + Gets or sets the description. + + The description. + + + + Gets or sets the collection's items converter. + + The collection's items converter. + + + + The parameter list to use when constructing the described by . + If null, the default constructor is used. + When non-null, there must be a constructor defined in the that exactly matches the number, + order, and type of these parameters. + + + + [JsonContainer(ItemConverterType = typeof(MyContainerConverter), ItemConverterParameters = new object[] { 123, "Four" })] + + + + + + Gets or sets the of the . + + The of the . + + + + The parameter list to use when constructing the described by . + If null, the default constructor is used. + When non-null, there must be a constructor defined in the that exactly matches the number, + order, and type of these parameters. + + + + [JsonContainer(NamingStrategyType = typeof(MyNamingStrategy), NamingStrategyParameters = new object[] { 123, "Four" })] + + + + + + Gets or sets a value that indicates whether to preserve object references. + + + true to keep object reference; otherwise, false. The default is false. + + + + + Gets or sets a value that indicates whether to preserve collection's items references. + + + true to keep collection's items object references; otherwise, false. The default is false. + + + + + Gets or sets the reference loop handling used when serializing the collection's items. + + The reference loop handling. + + + + Gets or sets the type name handling used when serializing the collection's items. + + The type name handling. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + Provides methods for converting between .NET types and JSON types. + + + + + + + + Gets or sets a function that creates default . + Default settings are automatically used by serialization methods on , + and and on . + To serialize without using any default settings create a with + . + + + + + Represents JavaScript's boolean value true as a string. This field is read-only. + + + + + Represents JavaScript's boolean value false as a string. This field is read-only. + + + + + Represents JavaScript's null as a string. This field is read-only. + + + + + Represents JavaScript's undefined as a string. This field is read-only. + + + + + Represents JavaScript's positive infinity as a string. This field is read-only. + + + + + Represents JavaScript's negative infinity as a string. This field is read-only. + + + + + Represents JavaScript's NaN as a string. This field is read-only. + + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation using the specified. + + The value to convert. + The format the date will be converted to. + The time zone handling when the date is converted to a string. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation using the specified. + + The value to convert. + The format the date will be converted to. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + The string delimiter character. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + The string delimiter character. + The string escape handling. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Serializes the specified object to a JSON string. + + The object to serialize. + A JSON string representation of the object. + + + + Serializes the specified object to a JSON string using formatting. + + The object to serialize. + Indicates how the output should be formatted. + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using a collection of . + + The object to serialize. + A collection of converters used while serializing. + A JSON string representation of the object. + + + + Serializes the specified object to a JSON string using formatting and a collection of . + + The object to serialize. + Indicates how the output should be formatted. + A collection of converters used while serializing. + A JSON string representation of the object. + + + + Serializes the specified object to a JSON string using . + + The object to serialize. + The used to serialize the object. + If this is null, default serialization settings will be used. + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using a type, formatting and . + + The object to serialize. + The used to serialize the object. + If this is null, default serialization settings will be used. + + The type of the value being serialized. + This parameter is used when is to write out the type name if the type of the value does not match. + Specifying the type is optional. + + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using formatting and . + + The object to serialize. + Indicates how the output should be formatted. + The used to serialize the object. + If this is null, default serialization settings will be used. + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using a type, formatting and . + + The object to serialize. + Indicates how the output should be formatted. + The used to serialize the object. + If this is null, default serialization settings will be used. + + The type of the value being serialized. + This parameter is used when is to write out the type name if the type of the value does not match. + Specifying the type is optional. + + + A JSON string representation of the object. + + + + + Deserializes the JSON to a .NET object. + + The JSON to deserialize. + The deserialized object from the JSON string. + + + + Deserializes the JSON to a .NET object using . + + The JSON to deserialize. + + The used to deserialize the object. + If this is null, default serialization settings will be used. + + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type. + + The JSON to deserialize. + The of object being deserialized. + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type. + + The type of the object to deserialize to. + The JSON to deserialize. + The deserialized object from the JSON string. + + + + Deserializes the JSON to the given anonymous type. + + + The anonymous type to deserialize to. This can't be specified + traditionally and must be inferred from the anonymous type passed + as a parameter. + + The JSON to deserialize. + The anonymous type object. + The deserialized anonymous type from the JSON string. + + + + Deserializes the JSON to the given anonymous type using . + + + The anonymous type to deserialize to. This can't be specified + traditionally and must be inferred from the anonymous type passed + as a parameter. + + The JSON to deserialize. + The anonymous type object. + + The used to deserialize the object. + If this is null, default serialization settings will be used. + + The deserialized anonymous type from the JSON string. + + + + Deserializes the JSON to the specified .NET type using a collection of . + + The type of the object to deserialize to. + The JSON to deserialize. + Converters to use while deserializing. + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type using . + + The type of the object to deserialize to. + The object to deserialize. + + The used to deserialize the object. + If this is null, default serialization settings will be used. + + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type using a collection of . + + The JSON to deserialize. + The type of the object to deserialize. + Converters to use while deserializing. + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type using . + + The JSON to deserialize. + The type of the object to deserialize to. + + The used to deserialize the object. + If this is null, default serialization settings will be used. + + The deserialized object from the JSON string. + + + + Populates the object with values from the JSON string. + + The JSON to populate values from. + The target object to populate values onto. + + + + Populates the object with values from the JSON string using . + + The JSON to populate values from. + The target object to populate values onto. + + The used to deserialize the object. + If this is null, default serialization settings will be used. + + + + + Serializes the to a JSON string. + + The node to serialize. + A JSON string of the . + + + + Serializes the to a JSON string using formatting. + + The node to serialize. + Indicates how the output should be formatted. + A JSON string of the . + + + + Serializes the to a JSON string using formatting and omits the root object if is true. + + The node to serialize. + Indicates how the output should be formatted. + Omits writing the root object. + A JSON string of the . + + + + Deserializes the from a JSON string. + + The JSON string. + The deserialized . + + + + Deserializes the from a JSON string nested in a root element specified by . + + The JSON string. + The name of the root element to append when deserializing. + The deserialized . + + + + Deserializes the from a JSON string nested in a root element specified by + and writes a Json.NET array attribute for collections. + + The JSON string. + The name of the root element to append when deserializing. + + A value to indicate whether to write the Json.NET array attribute. + This attribute helps preserve arrays when converting the written XML back to JSON. + + The deserialized . + + + + Deserializes the from a JSON string nested in a root element specified by , + writes a Json.NET array attribute for collections, and encodes special characters. + + The JSON string. + The name of the root element to append when deserializing. + + A value to indicate whether to write the Json.NET array attribute. + This attribute helps preserve arrays when converting the written XML back to JSON. + + + A value to indicate whether to encode special characters when converting JSON to XML. + If true, special characters like ':', '@', '?', '#' and '$' in JSON property names aren't used to specify + XML namespaces, attributes or processing directives. Instead special characters are encoded and written + as part of the XML element name. + + The deserialized . + + + + Serializes the to a JSON string. + + The node to convert to JSON. + A JSON string of the . + + + + Serializes the to a JSON string using formatting. + + The node to convert to JSON. + Indicates how the output should be formatted. + A JSON string of the . + + + + Serializes the to a JSON string using formatting and omits the root object if is true. + + The node to serialize. + Indicates how the output should be formatted. + Omits writing the root object. + A JSON string of the . + + + + Deserializes the from a JSON string. + + The JSON string. + The deserialized . + + + + Deserializes the from a JSON string nested in a root element specified by . + + The JSON string. + The name of the root element to append when deserializing. + The deserialized . + + + + Deserializes the from a JSON string nested in a root element specified by + and writes a Json.NET array attribute for collections. + + The JSON string. + The name of the root element to append when deserializing. + + A value to indicate whether to write the Json.NET array attribute. + This attribute helps preserve arrays when converting the written XML back to JSON. + + The deserialized . + + + + Deserializes the from a JSON string nested in a root element specified by , + writes a Json.NET array attribute for collections, and encodes special characters. + + The JSON string. + The name of the root element to append when deserializing. + + A value to indicate whether to write the Json.NET array attribute. + This attribute helps preserve arrays when converting the written XML back to JSON. + + + A value to indicate whether to encode special characters when converting JSON to XML. + If true, special characters like ':', '@', '?', '#' and '$' in JSON property names aren't used to specify + XML namespaces, attributes or processing directives. Instead special characters are encoded and written + as part of the XML element name. + + The deserialized . + + + + Converts an object to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Gets a value indicating whether this can read JSON. + + true if this can read JSON; otherwise, false. + + + + Gets a value indicating whether this can write JSON. + + true if this can write JSON; otherwise, false. + + + + Converts an object to and from JSON. + + The object type to convert. + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. If there is no existing value then null will be used. + The existing value has a value. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Instructs the to use the specified when serializing the member or class. + + + + + Gets the of the . + + The of the . + + + + The parameter list to use when constructing the described by . + If null, the default constructor is used. + + + + + Initializes a new instance of the class. + + Type of the . + + + + Initializes a new instance of the class. + + Type of the . + Parameter list to use when constructing the . Can be null. + + + + Represents a collection of . + + + + + Instructs the how to serialize the collection. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + The exception thrown when an error occurs during JSON serialization or deserialization. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or null if no inner exception is specified. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is null. + The class name is null or is zero (0). + + + + Instructs the to deserialize properties with no matching class member into the specified collection + and write values during serialization. + + + + + Gets or sets a value that indicates whether to write extension data when serializing the object. + + + true to write extension data when serializing the object; otherwise, false. The default is true. + + + + + Gets or sets a value that indicates whether to read extension data when deserializing the object. + + + true to read extension data when deserializing the object; otherwise, false. The default is true. + + + + + Initializes a new instance of the class. + + + + + Instructs the not to serialize the public field or public read/write property value. + + + + + Base class for a table of atomized string objects. + + + + + Gets a string containing the same characters as the specified range of characters in the given array. + + The character array containing the name to find. + The zero-based index into the array specifying the first character of the name. + The number of characters in the name. + A string containing the same characters as the specified range of characters in the given array. + + + + Instructs the how to serialize the object. + + + + + Gets or sets the member serialization. + + The member serialization. + + + + Gets or sets the missing member handling used when deserializing this object. + + The missing member handling. + + + + Gets or sets how the object's properties with null values are handled during serialization and deserialization. + + How the object's properties with null values are handled during serialization and deserialization. + + + + Gets or sets a value that indicates whether the object's properties are required. + + + A value indicating whether the object's properties are required. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified member serialization. + + The member serialization. + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + Instructs the to always serialize the member with the specified name. + + + + + Gets or sets the type used when serializing the property's collection items. + + The collection's items type. + + + + The parameter list to use when constructing the described by . + If null, the default constructor is used. + When non-null, there must be a constructor defined in the that exactly matches the number, + order, and type of these parameters. + + + + [JsonProperty(ItemConverterType = typeof(MyContainerConverter), ItemConverterParameters = new object[] { 123, "Four" })] + + + + + + Gets or sets the of the . + + The of the . + + + + The parameter list to use when constructing the described by . + If null, the default constructor is used. + When non-null, there must be a constructor defined in the that exactly matches the number, + order, and type of these parameters. + + + + [JsonProperty(NamingStrategyType = typeof(MyNamingStrategy), NamingStrategyParameters = new object[] { 123, "Four" })] + + + + + + Gets or sets the null value handling used when serializing this property. + + The null value handling. + + + + Gets or sets the default value handling used when serializing this property. + + The default value handling. + + + + Gets or sets the reference loop handling used when serializing this property. + + The reference loop handling. + + + + Gets or sets the object creation handling used when deserializing this property. + + The object creation handling. + + + + Gets or sets the type name handling used when serializing this property. + + The type name handling. + + + + Gets or sets whether this property's value is serialized as a reference. + + Whether this property's value is serialized as a reference. + + + + Gets or sets the order of serialization of a member. + + The numeric order of serialization. + + + + Gets or sets a value indicating whether this property is required. + + + A value indicating whether this property is required. + + + + + Gets or sets the name of the property. + + The name of the property. + + + + Gets or sets the reference loop handling used when serializing the property's collection items. + + The collection's items reference loop handling. + + + + Gets or sets the type name handling used when serializing the property's collection items. + + The collection's items type name handling. + + + + Gets or sets whether this property's collection items are serialized as a reference. + + Whether this property's collection items are serialized as a reference. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified name. + + Name of the property. + + + + Represents a reader that provides fast, non-cached, forward-only access to serialized JSON data. + + + + + Asynchronously reads the next JSON token from the source. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous read. The + property returns true if the next token was read successfully; false if there are no more tokens to read. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously skips the children of the current token. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously reads the next JSON token from the source as a of . + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous read. The + property returns the of . This result will be null at the end of an array. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously reads the next JSON token from the source as a []. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous read. The + property returns the []. This result will be null at the end of an array. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously reads the next JSON token from the source as a of . + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous read. The + property returns the of . This result will be null at the end of an array. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously reads the next JSON token from the source as a of . + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous read. The + property returns the of . This result will be null at the end of an array. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously reads the next JSON token from the source as a of . + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous read. The + property returns the of . This result will be null at the end of an array. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously reads the next JSON token from the source as a of . + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous read. The + property returns the of . This result will be null at the end of an array. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously reads the next JSON token from the source as a of . + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous read. The + property returns the of . This result will be null at the end of an array. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously reads the next JSON token from the source as a . + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous read. The + property returns the . This result will be null at the end of an array. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Specifies the state of the reader. + + + + + A read method has not been called. + + + + + The end of the file has been reached successfully. + + + + + Reader is at a property. + + + + + Reader is at the start of an object. + + + + + Reader is in an object. + + + + + Reader is at the start of an array. + + + + + Reader is in an array. + + + + + The method has been called. + + + + + Reader has just read a value. + + + + + Reader is at the start of a constructor. + + + + + Reader is in a constructor. + + + + + An error occurred that prevents the read operation from continuing. + + + + + The end of the file has been reached successfully. + + + + + Gets the current reader state. + + The current reader state. + + + + Gets or sets a value indicating whether the source should be closed when this reader is closed. + + + true to close the source when this reader is closed; otherwise false. The default is true. + + + + + Gets or sets a value indicating whether multiple pieces of JSON content can + be read from a continuous stream without erroring. + + + true to support reading multiple pieces of JSON content; otherwise false. + The default is false. + + + + + Gets the quotation mark character used to enclose the value of a string. + + + + + Gets or sets how time zones are handled when reading JSON. + + + + + Gets or sets how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. + + + + + Gets or sets how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. + + + + + Gets or sets how custom date formatted strings are parsed when reading JSON. + + + + + Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . + A null value means there is no maximum. + The default value is 64. + + + + + Gets the type of the current JSON token. + + + + + Gets the text value of the current JSON token. + + + + + Gets the .NET type for the current JSON token. + + + + + Gets the depth of the current token in the JSON document. + + The depth of the current token in the JSON document. + + + + Gets the path of the current JSON token. + + + + + Gets or sets the culture used when reading JSON. Defaults to . + + + + + Initializes a new instance of the class. + + + + + Reads the next JSON token from the source. + + true if the next token was read successfully; false if there are no more tokens to read. + + + + Reads the next JSON token from the source as a of . + + A of . This method will return null at the end of an array. + + + + Reads the next JSON token from the source as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the source as a []. + + A [] or null if the next JSON token is null. This method will return null at the end of an array. + + + + Reads the next JSON token from the source as a of . + + A of . This method will return null at the end of an array. + + + + Reads the next JSON token from the source as a of . + + A of . This method will return null at the end of an array. + + + + Reads the next JSON token from the source as a of . + + A of . This method will return null at the end of an array. + + + + Reads the next JSON token from the source as a of . + + A of . This method will return null at the end of an array. + + + + Reads the next JSON token from the source as a of . + + A of . This method will return null at the end of an array. + + + + Skips the children of the current token. + + + + + Sets the current token. + + The new token. + + + + Sets the current token and value. + + The new token. + The value. + + + + Sets the current token and value. + + The new token. + The value. + A flag indicating whether the position index inside an array should be updated. + + + + Sets the state based on current token type. + + + + + Releases unmanaged and - optionally - managed resources. + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Changes the reader's state to . + If is set to true, the source is also closed. + + + + + The exception thrown when an error occurs while reading JSON text. + + + + + Gets the line number indicating where the error occurred. + + The line number indicating where the error occurred. + + + + Gets the line position indicating where the error occurred. + + The line position indicating where the error occurred. + + + + Gets the path to the JSON where the error occurred. + + The path to the JSON where the error occurred. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or null if no inner exception is specified. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is null. + The class name is null or is zero (0). + + + + Initializes a new instance of the class + with a specified error message, JSON path, line number, line position, and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The path to the JSON where the error occurred. + The line number indicating where the error occurred. + The line position indicating where the error occurred. + The exception that is the cause of the current exception, or null if no inner exception is specified. + + + + Instructs the to always serialize the member, and to require that the member has a value. + + + + + The exception thrown when an error occurs during JSON serialization or deserialization. + + + + + Gets the line number indicating where the error occurred. + + The line number indicating where the error occurred. + + + + Gets the line position indicating where the error occurred. + + The line position indicating where the error occurred. + + + + Gets the path to the JSON where the error occurred. + + The path to the JSON where the error occurred. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or null if no inner exception is specified. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is null. + The class name is null or is zero (0). + + + + Initializes a new instance of the class + with a specified error message, JSON path, line number, line position, and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The path to the JSON where the error occurred. + The line number indicating where the error occurred. + The line position indicating where the error occurred. + The exception that is the cause of the current exception, or null if no inner exception is specified. + + + + Serializes and deserializes objects into and from the JSON format. + The enables you to control how objects are encoded into JSON. + + + + + Occurs when the errors during serialization and deserialization. + + + + + Gets or sets the used by the serializer when resolving references. + + + + + Gets or sets the used by the serializer when resolving type names. + + + + + Gets or sets the used by the serializer when resolving type names. + + + + + Gets or sets the used by the serializer when writing trace messages. + + The trace writer. + + + + Gets or sets the equality comparer used by the serializer when comparing references. + + The equality comparer. + + + + Gets or sets how type name writing and reading is handled by the serializer. + The default value is . + + + should be used with caution when your application deserializes JSON from an external source. + Incoming types should be validated with a custom + when deserializing with a value other than . + + + + + Gets or sets how a type name assembly is written and resolved by the serializer. + The default value is . + + The type name assembly format. + + + + Gets or sets how a type name assembly is written and resolved by the serializer. + The default value is . + + The type name assembly format. + + + + Gets or sets how object references are preserved by the serializer. + The default value is . + + + + + Gets or sets how reference loops (e.g. a class referencing itself) is handled. + The default value is . + + + + + Gets or sets how missing members (e.g. JSON contains a property that isn't a member on the object) are handled during deserialization. + The default value is . + + + + + Gets or sets how null values are handled during serialization and deserialization. + The default value is . + + + + + Gets or sets how default values are handled during serialization and deserialization. + The default value is . + + + + + Gets or sets how objects are created during deserialization. + The default value is . + + The object creation handling. + + + + Gets or sets how constructors are used during deserialization. + The default value is . + + The constructor handling. + + + + Gets or sets how metadata properties are used during deserialization. + The default value is . + + The metadata properties handling. + + + + Gets a collection that will be used during serialization. + + Collection that will be used during serialization. + + + + Gets or sets the contract resolver used by the serializer when + serializing .NET objects to JSON and vice versa. + + + + + Gets or sets the used by the serializer when invoking serialization callback methods. + + The context. + + + + Indicates how JSON text output is formatted. + The default value is . + + + + + Gets or sets how dates are written to JSON text. + The default value is . + + + + + Gets or sets how time zones are handled during serialization and deserialization. + The default value is . + + + + + Gets or sets how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. + The default value is . + + + + + Gets or sets how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. + The default value is . + + + + + Gets or sets how special floating point numbers, e.g. , + and , + are written as JSON text. + The default value is . + + + + + Gets or sets how strings are escaped when writing JSON text. + The default value is . + + + + + Gets or sets how and values are formatted when writing JSON text, + and the expected date format when reading JSON text. + The default value is "yyyy'-'MM'-'dd'T'HH':'mm':'ss.FFFFFFFK". + + + + + Gets or sets the culture used when reading JSON. + The default value is . + + + + + Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . + A null value means there is no maximum. + The default value is 64. + + + + + Gets a value indicating whether there will be a check for additional JSON content after deserializing an object. + The default value is false. + + + true if there will be a check for additional JSON content after deserializing an object; otherwise, false. + + + + + Initializes a new instance of the class. + + + + + Creates a new instance. + The will not use default settings + from . + + + A new instance. + The will not use default settings + from . + + + + + Creates a new instance using the specified . + The will not use default settings + from . + + The settings to be applied to the . + + A new instance using the specified . + The will not use default settings + from . + + + + + Creates a new instance. + The will use default settings + from . + + + A new instance. + The will use default settings + from . + + + + + Creates a new instance using the specified . + The will use default settings + from as well as the specified . + + The settings to be applied to the . + + A new instance using the specified . + The will use default settings + from as well as the specified . + + + + + Populates the JSON values onto the target object. + + The that contains the JSON structure to read values from. + The target object to populate values onto. + + + + Populates the JSON values onto the target object. + + The that contains the JSON structure to read values from. + The target object to populate values onto. + + + + Deserializes the JSON structure contained by the specified . + + The that contains the JSON structure to deserialize. + The being deserialized. + + + + Deserializes the JSON structure contained by the specified + into an instance of the specified type. + + The containing the object. + The of object being deserialized. + The instance of being deserialized. + + + + Deserializes the JSON structure contained by the specified + into an instance of the specified type. + + The containing the object. + The type of the object to deserialize. + The instance of being deserialized. + + + + Deserializes the JSON structure contained by the specified + into an instance of the specified type. + + The containing the object. + The of object being deserialized. + The instance of being deserialized. + + + + Serializes the specified and writes the JSON structure + using the specified . + + The used to write the JSON structure. + The to serialize. + + + + Serializes the specified and writes the JSON structure + using the specified . + + The used to write the JSON structure. + The to serialize. + + The type of the value being serialized. + This parameter is used when is to write out the type name if the type of the value does not match. + Specifying the type is optional. + + + + + Serializes the specified and writes the JSON structure + using the specified . + + The used to write the JSON structure. + The to serialize. + + The type of the value being serialized. + This parameter is used when is Auto to write out the type name if the type of the value does not match. + Specifying the type is optional. + + + + + Serializes the specified and writes the JSON structure + using the specified . + + The used to write the JSON structure. + The to serialize. + + + + Specifies the settings on a object. + + + + + Gets or sets how reference loops (e.g. a class referencing itself) are handled. + The default value is . + + Reference loop handling. + + + + Gets or sets how missing members (e.g. JSON contains a property that isn't a member on the object) are handled during deserialization. + The default value is . + + Missing member handling. + + + + Gets or sets how objects are created during deserialization. + The default value is . + + The object creation handling. + + + + Gets or sets how null values are handled during serialization and deserialization. + The default value is . + + Null value handling. + + + + Gets or sets how default values are handled during serialization and deserialization. + The default value is . + + The default value handling. + + + + Gets or sets a collection that will be used during serialization. + + The converters. + + + + Gets or sets how object references are preserved by the serializer. + The default value is . + + The preserve references handling. + + + + Gets or sets how type name writing and reading is handled by the serializer. + The default value is . + + + should be used with caution when your application deserializes JSON from an external source. + Incoming types should be validated with a custom + when deserializing with a value other than . + + The type name handling. + + + + Gets or sets how metadata properties are used during deserialization. + The default value is . + + The metadata properties handling. + + + + Gets or sets how a type name assembly is written and resolved by the serializer. + The default value is . + + The type name assembly format. + + + + Gets or sets how a type name assembly is written and resolved by the serializer. + The default value is . + + The type name assembly format. + + + + Gets or sets how constructors are used during deserialization. + The default value is . + + The constructor handling. + + + + Gets or sets the contract resolver used by the serializer when + serializing .NET objects to JSON and vice versa. + + The contract resolver. + + + + Gets or sets the equality comparer used by the serializer when comparing references. + + The equality comparer. + + + + Gets or sets the used by the serializer when resolving references. + + The reference resolver. + + + + Gets or sets a function that creates the used by the serializer when resolving references. + + A function that creates the used by the serializer when resolving references. + + + + Gets or sets the used by the serializer when writing trace messages. + + The trace writer. + + + + Gets or sets the used by the serializer when resolving type names. + + The binder. + + + + Gets or sets the used by the serializer when resolving type names. + + The binder. + + + + Gets or sets the error handler called during serialization and deserialization. + + The error handler called during serialization and deserialization. + + + + Gets or sets the used by the serializer when invoking serialization callback methods. + + The context. + + + + Gets or sets how and values are formatted when writing JSON text, + and the expected date format when reading JSON text. + The default value is "yyyy'-'MM'-'dd'T'HH':'mm':'ss.FFFFFFFK". + + + + + Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . + A null value means there is no maximum. + The default value is 64. + + + + + Indicates how JSON text output is formatted. + The default value is . + + + + + Gets or sets how dates are written to JSON text. + The default value is . + + + + + Gets or sets how time zones are handled during serialization and deserialization. + The default value is . + + + + + Gets or sets how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. + The default value is . + + + + + Gets or sets how special floating point numbers, e.g. , + and , + are written as JSON. + The default value is . + + + + + Gets or sets how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. + The default value is . + + + + + Gets or sets how strings are escaped when writing JSON text. + The default value is . + + + + + Gets or sets the culture used when reading JSON. + The default value is . + + + + + Gets a value indicating whether there will be a check for additional content after deserializing an object. + The default value is false. + + + true if there will be a check for additional content after deserializing an object; otherwise, false. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + using values copied from the passed in . + + + + + Represents a reader that provides fast, non-cached, forward-only access to JSON text data. + + + + + Asynchronously reads the next JSON token from the source. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous read. The + property returns true if the next token was read successfully; false if there are no more tokens to read. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously reads the next JSON token from the source as a of . + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous read. The + property returns the of . This result will be null at the end of an array. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously reads the next JSON token from the source as a []. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous read. The + property returns the []. This result will be null at the end of an array. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously reads the next JSON token from the source as a of . + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous read. The + property returns the of . This result will be null at the end of an array. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously reads the next JSON token from the source as a of . + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous read. The + property returns the of . This result will be null at the end of an array. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously reads the next JSON token from the source as a of . + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous read. The + property returns the of . This result will be null at the end of an array. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously reads the next JSON token from the source as a of . + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous read. The + property returns the of . This result will be null at the end of an array. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously reads the next JSON token from the source as a of . + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous read. The + property returns the of . This result will be null at the end of an array. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously reads the next JSON token from the source as a . + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous read. The + property returns the . This result will be null at the end of an array. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Initializes a new instance of the class with the specified . + + The containing the JSON data to read. + + + + Gets or sets the reader's property name table. + + + + + Gets or sets the reader's character buffer pool. + + + + + Reads the next JSON token from the underlying . + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Reads the next JSON token from the underlying as a of . + + A of . This method will return null at the end of an array. + + + + Reads the next JSON token from the underlying as a of . + + A of . This method will return null at the end of an array. + + + + Reads the next JSON token from the underlying as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the underlying as a []. + + A [] or null if the next JSON token is null. This method will return null at the end of an array. + + + + Reads the next JSON token from the underlying as a of . + + A of . This method will return null at the end of an array. + + + + Reads the next JSON token from the underlying as a of . + + A of . This method will return null at the end of an array. + + + + Reads the next JSON token from the underlying as a of . + + A of . This method will return null at the end of an array. + + + + Reads the next JSON token from the underlying as a of . + + A of . This method will return null at the end of an array. + + + + Changes the reader's state to . + If is set to true, the underlying is also closed. + + + + + Gets a value indicating whether the class can return line information. + + + true if and can be provided; otherwise, false. + + + + + Gets the current line number. + + + The current line number or 0 if no line information is available (for example, returns false). + + + + + Gets the current line position. + + + The current line position or 0 if no line information is available (for example, returns false). + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating JSON data. + + + + + Asynchronously flushes whatever is in the buffer to the destination and also flushes the destination. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes the JSON value delimiter. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes the specified end token. + + The end token to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously closes this writer. + If is set to true, the destination is also closed. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes the end of the current JSON object or array. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes indent characters. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes an indent space. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes raw JSON without changing the writer's state. + + The raw JSON to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a null value. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes the property name of a name/value pair of a JSON object. + + The name of the property. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes the property name of a name/value pair of a JSON object. + + The name of the property. + A flag to indicate whether the text should be escaped when it is written as a JSON property name. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes the beginning of a JSON array. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes the beginning of a JSON object. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes the start of a constructor with the given name. + + The name of the constructor. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes an undefined value. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes the given white space. + + The string of white space characters. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a [] value. + + The [] value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes a comment /*...*/ containing the specified text. + + Text to place inside the comment. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes the end of an array. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes the end of a constructor. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes the end of a JSON object. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Asynchronously writes raw JSON where a value is expected and updates the writer's state. + + The raw JSON to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + Derived classes must override this method to get asynchronous behaviour. Otherwise it will + execute synchronously, returning an already-completed task. + + + + Gets or sets the writer's character array pool. + + + + + Gets or sets how many s to write for each level in the hierarchy when is set to . + + + + + Gets or sets which character to use to quote attribute values. + + + + + Gets or sets which character to use for indenting when is set to . + + + + + Gets or sets a value indicating whether object names will be surrounded with quotes. + + + + + Initializes a new instance of the class using the specified . + + The to write to. + + + + Flushes whatever is in the buffer to the underlying and also flushes the underlying . + + + + + Closes this writer. + If is set to true, the underlying is also closed. + If is set to true, the JSON is auto-completed. + + + + + Writes the beginning of a JSON object. + + + + + Writes the beginning of a JSON array. + + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes the specified end token. + + The end token to write. + + + + Writes the property name of a name/value pair on a JSON object. + + The name of the property. + + + + Writes the property name of a name/value pair on a JSON object. + + The name of the property. + A flag to indicate whether the text should be escaped when it is written as a JSON property name. + + + + Writes indent characters. + + + + + Writes the JSON value delimiter. + + + + + Writes an indent space. + + + + + Writes a value. + An error will raised if the value cannot be written as a single JSON token. + + The value to write. + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes raw JSON. + + The raw JSON to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a of value. + + The of value to write. + + + + Writes a value. + + The value to write. + + + + Writes a of value. + + The of value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a [] value. + + The [] value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes the given white space. + + The string of white space characters. + + + + Specifies the type of JSON token. + + + + + This is returned by the if a read method has not been called. + + + + + An object start token. + + + + + An array start token. + + + + + A constructor start token. + + + + + An object property name. + + + + + A comment. + + + + + Raw JSON. + + + + + An integer. + + + + + A float. + + + + + A string. + + + + + A boolean. + + + + + A null token. + + + + + An undefined token. + + + + + An object end token. + + + + + An array end token. + + + + + A constructor end token. + + + + + A Date. + + + + + Byte data. + + + + + + Represents a reader that provides validation. + + + JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. + + + + + + Sets an event handler for receiving schema validation errors. + + + + + Gets the text value of the current JSON token. + + + + + + Gets the depth of the current token in the JSON document. + + The depth of the current token in the JSON document. + + + + Gets the path of the current JSON token. + + + + + Gets the quotation mark character used to enclose the value of a string. + + + + + + Gets the type of the current JSON token. + + + + + + Gets the .NET type for the current JSON token. + + + + + + Initializes a new instance of the class that + validates the content returned from the given . + + The to read from while validating. + + + + Gets or sets the schema. + + The schema. + + + + Gets the used to construct this . + + The specified in the constructor. + + + + Changes the reader's state to . + If is set to true, the underlying is also closed. + + + + + Reads the next JSON token from the underlying as a of . + + A of . + + + + Reads the next JSON token from the underlying as a []. + + + A [] or null if the next JSON token is null. + + + + + Reads the next JSON token from the underlying as a of . + + A of . + + + + Reads the next JSON token from the underlying as a of . + + A of . + + + + Reads the next JSON token from the underlying as a of . + + A of . + + + + Reads the next JSON token from the underlying as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the underlying as a of . + + A of . This method will return null at the end of an array. + + + + Reads the next JSON token from the underlying as a of . + + A of . + + + + Reads the next JSON token from the underlying . + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating JSON data. + + + + + Asynchronously closes this writer. + If is set to true, the destination is also closed. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously flushes whatever is in the buffer to the destination and also flushes the destination. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes the specified end token. + + The end token to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes indent characters. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes the JSON value delimiter. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes an indent space. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes raw JSON without changing the writer's state. + + The raw JSON to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes the end of the current JSON object or array. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes the end of an array. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes the end of a constructor. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes the end of a JSON object. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a null value. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes the property name of a name/value pair of a JSON object. + + The name of the property. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes the property name of a name/value pair of a JSON object. + + The name of the property. + A flag to indicate whether the text should be escaped when it is written as a JSON property name. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes the beginning of a JSON array. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a comment /*...*/ containing the specified text. + + Text to place inside the comment. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes raw JSON where a value is expected and updates the writer's state. + + The raw JSON to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes the start of a constructor with the given name. + + The name of the constructor. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes the beginning of a JSON object. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes the current token. + + The to read the token from. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes the current token. + + The to read the token from. + A flag indicating whether the current token's children should be written. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes the token and its value. + + The to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes the token and its value. + + The to write. + + The value to write. + A value is only required for tokens that have an associated value, e.g. the property name for . + null can be passed to the method for tokens that don't have a value, e.g. . + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a [] value. + + The [] value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a value. + + The value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes a of value. + + The of value to write. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes an undefined value. + + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously writes the given white space. + + The string of white space characters. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Asynchronously ets the state of the . + + The being written. + The value being written. + The token to monitor for cancellation requests. The default value is . + A that represents the asynchronous operation. + The default behaviour is to execute synchronously, returning an already-completed task. Derived + classes can override this behaviour for true asynchronicity. + + + + Gets or sets a value indicating whether the destination should be closed when this writer is closed. + + + true to close the destination when this writer is closed; otherwise false. The default is true. + + + + + Gets or sets a value indicating whether the JSON should be auto-completed when this writer is closed. + + + true to auto-complete the JSON when this writer is closed; otherwise false. The default is true. + + + + + Gets the top. + + The top. + + + + Gets the state of the writer. + + + + + Gets the path of the writer. + + + + + Gets or sets a value indicating how JSON text output should be formatted. + + + + + Gets or sets how dates are written to JSON text. + + + + + Gets or sets how time zones are handled when writing JSON text. + + + + + Gets or sets how strings are escaped when writing JSON text. + + + + + Gets or sets how special floating point numbers, e.g. , + and , + are written to JSON text. + + + + + Gets or sets how and values are formatted when writing JSON text. + + + + + Gets or sets the culture used when writing JSON. Defaults to . + + + + + Initializes a new instance of the class. + + + + + Flushes whatever is in the buffer to the destination and also flushes the destination. + + + + + Closes this writer. + If is set to true, the destination is also closed. + If is set to true, the JSON is auto-completed. + + + + + Writes the beginning of a JSON object. + + + + + Writes the end of a JSON object. + + + + + Writes the beginning of a JSON array. + + + + + Writes the end of an array. + + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes the end constructor. + + + + + Writes the property name of a name/value pair of a JSON object. + + The name of the property. + + + + Writes the property name of a name/value pair of a JSON object. + + The name of the property. + A flag to indicate whether the text should be escaped when it is written as a JSON property name. + + + + Writes the end of the current JSON object or array. + + + + + Writes the current token and its children. + + The to read the token from. + + + + Writes the current token. + + The to read the token from. + A flag indicating whether the current token's children should be written. + + + + Writes the token and its value. + + The to write. + + The value to write. + A value is only required for tokens that have an associated value, e.g. the property name for . + null can be passed to the method for tokens that don't have a value, e.g. . + + + + + Writes the token. + + The to write. + + + + Writes the specified end token. + + The end token to write. + + + + Writes indent characters. + + + + + Writes the JSON value delimiter. + + + + + Writes an indent space. + + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes raw JSON without changing the writer's state. + + The raw JSON to write. + + + + Writes raw JSON where a value is expected and updates the writer's state. + + The raw JSON to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a of value. + + The of value to write. + + + + Writes a of value. + + The of value to write. + + + + Writes a of value. + + The of value to write. + + + + Writes a of value. + + The of value to write. + + + + Writes a of value. + + The of value to write. + + + + Writes a of value. + + The of value to write. + + + + Writes a of value. + + The of value to write. + + + + Writes a of value. + + The of value to write. + + + + Writes a of value. + + The of value to write. + + + + Writes a of value. + + The of value to write. + + + + Writes a of value. + + The of value to write. + + + + Writes a of value. + + The of value to write. + + + + Writes a of value. + + The of value to write. + + + + Writes a of value. + + The of value to write. + + + + Writes a of value. + + The of value to write. + + + + Writes a of value. + + The of value to write. + + + + Writes a of value. + + The of value to write. + + + + Writes a [] value. + + The [] value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + An error will raised if the value cannot be written as a single JSON token. + + The value to write. + + + + Writes a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes the given white space. + + The string of white space characters. + + + + Releases unmanaged and - optionally - managed resources. + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Sets the state of the . + + The being written. + The value being written. + + + + The exception thrown when an error occurs while writing JSON text. + + + + + Gets the path to the JSON where the error occurred. + + The path to the JSON where the error occurred. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or null if no inner exception is specified. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is null. + The class name is null or is zero (0). + + + + Initializes a new instance of the class + with a specified error message, JSON path and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The path to the JSON where the error occurred. + The exception that is the cause of the current exception, or null if no inner exception is specified. + + + + Specifies how JSON comments are handled when loading JSON. + + + + + Ignore comments. + + + + + Load comments as a with type . + + + + + Specifies how duplicate property names are handled when loading JSON. + + + + + Replace the existing value when there is a duplicate property. The value of the last property in the JSON object will be used. + + + + + Ignore the new value when there is a duplicate property. The value of the first property in the JSON object will be used. + + + + + Throw a when a duplicate property is encountered. + + + + + Contains the LINQ to JSON extension methods. + + + + + Returns a collection of tokens that contains the ancestors of every token in the source collection. + + The type of the objects in source, constrained to . + An of that contains the source collection. + An of that contains the ancestors of every token in the source collection. + + + + Returns a collection of tokens that contains every token in the source collection, and the ancestors of every token in the source collection. + + The type of the objects in source, constrained to . + An of that contains the source collection. + An of that contains every token in the source collection, the ancestors of every token in the source collection. + + + + Returns a collection of tokens that contains the descendants of every token in the source collection. + + The type of the objects in source, constrained to . + An of that contains the source collection. + An of that contains the descendants of every token in the source collection. + + + + Returns a collection of tokens that contains every token in the source collection, and the descendants of every token in the source collection. + + The type of the objects in source, constrained to . + An of that contains the source collection. + An of that contains every token in the source collection, and the descendants of every token in the source collection. + + + + Returns a collection of child properties of every object in the source collection. + + An of that contains the source collection. + An of that contains the properties of every object in the source collection. + + + + Returns a collection of child values of every object in the source collection with the given key. + + An of that contains the source collection. + The token key. + An of that contains the values of every token in the source collection with the given key. + + + + Returns a collection of child values of every object in the source collection. + + An of that contains the source collection. + An of that contains the values of every token in the source collection. + + + + Returns a collection of converted child values of every object in the source collection with the given key. + + The type to convert the values to. + An of that contains the source collection. + The token key. + An that contains the converted values of every token in the source collection with the given key. + + + + Returns a collection of converted child values of every object in the source collection. + + The type to convert the values to. + An of that contains the source collection. + An that contains the converted values of every token in the source collection. + + + + Converts the value. + + The type to convert the value to. + A cast as a of . + A converted value. + + + + Converts the value. + + The source collection type. + The type to convert the value to. + A cast as a of . + A converted value. + + + + Returns a collection of child tokens of every array in the source collection. + + The source collection type. + An of that contains the source collection. + An of that contains the values of every token in the source collection. + + + + Returns a collection of converted child tokens of every array in the source collection. + + An of that contains the source collection. + The type to convert the values to. + The source collection type. + An that contains the converted values of every token in the source collection. + + + + Returns the input typed as . + + An of that contains the source collection. + The input typed as . + + + + Returns the input typed as . + + The source collection type. + An of that contains the source collection. + The input typed as . + + + + Represents a collection of objects. + + The type of token. + + + + Gets the of with the specified key. + + + + + + Represents a JSON array. + + + + + + + + Writes this token to a asynchronously. + + A into which this method will write. + The token to monitor for cancellation requests. + A collection of which will be used when writing the token. + A that represents the asynchronous write operation. + + + + Asynchronously loads a from a . + + A that will be read for the content of the . + If this is null, default load settings will be used. + The token to monitor for cancellation requests. The default value is . + A representing the asynchronous load. The property contains the JSON that was read from the specified . + + + + Asynchronously loads a from a . + + A that will be read for the content of the . + The used to load the JSON. + If this is null, default load settings will be used. + The token to monitor for cancellation requests. The default value is . + A representing the asynchronous load. The property contains the JSON that was read from the specified . + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets the node type for this . + + The type. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the specified content. + + The contents of the array. + + + + Initializes a new instance of the class with the specified content. + + The contents of the array. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Loads an from a . + + A that will be read for the content of the . + The used to load the JSON. + If this is null, default load settings will be used. + A that contains the JSON that was read from the specified . + + + + Load a from a string that contains JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + + + + Load a from a string that contains JSON. + + A that contains JSON. + The used to load the JSON. + If this is null, default load settings will be used. + A populated from the string that contains JSON. + + + + + + + Creates a from an object. + + The object that will be used to create . + A with the values of the specified object. + + + + Creates a from an object. + + The object that will be used to create . + The that will be used to read the object. + A with the values of the specified object. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Gets the with the specified key. + + The with the specified key. + + + + Gets or sets the at the specified index. + + + + + + Determines the index of a specific item in the . + + The object to locate in the . + + The index of if found in the list; otherwise, -1. + + + + + Inserts an item to the at the specified index. + + The zero-based index at which should be inserted. + The object to insert into the . + + is not a valid index in the . + + + + + Removes the item at the specified index. + + The zero-based index of the item to remove. + + is not a valid index in the . + + + + + Returns an enumerator that iterates through the collection. + + + A of that can be used to iterate through the collection. + + + + + Adds an item to the . + + The object to add to the . + + + + Removes all items from the . + + + + + Determines whether the contains a specific value. + + The object to locate in the . + + true if is found in the ; otherwise, false. + + + + + Copies the elements of the to an array, starting at a particular array index. + + The array. + Index of the array. + + + + Gets a value indicating whether the is read-only. + + true if the is read-only; otherwise, false. + + + + Removes the first occurrence of a specific object from the . + + The object to remove from the . + + true if was successfully removed from the ; otherwise, false. This method also returns false if is not found in the original . + + + + + Represents a JSON constructor. + + + + + Writes this token to a asynchronously. + + A into which this method will write. + The token to monitor for cancellation requests. + A collection of which will be used when writing the token. + A that represents the asynchronous write operation. + + + + Asynchronously loads a from a . + + A that will be read for the content of the . + The token to monitor for cancellation requests. The default value is . + + A that represents the asynchronous load. The + property returns a that contains the JSON that was read from the specified . + + + + Asynchronously loads a from a . + + A that will be read for the content of the . + The used to load the JSON. + If this is null, default load settings will be used. + The token to monitor for cancellation requests. The default value is . + + A that represents the asynchronous load. The + property returns a that contains the JSON that was read from the specified . + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets or sets the name of this constructor. + + The constructor name. + + + + Gets the node type for this . + + The type. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the specified name and content. + + The constructor name. + The contents of the constructor. + + + + Initializes a new instance of the class with the specified name and content. + + The constructor name. + The contents of the constructor. + + + + Initializes a new instance of the class with the specified name. + + The constructor name. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Gets the with the specified key. + + The with the specified key. + + + + Loads a from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Loads a from a . + + A that will be read for the content of the . + The used to load the JSON. + If this is null, default load settings will be used. + A that contains the JSON that was read from the specified . + + + + Represents a token that can contain other tokens. + + + + + Occurs when the list changes or an item in the list changes. + + + + + Occurs before an item is added to the collection. + + + + + Occurs when the items list of the collection has changed, or the collection is reset. + + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Raises the event. + + The instance containing the event data. + + + + Raises the event. + + The instance containing the event data. + + + + Raises the event. + + The instance containing the event data. + + + + Gets a value indicating whether this token has child tokens. + + + true if this token has child values; otherwise, false. + + + + + Get the first child token of this token. + + + A containing the first child token of the . + + + + + Get the last child token of this token. + + + A containing the last child token of the . + + + + + Returns a collection of the child tokens of this token, in document order. + + + An of containing the child tokens of this , in document order. + + + + + Returns a collection of the child values of this token, in document order. + + The type to convert the values to. + + A containing the child values of this , in document order. + + + + + Returns a collection of the descendant tokens for this token in document order. + + An of containing the descendant tokens of the . + + + + Returns a collection of the tokens that contain this token, and all descendant tokens of this token, in document order. + + An of containing this token, and all the descendant tokens of the . + + + + Adds the specified content as children of this . + + The content to be added. + + + + Adds the specified content as the first children of this . + + The content to be added. + + + + Creates a that can be used to add tokens to the . + + A that is ready to have content written to it. + + + + Replaces the child nodes of this token with the specified content. + + The content. + + + + Removes the child nodes from this token. + + + + + Merge the specified content into this . + + The content to be merged. + + + + Merge the specified content into this using . + + The content to be merged. + The used to merge the content. + + + + Gets the count of child JSON tokens. + + The count of child JSON tokens. + + + + Represents a collection of objects. + + The type of token. + + + + An empty collection of objects. + + + + + Initializes a new instance of the struct. + + The enumerable. + + + + Returns an enumerator that can be used to iterate through the collection. + + + A that can be used to iterate through the collection. + + + + + Gets the of with the specified key. + + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Represents a JSON object. + + + + + + + + Writes this token to a asynchronously. + + A into which this method will write. + The token to monitor for cancellation requests. + A collection of which will be used when writing the token. + A that represents the asynchronous write operation. + + + + Asynchronously loads a from a . + + A that will be read for the content of the . + The token to monitor for cancellation requests. The default value is . + + A that represents the asynchronous load. The + property returns a that contains the JSON that was read from the specified . + + + + Asynchronously loads a from a . + + A that will be read for the content of the . + The used to load the JSON. + If this is null, default load settings will be used. + The token to monitor for cancellation requests. The default value is . + + A that represents the asynchronous load. The + property returns a that contains the JSON that was read from the specified . + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Occurs when a property value changes. + + + + + Occurs when a property value is changing. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the specified content. + + The contents of the object. + + + + Initializes a new instance of the class with the specified content. + + The contents of the object. + + + + Gets the node type for this . + + The type. + + + + Gets an of of this object's properties. + + An of of this object's properties. + + + + Gets a with the specified name. + + The property name. + A with the specified name or null. + + + + Gets the with the specified name. + The exact name will be searched for first and if no matching property is found then + the will be used to match a property. + + The property name. + One of the enumeration values that specifies how the strings will be compared. + A matched with the specified name or null. + + + + Gets a of of this object's property values. + + A of of this object's property values. + + + + Gets the with the specified key. + + The with the specified key. + + + + Gets or sets the with the specified property name. + + + + + + Loads a from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + is not valid JSON. + + + + + Loads a from a . + + A that will be read for the content of the . + The used to load the JSON. + If this is null, default load settings will be used. + A that contains the JSON that was read from the specified . + + is not valid JSON. + + + + + Load a from a string that contains JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + is not valid JSON. + + + + + + + + Load a from a string that contains JSON. + + A that contains JSON. + The used to load the JSON. + If this is null, default load settings will be used. + A populated from the string that contains JSON. + + is not valid JSON. + + + + + + + + Creates a from an object. + + The object that will be used to create . + A with the values of the specified object. + + + + Creates a from an object. + + The object that will be used to create . + The that will be used to read the object. + A with the values of the specified object. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Gets the with the specified property name. + + Name of the property. + The with the specified property name. + + + + Gets the with the specified property name. + The exact property name will be searched for first and if no matching property is found then + the will be used to match a property. + + Name of the property. + One of the enumeration values that specifies how the strings will be compared. + The with the specified property name. + + + + Tries to get the with the specified property name. + The exact property name will be searched for first and if no matching property is found then + the will be used to match a property. + + Name of the property. + The value. + One of the enumeration values that specifies how the strings will be compared. + true if a value was successfully retrieved; otherwise, false. + + + + Adds the specified property name. + + Name of the property. + The value. + + + + Determines whether the JSON object has the specified property name. + + Name of the property. + true if the JSON object has the specified property name; otherwise, false. + + + + Removes the property with the specified name. + + Name of the property. + true if item was successfully removed; otherwise, false. + + + + Tries to get the with the specified property name. + + Name of the property. + The value. + true if a value was successfully retrieved; otherwise, false. + + + + Returns an enumerator that can be used to iterate through the collection. + + + A that can be used to iterate through the collection. + + + + + Raises the event with the provided arguments. + + Name of the property. + + + + Raises the event with the provided arguments. + + Name of the property. + + + + Returns the responsible for binding operations performed on this object. + + The expression tree representation of the runtime value. + + The to bind this object. + + + + + Represents a JSON property. + + + + + Writes this token to a asynchronously. + + A into which this method will write. + The token to monitor for cancellation requests. + A collection of which will be used when writing the token. + A that represents the asynchronous write operation. + + + + Asynchronously loads a from a . + + A that will be read for the content of the . + The token to monitor for cancellation requests. The default value is . + A representing the asynchronous creation. The + property returns a that contains the JSON that was read from the specified . + + + + Asynchronously loads a from a . + + A that will be read for the content of the . + The used to load the JSON. + If this is null, default load settings will be used. + The token to monitor for cancellation requests. The default value is . + A representing the asynchronous creation. The + property returns a that contains the JSON that was read from the specified . + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets the property name. + + The property name. + + + + Gets or sets the property value. + + The property value. + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Gets the node type for this . + + The type. + + + + Initializes a new instance of the class. + + The property name. + The property content. + + + + Initializes a new instance of the class. + + The property name. + The property content. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Loads a from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Loads a from a . + + A that will be read for the content of the . + The used to load the JSON. + If this is null, default load settings will be used. + A that contains the JSON that was read from the specified . + + + + Represents a view of a . + + + + + Initializes a new instance of the class. + + The name. + + + + When overridden in a derived class, returns whether resetting an object changes its value. + + + true if resetting the component changes its value; otherwise, false. + + The component to test for reset capability. + + + + When overridden in a derived class, gets the current value of the property on a component. + + + The value of a property for a given component. + + The component with the property for which to retrieve the value. + + + + When overridden in a derived class, resets the value for this property of the component to the default value. + + The component with the property value that is to be reset to the default value. + + + + When overridden in a derived class, sets the value of the component to a different value. + + The component with the property value that is to be set. + The new value. + + + + When overridden in a derived class, determines a value indicating whether the value of this property needs to be persisted. + + + true if the property should be persisted; otherwise, false. + + The component with the property to be examined for persistence. + + + + When overridden in a derived class, gets the type of the component this property is bound to. + + + A that represents the type of component this property is bound to. + When the or + + methods are invoked, the object specified might be an instance of this type. + + + + + When overridden in a derived class, gets a value indicating whether this property is read-only. + + + true if the property is read-only; otherwise, false. + + + + + When overridden in a derived class, gets the type of the property. + + + A that represents the type of the property. + + + + + Gets the hash code for the name of the member. + + + + The hash code for the name of the member. + + + + + Represents a raw JSON string. + + + + + Asynchronously creates an instance of with the content of the reader's current token. + + The reader. + The token to monitor for cancellation requests. The default value is . + A representing the asynchronous creation. The + property returns an instance of with the content of the reader's current token. + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class. + + The raw json. + + + + Creates an instance of with the content of the reader's current token. + + The reader. + An instance of with the content of the reader's current token. + + + + Specifies the settings used when cloning JSON. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a flag that indicates whether to copy annotations when cloning a . + The default value is true. + + + A flag that indicates whether to copy annotations when cloning a . + + + + + Specifies the settings used when loading JSON. + + + + + Initializes a new instance of the class. + + + + + Gets or sets how JSON comments are handled when loading JSON. + The default value is . + + The JSON comment handling. + + + + Gets or sets how JSON line info is handled when loading JSON. + The default value is . + + The JSON line info handling. + + + + Gets or sets how duplicate property names in JSON objects are handled when loading JSON. + The default value is . + + The JSON duplicate property name handling. + + + + Specifies the settings used when merging JSON. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the method used when merging JSON arrays. + + The method used when merging JSON arrays. + + + + Gets or sets how null value properties are merged. + + How null value properties are merged. + + + + Gets or sets the comparison used to match property names while merging. + The exact property name will be searched for first and if no matching property is found then + the will be used to match a property. + + The comparison used to match property names while merging. + + + + Specifies the settings used when selecting JSON. + + + + + Gets or sets a timeout that will be used when executing regular expressions. + + The timeout that will be used when executing regular expressions. + + + + Gets or sets a flag that indicates whether an error should be thrown if + no tokens are found when evaluating part of the expression. + + + A flag that indicates whether an error should be thrown if + no tokens are found when evaluating part of the expression. + + + + + Represents an abstract JSON token. + + + + + Writes this token to a asynchronously. + + A into which this method will write. + The token to monitor for cancellation requests. + A collection of which will be used when writing the token. + A that represents the asynchronous write operation. + + + + Writes this token to a asynchronously. + + A into which this method will write. + A collection of which will be used when writing the token. + A that represents the asynchronous write operation. + + + + Asynchronously creates a from a . + + An positioned at the token to read into this . + The token to monitor for cancellation requests. The default value is . + + A that represents the asynchronous creation. The + property returns a that contains + the token and its descendant tokens + that were read from the reader. The runtime type of the token is determined + by the token type of the first token encountered in the reader. + + + + + Asynchronously creates a from a . + + An positioned at the token to read into this . + The used to load the JSON. + If this is null, default load settings will be used. + The token to monitor for cancellation requests. The default value is . + + A that represents the asynchronous creation. The + property returns a that contains + the token and its descendant tokens + that were read from the reader. The runtime type of the token is determined + by the token type of the first token encountered in the reader. + + + + + Asynchronously creates a from a . + + A positioned at the token to read into this . + The token to monitor for cancellation requests. The default value is . + + A that represents the asynchronous creation. The + property returns a that contains the token and its descendant tokens + that were read from the reader. The runtime type of the token is determined + by the token type of the first token encountered in the reader. + + + + + Asynchronously creates a from a . + + A positioned at the token to read into this . + The used to load the JSON. + If this is null, default load settings will be used. + The token to monitor for cancellation requests. The default value is . + + A that represents the asynchronous creation. The + property returns a that contains the token and its descendant tokens + that were read from the reader. The runtime type of the token is determined + by the token type of the first token encountered in the reader. + + + + + Gets a comparer that can compare two tokens for value equality. + + A that can compare two nodes for value equality. + + + + Gets or sets the parent. + + The parent. + + + + Gets the root of this . + + The root of this . + + + + Gets the node type for this . + + The type. + + + + Gets a value indicating whether this token has child tokens. + + + true if this token has child values; otherwise, false. + + + + + Compares the values of two tokens, including the values of all descendant tokens. + + The first to compare. + The second to compare. + true if the tokens are equal; otherwise false. + + + + Gets the next sibling token of this node. + + The that contains the next sibling token. + + + + Gets the previous sibling token of this node. + + The that contains the previous sibling token. + + + + Gets the path of the JSON token. + + + + + Adds the specified content immediately after this token. + + A content object that contains simple content or a collection of content objects to be added after this token. + + + + Adds the specified content immediately before this token. + + A content object that contains simple content or a collection of content objects to be added before this token. + + + + Returns a collection of the ancestor tokens of this token. + + A collection of the ancestor tokens of this token. + + + + Returns a collection of tokens that contain this token, and the ancestors of this token. + + A collection of tokens that contain this token, and the ancestors of this token. + + + + Returns a collection of the sibling tokens after this token, in document order. + + A collection of the sibling tokens after this tokens, in document order. + + + + Returns a collection of the sibling tokens before this token, in document order. + + A collection of the sibling tokens before this token, in document order. + + + + Gets the with the specified key. + + The with the specified key. + + + + Gets the with the specified key converted to the specified type. + + The type to convert the token to. + The token key. + The converted token value. + + + + Get the first child token of this token. + + A containing the first child token of the . + + + + Get the last child token of this token. + + A containing the last child token of the . + + + + Returns a collection of the child tokens of this token, in document order. + + An of containing the child tokens of this , in document order. + + + + Returns a collection of the child tokens of this token, in document order, filtered by the specified type. + + The type to filter the child tokens on. + A containing the child tokens of this , in document order. + + + + Returns a collection of the child values of this token, in document order. + + The type to convert the values to. + A containing the child values of this , in document order. + + + + Removes this token from its parent. + + + + + Replaces this token with the specified token. + + The value. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Returns the indented JSON for this token. + + + ToString() returns a non-JSON string value for tokens with a type of . + If you want the JSON for all token types then you should use . + + + The indented JSON for this token. + + + + + Returns the JSON for this token using the given formatting and converters. + + Indicates how the output should be formatted. + A collection of s which will be used when writing the token. + The JSON for this token using the given formatting and converters. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to of . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to of . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to of . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to of . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to of . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to of . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to of . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to of . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to of . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to of . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to of . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to of . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to of . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to of . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to of . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to of . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to of . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to []. + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to of . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to of . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from of to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from of to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from of to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from of to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from of to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from of to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from of to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from of to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from of to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from of to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from of to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from of to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from of to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from of to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from of to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from [] to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from of to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from of to . + + The value to create a from. + The initialized with the specified value. + + + + Creates a for this token. + + A that can be used to read this token and its descendants. + + + + Creates a from an object. + + The object that will be used to create . + A with the value of the specified object. + + + + Creates a from an object using the specified . + + The object that will be used to create . + The that will be used when reading the object. + A with the value of the specified object. + + + + Creates an instance of the specified .NET type from the . + + The object type that the token will be deserialized to. + The new object created from the JSON value. + + + + Creates an instance of the specified .NET type from the . + + The object type that the token will be deserialized to. + The new object created from the JSON value. + + + + Creates an instance of the specified .NET type from the using the specified . + + The object type that the token will be deserialized to. + The that will be used when creating the object. + The new object created from the JSON value. + + + + Creates an instance of the specified .NET type from the using the specified . + + The object type that the token will be deserialized to. + The that will be used when creating the object. + The new object created from the JSON value. + + + + Creates a from a . + + A positioned at the token to read into this . + + A that contains the token and its descendant tokens + that were read from the reader. The runtime type of the token is determined + by the token type of the first token encountered in the reader. + + + + + Creates a from a . + + An positioned at the token to read into this . + The used to load the JSON. + If this is null, default load settings will be used. + + A that contains the token and its descendant tokens + that were read from the reader. The runtime type of the token is determined + by the token type of the first token encountered in the reader. + + + + + Load a from a string that contains JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + Load a from a string that contains JSON. + + A that contains JSON. + The used to load the JSON. + If this is null, default load settings will be used. + A populated from the string that contains JSON. + + + + Creates a from a . + + A positioned at the token to read into this . + The used to load the JSON. + If this is null, default load settings will be used. + + A that contains the token and its descendant tokens + that were read from the reader. The runtime type of the token is determined + by the token type of the first token encountered in the reader. + + + + + Creates a from a . + + A positioned at the token to read into this . + + A that contains the token and its descendant tokens + that were read from the reader. The runtime type of the token is determined + by the token type of the first token encountered in the reader. + + + + + Selects a using a JSONPath expression. Selects the token that matches the object path. + + + A that contains a JSONPath expression. + + A , or null. + + + + Selects a using a JSONPath expression. Selects the token that matches the object path. + + + A that contains a JSONPath expression. + + A flag to indicate whether an error should be thrown if no tokens are found when evaluating part of the expression. + A . + + + + Selects a using a JSONPath expression. Selects the token that matches the object path. + + + A that contains a JSONPath expression. + + The used to select tokens. + A . + + + + Selects a collection of elements using a JSONPath expression. + + + A that contains a JSONPath expression. + + An of that contains the selected elements. + + + + Selects a collection of elements using a JSONPath expression. + + + A that contains a JSONPath expression. + + A flag to indicate whether an error should be thrown if no tokens are found when evaluating part of the expression. + An of that contains the selected elements. + + + + Selects a collection of elements using a JSONPath expression. + + + A that contains a JSONPath expression. + + The used to select tokens. + An of that contains the selected elements. + + + + Returns the responsible for binding operations performed on this object. + + The expression tree representation of the runtime value. + + The to bind this object. + + + + + Returns the responsible for binding operations performed on this object. + + The expression tree representation of the runtime value. + + The to bind this object. + + + + + Creates a new instance of the . All child tokens are recursively cloned. + + A new instance of the . + + + + Creates a new instance of the . All child tokens are recursively cloned. + + A object to configure cloning settings. + A new instance of the . + + + + Adds an object to the annotation list of this . + + The annotation to add. + + + + Get the first annotation object of the specified type from this . + + The type of the annotation to retrieve. + The first annotation object that matches the specified type, or null if no annotation is of the specified type. + + + + Gets the first annotation object of the specified type from this . + + The of the annotation to retrieve. + The first annotation object that matches the specified type, or null if no annotation is of the specified type. + + + + Gets a collection of annotations of the specified type for this . + + The type of the annotations to retrieve. + An that contains the annotations for this . + + + + Gets a collection of annotations of the specified type for this . + + The of the annotations to retrieve. + An of that contains the annotations that match the specified type for this . + + + + Removes the annotations of the specified type from this . + + The type of annotations to remove. + + + + Removes the annotations of the specified type from this . + + The of annotations to remove. + + + + Compares tokens to determine whether they are equal. + + + + + Determines whether the specified objects are equal. + + The first object of type to compare. + The second object of type to compare. + + true if the specified objects are equal; otherwise, false. + + + + + Returns a hash code for the specified object. + + The for which a hash code is to be returned. + A hash code for the specified object. + The type of is a reference type and is null. + + + + Represents a reader that provides fast, non-cached, forward-only access to serialized JSON data. + + + + + Gets the at the reader's current position. + + + + + Initializes a new instance of the class. + + The token to read from. + + + + Initializes a new instance of the class. + + The token to read from. + The initial path of the token. It is prepended to the returned . + + + + Reads the next JSON token from the underlying . + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Gets the path of the current JSON token. + + + + + Specifies the type of token. + + + + + No token type has been set. + + + + + A JSON object. + + + + + A JSON array. + + + + + A JSON constructor. + + + + + A JSON object property. + + + + + A comment. + + + + + An integer value. + + + + + A float value. + + + + + A string value. + + + + + A boolean value. + + + + + A null value. + + + + + An undefined value. + + + + + A date value. + + + + + A raw JSON value. + + + + + A collection of bytes value. + + + + + A Guid value. + + + + + A Uri value. + + + + + A TimeSpan value. + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating JSON data. + + + + + Gets the at the writer's current position. + + + + + Gets the token being written. + + The token being written. + + + + Initializes a new instance of the class writing to the given . + + The container being written to. + + + + Initializes a new instance of the class. + + + + + Flushes whatever is in the buffer to the underlying . + + + + + Closes this writer. + If is set to true, the JSON is auto-completed. + + + Setting to true has no additional effect, since the underlying is a type that cannot be closed. + + + + + Writes the beginning of a JSON object. + + + + + Writes the beginning of a JSON array. + + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes the end. + + The token. + + + + Writes the property name of a name/value pair on a JSON object. + + The name of the property. + + + + Writes a value. + An error will be raised if the value cannot be written as a single JSON token. + + The value to write. + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes raw JSON. + + The raw JSON to write. + + + + Writes a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a [] value. + + The [] value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Represents a value in JSON (string, integer, date, etc). + + + + + Writes this token to a asynchronously. + + A into which this method will write. + The token to monitor for cancellation requests. + A collection of which will be used when writing the token. + A that represents the asynchronous write operation. + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Gets a value indicating whether this token has child tokens. + + + true if this token has child values; otherwise, false. + + + + + Creates a comment with the given value. + + The value. + A comment with the given value. + + + + Creates a string with the given value. + + The value. + A string with the given value. + + + + Creates a null value. + + A null value. + + + + Creates a undefined value. + + A undefined value. + + + + Gets the node type for this . + + The type. + + + + Gets or sets the underlying token value. + + The underlying token value. + + + + Writes this token to a . + + A into which this method will write. + A collection of s which will be used when writing the token. + + + + Indicates whether the current object is equal to another object of the same type. + + + true if the current object is equal to the parameter; otherwise, false. + + An object to compare with this object. + + + + Determines whether the specified is equal to the current . + + The to compare with the current . + + true if the specified is equal to the current ; otherwise, false. + + + + + Serves as a hash function for a particular type. + + + A hash code for the current . + + + + + Returns a that represents this instance. + + + ToString() returns a non-JSON string value for tokens with a type of . + If you want the JSON for all token types then you should use . + + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format provider. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + The format provider. + + A that represents this instance. + + + + + Returns the responsible for binding operations performed on this object. + + The expression tree representation of the runtime value. + + The to bind this object. + + + + + Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object. + + An object to compare with this instance. + + A 32-bit signed integer that indicates the relative order of the objects being compared. The return value has these meanings: + Value + Meaning + Less than zero + This instance is less than . + Zero + This instance is equal to . + Greater than zero + This instance is greater than . + + + is not of the same type as this instance. + + + + + Specifies how line information is handled when loading JSON. + + + + + Ignore line information. + + + + + Load line information. + + + + + Specifies how JSON arrays are merged together. + + + + Concatenate arrays. + + + Union arrays, skipping items that already exist. + + + Replace all array items. + + + Merge array items together, matched by index. + + + + Specifies how null value properties are merged. + + + + + The content's null value properties will be ignored during merging. + + + + + The content's null value properties will be merged. + + + + + Specifies the member serialization options for the . + + + + + All public members are serialized by default. Members can be excluded using or . + This is the default member serialization mode. + + + + + Only members marked with or are serialized. + This member serialization mode can also be set by marking the class with . + + + + + All public and private fields are serialized. Members can be excluded using or . + This member serialization mode can also be set by marking the class with + and setting IgnoreSerializableAttribute on to false. + + + + + Specifies metadata property handling options for the . + + + + + Read metadata properties located at the start of a JSON object. + + + + + Read metadata properties located anywhere in a JSON object. Note that this setting will impact performance. + + + + + Do not try to read metadata properties. + + + + + Specifies missing member handling options for the . + + + + + Ignore a missing member and do not attempt to deserialize it. + + + + + Throw a when a missing member is encountered during deserialization. + + + + + Specifies null value handling options for the . + + + + + + + + + Include null values when serializing and deserializing objects. + + + + + Ignore null values when serializing and deserializing objects. + + + + + Specifies how object creation is handled by the . + + + + + Reuse existing objects, create new objects when needed. + + + + + Only reuse existing objects. + + + + + Always create new objects. + + + + + Specifies reference handling options for the . + Note that references cannot be preserved when a value is set via a non-default constructor such as types that implement . + + + + + + + + Do not preserve references when serializing types. + + + + + Preserve references when serializing into a JSON object structure. + + + + + Preserve references when serializing into a JSON array structure. + + + + + Preserve references when serializing. + + + + + Specifies reference loop handling options for the . + + + + + Throw a when a loop is encountered. + + + + + Ignore loop references and do not serialize. + + + + + Serialize loop references. + + + + + Indicating whether a property is required. + + + + + The property is not required. The default state. + + + + + The property must be defined in JSON but can be a null value. + + + + + The property must be defined in JSON and cannot be a null value. + + + + + The property is not required but it cannot be a null value. + + + + + + Contains the JSON schema extension methods. + + + JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. + + + + + + + Determines whether the is valid. + + + JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. + + + The source to test. + The schema to test with. + + true if the specified is valid; otherwise, false. + + + + + + Determines whether the is valid. + + + JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. + + + The source to test. + The schema to test with. + When this method returns, contains any error messages generated while validating. + + true if the specified is valid; otherwise, false. + + + + + + Validates the specified . + + + JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. + + + The source to test. + The schema to test with. + + + + + Validates the specified . + + + JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. + + + The source to test. + The schema to test with. + The validation event handler. + + + + + An in-memory representation of a JSON Schema. + + + JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. + + + + + + Gets or sets the id. + + + + + Gets or sets the title. + + + + + Gets or sets whether the object is required. + + + + + Gets or sets whether the object is read-only. + + + + + Gets or sets whether the object is visible to users. + + + + + Gets or sets whether the object is transient. + + + + + Gets or sets the description of the object. + + + + + Gets or sets the types of values allowed by the object. + + The type. + + + + Gets or sets the pattern. + + The pattern. + + + + Gets or sets the minimum length. + + The minimum length. + + + + Gets or sets the maximum length. + + The maximum length. + + + + Gets or sets a number that the value should be divisible by. + + A number that the value should be divisible by. + + + + Gets or sets the minimum. + + The minimum. + + + + Gets or sets the maximum. + + The maximum. + + + + Gets or sets a flag indicating whether the value can not equal the number defined by the minimum attribute (). + + A flag indicating whether the value can not equal the number defined by the minimum attribute (). + + + + Gets or sets a flag indicating whether the value can not equal the number defined by the maximum attribute (). + + A flag indicating whether the value can not equal the number defined by the maximum attribute (). + + + + Gets or sets the minimum number of items. + + The minimum number of items. + + + + Gets or sets the maximum number of items. + + The maximum number of items. + + + + Gets or sets the of items. + + The of items. + + + + Gets or sets a value indicating whether items in an array are validated using the instance at their array position from . + + + true if items are validated using their array position; otherwise, false. + + + + + Gets or sets the of additional items. + + The of additional items. + + + + Gets or sets a value indicating whether additional items are allowed. + + + true if additional items are allowed; otherwise, false. + + + + + Gets or sets whether the array items must be unique. + + + + + Gets or sets the of properties. + + The of properties. + + + + Gets or sets the of additional properties. + + The of additional properties. + + + + Gets or sets the pattern properties. + + The pattern properties. + + + + Gets or sets a value indicating whether additional properties are allowed. + + + true if additional properties are allowed; otherwise, false. + + + + + Gets or sets the required property if this property is present. + + The required property if this property is present. + + + + Gets or sets the a collection of valid enum values allowed. + + A collection of valid enum values allowed. + + + + Gets or sets disallowed types. + + The disallowed types. + + + + Gets or sets the default value. + + The default value. + + + + Gets or sets the collection of that this schema extends. + + The collection of that this schema extends. + + + + Gets or sets the format. + + The format. + + + + Initializes a new instance of the class. + + + + + Reads a from the specified . + + The containing the JSON Schema to read. + The object representing the JSON Schema. + + + + Reads a from the specified . + + The containing the JSON Schema to read. + The to use when resolving schema references. + The object representing the JSON Schema. + + + + Load a from a string that contains JSON Schema. + + A that contains JSON Schema. + A populated from the string that contains JSON Schema. + + + + Load a from a string that contains JSON Schema using the specified . + + A that contains JSON Schema. + The resolver. + A populated from the string that contains JSON Schema. + + + + Writes this schema to a . + + A into which this method will write. + + + + Writes this schema to a using the specified . + + A into which this method will write. + The resolver used. + + + + Returns a that represents the current . + + + A that represents the current . + + + + + + Returns detailed information about the schema exception. + + + JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. + + + + + + Gets the line number indicating where the error occurred. + + The line number indicating where the error occurred. + + + + Gets the line position indicating where the error occurred. + + The line position indicating where the error occurred. + + + + Gets the path to the JSON where the error occurred. + + The path to the JSON where the error occurred. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or null if no inner exception is specified. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is null. + The class name is null or is zero (0). + + + + + Generates a from a specified . + + + JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. + + + + + + Gets or sets how undefined schemas are handled by the serializer. + + + + + Gets or sets the contract resolver. + + The contract resolver. + + + + Generate a from the specified type. + + The type to generate a from. + A generated from the specified type. + + + + Generate a from the specified type. + + The type to generate a from. + The used to resolve schema references. + A generated from the specified type. + + + + Generate a from the specified type. + + The type to generate a from. + Specify whether the generated root will be nullable. + A generated from the specified type. + + + + Generate a from the specified type. + + The type to generate a from. + The used to resolve schema references. + Specify whether the generated root will be nullable. + A generated from the specified type. + + + + + Resolves from an id. + + + JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. + + + + + + Gets or sets the loaded schemas. + + The loaded schemas. + + + + Initializes a new instance of the class. + + + + + Gets a for the specified reference. + + The id. + A for the specified reference. + + + + + The value types allowed by the . + + + JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. + + + + + + No type specified. + + + + + String type. + + + + + Float type. + + + + + Integer type. + + + + + Boolean type. + + + + + Object type. + + + + + Array type. + + + + + Null type. + + + + + Any type. + + + + + + Specifies undefined schema Id handling options for the . + + + JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. + + + + + + Do not infer a schema Id. + + + + + Use the .NET type name as the schema Id. + + + + + Use the assembly qualified .NET type name as the schema Id. + + + + + + Returns detailed information related to the . + + + JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. + + + + + + Gets the associated with the validation error. + + The JsonSchemaException associated with the validation error. + + + + Gets the path of the JSON location where the validation error occurred. + + The path of the JSON location where the validation error occurred. + + + + Gets the text description corresponding to the validation error. + + The text description. + + + + + Represents the callback method that will handle JSON schema validation events and the . + + + JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. + + + + + + A camel case naming strategy. + + + + + Initializes a new instance of the class. + + + A flag indicating whether dictionary keys should be processed. + + + A flag indicating whether explicitly specified property names should be processed, + e.g. a property name customized with a . + + + + + Initializes a new instance of the class. + + + A flag indicating whether dictionary keys should be processed. + + + A flag indicating whether explicitly specified property names should be processed, + e.g. a property name customized with a . + + + A flag indicating whether extension data names should be processed. + + + + + Initializes a new instance of the class. + + + + + Resolves the specified property name. + + The property name to resolve. + The resolved property name. + + + + Resolves member mappings for a type, camel casing property names. + + + + + Initializes a new instance of the class. + + + + + Resolves the contract for a given type. + + The type to resolve a contract for. + The contract for a given type. + + + + Used by to resolve a for a given . + + + + + Gets a value indicating whether members are being get and set using dynamic code generation. + This value is determined by the runtime permissions available. + + + true if using dynamic code generation; otherwise, false. + + + + + Gets or sets the default members search flags. + + The default members search flags. + + + + Gets or sets a value indicating whether compiler generated members should be serialized. + + + true if serialized compiler generated members; otherwise, false. + + + + + Gets or sets a value indicating whether to ignore the interface when serializing and deserializing types. + + + true if the interface will be ignored when serializing and deserializing types; otherwise, false. + + + + + Gets or sets a value indicating whether to ignore the attribute when serializing and deserializing types. + + + true if the attribute will be ignored when serializing and deserializing types; otherwise, false. + + + + + Gets or sets a value indicating whether to ignore IsSpecified members when serializing and deserializing types. + + + true if the IsSpecified members will be ignored when serializing and deserializing types; otherwise, false. + + + + + Gets or sets a value indicating whether to ignore ShouldSerialize members when serializing and deserializing types. + + + true if the ShouldSerialize members will be ignored when serializing and deserializing types; otherwise, false. + + + + + Gets or sets the naming strategy used to resolve how property names and dictionary keys are serialized. + + The naming strategy used to resolve how property names and dictionary keys are serialized. + + + + Initializes a new instance of the class. + + + + + Resolves the contract for a given type. + + The type to resolve a contract for. + The contract for a given type. + + + + Gets the serializable members for the type. + + The type to get serializable members for. + The serializable members for the type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates the constructor parameters. + + The constructor to create properties for. + The type's member properties. + Properties for the given . + + + + Creates a for the given . + + The matching member property. + The constructor parameter. + A created for the given . + + + + Resolves the default for the contract. + + Type of the object. + The contract's default . + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Determines which contract type is created for the given type. + + Type of the object. + A for the given type. + + + + Creates properties for the given . + + The type to create properties for. + /// The member serialization mode for the type. + Properties for the given . + + + + Creates the used by the serializer to get and set values from a member. + + The member. + The used by the serializer to get and set values from a member. + + + + Creates a for the given . + + The member's parent . + The member to create a for. + A created for the given . + + + + Resolves the name of the property. + + Name of the property. + Resolved name of the property. + + + + Resolves the name of the extension data. By default no changes are made to extension data names. + + Name of the extension data. + Resolved name of the extension data. + + + + Resolves the key of the dictionary. By default is used to resolve dictionary keys. + + Key of the dictionary. + Resolved key of the dictionary. + + + + Gets the resolved name of the property. + + Name of the property. + Name of the property. + + + + The default naming strategy. Property names and dictionary keys are unchanged. + + + + + Resolves the specified property name. + + The property name to resolve. + The resolved property name. + + + + The default serialization binder used when resolving and loading classes from type names. + + + + + Initializes a new instance of the class. + + + + + When overridden in a derived class, controls the binding of a serialized object to a type. + + Specifies the name of the serialized object. + Specifies the name of the serialized object. + + The type of the object the formatter creates a new instance of. + + + + + When overridden in a derived class, controls the binding of a serialized object to a type. + + The type of the object the formatter creates a new instance of. + Specifies the name of the serialized object. + Specifies the name of the serialized object. + + + + Represents a trace writer that writes to the application's instances. + + + + + Gets the that will be used to filter the trace messages passed to the writer. + For example a filter level of will exclude messages and include , + and messages. + + + The that will be used to filter the trace messages passed to the writer. + + + + + Writes the specified trace level, message and optional exception. + + The at which to write this trace. + The trace message. + The trace exception. This parameter is optional. + + + + Get and set values for a using dynamic methods. + + + + + Initializes a new instance of the class. + + The member info. + + + + Sets the value. + + The target to set the value on. + The value to set on the target. + + + + Gets the value. + + The target to get the value from. + The value. + + + + Provides information surrounding an error. + + + + + Gets the error. + + The error. + + + + Gets the original object that caused the error. + + The original object that caused the error. + + + + Gets the member that caused the error. + + The member that caused the error. + + + + Gets the path of the JSON location where the error occurred. + + The path of the JSON location where the error occurred. + + + + Gets or sets a value indicating whether this is handled. + + true if handled; otherwise, false. + + + + Provides data for the Error event. + + + + + Gets the current object the error event is being raised against. + + The current object the error event is being raised against. + + + + Gets the error context. + + The error context. + + + + Initializes a new instance of the class. + + The current object. + The error context. + + + + Get and set values for a using dynamic methods. + + + + + Initializes a new instance of the class. + + The member info. + + + + Sets the value. + + The target to set the value on. + The value to set on the target. + + + + Gets the value. + + The target to get the value from. + The value. + + + + Provides methods to get attributes. + + + + + Returns a collection of all of the attributes, or an empty collection if there are no attributes. + + When true, look up the hierarchy chain for the inherited custom attribute. + A collection of s, or an empty collection. + + + + Returns a collection of attributes, identified by type, or an empty collection if there are no attributes. + + The type of the attributes. + When true, look up the hierarchy chain for the inherited custom attribute. + A collection of s, or an empty collection. + + + + Used by to resolve a for a given . + + + + + + + + + Resolves the contract for a given type. + + The type to resolve a contract for. + The contract for a given type. + + + + Used to resolve references when serializing and deserializing JSON by the . + + + + + Resolves a reference to its object. + + The serialization context. + The reference to resolve. + The object that was resolved from the reference. + + + + Gets the reference for the specified object. + + The serialization context. + The object to get a reference for. + The reference to the object. + + + + Determines whether the specified object is referenced. + + The serialization context. + The object to test for a reference. + + true if the specified object is referenced; otherwise, false. + + + + + Adds a reference to the specified object. + + The serialization context. + The reference. + The object to reference. + + + + Allows users to control class loading and mandate what class to load. + + + + + When implemented, controls the binding of a serialized object to a type. + + Specifies the name of the serialized object. + Specifies the name of the serialized object + The type of the object the formatter creates a new instance of. + + + + When implemented, controls the binding of a serialized object to a type. + + The type of the object the formatter creates a new instance of. + Specifies the name of the serialized object. + Specifies the name of the serialized object. + + + + Represents a trace writer. + + + + + Gets the that will be used to filter the trace messages passed to the writer. + For example a filter level of will exclude messages and include , + and messages. + + The that will be used to filter the trace messages passed to the writer. + + + + Writes the specified trace level, message and optional exception. + + The at which to write this trace. + The trace message. + The trace exception. This parameter is optional. + + + + Provides methods to get and set values. + + + + + Sets the value. + + The target to set the value on. + The value to set on the target. + + + + Gets the value. + + The target to get the value from. + The value. + + + + Contract details for a used by the . + + + + + Gets the of the collection items. + + The of the collection items. + + + + Gets a value indicating whether the collection type is a multidimensional array. + + true if the collection type is a multidimensional array; otherwise, false. + + + + Gets or sets the function used to create the object. When set this function will override . + + The function used to create the object. + + + + Gets a value indicating whether the creator has a parameter with the collection values. + + true if the creator has a parameter with the collection values; otherwise, false. + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Contract details for a used by the . + + + + + Gets or sets the default collection items . + + The converter. + + + + Gets or sets a value indicating whether the collection items preserve object references. + + true if collection items preserve object references; otherwise, false. + + + + Gets or sets the collection item reference loop handling. + + The reference loop handling. + + + + Gets or sets the collection item type name handling. + + The type name handling. + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Handles serialization callback events. + + The object that raised the callback event. + The streaming context. + + + + Handles serialization error callback events. + + The object that raised the callback event. + The streaming context. + The error context. + + + + Sets extension data for an object during deserialization. + + The object to set extension data on. + The extension data key. + The extension data value. + + + + Gets extension data for an object during serialization. + + The object to set extension data on. + + + + Contract details for a used by the . + + + + + Gets the underlying type for the contract. + + The underlying type for the contract. + + + + Gets or sets the type created during deserialization. + + The type created during deserialization. + + + + Gets or sets whether this type contract is serialized as a reference. + + Whether this type contract is serialized as a reference. + + + + Gets or sets the default for this contract. + + The converter. + + + + Gets the internally resolved for the contract's type. + This converter is used as a fallback converter when no other converter is resolved. + Setting will always override this converter. + + + + + Gets or sets all methods called immediately after deserialization of the object. + + The methods called immediately after deserialization of the object. + + + + Gets or sets all methods called during deserialization of the object. + + The methods called during deserialization of the object. + + + + Gets or sets all methods called after serialization of the object graph. + + The methods called after serialization of the object graph. + + + + Gets or sets all methods called before serialization of the object. + + The methods called before serialization of the object. + + + + Gets or sets all method called when an error is thrown during the serialization of the object. + + The methods called when an error is thrown during the serialization of the object. + + + + Gets or sets the default creator method used to create the object. + + The default creator method used to create the object. + + + + Gets or sets a value indicating whether the default creator is non-public. + + true if the default object creator is non-public; otherwise, false. + + + + Contract details for a used by the . + + + + + Gets or sets the dictionary key resolver. + + The dictionary key resolver. + + + + Gets the of the dictionary keys. + + The of the dictionary keys. + + + + Gets the of the dictionary values. + + The of the dictionary values. + + + + Gets or sets the function used to create the object. When set this function will override . + + The function used to create the object. + + + + Gets a value indicating whether the creator has a parameter with the dictionary values. + + true if the creator has a parameter with the dictionary values; otherwise, false. + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Contract details for a used by the . + + + + + Gets the object's properties. + + The object's properties. + + + + Gets or sets the property name resolver. + + The property name resolver. + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Contract details for a used by the . + + + + + Gets or sets the object constructor. + + The object constructor. + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Contract details for a used by the . + + + + + Gets or sets the object member serialization. + + The member object serialization. + + + + Gets or sets the missing member handling used when deserializing this object. + + The missing member handling. + + + + Gets or sets a value that indicates whether the object's properties are required. + + + A value indicating whether the object's properties are required. + + + + + Gets or sets how the object's properties with null values are handled during serialization and deserialization. + + How the object's properties with null values are handled during serialization and deserialization. + + + + Gets the object's properties. + + The object's properties. + + + + Gets a collection of instances that define the parameters used with . + + + + + Gets or sets the function used to create the object. When set this function will override . + This function is called with a collection of arguments which are defined by the collection. + + The function used to create the object. + + + + Gets or sets the extension data setter. + + + + + Gets or sets the extension data getter. + + + + + Gets or sets the extension data value type. + + + + + Gets or sets the extension data name resolver. + + The extension data name resolver. + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Maps a JSON property to a .NET member or constructor parameter. + + + + + Gets or sets the name of the property. + + The name of the property. + + + + Gets or sets the type that declared this property. + + The type that declared this property. + + + + Gets or sets the order of serialization of a member. + + The numeric order of serialization. + + + + Gets or sets the name of the underlying member or parameter. + + The name of the underlying member or parameter. + + + + Gets the that will get and set the during serialization. + + The that will get and set the during serialization. + + + + Gets or sets the for this property. + + The for this property. + + + + Gets or sets the type of the property. + + The type of the property. + + + + Gets or sets the for the property. + If set this converter takes precedence over the contract converter for the property type. + + The converter. + + + + Gets or sets the member converter. + + The member converter. + + + + Gets or sets a value indicating whether this is ignored. + + true if ignored; otherwise, false. + + + + Gets or sets a value indicating whether this is readable. + + true if readable; otherwise, false. + + + + Gets or sets a value indicating whether this is writable. + + true if writable; otherwise, false. + + + + Gets or sets a value indicating whether this has a member attribute. + + true if has a member attribute; otherwise, false. + + + + Gets the default value. + + The default value. + + + + Gets or sets a value indicating whether this is required. + + A value indicating whether this is required. + + + + Gets a value indicating whether has a value specified. + + + + + Gets or sets a value indicating whether this property preserves object references. + + + true if this instance is reference; otherwise, false. + + + + + Gets or sets the property null value handling. + + The null value handling. + + + + Gets or sets the property default value handling. + + The default value handling. + + + + Gets or sets the property reference loop handling. + + The reference loop handling. + + + + Gets or sets the property object creation handling. + + The object creation handling. + + + + Gets or sets or sets the type name handling. + + The type name handling. + + + + Gets or sets a predicate used to determine whether the property should be serialized. + + A predicate used to determine whether the property should be serialized. + + + + Gets or sets a predicate used to determine whether the property should be deserialized. + + A predicate used to determine whether the property should be deserialized. + + + + Gets or sets a predicate used to determine whether the property should be serialized. + + A predicate used to determine whether the property should be serialized. + + + + Gets or sets an action used to set whether the property has been deserialized. + + An action used to set whether the property has been deserialized. + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Gets or sets the converter used when serializing the property's collection items. + + The collection's items converter. + + + + Gets or sets whether this property's collection items are serialized as a reference. + + Whether this property's collection items are serialized as a reference. + + + + Gets or sets the type name handling used when serializing the property's collection items. + + The collection's items type name handling. + + + + Gets or sets the reference loop handling used when serializing the property's collection items. + + The collection's items reference loop handling. + + + + A collection of objects. + + + + + Initializes a new instance of the class. + + The type. + + + + When implemented in a derived class, extracts the key from the specified element. + + The element from which to extract the key. + The key for the specified element. + + + + Adds a object. + + The property to add to the collection. + + + + Gets the closest matching object. + First attempts to get an exact case match of and then + a case insensitive match. + + Name of the property. + A matching property if found. + + + + Gets a property by property name. + + The name of the property to get. + Type property name string comparison. + A matching property if found. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Lookup and create an instance of the type described by the argument. + + The type to create. + Optional arguments to pass to an initializing constructor of the JsonConverter. + If null, the default constructor is used. + + + + A kebab case naming strategy. + + + + + Initializes a new instance of the class. + + + A flag indicating whether dictionary keys should be processed. + + + A flag indicating whether explicitly specified property names should be processed, + e.g. a property name customized with a . + + + + + Initializes a new instance of the class. + + + A flag indicating whether dictionary keys should be processed. + + + A flag indicating whether explicitly specified property names should be processed, + e.g. a property name customized with a . + + + A flag indicating whether extension data names should be processed. + + + + + Initializes a new instance of the class. + + + + + Resolves the specified property name. + + The property name to resolve. + The resolved property name. + + + + Represents a trace writer that writes to memory. When the trace message limit is + reached then old trace messages will be removed as new messages are added. + + + + + Gets the that will be used to filter the trace messages passed to the writer. + For example a filter level of will exclude messages and include , + and messages. + + + The that will be used to filter the trace messages passed to the writer. + + + + + Initializes a new instance of the class. + + + + + Writes the specified trace level, message and optional exception. + + The at which to write this trace. + The trace message. + The trace exception. This parameter is optional. + + + + Returns an enumeration of the most recent trace messages. + + An enumeration of the most recent trace messages. + + + + Returns a of the most recent trace messages. + + + A of the most recent trace messages. + + + + + A base class for resolving how property names and dictionary keys are serialized. + + + + + A flag indicating whether dictionary keys should be processed. + Defaults to false. + + + + + A flag indicating whether extension data names should be processed. + Defaults to false. + + + + + A flag indicating whether explicitly specified property names, + e.g. a property name customized with a , should be processed. + Defaults to false. + + + + + Gets the serialized name for a given property name. + + The initial property name. + A flag indicating whether the property has had a name explicitly specified. + The serialized property name. + + + + Gets the serialized name for a given extension data name. + + The initial extension data name. + The serialized extension data name. + + + + Gets the serialized key for a given dictionary key. + + The initial dictionary key. + The serialized dictionary key. + + + + Resolves the specified property name. + + The property name to resolve. + The resolved property name. + + + + Hash code calculation + + + + + + Object equality implementation + + + + + + + Compare to another NamingStrategy + + + + + + + Represents a method that constructs an object. + + The object type to create. + + + + When applied to a method, specifies that the method is called when an error occurs serializing an object. + + + + + Provides methods to get attributes from a , , or . + + + + + Initializes a new instance of the class. + + The instance to get attributes for. This parameter should be a , , or . + + + + Returns a collection of all of the attributes, or an empty collection if there are no attributes. + + When true, look up the hierarchy chain for the inherited custom attribute. + A collection of s, or an empty collection. + + + + Returns a collection of attributes, identified by type, or an empty collection if there are no attributes. + + The type of the attributes. + When true, look up the hierarchy chain for the inherited custom attribute. + A collection of s, or an empty collection. + + + + Get and set values for a using reflection. + + + + + Initializes a new instance of the class. + + The member info. + + + + Sets the value. + + The target to set the value on. + The value to set on the target. + + + + Gets the value. + + The target to get the value from. + The value. + + + + A snake case naming strategy. + + + + + Initializes a new instance of the class. + + + A flag indicating whether dictionary keys should be processed. + + + A flag indicating whether explicitly specified property names should be processed, + e.g. a property name customized with a . + + + + + Initializes a new instance of the class. + + + A flag indicating whether dictionary keys should be processed. + + + A flag indicating whether explicitly specified property names should be processed, + e.g. a property name customized with a . + + + A flag indicating whether extension data names should be processed. + + + + + Initializes a new instance of the class. + + + + + Resolves the specified property name. + + The property name to resolve. + The resolved property name. + + + + Specifies how strings are escaped when writing JSON text. + + + + + Only control characters (e.g. newline) are escaped. + + + + + All non-ASCII and control characters (e.g. newline) are escaped. + + + + + HTML (<, >, &, ', ") and control characters (e.g. newline) are escaped. + + + + + Indicates the method that will be used during deserialization for locating and loading assemblies. + + + + + In simple mode, the assembly used during deserialization need not match exactly the assembly used during serialization. Specifically, the version numbers need not match as the LoadWithPartialName method of the class is used to load the assembly. + + + + + In full mode, the assembly used during deserialization must match exactly the assembly used during serialization. The Load method of the class is used to load the assembly. + + + + + Specifies type name handling options for the . + + + should be used with caution when your application deserializes JSON from an external source. + Incoming types should be validated with a custom + when deserializing with a value other than . + + + + + Do not include the .NET type name when serializing types. + + + + + Include the .NET type name when serializing into a JSON object structure. + + + + + Include the .NET type name when serializing into a JSON array structure. + + + + + Always include the .NET type name when serializing. + + + + + Include the .NET type name when the type of the object being serialized is not the same as its declared type. + Note that this doesn't include the root serialized object by default. To include the root object's type name in JSON + you must specify a root type object with + or . + + + + + Determines whether the collection is null or empty. + + The collection. + + true if the collection is null or empty; otherwise, false. + + + + + Adds the elements of the specified collection to the specified generic . + + The list to add to. + The collection of elements to add. + + + + Converts the value to the specified type. If the value is unable to be converted, the + value is checked whether it assignable to the specified type. + + The value to convert. + The culture to use when converting. + The type to convert or cast the value to. + + The converted type. If conversion was unsuccessful, the initial value + is returned if assignable to the target type. + + + + + Helper method for generating a MetaObject which calls a + specific method on Dynamic that returns a result + + + + + Helper method for generating a MetaObject which calls a + specific method on Dynamic, but uses one of the arguments for + the result. + + + + + Helper method for generating a MetaObject which calls a + specific method on Dynamic, but uses one of the arguments for + the result. + + + + + Returns a Restrictions object which includes our current restrictions merged + with a restriction limiting our type + + + + + Helper class for serializing immutable collections. + Note that this is used by all builds, even those that don't support immutable collections, in case the DLL is GACed + https://github.com/JamesNK/Newtonsoft.Json/issues/652 + + + + + Gets the type of the typed collection's items. + + The type. + The type of the typed collection's items. + + + + Gets the member's underlying type. + + The member. + The underlying type of the member. + + + + Determines whether the property is an indexed property. + + The property. + + true if the property is an indexed property; otherwise, false. + + + + + Gets the member's value on the object. + + The member. + The target object. + The member's value on the object. + + + + Sets the member's value on the target object. + + The member. + The target. + The value. + + + + Determines whether the specified MemberInfo can be read. + + The MemberInfo to determine whether can be read. + /// if set to true then allow the member to be gotten non-publicly. + + true if the specified MemberInfo can be read; otherwise, false. + + + + + Determines whether the specified MemberInfo can be set. + + The MemberInfo to determine whether can be set. + if set to true then allow the member to be set non-publicly. + if set to true then allow the member to be set if read-only. + + true if the specified MemberInfo can be set; otherwise, false. + + + + + Builds a string. Unlike this class lets you reuse its internal buffer. + + + + + Determines whether the string is all white space. Empty string will return false. + + The string to test whether it is all white space. + + true if the string is all white space; otherwise, false. + + + + + Specifies the state of the . + + + + + An exception has been thrown, which has left the in an invalid state. + You may call the method to put the in the Closed state. + Any other method calls result in an being thrown. + + + + + The method has been called. + + + + + An object is being written. + + + + + An array is being written. + + + + + A constructor is being written. + + + + + A property is being written. + + + + + A write method has not been called. + + + + Specifies that an output will not be null even if the corresponding type allows it. + + + Specifies that when a method returns , the parameter will not be null even if the corresponding type allows it. + + + Initializes the attribute with the specified return value condition. + + The return value condition. If the method returns this value, the associated parameter will not be null. + + + + Gets the return value condition. + + + Specifies that an output may be null even if the corresponding type disallows it. + + + Specifies that null is allowed as an input even if the corresponding type disallows it. + + + + Specifies that the method will not return if the associated Boolean parameter is passed the specified value. + + + + + Initializes a new instance of the class. + + + The condition parameter value. Code after the method will be considered unreachable by diagnostics if the argument to + the associated parameter matches this value. + + + + Gets the condition parameter value. + + + diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/UtilLib.dll b/Webview2WinFormsApp/bin/Debug/net6.0-windows/UtilLib.dll new file mode 100644 index 0000000..4a3f1ad Binary files /dev/null and b/Webview2WinFormsApp/bin/Debug/net6.0-windows/UtilLib.dll differ diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/UtilLib.dll.config b/Webview2WinFormsApp/bin/Debug/net6.0-windows/UtilLib.dll.config new file mode 100644 index 0000000..b50c74f --- /dev/null +++ b/Webview2WinFormsApp/bin/Debug/net6.0-windows/UtilLib.dll.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/UtilLib.pdb b/Webview2WinFormsApp/bin/Debug/net6.0-windows/UtilLib.pdb new file mode 100644 index 0000000..df88701 Binary files /dev/null and b/Webview2WinFormsApp/bin/Debug/net6.0-windows/UtilLib.pdb differ diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.deps.json b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.deps.json new file mode 100644 index 0000000..245a7c1 --- /dev/null +++ b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.deps.json @@ -0,0 +1,90 @@ +{ + "runtimeTarget": { + "name": ".NETCoreApp,Version=v6.0", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETCoreApp,Version=v6.0": { + "Webview2WinFormsApp/1.0.0": { + "dependencies": { + "Microsoft.Web.WebView2": "1.0.2151.40", + "UtilLib": "1.0.0" + }, + "runtime": { + "Webview2WinFormsApp.dll": {} + } + }, + "Microsoft.Web.WebView2/1.0.2151.40": { + "runtime": { + "lib/netcoreapp3.0/Microsoft.Web.WebView2.Core.dll": { + "assemblyVersion": "1.0.2151.40", + "fileVersion": "1.0.2151.40" + }, + "lib/netcoreapp3.0/Microsoft.Web.WebView2.WinForms.dll": { + "assemblyVersion": "1.0.2151.40", + "fileVersion": "1.0.2151.40" + }, + "lib/netcoreapp3.0/Microsoft.Web.WebView2.Wpf.dll": { + "assemblyVersion": "1.0.2151.40", + "fileVersion": "1.0.2151.40" + } + }, + "runtimeTargets": { + "runtimes/win-arm64/native/WebView2Loader.dll": { + "rid": "win-arm64", + "assetType": "native", + "fileVersion": "1.0.2151.40" + }, + "runtimes/win-x64/native/WebView2Loader.dll": { + "rid": "win-x64", + "assetType": "native", + "fileVersion": "1.0.2151.40" + }, + "runtimes/win-x86/native/WebView2Loader.dll": { + "rid": "win-x86", + "assetType": "native", + "fileVersion": "1.0.2151.40" + } + } + }, + "UtilLib/1.0.0": { + "runtime": { + "UtilLib.dll": {} + } + }, + "Newtonsoft.Json/13.0.0.0": { + "runtime": { + "Newtonsoft.Json.dll": { + "assemblyVersion": "13.0.0.0", + "fileVersion": "13.0.3.27908" + } + } + } + } + }, + "libraries": { + "Webview2WinFormsApp/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "Microsoft.Web.WebView2/1.0.2151.40": { + "type": "package", + "serviceable": true, + "sha512": "sha512-OPWjZVJvYhDm4Jq+7QdsQfEgv2QHrkaqUkdk4i9FahatsOJ4cIaVLfnDHGsKjcxGqCVX+Lo4mi4Lqh5hcgfsdw==", + "path": "microsoft.web.webview2/1.0.2151.40", + "hashPath": "microsoft.web.webview2.1.0.2151.40.nupkg.sha512" + }, + "UtilLib/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "Newtonsoft.Json/13.0.0.0": { + "type": "reference", + "serviceable": false, + "sha512": "" + } + } +} \ No newline at end of file diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.dll b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.dll new file mode 100644 index 0000000..e6f8650 Binary files /dev/null and b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.dll differ diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe new file mode 100644 index 0000000..1d5190b Binary files /dev/null and b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe differ diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Crashpad/metadata b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Crashpad/metadata new file mode 100644 index 0000000..e69de29 diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Crashpad/settings.dat b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Crashpad/settings.dat new file mode 100644 index 0000000..411c8a3 Binary files /dev/null and b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Crashpad/settings.dat differ diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Crashpad/throttle_store.dat b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Crashpad/throttle_store.dat new file mode 100644 index 0000000..9639e1b --- /dev/null +++ b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Crashpad/throttle_store.dat @@ -0,0 +1 @@ +level=none expiry=0 diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/AssistanceHome/AssistanceHomeSQLite b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/AssistanceHome/AssistanceHomeSQLite new file mode 100644 index 0000000..ce788e0 Binary files /dev/null and b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/AssistanceHome/AssistanceHomeSQLite differ diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/AssistanceHome/AssistanceHomeSQLite-journal b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/AssistanceHome/AssistanceHomeSQLite-journal new file mode 100644 index 0000000..e69de29 diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/AutofillStrikeDatabase/LOCK b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/AutofillStrikeDatabase/LOCK new file mode 100644 index 0000000..e69de29 diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/AutofillStrikeDatabase/LOG b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/AutofillStrikeDatabase/LOG new file mode 100644 index 0000000..e69de29 diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/BudgetDatabase/LOCK b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/BudgetDatabase/LOCK new file mode 100644 index 0000000..e69de29 diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/BudgetDatabase/LOG b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/BudgetDatabase/LOG new file mode 100644 index 0000000..e69de29 diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Code Cache/js/index b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Code Cache/js/index new file mode 100644 index 0000000..79bd403 Binary files /dev/null and b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Code Cache/js/index differ diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Code Cache/js/index-dir/the-real-index b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Code Cache/js/index-dir/the-real-index new file mode 100644 index 0000000..7b57f8b Binary files /dev/null and b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Code Cache/js/index-dir/the-real-index differ diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Code Cache/wasm/index b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Code Cache/wasm/index new file mode 100644 index 0000000..79bd403 Binary files /dev/null and b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Code Cache/wasm/index differ diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Code Cache/wasm/index-dir/the-real-index b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Code Cache/wasm/index-dir/the-real-index new file mode 100644 index 0000000..7b57f8b Binary files /dev/null and b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Code Cache/wasm/index-dir/the-real-index differ diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/DIPS b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/DIPS new file mode 100644 index 0000000..39378c2 Binary files /dev/null and b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/DIPS differ diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/DIPS-journal b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/DIPS-journal new file mode 100644 index 0000000..e69de29 diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/DawnCache/data_0 b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/DawnCache/data_0 new file mode 100644 index 0000000..d76fb77 Binary files /dev/null and b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/DawnCache/data_0 differ diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/DawnCache/data_1 b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/DawnCache/data_1 new file mode 100644 index 0000000..dcaafa9 Binary files /dev/null and b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/DawnCache/data_1 differ diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/DawnCache/data_2 b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/DawnCache/data_2 new file mode 100644 index 0000000..c7e2eb9 Binary files /dev/null and b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/DawnCache/data_2 differ diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/DawnCache/data_3 b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/DawnCache/data_3 new file mode 100644 index 0000000..5eec973 Binary files /dev/null and b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/DawnCache/data_3 differ diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/DawnCache/index b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/DawnCache/index new file mode 100644 index 0000000..d5c5a7c Binary files /dev/null and b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/DawnCache/index differ diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Download Service/EntryDB/LOCK b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Download Service/EntryDB/LOCK new file mode 100644 index 0000000..e69de29 diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Download Service/EntryDB/LOG b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Download Service/EntryDB/LOG new file mode 100644 index 0000000..e69de29 diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/EdgeEDrop/EdgeEDropSQLite.db b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/EdgeEDrop/EdgeEDropSQLite.db new file mode 100644 index 0000000..d6d3f7c Binary files /dev/null and b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/EdgeEDrop/EdgeEDropSQLite.db differ diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/EdgeEDrop/EdgeEDropSQLite.db-journal b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/EdgeEDrop/EdgeEDropSQLite.db-journal new file mode 100644 index 0000000..e69de29 diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/EdgeHubAppUsage/EdgeHubAppUsageSQLite.db b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/EdgeHubAppUsage/EdgeHubAppUsageSQLite.db new file mode 100644 index 0000000..db005bc Binary files /dev/null and b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/EdgeHubAppUsage/EdgeHubAppUsageSQLite.db differ diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/EdgeHubAppUsage/EdgeHubAppUsageSQLite.db-journal b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/EdgeHubAppUsage/EdgeHubAppUsageSQLite.db-journal new file mode 100644 index 0000000..e69de29 diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Extension Rules/000003.log b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Extension Rules/000003.log new file mode 100644 index 0000000..4acb4c8 Binary files /dev/null and b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Extension Rules/000003.log differ diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Extension Rules/CURRENT b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Extension Rules/CURRENT new file mode 100644 index 0000000..7ed683d --- /dev/null +++ b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Extension Rules/CURRENT @@ -0,0 +1 @@ +MANIFEST-000001 diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Extension Rules/LOCK b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Extension Rules/LOCK new file mode 100644 index 0000000..e69de29 diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Extension Rules/LOG b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Extension Rules/LOG new file mode 100644 index 0000000..248e3f1 --- /dev/null +++ b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Extension Rules/LOG @@ -0,0 +1,2 @@ +2023/12/10-18:12:44.769 af88 Creating DB C:\Users\home-dev\source\repos\TestWordAddIn1\Webview2WinFormsApp\bin\Debug\net6.0-windows\Webview2WinFormsApp.exe.WebView2\EBWebView\Default\Extension Rules since it was missing. +2023/12/10-18:12:44.777 af88 Reusing MANIFEST C:\Users\home-dev\source\repos\TestWordAddIn1\Webview2WinFormsApp\bin\Debug\net6.0-windows\Webview2WinFormsApp.exe.WebView2\EBWebView\Default\Extension Rules/MANIFEST-000001 diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Extension Rules/MANIFEST-000001 b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Extension Rules/MANIFEST-000001 new file mode 100644 index 0000000..18e5cab Binary files /dev/null and b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Extension Rules/MANIFEST-000001 differ diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Extension Scripts/000003.log b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Extension Scripts/000003.log new file mode 100644 index 0000000..4acb4c8 Binary files /dev/null and b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Extension Scripts/000003.log differ diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Extension Scripts/CURRENT b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Extension Scripts/CURRENT new file mode 100644 index 0000000..7ed683d --- /dev/null +++ b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Extension Scripts/CURRENT @@ -0,0 +1 @@ +MANIFEST-000001 diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Extension Scripts/LOCK b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Extension Scripts/LOCK new file mode 100644 index 0000000..e69de29 diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Extension Scripts/LOG b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Extension Scripts/LOG new file mode 100644 index 0000000..cff7706 --- /dev/null +++ b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Extension Scripts/LOG @@ -0,0 +1,2 @@ +2023/12/10-18:12:44.780 af88 Creating DB C:\Users\home-dev\source\repos\TestWordAddIn1\Webview2WinFormsApp\bin\Debug\net6.0-windows\Webview2WinFormsApp.exe.WebView2\EBWebView\Default\Extension Scripts since it was missing. +2023/12/10-18:12:44.785 af88 Reusing MANIFEST C:\Users\home-dev\source\repos\TestWordAddIn1\Webview2WinFormsApp\bin\Debug\net6.0-windows\Webview2WinFormsApp.exe.WebView2\EBWebView\Default\Extension Scripts/MANIFEST-000001 diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Extension Scripts/MANIFEST-000001 b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Extension Scripts/MANIFEST-000001 new file mode 100644 index 0000000..18e5cab Binary files /dev/null and b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Extension Scripts/MANIFEST-000001 differ diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Extension State/000003.log b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Extension State/000003.log new file mode 100644 index 0000000..b248f53 Binary files /dev/null and b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Extension State/000003.log differ diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Extension State/CURRENT b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Extension State/CURRENT new file mode 100644 index 0000000..7ed683d --- /dev/null +++ b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Extension State/CURRENT @@ -0,0 +1 @@ +MANIFEST-000001 diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Extension State/LOCK b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Extension State/LOCK new file mode 100644 index 0000000..e69de29 diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Extension State/LOG b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Extension State/LOG new file mode 100644 index 0000000..84766a0 --- /dev/null +++ b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Extension State/LOG @@ -0,0 +1,2 @@ +2023/12/10-18:12:44.901 a280 Creating DB C:\Users\home-dev\source\repos\TestWordAddIn1\Webview2WinFormsApp\bin\Debug\net6.0-windows\Webview2WinFormsApp.exe.WebView2\EBWebView\Default\Extension State since it was missing. +2023/12/10-18:12:44.905 a280 Reusing MANIFEST C:\Users\home-dev\source\repos\TestWordAddIn1\Webview2WinFormsApp\bin\Debug\net6.0-windows\Webview2WinFormsApp.exe.WebView2\EBWebView\Default\Extension State/MANIFEST-000001 diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Extension State/MANIFEST-000001 b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Extension State/MANIFEST-000001 new file mode 100644 index 0000000..18e5cab Binary files /dev/null and b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Extension State/MANIFEST-000001 differ diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/ExtensionActivityComp b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/ExtensionActivityComp new file mode 100644 index 0000000..cacfb0d Binary files /dev/null and b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/ExtensionActivityComp differ diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/ExtensionActivityComp-journal b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/ExtensionActivityComp-journal new file mode 100644 index 0000000..e69de29 diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/ExtensionActivityEdge b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/ExtensionActivityEdge new file mode 100644 index 0000000..9a050a6 Binary files /dev/null and b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/ExtensionActivityEdge differ diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/ExtensionActivityEdge-journal b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/ExtensionActivityEdge-journal new file mode 100644 index 0000000..e69de29 diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Favicons b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Favicons new file mode 100644 index 0000000..92219d6 Binary files /dev/null and b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Favicons differ diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Favicons-journal b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Favicons-journal new file mode 100644 index 0000000..e69de29 diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Feature Engagement Tracker/AvailabilityDB/LOCK b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Feature Engagement Tracker/AvailabilityDB/LOCK new file mode 100644 index 0000000..e69de29 diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Feature Engagement Tracker/AvailabilityDB/LOG b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Feature Engagement Tracker/AvailabilityDB/LOG new file mode 100644 index 0000000..e69de29 diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Feature Engagement Tracker/EventDB/LOCK b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Feature Engagement Tracker/EventDB/LOCK new file mode 100644 index 0000000..e69de29 diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Feature Engagement Tracker/EventDB/LOG b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Feature Engagement Tracker/EventDB/LOG new file mode 100644 index 0000000..e69de29 diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/GPUCache/data_0 b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/GPUCache/data_0 new file mode 100644 index 0000000..476aafa Binary files /dev/null and b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/GPUCache/data_0 differ diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/GPUCache/data_1 b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/GPUCache/data_1 new file mode 100644 index 0000000..e03b38d Binary files /dev/null and b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/GPUCache/data_1 differ diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/GPUCache/data_2 b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/GPUCache/data_2 new file mode 100644 index 0000000..f675127 Binary files /dev/null and b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/GPUCache/data_2 differ diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/GPUCache/data_3 b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/GPUCache/data_3 new file mode 100644 index 0000000..5eec973 Binary files /dev/null and b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/GPUCache/data_3 differ diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/GPUCache/index b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/GPUCache/index new file mode 100644 index 0000000..a21254d Binary files /dev/null and b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/GPUCache/index differ diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/History b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/History new file mode 100644 index 0000000..be4866c Binary files /dev/null and b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/History differ diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/History-journal b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/History-journal new file mode 100644 index 0000000..e69de29 diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/LOCK b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/LOCK new file mode 100644 index 0000000..e69de29 diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/LOG b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/LOG new file mode 100644 index 0000000..e69de29 diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Local Storage/leveldb/000003.log b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Local Storage/leveldb/000003.log new file mode 100644 index 0000000..e69de29 diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Local Storage/leveldb/CURRENT b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Local Storage/leveldb/CURRENT new file mode 100644 index 0000000..7ed683d --- /dev/null +++ b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Local Storage/leveldb/CURRENT @@ -0,0 +1 @@ +MANIFEST-000001 diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Local Storage/leveldb/LOCK b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Local Storage/leveldb/LOCK new file mode 100644 index 0000000..e69de29 diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Local Storage/leveldb/LOG b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Local Storage/leveldb/LOG new file mode 100644 index 0000000..fa3a72f --- /dev/null +++ b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Local Storage/leveldb/LOG @@ -0,0 +1,2 @@ +2023/12/10-18:12:44.837 66ec Creating DB C:\Users\home-dev\source\repos\TestWordAddIn1\Webview2WinFormsApp\bin\Debug\net6.0-windows\Webview2WinFormsApp.exe.WebView2\EBWebView\Default\Local Storage\leveldb since it was missing. +2023/12/10-18:12:44.858 66ec Reusing MANIFEST C:\Users\home-dev\source\repos\TestWordAddIn1\Webview2WinFormsApp\bin\Debug\net6.0-windows\Webview2WinFormsApp.exe.WebView2\EBWebView\Default\Local Storage\leveldb/MANIFEST-000001 diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Local Storage/leveldb/MANIFEST-000001 b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Local Storage/leveldb/MANIFEST-000001 new file mode 100644 index 0000000..18e5cab Binary files /dev/null and b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Local Storage/leveldb/MANIFEST-000001 differ diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Login Data b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Login Data new file mode 100644 index 0000000..6d80429 Binary files /dev/null and b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Login Data differ diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Login Data-journal b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Login Data-journal new file mode 100644 index 0000000..e69de29 diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Network Action Predictor b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Network Action Predictor new file mode 100644 index 0000000..9a0665b Binary files /dev/null and b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Network Action Predictor differ diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Network Action Predictor-journal b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Network Action Predictor-journal new file mode 100644 index 0000000..e69de29 diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Network/Cookies b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Network/Cookies new file mode 100644 index 0000000..cc27efe Binary files /dev/null and b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Network/Cookies differ diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Network/Cookies-journal b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Network/Cookies-journal new file mode 100644 index 0000000..e69de29 diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Network/Network Persistent State b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Network/Network Persistent State new file mode 100644 index 0000000..2590bec --- /dev/null +++ b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Network/Network Persistent State @@ -0,0 +1 @@ +{"net":{"http_server_properties":{"servers":[],"version":5},"network_qualities":{"CAESABiAgICA+P////8B":"4G"}}} \ No newline at end of file diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Network/NetworkDataMigrated b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Network/NetworkDataMigrated new file mode 100644 index 0000000..e69de29 diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Network/SCT Auditing Pending Reports b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Network/SCT Auditing Pending Reports new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Network/SCT Auditing Pending Reports @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Network/Sdch Dictionaries b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Network/Sdch Dictionaries new file mode 100644 index 0000000..8bca100 --- /dev/null +++ b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Network/Sdch Dictionaries @@ -0,0 +1 @@ +{"SDCH":{"dictionaries":{},"version":2}} \ No newline at end of file diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Network/Trust Tokens b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Network/Trust Tokens new file mode 100644 index 0000000..e5c7b98 Binary files /dev/null and b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Network/Trust Tokens differ diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Network/Trust Tokens-journal b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Network/Trust Tokens-journal new file mode 100644 index 0000000..e69de29 diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/PersistentOriginTrials/LOCK b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/PersistentOriginTrials/LOCK new file mode 100644 index 0000000..e69de29 diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/PersistentOriginTrials/LOG b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/PersistentOriginTrials/LOG new file mode 100644 index 0000000..e69de29 diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Preferences b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Preferences new file mode 100644 index 0000000..09eb9a5 --- /dev/null +++ b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Preferences @@ -0,0 +1 @@ +{"aadc_info":{"age_group":0},"account_tracker_service_last_update":"13346676764802471","alternate_error_pages":{"backup":true,"enabled":false},"autocomplete":{"retention_policy_last_version":120},"autofill":{"autostuff_enabled":false,"credit_card_enabled":false,"custom_data_enabled":false,"custom_data_fill_enabled":false,"custom_data_identify_info_from_form_enabled":false,"custom_data_save_enabled":false},"browser":{"available_dark_theme_options":"All","has_seen_welcome_page":false},"browser_content_container_height":600,"browser_content_container_width":998,"browser_content_container_x":0,"browser_content_container_y":0,"countryid_at_install":17230,"credentials_enable_service":false,"dips_timer_last_update":"13346676764857584","domain_diversity":{"last_reporting_timestamp":"13346676764798871"},"dual_engine":{"consumer_mode":{"ie_user":false}},"edge":{"msa_sso_info":{"allow_for_non_msa_profile":true},"profile_sso_info":{"is_msa_first_profile":true,"msa_sso_algo_state":1},"services":{"signin_scoped_device_id":"023b387a-41ce-4a39-87ee-4096f6c1cedb"}},"edge_rewards":{"cache_data":"CAA=","refresh_status_muted_until":"13347281564978976"},"edge_ux_config":{"assignmentcontext":"","dataversion":"0","experimentvariables":{},"flights":{}},"enable_edge_collections":false,"extensions":{"alerts":{"initialized":true},"chrome_url_overrides":{},"last_chrome_version":"120.0.2210.61","pdf_upsell_triggered":false,"pinned_extension_migration":true,"pinned_extensions":[]},"fsd":{"retention_policy_last_version":120},"google":{"services":{"consented_to_sync":false}},"history":{"thumbnail_ui_visibility":false},"intl":{"selected_languages":"zh-CN,en,en-GB,en-US"},"muid":{"last_sync":"13346676764794870","values_seen":[]},"optimization_guide":{"store_file_paths_to_delete":{}},"personalization_data_consent":{"personalization_in_context_consent_can_prompt":true,"personalization_in_context_count":0},"privacy_sandbox":{"anti_abuse_initialized":true,"first_party_sets_data_access_allowed_initialized":true},"profile":{"avatar_index":20,"content_settings":{"enable_quiet_permission_ui_enabling_method":{"notifications":1},"exceptions":{"3pcd_heuristics_grants":{},"3pcd_support":{},"access_to_get_all_screens_media_in_session":{},"accessibility_events":{},"anti_abuse":{},"app_banner":{},"ar":{},"auto_picture_in_picture":{},"auto_select_certificate":{},"automatic_downloads":{},"autoplay":{},"background_sync":{},"bluetooth_chooser_data":{},"bluetooth_guard":{},"bluetooth_scanning":{},"camera_pan_tilt_zoom":{},"clear_browsing_data_cookies_exceptions":{},"client_hints":{},"clipboard":{},"cookie_controls_metadata":{"file:///*,*":{"last_modified":"13346676764994268","setting":{}}},"cookies":{},"durable_storage":{},"edge_ad_targeting":{},"edge_ad_targeting_data":{},"edge_enhance_images":{},"edge_sdsm":{},"edge_u2f_api_request":{},"edge_user_agent_token":{},"fedcm_active_session":{},"fedcm_idp_registration":{},"fedcm_idp_signin":{},"fedcm_share":{},"file_system_access_chooser_data":{},"file_system_access_extended_permission":{},"file_system_last_picked_directory":{},"file_system_read_guard":{},"file_system_write_guard":{},"formfill_metadata":{},"geolocation":{},"hid_chooser_data":{},"hid_guard":{},"http_allowed":{},"https_enforced":{},"idle_detection":{},"images":{},"important_site_info":{},"insecure_private_network":{},"intent_picker_auto_display":{},"javascript":{},"javascript_jit":{},"legacy_cookie_access":{},"local_fonts":{},"media_engagement":{},"media_stream_camera":{},"media_stream_mic":{},"midi":{},"midi_sysex":{},"mixed_script":{},"nfc_devices":{},"notification_interactions":{},"notification_permission_review":{},"notifications":{},"password_protection":{},"payment_handler":{},"permission_autoblocking_data":{},"permission_autorevocation_data":{},"popups":{},"private_network_chooser_data":{},"private_network_guard":{},"protected_media_identifier":{},"protocol_handler":{},"reduced_accept_language":{},"safe_browsing_url_check_data":{},"secure_network":{},"secure_network_sites":{},"sensors":{},"serial_chooser_data":{},"serial_guard":{},"site_engagement":{},"sleeping_tabs":{},"sound":{},"ssl_cert_decisions":{},"storage_access":{},"subresource_filter":{},"subresource_filter_data":{},"third_party_storage_partitioning":{},"token_binding":{},"top_level_storage_access":{},"trackers":{},"trackers_data":{},"tracking_org_exceptions":{},"tracking_org_relationships":{},"unused_site_permissions":{},"usb_chooser_data":{},"usb_guard":{},"vr":{},"webid_api":{},"webid_auto_reauthn":{},"window_placement":{}},"pref_version":1},"created_by_version":"120.0.2210.61","creation_time":"13346676764734656","edge_profile_id":"3a37f956-b166-48ea-8ae0-38a78bf88a58","has_seen_signin_fre":false,"managed_user_id":"","name":"用户配置 1","network_pbs":{},"observed_session_time":{"feedback_rating_in_product_help_observed_session_time_key_120.0.2210.61":9.0},"signin_fre_seen_time":"13346676764747957"},"reset_prepopulated_engines":false,"resolve_navigation_errors_use_web_service":{"enabled":false},"safebrowsing":{"event_timestamps":{},"metrics_last_log_time":"13346676764"},"sessions":{"event_log":[{"crashed":false,"time":"13346676764763682","type":0},{"did_schedule_command":false,"first_session_service":true,"tab_count":0,"time":"13346676781230827","type":2,"window_count":0}],"session_data_status":3},"settings":{"a11y":{"apply_page_colors_only_on_increased_contrast":true}},"signin":{"allowed":true},"smart_explore":{"on_image_hover":false},"spellcheck":{"dictionaries":["zh-CN"]},"tracking_protection":{"tracking_protection_3pcd_enabled":false},"translate_site_blacklist":[],"translate_site_blocklist_with_time":{},"user_experience_metrics":{"personalization_data_consent_enabled_last_known_value":false},"visual_search":{"dma_state":2,"in_context_menu":false}} \ No newline at end of file diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/PreferredApps b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/PreferredApps new file mode 100644 index 0000000..7d3a425 --- /dev/null +++ b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/PreferredApps @@ -0,0 +1 @@ +{"preferred_apps":[],"version":1} \ No newline at end of file diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/README b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/README new file mode 100644 index 0000000..4a34402 --- /dev/null +++ b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/README @@ -0,0 +1 @@ +Microsoft Edge settings and storage represent user-selected preferences and information and MUST not be extracted, overwritten or modified except through Microsoft Edge defined APIs. \ No newline at end of file diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Secure Preferences b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Secure Preferences new file mode 100644 index 0000000..86ba2a9 --- /dev/null +++ b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Secure Preferences @@ -0,0 +1 @@ +{"extensions":{"settings":{"dgiklkfkllikcanfonkcabmbdfmgleag":{"active_permissions":{"api":[],"explicit_host":[],"manifest_permissions":[],"scriptable_host":[]},"commands":{},"content_settings":[],"creation_flags":1,"events":[],"first_install_time":"13346676764768529","from_webstore":false,"incognito_content_settings":[],"incognito_preferences":{},"last_update_time":"13346676764768529","location":5,"manifest":{"content_capabilities":{"include_globs":["https://*excel.officeapps.live.com/*","https://*onenote.officeapps.live.com/*","https://*powerpoint.officeapps.live.com/*","https://*word-edit.officeapps.live.com/*","https://*excel.officeapps.live.com.mcas.ms/*","https://*onenote.officeapps.live.com.mcas.ms/*","https://*word-edit.officeapps.live.com.mcas.ms/*","https://*excel.partner.officewebapps.cn/*","https://*onenote.partner.officewebapps.cn/*","https://*powerpoint.partner.officewebapps.cn/*","https://*word-edit.partner.officewebapps.cn/*","https://*excel.gov.online.office365.us/*","https://*onenote.gov.online.office365.us/*","https://*powerpoint.gov.online.office365.us/*","https://*word-edit.gov.online.office365.us/*","https://*excel.dod.online.office365.us/*","https://*onenote.dod.online.office365.us/*","https://*powerpoint.dod.online.office365.us/*","https://*word-edit.dod.online.office365.us/*","https://*visio.partner.officewebapps.cn/*","https://*visio.gov.online.office365.us/*","https://*visio.dod.online.office365.us/*"],"matches":["https://*.officeapps.live.com/*","https://*.officeapps.live.com.mcas.ms/*","https://*.partner.officewebapps.cn/*","https://*.gov.online.office365.us/*","https://*.dod.online.office365.us/*","https://*.app.whiteboard.microsoft.com/*","https://*.whiteboard.office.com/*","https://*.app.int.whiteboard.microsoft.com/*","https://*.whiteboard.office365.us/*","https://*.dev.whiteboard.microsoft.com/*"],"permissions":["clipboardRead","clipboardWrite"]},"default_locale":"en","description":"This extension grants Microsoft web sites permission to read and write from the clipboard.","key":"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCz4t/X7GeuP6GBpjmxndrjtzF//4CWeHlC68rkoV7hP3h5Ka6eX7ZMNlYJkSjmB5iRmPHO5kR1y7rGY8JXnRPDQh/CQNLVA7OsKeV6w+UO+vx8KGI+TrTAhzH8YGcMIsxsUjxtC4cBmprja+xDr0zVp2EMgqHu+GBKgwSRHTkDuwIDAQAB","manifest_version":2,"minimum_chrome_version":"77","name":"Microsoft Clipboard Extension","version":"1.0"},"path":"C:\\Program Files (x86)\\Microsoft\\EdgeWebView\\Application\\120.0.2210.61\\resources\\edge_clipboard","preferences":{},"regular_only_preferences":{},"state":1,"was_installed_by_default":false,"was_installed_by_oem":false},"mhjfbmdgcfjbbpaeojofohoefgiehjai":{"active_permissions":{"api":["contentSettings","fileSystem","fileSystem.write","metricsPrivate","tabs","resourcesPrivate","fileSystem.readFullPath","errorReporting","edgeLearningToolsPrivate","fileSystem.getCurrentEntry","edgePdfPrivate","edgeCertVerifierPrivate"],"explicit_host":["edge://resources/*","edge://webui-test/*"],"manifest_permissions":[],"scriptable_host":[]},"commands":{},"content_settings":[],"creation_flags":1,"events":[],"first_install_time":"13346676764767684","from_webstore":false,"incognito_content_settings":[],"incognito_preferences":{},"last_update_time":"13346676764767684","location":5,"manifest":{"content_security_policy":"script-src 'self' 'wasm-eval' blob: filesystem: chrome://resources chrome://webui-test; object-src * blob: externalfile: file: filesystem: data:","description":"","incognito":"split","key":"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDN6hM0rsDYGbzQPQfOygqlRtQgKUXMfnSjhIBL7LnReAVBEd7ZmKtyN2qmSasMl4HZpMhVe2rPWVVwBDl6iyNE/Kok6E6v6V3vCLGsOpQAuuNVye/3QxzIldzG/jQAdWZiyXReRVapOhZtLjGfywCvlWq7Sl/e3sbc0vWybSDI2QIDAQAB","manifest_version":2,"mime_types":["application/pdf"],"mime_types_handler":"edge_pdf/index.html","name":"Microsoft Edge PDF Viewer","offline_enabled":true,"permissions":["errorReporting","chrome://resources/","chrome://webui-test/","contentSettings","metricsPrivate","edgeCertVerifierPrivate","edgeLearningToolsPrivate","edgePdfPrivate","resourcesPrivate","tabs",{"fileSystem":["write","readFullPath","getCurrentEntry"]}],"version":"1"},"path":"C:\\Program Files (x86)\\Microsoft\\EdgeWebView\\Application\\120.0.2210.61\\resources\\edge_pdf","preferences":{},"regular_only_preferences":{},"state":1,"was_installed_by_default":false,"was_installed_by_oem":false}}},"protection":{"macs":{"browser":{"show_home_button":"EA800F5EE48227D9031C37000CC883F5B62375881D857AE17092BDB9464E3081"},"default_search_provider_data":{"template_url_data":"460E21D1A8DC848D36DAFD5C2E7D17B3A7B8020F57F17FC45FE1319CA9F88E62"},"edge":{"services":{"account_id":"E3C1C19FEBFDCF6AF5FB5625C8FA6D2D0CB8B6A850C085F4FBB3F99FA78CAFB8","last_account_id":"A564A420A508C090B3F18248816D12211551763EFCBD1CD95D59173408896807","last_username":"84EB5041BF3D977093D96C702F42DEB0D36A7CE0BA6B867882F4F56378496051"}},"extensions":{"settings":{"dgiklkfkllikcanfonkcabmbdfmgleag":"87990044879454583442B7CB3F79A843D3EA262B18B4297A8D3229533642C97E","mhjfbmdgcfjbbpaeojofohoefgiehjai":"0317C502F879C7BC217B1BE8766FC43C10E9D17F0E8D31B9BB9B1C64E9239A5E"}},"homepage":"538130263CC919E5C920D23129CF14875EA61AE5797CE60A62BBA84E4DBC867D","homepage_is_newtabpage":"79BF399D6B6C67F2BE9C8B3D6138791D385B673D491EFE5BBBEB5FB6006863F5","media":{"cdm":{"origin_data":"E993EC7DDBE364D199525ED9B1D990F827DC6E5DF44EA6A422123CF2DD4B5850"},"storage_id_salt":"2B8F881ED1BD2D9459562AC83225E9C5CEA9C81257CCDFEFF1DC96CC5A712742"},"pinned_tabs":"37B1F00613332527EDFAC68C600D979BB8A6D35350D08A7AEBA86CB2FF947677","prefs":{"preference_reset_time":"B96612BD02EAEDD9684B2E0F166908E34D078392F4F1A6634C73F5F07CA6D6BC"},"safebrowsing":{"incidents_sent":"CCBFB88EF13AC0EE9A87739AD267E224B93DF5A899A6AF1A6AA7C4C764346952"},"search_provider_overrides":"65AE3F21B3D8FDED76999BD25A64374EB92E6542CA9BB68FFB8538F5DEEBA21D","session":{"restore_on_startup":"09D5857FF24DCA9E22DF8C95B4C5C93FF4048E6646D5D3938FDB3D68D25897ED","startup_urls":"11E365227188EEDF437D37DD3B0DFDCFD335037A5DCC44B90596DF5D831D11CD"}},"super_mac":"4350A7C0986A2C85D3ADF8C34CEF6484A75115BB1CD1303273BFAF46DCD9263A"}} \ No newline at end of file diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Session Storage/000003.log b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Session Storage/000003.log new file mode 100644 index 0000000..9cc1734 Binary files /dev/null and b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Session Storage/000003.log differ diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Session Storage/CURRENT b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Session Storage/CURRENT new file mode 100644 index 0000000..7ed683d --- /dev/null +++ b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Session Storage/CURRENT @@ -0,0 +1 @@ +MANIFEST-000001 diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Session Storage/LOCK b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Session Storage/LOCK new file mode 100644 index 0000000..e69de29 diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Session Storage/LOG b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Session Storage/LOG new file mode 100644 index 0000000..7839b75 --- /dev/null +++ b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Session Storage/LOG @@ -0,0 +1,2 @@ +2023/12/10-18:13:01.225 66ec Creating DB C:\Users\home-dev\source\repos\TestWordAddIn1\Webview2WinFormsApp\bin\Debug\net6.0-windows\Webview2WinFormsApp.exe.WebView2\EBWebView\Default\Session Storage since it was missing. +2023/12/10-18:13:01.241 66ec Reusing MANIFEST C:\Users\home-dev\source\repos\TestWordAddIn1\Webview2WinFormsApp\bin\Debug\net6.0-windows\Webview2WinFormsApp.exe.WebView2\EBWebView\Default\Session Storage/MANIFEST-000001 diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Session Storage/MANIFEST-000001 b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Session Storage/MANIFEST-000001 new file mode 100644 index 0000000..18e5cab Binary files /dev/null and b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Session Storage/MANIFEST-000001 differ diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Shared Dictionary/cache/index b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Shared Dictionary/cache/index new file mode 100644 index 0000000..79bd403 Binary files /dev/null and b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Shared Dictionary/cache/index differ diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Shared Dictionary/cache/index-dir/the-real-index b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Shared Dictionary/cache/index-dir/the-real-index new file mode 100644 index 0000000..d3e70a1 Binary files /dev/null and b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Shared Dictionary/cache/index-dir/the-real-index differ diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Shared Dictionary/db b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Shared Dictionary/db new file mode 100644 index 0000000..4e16ba4 Binary files /dev/null and b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Shared Dictionary/db differ diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Shared Dictionary/db-journal b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Shared Dictionary/db-journal new file mode 100644 index 0000000..e69de29 diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Site Characteristics Database/000003.log b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Site Characteristics Database/000003.log new file mode 100644 index 0000000..46580fb Binary files /dev/null and b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Site Characteristics Database/000003.log differ diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Site Characteristics Database/CURRENT b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Site Characteristics Database/CURRENT new file mode 100644 index 0000000..7ed683d --- /dev/null +++ b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Site Characteristics Database/CURRENT @@ -0,0 +1 @@ +MANIFEST-000001 diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Site Characteristics Database/LOCK b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Site Characteristics Database/LOCK new file mode 100644 index 0000000..e69de29 diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Site Characteristics Database/LOG b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Site Characteristics Database/LOG new file mode 100644 index 0000000..6d0ca27 --- /dev/null +++ b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Site Characteristics Database/LOG @@ -0,0 +1,2 @@ +2023/12/10-18:12:44.757 af88 Creating DB C:\Users\home-dev\source\repos\TestWordAddIn1\Webview2WinFormsApp\bin\Debug\net6.0-windows\Webview2WinFormsApp.exe.WebView2\EBWebView\Default\Site Characteristics Database since it was missing. +2023/12/10-18:12:44.763 af88 Reusing MANIFEST C:\Users\home-dev\source\repos\TestWordAddIn1\Webview2WinFormsApp\bin\Debug\net6.0-windows\Webview2WinFormsApp.exe.WebView2\EBWebView\Default\Site Characteristics Database/MANIFEST-000001 diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Site Characteristics Database/MANIFEST-000001 b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Site Characteristics Database/MANIFEST-000001 new file mode 100644 index 0000000..18e5cab Binary files /dev/null and b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Site Characteristics Database/MANIFEST-000001 differ diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Sync Data/LevelDB/000003.log b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Sync Data/LevelDB/000003.log new file mode 100644 index 0000000..2b778f4 Binary files /dev/null and b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Sync Data/LevelDB/000003.log differ diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Sync Data/LevelDB/CURRENT b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Sync Data/LevelDB/CURRENT new file mode 100644 index 0000000..7ed683d --- /dev/null +++ b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Sync Data/LevelDB/CURRENT @@ -0,0 +1 @@ +MANIFEST-000001 diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Sync Data/LevelDB/LOCK b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Sync Data/LevelDB/LOCK new file mode 100644 index 0000000..e69de29 diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Sync Data/LevelDB/LOG b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Sync Data/LevelDB/LOG new file mode 100644 index 0000000..1129db5 --- /dev/null +++ b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Sync Data/LevelDB/LOG @@ -0,0 +1,2 @@ +2023/12/10-18:12:44.758 b214 Creating DB C:\Users\home-dev\source\repos\TestWordAddIn1\Webview2WinFormsApp\bin\Debug\net6.0-windows\Webview2WinFormsApp.exe.WebView2\EBWebView\Default\Sync Data\LevelDB since it was missing. +2023/12/10-18:12:44.764 b214 Reusing MANIFEST C:\Users\home-dev\source\repos\TestWordAddIn1\Webview2WinFormsApp\bin\Debug\net6.0-windows\Webview2WinFormsApp.exe.WebView2\EBWebView\Default\Sync Data\LevelDB/MANIFEST-000001 diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Sync Data/LevelDB/MANIFEST-000001 b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Sync Data/LevelDB/MANIFEST-000001 new file mode 100644 index 0000000..18e5cab Binary files /dev/null and b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Sync Data/LevelDB/MANIFEST-000001 differ diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Top Sites b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Top Sites new file mode 100644 index 0000000..9c49649 Binary files /dev/null and b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Top Sites differ diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Top Sites-journal b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Top Sites-journal new file mode 100644 index 0000000..e69de29 diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Visited Links b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Visited Links new file mode 100644 index 0000000..213aa12 Binary files /dev/null and b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Visited Links differ diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Web Data b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Web Data new file mode 100644 index 0000000..bae0d91 Binary files /dev/null and b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Web Data differ diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Web Data-journal b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/Web Data-journal new file mode 100644 index 0000000..e69de29 diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/commerce_subscription_db/LOCK b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/commerce_subscription_db/LOCK new file mode 100644 index 0000000..e69de29 diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/commerce_subscription_db/LOG b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/commerce_subscription_db/LOG new file mode 100644 index 0000000..e69de29 diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/discounts_db/LOCK b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/discounts_db/LOCK new file mode 100644 index 0000000..e69de29 diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/discounts_db/LOG b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/discounts_db/LOG new file mode 100644 index 0000000..e69de29 diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/heavy_ad_intervention_opt_out.db b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/heavy_ad_intervention_opt_out.db new file mode 100644 index 0000000..d6967c0 Binary files /dev/null and b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/heavy_ad_intervention_opt_out.db differ diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/heavy_ad_intervention_opt_out.db-journal b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/heavy_ad_intervention_opt_out.db-journal new file mode 100644 index 0000000..e69de29 diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/optimization_guide_hint_cache_store/LOCK b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/optimization_guide_hint_cache_store/LOCK new file mode 100644 index 0000000..e69de29 diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/optimization_guide_hint_cache_store/LOG b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/optimization_guide_hint_cache_store/LOG new file mode 100644 index 0000000..e69de29 diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/optimization_guide_model_metadata_store/LOCK b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/optimization_guide_model_metadata_store/LOCK new file mode 100644 index 0000000..e69de29 diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/optimization_guide_model_metadata_store/LOG b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/optimization_guide_model_metadata_store/LOG new file mode 100644 index 0000000..e69de29 diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/parcel_tracking_db/LOCK b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/parcel_tracking_db/LOCK new file mode 100644 index 0000000..e69de29 diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/parcel_tracking_db/LOG b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/parcel_tracking_db/LOG new file mode 100644 index 0000000..e69de29 diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/shared_proto_db/000003.log b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/shared_proto_db/000003.log new file mode 100644 index 0000000..b589c89 Binary files /dev/null and b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/shared_proto_db/000003.log differ diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/shared_proto_db/CURRENT b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/shared_proto_db/CURRENT new file mode 100644 index 0000000..7ed683d --- /dev/null +++ b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/shared_proto_db/CURRENT @@ -0,0 +1 @@ +MANIFEST-000001 diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/shared_proto_db/LOCK b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/shared_proto_db/LOCK new file mode 100644 index 0000000..e69de29 diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/shared_proto_db/LOG b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/shared_proto_db/LOG new file mode 100644 index 0000000..bdcb125 --- /dev/null +++ b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/shared_proto_db/LOG @@ -0,0 +1,2 @@ +2023/12/10-18:12:44.805 ad5c Creating DB C:\Users\home-dev\source\repos\TestWordAddIn1\Webview2WinFormsApp\bin\Debug\net6.0-windows\Webview2WinFormsApp.exe.WebView2\EBWebView\Default\shared_proto_db since it was missing. +2023/12/10-18:12:44.810 ad5c Reusing MANIFEST C:\Users\home-dev\source\repos\TestWordAddIn1\Webview2WinFormsApp\bin\Debug\net6.0-windows\Webview2WinFormsApp.exe.WebView2\EBWebView\Default\shared_proto_db/MANIFEST-000001 diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/shared_proto_db/MANIFEST-000001 b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/shared_proto_db/MANIFEST-000001 new file mode 100644 index 0000000..18e5cab Binary files /dev/null and b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/shared_proto_db/MANIFEST-000001 differ diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/shared_proto_db/metadata/000003.log b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/shared_proto_db/metadata/000003.log new file mode 100644 index 0000000..5edde54 Binary files /dev/null and b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/shared_proto_db/metadata/000003.log differ diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/shared_proto_db/metadata/CURRENT b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/shared_proto_db/metadata/CURRENT new file mode 100644 index 0000000..7ed683d --- /dev/null +++ b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/shared_proto_db/metadata/CURRENT @@ -0,0 +1 @@ +MANIFEST-000001 diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/shared_proto_db/metadata/LOCK b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/shared_proto_db/metadata/LOCK new file mode 100644 index 0000000..e69de29 diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/shared_proto_db/metadata/LOG b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/shared_proto_db/metadata/LOG new file mode 100644 index 0000000..c06cd79 --- /dev/null +++ b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/shared_proto_db/metadata/LOG @@ -0,0 +1,2 @@ +2023/12/10-18:12:44.797 ad5c Creating DB C:\Users\home-dev\source\repos\TestWordAddIn1\Webview2WinFormsApp\bin\Debug\net6.0-windows\Webview2WinFormsApp.exe.WebView2\EBWebView\Default\shared_proto_db\metadata since it was missing. +2023/12/10-18:12:44.801 ad5c Reusing MANIFEST C:\Users\home-dev\source\repos\TestWordAddIn1\Webview2WinFormsApp\bin\Debug\net6.0-windows\Webview2WinFormsApp.exe.WebView2\EBWebView\Default\shared_proto_db\metadata/MANIFEST-000001 diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/shared_proto_db/metadata/MANIFEST-000001 b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/shared_proto_db/metadata/MANIFEST-000001 new file mode 100644 index 0000000..18e5cab Binary files /dev/null and b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Default/shared_proto_db/metadata/MANIFEST-000001 differ diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/GrShaderCache/data_0 b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/GrShaderCache/data_0 new file mode 100644 index 0000000..ebc595e Binary files /dev/null and b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/GrShaderCache/data_0 differ diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/GrShaderCache/data_1 b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/GrShaderCache/data_1 new file mode 100644 index 0000000..30fbd94 Binary files /dev/null and b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/GrShaderCache/data_1 differ diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/GrShaderCache/data_2 b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/GrShaderCache/data_2 new file mode 100644 index 0000000..c7e2eb9 Binary files /dev/null and b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/GrShaderCache/data_2 differ diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/GrShaderCache/data_3 b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/GrShaderCache/data_3 new file mode 100644 index 0000000..1df24e0 Binary files /dev/null and b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/GrShaderCache/data_3 differ diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/GrShaderCache/index b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/GrShaderCache/index new file mode 100644 index 0000000..637c20d Binary files /dev/null and b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/GrShaderCache/index differ diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/GraphiteDawnCache/data_0 b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/GraphiteDawnCache/data_0 new file mode 100644 index 0000000..d76fb77 Binary files /dev/null and b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/GraphiteDawnCache/data_0 differ diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/GraphiteDawnCache/data_1 b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/GraphiteDawnCache/data_1 new file mode 100644 index 0000000..dcaafa9 Binary files /dev/null and b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/GraphiteDawnCache/data_1 differ diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/GraphiteDawnCache/data_2 b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/GraphiteDawnCache/data_2 new file mode 100644 index 0000000..c7e2eb9 Binary files /dev/null and b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/GraphiteDawnCache/data_2 differ diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/GraphiteDawnCache/data_3 b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/GraphiteDawnCache/data_3 new file mode 100644 index 0000000..5eec973 Binary files /dev/null and b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/GraphiteDawnCache/data_3 differ diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/GraphiteDawnCache/index b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/GraphiteDawnCache/index new file mode 100644 index 0000000..a1d3c2d Binary files /dev/null and b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/GraphiteDawnCache/index differ diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Last Version b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Last Version new file mode 100644 index 0000000..e2406dd --- /dev/null +++ b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Last Version @@ -0,0 +1 @@ +120.0.2210.61 \ No newline at end of file diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Local State b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Local State new file mode 100644 index 0000000..cd284d1 --- /dev/null +++ b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Local State @@ -0,0 +1 @@ +{"desktop_session_duration_tracker":{"last_session_end_timestamp":"1702203181"},"domain_actions_config":"H4sIAAAAAAAAAL19W5PcNpLuX1H00+6ECmrdLMv75OPx7Dh2PHZ4veGIM+HoSAJZZDZBgMKlqtgT8983ElUtdatIVCflcx4ktdj8cCOQSGR+mfjnFexe3mhvUN9sEVIOeKM71P2N32EIZPDqm39ewTha0pDIu3j1zT9OD9DcjN6Snq6+ufppTD/ldPX8yvgByF19c+UwbS0dlPbD1b+eSyAxZUM+HpG/P78qCMJjzQ4GfAhO08j//3b38jvuxF+OffiOu3B6h4vYYYjk3dU3L//1/EqbQdo7Z6fvD6OP+LOF6RcEMz1sd7Tk2kpHP6J/I4M7cvgQnHxWabcGOcDB+AGVwTVoaPTqJu8UI3At3sI7RWkN8rAlR2laW/Eeku7STmlfm5fVIqh1lDDtVPAthri2mMZm1DnsuKTYwV5pWFNMh7zEdmTQp+Dd2tboQAkDeac7cA7t2nJcgtTxlFz7ffx+DBjRpTjavHpwd91h5ZLqss1ra4VxVB8y6b5DO64t5M8Uu2/dtO8wYF0AzoqkkzTkR6E84iacIR5UfAJ8fHIuLMvWIBOXfyWDP27/ijtdZLJMdFTAjlxCZ3x1YM7xpz4+fDjTzYFH5oacJYdfvPnxXGgDDAMEW5NWZ8DYQcDRk0vrUBuzFe24nrulon8qwNKutrrP3vfbLWkZwqEJ62pxuLSpzPdD8H5CGKIaSAcf/Xblx1E5PhWk/TB4x9PIh/aSFjQzm3mhpJst2YThxrsbv93exD0l3T1tSn93LOEvpYBHSsfjIVho2GP4WftQj8Il9rMFcr/iIf3PL3+LLMkeSW1wrc8pqtb7tiZbqqXoDtKXlRAt6H4ldgsaG+/XwvdYmr8WTAeqKA9V8IcPq2ttsKKG1bE+GNYUKipCFZ/2lBKGlWhDUftgqitgroDTRvT9dz/zg/JGOr0xs0ZYphE6Pd0M3ki3pMZ63T/SnJuaznv2+mhhUi1ufdDo/F6AtNmBggHuauroGWq/3yuuM6bSKwGyqZ69zl8Pfh8xNOh0d5StT29fIKdptGgS6s5561vCygw8LwQb1UDEAUJlnZ/BBn9H1oJqKXW5UbSwWZ/hujTYtwljRSycYRzq4Adwqaup37PDs6dQVezOQF4ncMgN5H2uw+D7zD89vQTdBT9QHsRDc6xa7bHhbxEVue1ToTrG18JB3ZLFqDKfXF8byYePZSG8+NMLXhqLouYeFxAiS4+rT6Lm6vnVDmwuP55LGNeB03hDA7R4M5C7sTD5nG4i3UnlzWfoh734k9pTTyMaguUFV8FflNUVLLmYgBXxVeiTFPuTGDiyYA/VSVJr9GCaVcDLOkQV7IxfOU71E10FqQPpJt/drQJbcj2amuJSAbfWN34V0k2Jhprcr2AxxcpxsDqRDcH6epti7FO5l1fcI6ybT5bGHsK6JdDUjJO18Y3juumADUwrFnqXQ6AJSydVCvKVYy22wavRyofI+76q+lSwAwYNxlvaHa1MqpE3vQmUwDnS66ZH74cRavp7TWq4dR+ZTZMGR79uThpMtE60OurXiceBrP2S6TVAC3fk0Ga6g7UfeoCw8ht3OEZqcgCzDq+970eoaEy1rwVkpwHIrpR7sG5qtnGAgG5df8ntMKa1ixos4eHCofiC6OTtmFXh9VvUuvVhik9mjfoA1EZLMa3SLLfkWAFWE3T+C/o8rN3lenJ+9BR7FbIY7B2mNftG66Hi36lqwxhIgzuujDWS5Di//fEosEoe8npeMVYOdisPEN06jbjBmJo8VS1E5/D7o9r760uHNdnhzFCExj5uIEuZBX1n5vUBxg+ZzzNPh8SpJS2pIlY29Zn3eeByU9lXZzB178Vcoy4b/GdHa/LakiO9LJZmYOQMYmW3m62J7CXxNQO7ZOWegTjqVOsXnKpzLeMJCsNmj02snt5nsYa9cMUFLKmzCUCu+NsUmSejQOu8R0idvJWkwTrcx+QNVM51M2BttKhrGoYmkGlRNqOs3+FYcwnOjeJ0W7P9zY2g8cKFiOP2qC60fqfIPX0YLO7QgjMrlpcGt6tsOzOIow7p6wbpGZwfULq8DGmuBoJsGnU+xQSyeau9teTi/6sak29by+bERG3ZlBZteQv74qdKT0bM/84jhl8wepu5vHun5ydmw1yV89hfy5s/fnrxbJ8lY4W764mFEXBLBzTf//j9Y3v6BRbcU9CPCHHiQoYcSX/yyKjb8Q8oZOlEJSnkizuzRHx7egm44JB/egnbBTX46SUsiT9BCQs0BsHHWGCfiT7n4pGgWsoF8mQV60d0ZLR3DnVi7xrc5YCsclDCeOR3LEiZuXLv2VP3D4cZPhTv+nCz9dmZIhTkVKEfHknEh2rs86sRUneDB20zF/iPqxex8yHFq+dXL3oy8er351cxN0fww/fSTj0u6CgyPnu4C48e/F6hlfzwQIb+yF3+y8ceH3/7QPx+zsU9f3+WpDIGisMNHkbrA5NUvpBy9WowTsLooaHdxM0Q3YanLvQwAN2hkRQxM9ueBuTT1wYP49LxaB4hIR2xQ1YDxYgbHCG0Dhcl1Rz5yOCIbtGdOoMICAnX8aMMbtEZDAHufEWvmANGah2GldV610Iwrqb1z6Cy7vlPWzlwnaMuO+ZmMAFxw39ptHYTvaUEFES0uNMx78mT7Ph+nJw5LT5JZdT6zZ6JFRAS9WiXaelz0DH4LdmnN/UIGbwAcdkVPEcTPLkYn1yNlCB5ybKyHFjxZMAKDmZBwDhGJSZ8jugCkN3DNMC4fECbQeZUDvA0iCTdiAe0Nar4OSETIehOXTAKLuIumFv+ME5v73c1f9MMIkHLG0vZXbi2J8+QmHyAFsUfO+60Gp7Maa1aBOcot7pjGmzhzayT8Yn6JJO6F8kmM1stNmrfQYpV7tI5boJhkNV00eQ5t5UXIq6yKNuxRgiJt0YpLnZ+VM2rZg1wH7wfHgCfpp3+zGrk9yct8tdpxIv66RxiVkNlcubNGPBkKvliFTUVAvZyaMr51FoxrQIaQ3V29mcjyCzVnz/28uLwnb0+O3Y5YriBllnosmH7s/+7Tz/dQz5TaR8Yrk+HpQEKp/0fVy8KGRCvfp8dp+/KL//n22+d+c4SuvRXcuVc9bH4r9+wvVmjSrQ83PfFfN4uC67N0CJoMDgUi5qCBT/VXBktS95XqgVvckXrmoMWqpmFHsc46Y4gFR9u8ll3ilycnO50ZXucK3LMNqJq0WGkuPfBVpwSi58LaVRab+OgfFD9wtnjz2H43rSfVd81vko5XgKNPqTc1rybS8iaqKpgmgXdpgIJC0eqWsvuBHMxaJU2g2+oZn+eQ14KJj1vHTcNHFhDLSWwaktrkW5hUC4j45Nb+whmmC77yZDyUYZ8Xnx5j7kJnz2sy5hHx4FKqOvsajaodHx7vXj2nv123uFUP9rMwRrrW4UxJwyVoMc5ZBzA2iZHcsw2+aQQn8nk+3cG6DEIhq0anDw7BFO0bIGIdBi7AFE4+++PBD6k06n3rCsuxviTazwEQ64V9GVHIWWwO4qUOGTAqZNyFZdPR3PlaAh4xDdhApfQYnFBkhN2dgyeI4ZDTFp1UeUEFdfu7NcZR8t7jTXcppibSGZSYBsMCRZtyXMloUUIjm1buDvakHfufOhLryWzJ6fOBy4VBgpxivNfVFrsp8ZGhAZc/8c1eBzVltAabmlIePJTfnG5bfygBnI+OKycm2YXBOvxlgpr2Ak2IJ6VHYJNHe/GYFX223x8IJvtZbmwGiBCsS720EN5NoLkXvB81YEafDHCNKBLLwZMnTfxheFo4forWguGP4VJg4rpvBlH8zzXNubGUuxk0jGmwJpB+bdMwmESrV6lLcTYUy1acXYFHDhBQIsRw440anT3Z+WzHrLl8u6SNv5oNwLHdmevNRkut/RL+/OSjxMrBXARtGYXtl2o5ofvP6tiUO0d9uCVnlm0KbzYYxOwJSasvBA0PYLNRrHysKDmzmoG98JEd9m1BmpMs9m17T2fl1Eo/BM63jsqfMv5LYNc2mY7/60NxK5sjC8MbiHbJBi7LbjI0ul2nFklnGxDIu86cLC1PoAdfXwlnNs2+AksaojkfONdjrVgi3k97JZef/VWeHzE5tX1q2sFCQZQfAZd22ZZvZBjJOTAslV93QbvktoR7ssBVMGC9j+HLZSpzKv8uNrC0dnghpgVGsGxmUUZlp1C1vhAuhvBDsI+W7JTkZwyWEdbWzvPzuuzCjZNLXfE0ngMUwKmgY+XzP6zPSz6ZedzGP0ewxiEk0oHmDz7faER6+CPJ/OJur9qQhfPkPAjYVZxIIsDJOmYsdE84MBD9XSUD6akD8pJ++JoEX/osYMwZFslcC1uPGqA0WLdnj671eXyVojDQcVh3EBOnhlyNb/B7Da0uz8FFbbmAo19Djn1WnXg9uDaWwI/CY+uFjQlVBg5yxCBjT1ZG9vgc8XKurBCOYYQbHZULJ9pkgmv5BNYVMFHTAli8tJzHB/92sIHF84eDSNbMrxDv91Wk1jNfgAfGkp8rjApSNUPFkyDN+p0JOBwf1SDW8yMUivD+E7tQXZ0ZRPXkv19dnf2+yK6F1lz8/qg6zMIzchjwDshBGzrA6WBelhyq832qaOEHaTbivNp6XAV+6l4aXzJkyQ5zrFq30GSmpq40il/yMJ51ln7Qbigs3tgvZcYTu+8Q41CgxWPxWYUSl8HLGk1DOMy22hB4QpSDaQwiLpqNNnsNKZDqhFHFo5+vTIBYdi85LW25C2YXWvUggKTS1xS6xtlBJtw5Bx8yIk9dgQnkSRq+a4shhQynqx8F7wlsxMIUxKqOm0AxxkEt+ASxEkknA4EfgDePoU7NpswUTiJdqNTdwMcaIV+c0tthOPpArRcw+D5+yFj451I4A8QogLbqpMwkFW4tUzKJKHk4ZjRVLRtnY52S9kEIlePqFtsbdF3pRK5o4B8MFjiLc9qXXuWI6Y1mnUkNr88Gdqj7j/auUXGwB5o9D2qhgQGTJ55TNUrjMYaH3FW+FmYMCxGZS6eHpi7rKGWLmTBcqBOdCvXrBHvTPuZiuEmVZOHLeGZobO1mXNUyc20MOxLzJRM2vNKibrz3qpGoH40g9JdpKNNUTD5uKFu00LPhgmZDpg4KphGrT5YUya9jA/AJwuVwPYbbX2u0JKXNsV7YvXqzfGY8sqnwslzrVCCMzpAwFtfyWWzpBgBpw08KjtCSeo1QVlSkgMFt/Wuo056lCzGkjhA7NDkS4zZBcltGm8mkbe3y00LnGNXMI8HbEHkxzkealUPd27MqpdQEPZ7ddtPbAMSfnhLo+5Yt5UdR++Y6O4IpPbPIughGA42k0F76KW1NZYa6Vl5732Kygk2kz025CAocNOAWM8ksfTtdmCFu17YgzOg0IAWnp28s5N3uPXesA+AtgFjJ90T9sdu5lGs0mofvIMdhRzVAGHiwFKZOaFsZBaC0HdTthXKDd1hOUcfc7OMgg2N1eI2QDGeCeRAHIGNXoqF7NNRL3UU7X2s79/7xwVfI8fkh6h24KJ4oz7aIxTkbYCE7i4H1cAe2jEKW2HiqDofIr56I5zLbNBVfDY/bQOiDb/R4513ELHNARpMoHYEjRbKQp5Xh9T1oqGzbLouHPXNaCFtfRgWWWCzZzytDIG9fnctXrnM6AQfqZwJJB29HVVrIUWxHQqs3RRLwwptdxpXCdSG0ggjBtEmn/woVslL5n1qfJLuvDv2ozsM2N7bZdfIQe0HiHEHB/lZYEglW/2loP7lLYvbD3yFwYq6T4Jf3PBhOg0WWIi90A69PSgzCCdhP2lFmjTJZWtn1OVkQ7PrhXxkvsBi9OC8tuk4oETkD7NsqdGeliOqFwybagsNhiNVSejI8iHxCecw7bzU6RenWK7JUaesHGMkPIDYoexb79Qw9aNwxRbv7CvezDm4Q3Q27LJrUOhoiNRB6EEN6EZwzHRZyq+y6HAsbLwRDhahOD5Z5O8kmgs4mCiSJquOP5fcIUtJ8eY9LEfeo0powXipwd4btIWmIBntHiz6SnrTWRUEi/d6nWcYx6hu4yg0KA/gSuyY6jasEIu0vZHcNsAWdMoB9L3yMxxkRzGO/yk0DskX2eww0HYFSQIOlAeIGp3QWH/iraxi6+iJJ32PYGohEfN+isK3U8UOWsTOEvF9fpzcTrVhGjvvjBHOp48sb51ZsxYOFyuU5PKw8WMJ+RGibw9JWYdOpM8WG2FR1dgQJFh2Xl++QWIx3IWTmfKtBF9QRIIefb58B8W8lRwsdD4rve2S6mAPRDI6QhwRdcchb7WgxPkpMq3VSzwoGvKUQWg405bjIA2GAfhHVcs+sjjeQ3TFLb3iUw3RcT6ONcj7OFYmwS3O61rF65q7qircxz+im2vLiG5TNQc+dZDX1Iz7ONS9ak+rfevDyu6jaTlbZskwovg/p6srPoVCb+4jvrdgtV/O1/ElVaRjRtrVVUCDAyx6YJdh2odlx+0irCFL/GfFcOsOeKPbpJ3ygUnuiweR5SKSXjxcLYJMr0rAYzC1I8wi/BgjuORxXIRxzlx0KpGpxkvW4eRaJvFNqklx0+R64HylrB1uXMOBEmyYkS423SqDmsYO+XqWFfXXb3lYrviY/ap+9cEimiNbTKylPV6E+r738pXBjmIVR5+q+nIFnrziDo8Lh59lZFlMn1bVUsq1Zc2KryLqGj9AJY1eHb0HGpdvWV3ERrYQxFdvFGnpqv4IXTWpjyDlV232cQ811XdZ/dypAH1msVDhO9bgk88RkQNkpdDUYa982Kolt8Qidqd8vlWg5Q0u7e0rhudlJO+Qfkfs4y9JasVz+qh3mqFPmziuaHqBZ4eHtBLM1x5hqtsgl0vw5hgSXb+ktYpPu1G+a+385Nlg2/N1BlE6zQraeQ6uXPBnL0PTsMg3WU5YwYFMKo6oU8jDst2oXsAaDXRPrlchyZURNoh/VUSmWPkprtAUMJ5IUCtazSVkQ1V/fBX9JZPyyHct1x9XPH91eMhOd1Pwdo1OxSUYuBOehAuKAuq0q2axqNW6JTvQcjLUOjY3K7SR4vmzcLcO2Xk/WrjPx7CuzxwgflfhhtbB1Wuiq9D65V51aE1dXJobtKN1YmCY3q4bnIspj+vo0R+pc0u8lyp6hACDzy59gRAYEbTX/Srd/HRN5IBrDUuFNpei0t0KYASb/DrJfdQ471ZscoUHatFhSruVcJdMYHP6uuG6kFWrit1Rv8ZWUKC5RlqoQvfIAWMoN6YUoiK1LR/5xf2dwBk8yIXBEzLvLZ/tC0VyT874fdyMY+XO7QtlfGzFiemD0Fo8KKpcoyAs8VM/Y6Hc/iGFrh2yz8tZIuQIi1lyV9WL2eT4h3XsPurzrDypebq4wOv+0WWbxIXQ6AtAjvEXj6Qv9JzS4GEp3vUC+Evm/LGEL5zjt+Ril0/8e4lP7pjgps0BXy6POiftev/+bGfy+W4zkFkUXPOwYXrz1TKfZx4TvDa4DeVOsMW8/mfIU6Kbkzr60V+a0HJmA0l3MY6gcVMIN5sS+OQKqRys6vIArhZFNdujV4rTKxi+d1elBY3iHEgx+OrFLOcQH7OLoIxxxzzo56k8WhhJkMkjSDOU8AwjR6mewnYWmShdunZvljOxlvXfsbWf72wW+jxh1Llsws/kIAmV9sBUlyCm4OYIx+iuVsCPKUMYEIRknFOonJA1WpTyL2DR3Qfo3Uk95B9sQtDVC6ZmXfIdjY00fobjqsQufOf3Hz+64OPZiDuSog4ZOV2CkBNF7cWc9PNEAYhRQxAGUO2RNMpjZAcqNyTuapeHLjB0wOJYVo+EOHXrG8MMiqcjEoxdYVtEY8UcPBgDOkN3cMtUpONiHwURsvfrRxg7k/R0Semcg90dDuJgU1L6Qxaj2sKWFkF4x+GYM3PadkRg4wMkL10K+VPGMUFdn2SmM6zaCAlgvRujlO0WcBgtG2KDiKocu0yxg0LQlCmnFrdSYtsHjVQunRXVVK7W2+aUA94r0SLR3oYSKiESZcz+w4k+CCeLcxjZrSYh+g5kapfFz4sUb61XOygJdFJOXpqOpoROF3ahePsymaeKaDRZvdQ+B2lyK+tdu5WGk7cB0R1SALN4icvsrgD6Qya0sI9SGdHSDhvQvfAb3MEH5VDEGmaBKYmT32KjZZ9qgAk6kmbh0ePw+p0K2IecBnQNiVZAT6awvUQNZfPpiIEDr8rRUzaxSjavVQkrSgI+OqyiQVufIg4jBVyVPTCkU74UTlG/0VJ1ulHv33uHQl792B0UbjQEDtMQJCmOnVwlwA8HkoaTZ91PiVoMm+PVRrKVu40q+X4S8OdHCLSDrgR0LB/2FyTnFsVqSw93wBu7UPvj/APMfNdYHCMiucRB/bTq7JXdVig6LGLiQ9RGC3sYU1aUpsMqv2AHieIw3RM3L1a8fAEGaA2iNJ6p19LMaL2/I54GsgGiNntxxH0bvGdTkMQ+4ClGB8Kg2xHJ0uSFq/2U95lca2krlPkmap+FwaHDVDLa0A5Lam/ZUGbqMkzSm0ngdjCbQapZH7WrqLYaHmyKfHsbpSwN0yunFzb0lPCzXEw+onh5znCYNqsSw32S56vS8+q8kya94zsMNjGR7sX2H0zRkzQ+5/17cQrdxNw5icSg43x4+dVrWXRuRGs5PIRdw8Kw9Byi8VrzdaI+GqdevnonU+huCdhPIlzUuQG6z0ChQBC4NCIdsivLUzK1jzFliZJ0R761sEIhIqMatC3lZSbd/MGppR5WnZaP92aNCaw0ORqHQzagbve5xiydPeEPStuUZHO1RCQWLfwoaKSxzGBrMRazQhZdzFEWsm4ojjlx6jctzgqJQ2NxWJNh8WOq7jVKMSdyE/t1Xg/kNsc033671U7xdUqSuUNWOXEW6S0ldhsWu+AhydfXQNJc3Xu/L3mkJNNbRwKx1auNflQRtYowxOxaoTB1tyMHYvG9ZtL4USayupx3KMy0ANafbp94ujiNY1LNLe9WSWwNRtYCY9dkYybRVmXznUr6uGWkvQDn9vZO6FiaonxW7rHZdLlR7eF2uptkVtndhVvlFwR3Zn16Az6o7D740IvSrpDb8QKEAQMd7W4yNaqjaJJCKzV5f2QNcHbWTpbbrWvUnb5tqsfx5fMjNopzuGsQqum8Z+0XbmjZZne8l4UMmF9QQzb+/iad/0PWSu5WOZHoLYtxyQ5nii9g2ndYuzN7dg7h0GBQrd/6sGfPoUzr/8KbIFfZ+Du04ydS8jn54gXfya0tvgBrPedL24BpmIGwAWc+/lyyGYgu7DEbIPOxiwu3jX68i+90fygzwAjsL3xVg0aeE1fPr3ZgM//yW46n+w2b/6L04u3rd+r1V8/+7b/++uuPf3v+zFKPz/4Tde///dmxPS/eXatr9frt66/Vy+tXz/4bthDoHsbVvnj5tXr57t1Xr8tQntpzuhXovjWnlFc/tI4D1NJfsl1o2o/+jqyFF2/V9bN/++1IaXz291+fvbxW1//x7LeffvvqzX88+zWU24tevONn6u/f//pGXX/38afvjz89++5vvzx7pa7V2+t3r949ePaau3P97tX7R8/e3j/7v94Pz16rr7jssPvm5Ut1/e8PhuVhJx/eJxkQIl/LevXnI0XpF2q7FH/klB/3ffzjP81Xb7gvr75+pV6+uX7qp/netA+/TTi244ftbz70EHx2Jv4d0aA576qwp08r+sG0P+E4SPpX36N7OEYPG/OZoD3BzKPHj3t8pFL98V/g/Xt1rd58/eaNevfm/AMcf/3y5dtr9fbteZ//v7dpbtjPbJWVj3D27qmB/+Qk7xvdbTJswJgimJoAzlx9c/WfJdHGqW1Ffn16ly902SGLzx/vOZNl3l79vnC38dXVv84uQd5jc+M45PbEXRFehfxz4OPro92QWYoPLniek9XzKHYytQHGjlw1q8E5OtHAF8UcceXv8kRSxJhjh67lK+alzeaqnN/XEznMYzknqHcBXMWQP4/cd54vxxlwypWTwzwWYm/ZkCPFRRgu3ds7D0SdYUdRVGG+U3yYd9SXgV2iWcxX6EwtNmahkZaGEYKmWsDWPHT0Owjo/HLiuoUqYwJz9BosniHOkd4eRug5tNcpH1XST14maFH8GY42LUHzygy7mF71HDdk9rZuszMKDKUJGgoWThcBSb/IFjSyaUWKYyM+1O8pngcO5bqmtmbV/sFpP5BrvwNrH38Wzsr3WQzLgqb6sfL7je/4/4e64+NaTu/R6emN5scPXj8W+K0z87hj+TfgzM1nRTzeSP71v9iwgkWmtwAA","edge":{"tab_stabs":{"closed_without_unfreeze_never_unfrozen":0,"closed_without_unfreeze_previously_unfrozen":0,"discard_without_unfreeze_never_unfrozen":0,"discard_without_unfreeze_previously_unfrozen":0},"tab_stats":{"frozen_daily":0,"unfrozen_daily":0}},"fre":{"oem_bookmarks_set":true},"hardware_acceleration_mode_previous":true,"is_dsp_recommended":true,"legacy":{"profile":{"name":{"migrated":true}}},"network_time":{"network_time_mapping":{"local":1.702203166468252e+12,"network":1.702203168e+12,"ticks":269508640018.0,"uncertainty":1303960.0}},"os_crypt":{"audit_enabled":true,"encrypted_key":"RFBBUEkBAAAA0Iyd3wEV0RGMegDAT8KX6wEAAABJT1ZfFYVeT52zagJ0lXGQEAAAAB4AAABNAGkAYwByAG8AcwBvAGYAdAAgAEUAZABnAGUAAAAQZgAAAAEAACAAAAAzI4hxvZu5WMP41mr8kSujmnEUWK8KkN5bq3nECJ/NywAAAAAOgAAAAAIAACAAAABbVzKBP4/K5cNWQ/TRbie+N3GVhpKHzyOi0DiSE/8UtTAAAACwQSPtSjuhwMvMgWarynapxw1e4cz35bb9pZttejOqexO67wny0uGOeu/sz96yMDlAAAAAj7nf91BhBxRXlOQjkI30WBDyF0HKwQPzMy4dlP1gI2EEoJ2sF8IjMzY+HX7tLllvLKTnTrDJ5AuI+xx0jGi57A=="},"policy":{"last_statistics_update":"13346676764730214"},"profile":{"info_cache":{"Default":{"active_time":1702203174.840755,"avatar_icon":"chrome://theme/IDR_PROFILE_AVATAR_20","background_apps":false,"edge_account_cid":"","edge_account_first_name":"","edge_account_last_name":"","edge_account_oid":"","edge_account_sovereignty":0,"edge_account_tenant_id":"","edge_account_type":0,"edge_kids_mode":false,"edge_no_window_mode_incompatible_extension":false,"edge_test_on_premises":false,"edge_wam_aad_for_app_account_type":0,"force_signin_profile_locked":false,"gaia_id":"","is_consented_primary_account":false,"is_ephemeral":false,"is_using_default_avatar":true,"is_using_default_name":true,"managed_user_id":"","metrics_bucket_index":1,"name":"用户配置 1","signin.with_credential_provider":false,"user_name":""}},"last_active_profiles":[],"metrics":{"next_bucket_index":2},"profile_counts_reported":"13346676764661034","profiles_order":["Default"]},"profile_network_context_service":{"http_cache_finch_experiment_groups":"None None None None"},"profiles":{"edge":{"multiple_profiles_with_same_account":false},"edge_sso_info":{"msa_first_profile_key":"Default","msa_sso_algo_state":1},"signin_last_seen_version":"120.0.2210.61","signin_last_updated_time":1702203164.769918},"sentinel_creation_time":"0","session_id_generator_last_value":"40976430","startup_boost":{"last_browser_open_time":"13346676781230794"},"subresource_filter":{"ruleset_version":{"checksum":0,"content":"","format":0}},"tab_stats":{"discards_external":0,"discards_proactive":0,"discards_urgent":0,"last_daily_sample":"13346676764704293","max_tabs_per_window":1,"reloads_external":0,"reloads_urgent":0,"total_tab_count_max":1,"window_count_max":1},"telemetry_client":{"cloned_install":{"user_data_dir_id":7520763},"host_telclient_path":"QzpcUHJvZ3JhbSBGaWxlcyAoeDg2KVxNaWNyb3NvZnRcRWRnZVdlYlZpZXdcQXBwbGljYXRpb25cMTIwLjAuMjIxMC42MVx0ZWxjbGllbnQuZGxs","sample_id":91437882},"uninstall_metrics":{"installation_date2":"1702203164"},"user_experience_metrics":{"client_id2":"{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}C:\\Users\\home-dev0s:4C0E021D-4E80-46E3-9EAB-D261DF7200C4","diagnostics":{"last_data_collection_level_on_launch":1},"low_entropy_source3":5711,"machine_id":14491122,"payload_counter":1,"pseudo_low_entropy_source":908,"reset_client_id_deterministic":true,"session_id":0,"stability":{"browser_last_live_timestamp":"13346676781245221","exited_cleanly":true,"stats_buildtime":"1701919930","stats_version":"120.0.2210.61-64","system_crash_count":0}},"variations_compressed_seed":"H4sIAAAAAAAAAJVWW2/iOBT+L36OqzjOtaN9YKBM2emFKbAd7TKqTHIaLBI7sh0YpuK/r5xw67TZanlAOjnf952rnbygvhTPPB8NNLpEL3N01Z/M0eUcjfEDJm7sBZGLCSbEGeMB9j0ax9jD4Rw5c3SV5dCyTwwSukHgYYKp09qBR+IQUxzvbT9OfIIp9vc2pX4UndmEBpRgHyd7242D0MMhjpxDRsRNMMXh3o4iErmYHuK5oUs9HxMc7O3AJ76tYK/v+klC4lN+LoldGtgK3eZBGPuRjxNMvNZ0QxLhCHut1w9oRHGM41bdD70wwL5vwxw7MpAl46KXGi6FPmtlQj2/CXTInEYJDTE5VOp6fpjQMzsOXVsIbTOPYupaNGkbGdHQa8y2LxFxvQAHmLRlhZTYxLDXxgqo51Ps7Xvou25CMT04aRz5Po5w0nopiZMEewT7kdvMnBAa02PLBjiJKSU4xJQcSx5ypc1DLX5fBjcK4iaPqIFOIC9BGGY7c7YxQZLEwWlihNCEBNgLDivj2oi2E22+YehGpwFaKzqSQzeO7fK1w/OpG59W0fdsnQR7c7RDztnyosuXxroYcM0WBfQW20zqATyDmoC5ZiLbKG64yCeGGbDorAUOgZlagUaX/6BSf0D7sXNeRbkDs5Fq1ZdCQGr4mptth/SVsE++gHmHcs2F6Y1HR/Wx4rqclEyZq59VIRU8QM6luJHpqjPxe3Et1zZpptLlSEx4BgumkINK3YZuRPd6qlcbOZaa2yF2YfaKQ6l6RTFThW6AryCvTslb93SpAD7XxkihZ6fyJktZVVzkY8VT6MuyYgp62Q0T+f0alOLZ2UhBvC31wJ+xil/9rOh/Cj+ArqTQ/0+StJJlZbZvT8b7GgDPKm1oX3lRTDbcpMv+tD+eVRkzFvLu3PqgDH/mKTMwVUxom7FItzZ3KUCYlm3H+BW2Yy4EF/kb5+ugMw13vWnoD6Uajdf+DTegWNERvwNsFW8ky+zSc214qm9knred7dzA3wmbseJ7WiN4GO7VGoTRXZNovb2ikJsbrg364aCKKVaCAWUhL0iwEtDlAXpQbcAOWrOitt5bniqp5bO5eITFZyU3GtRFc6QmqQIQFzPNcnCI4336EDoG9SxVyURqCf4ntDsv55prI3PFys6STogv9kAJK/RRbUfOh/Vd/TQgtD2AFyOhDSuKvqyFeeRmeQuGDZhhDnEc6u3z/jYb9W2m70dOl0wIKM4iDdHOObqhkunyzEnd9neOUWDsKpfcGNuLJymeNlzBk+ElyNo8lbwouIZUikyfSXlWxSY4ydJlex117og961m6bNZqCgWUYNR2LKsJK6sCmn+7dR30oVQpHGlHtNPscD4FbWaC24kPuDaKL2p7vR0H0j21XMm68o5pvKrtvEEZPLO6MF8s/D30K3C9KjslbfmPsOjVZjlmWq9gq2cjexOAau+CjrO654Aw9ubhUpzYTUsfpSqyfl0NC8nMdv+qa41bmXW/PM8gVmbFi2KhgKVLIQ1Pu3l3tTK14iL/3KAHYKB5pdy1tB+7nYOugWVNv19Qs99q229SQf07+x0wZTm6RHNkfgXLfLS69Qf33/9c3f9K1d+Lsvq+Wd8tH8t1OUxWbKD60V/et80fc4R2u38BFZQvEzsLAAA=","variations_country":"CN","variations_crash_streak":0,"variations_failed_to_fetch_seed_streak":0,"variations_google_groups":{"Default":[]},"variations_last_fetch_time":"13346676767065288","variations_last_runtime_fetch_time":"13346676767036522","variations_permanent_consistency_country":["120.0.2210.61","CN"],"variations_runtime_compressed_seed":"H4sIAAAAAAAAAG2PTU/CQBiE/0oz523cbg3CJl5YKjUGNLQhinio9O2mYD+y3U1Esv/dgN70OjN58swJSalp5VpbN6S6tqo15AlJ09vjvw21xfsH3VFhnaEB8hVEZoc37xlSKkoywwWQFxoSW2iabio32Tw8Z+Yrp2G5mK7nqXoZNYerfO9Epfp1+hgf6r2+3QIMyWdfX8jIXMuCiAcz2gWCiziIIhkJeT0O5oscDKpzrTVH1ZUECbUEQ2YL64bfRHAOf56d3e9nP15/P+EpXIURj8c3Ix6KcALvvwEyYzHoFgEAAA==","variations_seed_client_version_at_store":"120.0.2210.61","variations_seed_date":"13346676767000000","variations_seed_milestone":120,"variations_seed_runtime_etag":"\"geBZfu9ZKXSrzTesNMBVGHCY6mk/Tju2fCpVHO3kijg=\"","variations_seed_signature":"","was":{"restarted":false}} \ No newline at end of file diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/ShaderCache/data_0 b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/ShaderCache/data_0 new file mode 100644 index 0000000..d76fb77 Binary files /dev/null and b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/ShaderCache/data_0 differ diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/ShaderCache/data_1 b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/ShaderCache/data_1 new file mode 100644 index 0000000..dcaafa9 Binary files /dev/null and b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/ShaderCache/data_1 differ diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/ShaderCache/data_2 b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/ShaderCache/data_2 new file mode 100644 index 0000000..c7e2eb9 Binary files /dev/null and b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/ShaderCache/data_2 differ diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/ShaderCache/data_3 b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/ShaderCache/data_3 new file mode 100644 index 0000000..5eec973 Binary files /dev/null and b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/ShaderCache/data_3 differ diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/ShaderCache/index b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/ShaderCache/index new file mode 100644 index 0000000..9c9b345 Binary files /dev/null and b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/ShaderCache/index differ diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/SmartScreen/RemoteData/customSynchronousLookupUris b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/SmartScreen/RemoteData/customSynchronousLookupUris new file mode 100644 index 0000000..e82f75f --- /dev/null +++ b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/SmartScreen/RemoteData/customSynchronousLookupUris @@ -0,0 +1 @@ +customSynchronousLookupUris_0 \ No newline at end of file diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/SmartScreen/RemoteData/customSynchronousLookupUris_0 b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/SmartScreen/RemoteData/customSynchronousLookupUris_0 new file mode 100644 index 0000000..1e5bb4d Binary files /dev/null and b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/SmartScreen/RemoteData/customSynchronousLookupUris_0 differ diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/SmartScreen/RemoteData/edgeSettings b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/SmartScreen/RemoteData/edgeSettings new file mode 100644 index 0000000..a89ca1f --- /dev/null +++ b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/SmartScreen/RemoteData/edgeSettings @@ -0,0 +1 @@ +edgeSettings_2.0-0 \ No newline at end of file diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/SmartScreen/RemoteData/edgeSettings_2.0-0 b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/SmartScreen/RemoteData/edgeSettings_2.0-0 new file mode 100644 index 0000000..d3bbf25 --- /dev/null +++ b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/SmartScreen/RemoteData/edgeSettings_2.0-0 @@ -0,0 +1 @@ +{"models":[],"geoidMaps":{"gw_my":"https://malaysia.smartscreen.microsoft.com/","gw_tw":"https://taiwan.smartscreen.microsoft.com/","gw_at":"https://austria.smartscreen.microsoft.com/","gw_es":"https://spain.smartscreen.microsoft.com/","gw_pl":"https://poland.smartscreen.microsoft.com/","gw_se":"https://sweden.smartscreen.microsoft.com/","gw_kr":"https://southkorea.smartscreen.microsoft.com/","gw_br":"https://brazil.smartscreen.microsoft.com/","au":"https://australia.smartscreen.microsoft.com/","dk":"https://denmark.smartscreen.microsoft.com/","gw_sg":"https://singapore.smartscreen.microsoft.com/","gw_fr":"https://france.smartscreen.microsoft.com/","gw_ca":"https://canada.smartscreen.microsoft.com/","test":"https://eu-9.smartscreen.microsoft.com/","gw_il":"https://israel.smartscreen.microsoft.com/","gw_au":"https://australia.smartscreen.microsoft.com/","gw_ffl4mod":"https://unitedstates4.ss.wd.microsoft.us/","gw_ffl4":"https://unitedstates1.ss.wd.microsoft.us/","gw_eu":"https://europe.smartscreen.microsoft.com/","gw_gr":"https://greece.smartscreen.microsoft.com/","gw_de":"https://germany.smartscreen.microsoft.com/","br":"https://brazil.smartscreen.microsoft.com/","gw_uk":"https://unitedkingdom.smartscreen.microsoft.com/","gw_it":"https://italy.smartscreen.microsoft.com/","gw_us":"https://unitedstates.smartscreen.microsoft.com/","il":"https://israel.smartscreen.microsoft.com/","es":"https://spain.smartscreen.microsoft.com/","ch":"https://switzerland.smartscreen.microsoft.com/","at":"https://austria.smartscreen.microsoft.com/","jp":"https://japan.smartscreen.microsoft.com/","kr":"https://southkorea.smartscreen.microsoft.com/","nz":"https://newzealand.smartscreen.microsoft.com/","gw_cl":"https://chile.smartscreen.microsoft.com/","pl":"https://poland.smartscreen.microsoft.com/","eu":"https://europe.smartscreen.microsoft.com/","de":"https://germany.smartscreen.microsoft.com/","gw_no":"https://norway.smartscreen.microsoft.com/","ffl4mod":"https://unitedstates4.ss.wd.microsoft.us/","gw_jp":"https://japan.smartscreen.microsoft.com/","mx":"https://mexico.smartscreen.microsoft.com/","gw_ffl5":"https://unitedstates2.ss.wd.microsoft.us/","se":"https://sweden.smartscreen.microsoft.com/","gw_ch":"https://switzerland.smartscreen.microsoft.com/","gw_ae":"https://uae.smartscreen.microsoft.com/","my":"https://malaysia.smartscreen.microsoft.com/","gw_nz":"https://newzealand.smartscreen.microsoft.com/","ca":"https://canada.smartscreen.microsoft.com/","fr":"https://france.smartscreen.microsoft.com/","gw_mx":"https://mexico.smartscreen.microsoft.com/","no":"https://norway.smartscreen.microsoft.com/","gr":"https://greece.smartscreen.microsoft.com/","gw_qa":"https://qatar.smartscreen.microsoft.com/","gw_in":"https://india.smartscreen.microsoft.com/","in":"https://india.smartscreen.microsoft.com/","tw":"https://taiwan.smartscreen.microsoft.com/","sg":"https://singapore.smartscreen.microsoft.com/","ffl5":"https://unitedstates2.ss.wd.microsoft.us/","ae":"https://uae.smartscreen.microsoft.com/","gw_dk":"https://denmark.smartscreen.microsoft.com/","gw_za":"https://southafrica.smartscreen.microsoft.com/","uk":"https://unitedkingdom.smartscreen.microsoft.com/","cl":"https://chile.smartscreen.microsoft.com/","us":"https://unitedstates.smartscreen.microsoft.com/","qa":"https://qatar.smartscreen.microsoft.com/","za":"https://southafrica.smartscreen.microsoft.com/","ffl4":"https://unitedstates1.ss.wd.microsoft.us/","it":"https://italy.smartscreen.microsoft.com/"},"sampleBuckets":{"error":1.0,"topTrafficHit":0.00007,"uriLookup":0.01,"userAction":1.0}} \ No newline at end of file diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/SmartScreen/RemoteData/synchronousLookupUris b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/SmartScreen/RemoteData/synchronousLookupUris new file mode 100644 index 0000000..71ac307 --- /dev/null +++ b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/SmartScreen/RemoteData/synchronousLookupUris @@ -0,0 +1 @@ +synchronousLookupUris_636976985063396749.rel.v2 \ No newline at end of file diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/SmartScreen/RemoteData/synchronousLookupUris_636976985063396749.rel.v2 b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/SmartScreen/RemoteData/synchronousLookupUris_636976985063396749.rel.v2 new file mode 100644 index 0000000..1e5bb4d Binary files /dev/null and b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/SmartScreen/RemoteData/synchronousLookupUris_636976985063396749.rel.v2 differ diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Variations b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Variations new file mode 100644 index 0000000..18056c3 --- /dev/null +++ b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.exe.WebView2/EBWebView/Variations @@ -0,0 +1 @@ +{"user_experience_metrics.stability.exited_cleanly":true,"variations_crash_streak":0} \ No newline at end of file diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.pdb b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.pdb new file mode 100644 index 0000000..b438665 Binary files /dev/null and b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.pdb differ diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.runtimeconfig.json b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.runtimeconfig.json new file mode 100644 index 0000000..f9988b2 --- /dev/null +++ b/Webview2WinFormsApp/bin/Debug/net6.0-windows/Webview2WinFormsApp.runtimeconfig.json @@ -0,0 +1,15 @@ +{ + "runtimeOptions": { + "tfm": "net6.0", + "frameworks": [ + { + "name": "Microsoft.NETCore.App", + "version": "6.0.0" + }, + { + "name": "Microsoft.WindowsDesktop.App", + "version": "6.0.0" + } + ] + } +} \ No newline at end of file diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/runtimes/win-arm64/native/WebView2Loader.dll b/Webview2WinFormsApp/bin/Debug/net6.0-windows/runtimes/win-arm64/native/WebView2Loader.dll new file mode 100644 index 0000000..50c9df3 Binary files /dev/null and b/Webview2WinFormsApp/bin/Debug/net6.0-windows/runtimes/win-arm64/native/WebView2Loader.dll differ diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/runtimes/win-x64/native/WebView2Loader.dll b/Webview2WinFormsApp/bin/Debug/net6.0-windows/runtimes/win-x64/native/WebView2Loader.dll new file mode 100644 index 0000000..4fc572d Binary files /dev/null and b/Webview2WinFormsApp/bin/Debug/net6.0-windows/runtimes/win-x64/native/WebView2Loader.dll differ diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/runtimes/win-x86/native/WebView2Loader.dll b/Webview2WinFormsApp/bin/Debug/net6.0-windows/runtimes/win-x86/native/WebView2Loader.dll new file mode 100644 index 0000000..3eadfa3 Binary files /dev/null and b/Webview2WinFormsApp/bin/Debug/net6.0-windows/runtimes/win-x86/native/WebView2Loader.dll differ diff --git a/Webview2WinFormsApp/bin/Debug/net6.0-windows/web/index.html b/Webview2WinFormsApp/bin/Debug/net6.0-windows/web/index.html new file mode 100644 index 0000000..b3d7072 --- /dev/null +++ b/Webview2WinFormsApp/bin/Debug/net6.0-windows/web/index.html @@ -0,0 +1,24 @@ + + + + test + + + + + + + + \ No newline at end of file diff --git a/Webview2WinFormsApp/obj/Debug/net6.0-windows/.NETCoreApp,Version=v6.0.AssemblyAttributes.cs b/Webview2WinFormsApp/obj/Debug/net6.0-windows/.NETCoreApp,Version=v6.0.AssemblyAttributes.cs new file mode 100644 index 0000000..ed92695 --- /dev/null +++ b/Webview2WinFormsApp/obj/Debug/net6.0-windows/.NETCoreApp,Version=v6.0.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v6.0", FrameworkDisplayName = ".NET 6.0")] diff --git a/Webview2WinFormsApp/obj/Debug/net6.0-windows/Webview2WinFormsApp.AssemblyInfo.cs b/Webview2WinFormsApp/obj/Debug/net6.0-windows/Webview2WinFormsApp.AssemblyInfo.cs new file mode 100644 index 0000000..7cf4576 --- /dev/null +++ b/Webview2WinFormsApp/obj/Debug/net6.0-windows/Webview2WinFormsApp.AssemblyInfo.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("Webview2WinFormsApp")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")] +[assembly: System.Reflection.AssemblyProductAttribute("Webview2WinFormsApp")] +[assembly: System.Reflection.AssemblyTitleAttribute("Webview2WinFormsApp")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] +[assembly: System.Runtime.Versioning.TargetPlatformAttribute("Windows7.0")] +[assembly: System.Runtime.Versioning.SupportedOSPlatformAttribute("Windows7.0")] + +// 由 MSBuild WriteCodeFragment 类生成。 + diff --git a/Webview2WinFormsApp/obj/Debug/net6.0-windows/Webview2WinFormsApp.AssemblyInfoInputs.cache b/Webview2WinFormsApp/obj/Debug/net6.0-windows/Webview2WinFormsApp.AssemblyInfoInputs.cache new file mode 100644 index 0000000..514d878 --- /dev/null +++ b/Webview2WinFormsApp/obj/Debug/net6.0-windows/Webview2WinFormsApp.AssemblyInfoInputs.cache @@ -0,0 +1 @@ +1a63871452e65bc94ef13afede3643178c1c9f7d diff --git a/Webview2WinFormsApp/obj/Debug/net6.0-windows/Webview2WinFormsApp.Form1.resources b/Webview2WinFormsApp/obj/Debug/net6.0-windows/Webview2WinFormsApp.Form1.resources new file mode 100644 index 0000000..6c05a97 Binary files /dev/null and b/Webview2WinFormsApp/obj/Debug/net6.0-windows/Webview2WinFormsApp.Form1.resources differ diff --git a/Webview2WinFormsApp/obj/Debug/net6.0-windows/Webview2WinFormsApp.Form2.resources b/Webview2WinFormsApp/obj/Debug/net6.0-windows/Webview2WinFormsApp.Form2.resources new file mode 100644 index 0000000..6c05a97 Binary files /dev/null and b/Webview2WinFormsApp/obj/Debug/net6.0-windows/Webview2WinFormsApp.Form2.resources differ diff --git a/Webview2WinFormsApp/obj/Debug/net6.0-windows/Webview2WinFormsApp.GeneratedMSBuildEditorConfig.editorconfig b/Webview2WinFormsApp/obj/Debug/net6.0-windows/Webview2WinFormsApp.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 0000000..a0158b9 --- /dev/null +++ b/Webview2WinFormsApp/obj/Debug/net6.0-windows/Webview2WinFormsApp.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,17 @@ +is_global = true +build_property.ApplicationManifest = +build_property.StartupObject = +build_property.ApplicationDefaultFont = +build_property.ApplicationHighDpiMode = +build_property.ApplicationUseCompatibleTextRendering = +build_property.ApplicationVisualStyles = +build_property.TargetFramework = net6.0-windows +build_property.TargetPlatformMinVersion = 7.0 +build_property.UsingMicrosoftNETSdkWeb = +build_property.ProjectTypeGuids = +build_property.InvariantGlobalization = +build_property.PlatformNeutralAssembly = +build_property.EnforceExtendedAnalyzerRules = +build_property._SupportedPlatformList = Linux,macOS,Windows +build_property.RootNamespace = Webview2WinFormsApp +build_property.ProjectDir = C:\Users\home-dev\source\repos\TestWordAddIn1\Webview2WinFormsApp\ diff --git a/Webview2WinFormsApp/obj/Debug/net6.0-windows/Webview2WinFormsApp.GlobalUsings.g.cs b/Webview2WinFormsApp/obj/Debug/net6.0-windows/Webview2WinFormsApp.GlobalUsings.g.cs new file mode 100644 index 0000000..84bbb89 --- /dev/null +++ b/Webview2WinFormsApp/obj/Debug/net6.0-windows/Webview2WinFormsApp.GlobalUsings.g.cs @@ -0,0 +1,10 @@ +// +global using global::System; +global using global::System.Collections.Generic; +global using global::System.Drawing; +global using global::System.IO; +global using global::System.Linq; +global using global::System.Net.Http; +global using global::System.Threading; +global using global::System.Threading.Tasks; +global using global::System.Windows.Forms; diff --git a/Webview2WinFormsApp/obj/Debug/net6.0-windows/Webview2WinFormsApp.ProofreadItem.resources b/Webview2WinFormsApp/obj/Debug/net6.0-windows/Webview2WinFormsApp.ProofreadItem.resources new file mode 100644 index 0000000..6c05a97 Binary files /dev/null and b/Webview2WinFormsApp/obj/Debug/net6.0-windows/Webview2WinFormsApp.ProofreadItem.resources differ diff --git a/Webview2WinFormsApp/obj/Debug/net6.0-windows/Webview2WinFormsApp.Properties.Resources.resources b/Webview2WinFormsApp/obj/Debug/net6.0-windows/Webview2WinFormsApp.Properties.Resources.resources new file mode 100644 index 0000000..647c3e9 Binary files /dev/null and b/Webview2WinFormsApp/obj/Debug/net6.0-windows/Webview2WinFormsApp.Properties.Resources.resources differ diff --git a/Webview2WinFormsApp/obj/Debug/net6.0-windows/Webview2WinFormsApp.assets.cache b/Webview2WinFormsApp/obj/Debug/net6.0-windows/Webview2WinFormsApp.assets.cache new file mode 100644 index 0000000..6954e16 Binary files /dev/null and b/Webview2WinFormsApp/obj/Debug/net6.0-windows/Webview2WinFormsApp.assets.cache differ diff --git a/Webview2WinFormsApp/obj/Debug/net6.0-windows/Webview2WinFormsApp.csproj.AssemblyReference.cache b/Webview2WinFormsApp/obj/Debug/net6.0-windows/Webview2WinFormsApp.csproj.AssemblyReference.cache new file mode 100644 index 0000000..1cb6973 Binary files /dev/null and b/Webview2WinFormsApp/obj/Debug/net6.0-windows/Webview2WinFormsApp.csproj.AssemblyReference.cache differ diff --git a/Webview2WinFormsApp/obj/Debug/net6.0-windows/Webview2WinFormsApp.csproj.BuildWithSkipAnalyzers b/Webview2WinFormsApp/obj/Debug/net6.0-windows/Webview2WinFormsApp.csproj.BuildWithSkipAnalyzers new file mode 100644 index 0000000..e69de29 diff --git a/Webview2WinFormsApp/obj/Debug/net6.0-windows/Webview2WinFormsApp.csproj.CopyComplete b/Webview2WinFormsApp/obj/Debug/net6.0-windows/Webview2WinFormsApp.csproj.CopyComplete new file mode 100644 index 0000000..e69de29 diff --git a/Webview2WinFormsApp/obj/Debug/net6.0-windows/Webview2WinFormsApp.csproj.CoreCompileInputs.cache b/Webview2WinFormsApp/obj/Debug/net6.0-windows/Webview2WinFormsApp.csproj.CoreCompileInputs.cache new file mode 100644 index 0000000..3b5ff62 --- /dev/null +++ b/Webview2WinFormsApp/obj/Debug/net6.0-windows/Webview2WinFormsApp.csproj.CoreCompileInputs.cache @@ -0,0 +1 @@ +4cd1f286d0017333667f4d97371733f92f4cbe53 diff --git a/Webview2WinFormsApp/obj/Debug/net6.0-windows/Webview2WinFormsApp.csproj.FileListAbsolute.txt b/Webview2WinFormsApp/obj/Debug/net6.0-windows/Webview2WinFormsApp.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..be3c6a5 --- /dev/null +++ b/Webview2WinFormsApp/obj/Debug/net6.0-windows/Webview2WinFormsApp.csproj.FileListAbsolute.txt @@ -0,0 +1,33 @@ +C:\Users\home-dev\source\repos\TestWordAddIn1\Webview2WinFormsApp\bin\Debug\net6.0-windows\runtimes\win-x86\native\WebView2Loader.dll +C:\Users\home-dev\source\repos\TestWordAddIn1\Webview2WinFormsApp\bin\Debug\net6.0-windows\runtimes\win-x64\native\WebView2Loader.dll +C:\Users\home-dev\source\repos\TestWordAddIn1\Webview2WinFormsApp\bin\Debug\net6.0-windows\runtimes\win-arm64\native\WebView2Loader.dll +C:\Users\home-dev\source\repos\TestWordAddIn1\Webview2WinFormsApp\bin\Debug\net6.0-windows\Webview2WinFormsApp.exe +C:\Users\home-dev\source\repos\TestWordAddIn1\Webview2WinFormsApp\bin\Debug\net6.0-windows\web\index.html +C:\Users\home-dev\source\repos\TestWordAddIn1\Webview2WinFormsApp\bin\Debug\net6.0-windows\Webview2WinFormsApp.deps.json +C:\Users\home-dev\source\repos\TestWordAddIn1\Webview2WinFormsApp\bin\Debug\net6.0-windows\Webview2WinFormsApp.runtimeconfig.json +C:\Users\home-dev\source\repos\TestWordAddIn1\Webview2WinFormsApp\bin\Debug\net6.0-windows\Webview2WinFormsApp.dll +C:\Users\home-dev\source\repos\TestWordAddIn1\Webview2WinFormsApp\bin\Debug\net6.0-windows\Webview2WinFormsApp.pdb +C:\Users\home-dev\source\repos\TestWordAddIn1\Webview2WinFormsApp\bin\Debug\net6.0-windows\Microsoft.Web.WebView2.Core.dll +C:\Users\home-dev\source\repos\TestWordAddIn1\Webview2WinFormsApp\bin\Debug\net6.0-windows\Microsoft.Web.WebView2.WinForms.dll +C:\Users\home-dev\source\repos\TestWordAddIn1\Webview2WinFormsApp\bin\Debug\net6.0-windows\Microsoft.Web.WebView2.Wpf.dll +C:\Users\home-dev\source\repos\TestWordAddIn1\Webview2WinFormsApp\obj\Debug\net6.0-windows\Webview2WinFormsApp.csproj.AssemblyReference.cache +C:\Users\home-dev\source\repos\TestWordAddIn1\Webview2WinFormsApp\obj\Debug\net6.0-windows\Webview2WinFormsApp.Form1.resources +C:\Users\home-dev\source\repos\TestWordAddIn1\Webview2WinFormsApp\obj\Debug\net6.0-windows\Webview2WinFormsApp.csproj.GenerateResource.cache +C:\Users\home-dev\source\repos\TestWordAddIn1\Webview2WinFormsApp\obj\Debug\net6.0-windows\Webview2WinFormsApp.GeneratedMSBuildEditorConfig.editorconfig +C:\Users\home-dev\source\repos\TestWordAddIn1\Webview2WinFormsApp\obj\Debug\net6.0-windows\Webview2WinFormsApp.AssemblyInfoInputs.cache +C:\Users\home-dev\source\repos\TestWordAddIn1\Webview2WinFormsApp\obj\Debug\net6.0-windows\Webview2WinFormsApp.AssemblyInfo.cs +C:\Users\home-dev\source\repos\TestWordAddIn1\Webview2WinFormsApp\obj\Debug\net6.0-windows\Webview2WinFormsApp.csproj.CoreCompileInputs.cache +C:\Users\home-dev\source\repos\TestWordAddIn1\Webview2WinFormsApp\obj\Debug\net6.0-windows\Webview2WinFormsApp.csproj.CopyComplete +C:\Users\home-dev\source\repos\TestWordAddIn1\Webview2WinFormsApp\obj\Debug\net6.0-windows\Webview2WinFormsApp.dll +C:\Users\home-dev\source\repos\TestWordAddIn1\Webview2WinFormsApp\obj\Debug\net6.0-windows\refint\Webview2WinFormsApp.dll +C:\Users\home-dev\source\repos\TestWordAddIn1\Webview2WinFormsApp\obj\Debug\net6.0-windows\Webview2WinFormsApp.pdb +C:\Users\home-dev\source\repos\TestWordAddIn1\Webview2WinFormsApp\obj\Debug\net6.0-windows\Webview2WinFormsApp.genruntimeconfig.cache +C:\Users\home-dev\source\repos\TestWordAddIn1\Webview2WinFormsApp\obj\Debug\net6.0-windows\ref\Webview2WinFormsApp.dll +C:\Users\home-dev\source\repos\TestWordAddIn1\Webview2WinFormsApp\obj\Debug\net6.0-windows\Webview2WinFormsApp.Form2.resources +C:\Users\home-dev\source\repos\TestWordAddIn1\Webview2WinFormsApp\obj\Debug\net6.0-windows\Webview2WinFormsApp.ProofreadItem.resources +C:\Users\home-dev\source\repos\TestWordAddIn1\Webview2WinFormsApp\bin\Debug\net6.0-windows\UtilLib.dll +C:\Users\home-dev\source\repos\TestWordAddIn1\Webview2WinFormsApp\bin\Debug\net6.0-windows\Newtonsoft.Json.dll +C:\Users\home-dev\source\repos\TestWordAddIn1\Webview2WinFormsApp\bin\Debug\net6.0-windows\UtilLib.pdb +C:\Users\home-dev\source\repos\TestWordAddIn1\Webview2WinFormsApp\bin\Debug\net6.0-windows\UtilLib.dll.config +C:\Users\home-dev\source\repos\TestWordAddIn1\Webview2WinFormsApp\bin\Debug\net6.0-windows\Newtonsoft.Json.xml +C:\Users\home-dev\source\repos\TestWordAddIn1\Webview2WinFormsApp\obj\Debug\net6.0-windows\Webview2WinFormsApp.Properties.Resources.resources diff --git a/Webview2WinFormsApp/obj/Debug/net6.0-windows/Webview2WinFormsApp.csproj.GenerateResource.cache b/Webview2WinFormsApp/obj/Debug/net6.0-windows/Webview2WinFormsApp.csproj.GenerateResource.cache new file mode 100644 index 0000000..cad455d Binary files /dev/null and b/Webview2WinFormsApp/obj/Debug/net6.0-windows/Webview2WinFormsApp.csproj.GenerateResource.cache differ diff --git a/Webview2WinFormsApp/obj/Debug/net6.0-windows/Webview2WinFormsApp.designer.deps.json b/Webview2WinFormsApp/obj/Debug/net6.0-windows/Webview2WinFormsApp.designer.deps.json new file mode 100644 index 0000000..44ac1c3 --- /dev/null +++ b/Webview2WinFormsApp/obj/Debug/net6.0-windows/Webview2WinFormsApp.designer.deps.json @@ -0,0 +1,53 @@ +{ + "runtimeTarget": { + "name": ".NETCoreApp,Version=v6.0", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETCoreApp,Version=v6.0": { + "Microsoft.Web.WebView2/1.0.2151.40": { + "runtime": { + "lib/netcoreapp3.0/Microsoft.Web.WebView2.Core.dll": { + "assemblyVersion": "1.0.2151.40", + "fileVersion": "1.0.2151.40" + }, + "lib/netcoreapp3.0/Microsoft.Web.WebView2.WinForms.dll": { + "assemblyVersion": "1.0.2151.40", + "fileVersion": "1.0.2151.40" + }, + "lib/netcoreapp3.0/Microsoft.Web.WebView2.Wpf.dll": { + "assemblyVersion": "1.0.2151.40", + "fileVersion": "1.0.2151.40" + } + }, + "runtimeTargets": { + "runtimes/win-arm64/native/WebView2Loader.dll": { + "rid": "win-arm64", + "assetType": "native", + "fileVersion": "1.0.2151.40" + }, + "runtimes/win-x64/native/WebView2Loader.dll": { + "rid": "win-x64", + "assetType": "native", + "fileVersion": "1.0.2151.40" + }, + "runtimes/win-x86/native/WebView2Loader.dll": { + "rid": "win-x86", + "assetType": "native", + "fileVersion": "1.0.2151.40" + } + } + } + } + }, + "libraries": { + "Microsoft.Web.WebView2/1.0.2151.40": { + "type": "package", + "serviceable": true, + "sha512": "sha512-OPWjZVJvYhDm4Jq+7QdsQfEgv2QHrkaqUkdk4i9FahatsOJ4cIaVLfnDHGsKjcxGqCVX+Lo4mi4Lqh5hcgfsdw==", + "path": "microsoft.web.webview2/1.0.2151.40", + "hashPath": "microsoft.web.webview2.1.0.2151.40.nupkg.sha512" + } + } +} \ No newline at end of file diff --git a/Webview2WinFormsApp/obj/Debug/net6.0-windows/Webview2WinFormsApp.designer.runtimeconfig.json b/Webview2WinFormsApp/obj/Debug/net6.0-windows/Webview2WinFormsApp.designer.runtimeconfig.json new file mode 100644 index 0000000..ea1f944 --- /dev/null +++ b/Webview2WinFormsApp/obj/Debug/net6.0-windows/Webview2WinFormsApp.designer.runtimeconfig.json @@ -0,0 +1,23 @@ +{ + "runtimeOptions": { + "tfm": "net6.0", + "frameworks": [ + { + "name": "Microsoft.NETCore.App", + "version": "6.0.0" + }, + { + "name": "Microsoft.WindowsDesktop.App", + "version": "6.0.0" + } + ], + "additionalProbingPaths": [ + "C:\\Users\\home-dev\\.dotnet\\store\\|arch|\\|tfm|", + "C:\\Users\\home-dev\\.nuget\\packages", + "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" + ], + "configProperties": { + "Microsoft.NETCore.DotNetHostPolicy.SetAppPaths": true + } + } +} \ No newline at end of file diff --git a/Webview2WinFormsApp/obj/Debug/net6.0-windows/Webview2WinFormsApp.dll b/Webview2WinFormsApp/obj/Debug/net6.0-windows/Webview2WinFormsApp.dll new file mode 100644 index 0000000..e6f8650 Binary files /dev/null and b/Webview2WinFormsApp/obj/Debug/net6.0-windows/Webview2WinFormsApp.dll differ diff --git a/Webview2WinFormsApp/obj/Debug/net6.0-windows/Webview2WinFormsApp.genruntimeconfig.cache b/Webview2WinFormsApp/obj/Debug/net6.0-windows/Webview2WinFormsApp.genruntimeconfig.cache new file mode 100644 index 0000000..de430dc --- /dev/null +++ b/Webview2WinFormsApp/obj/Debug/net6.0-windows/Webview2WinFormsApp.genruntimeconfig.cache @@ -0,0 +1 @@ +f35f4eea98af1b290b9a74644878e14f5712b444 diff --git a/Webview2WinFormsApp/obj/Debug/net6.0-windows/Webview2WinFormsApp.pdb b/Webview2WinFormsApp/obj/Debug/net6.0-windows/Webview2WinFormsApp.pdb new file mode 100644 index 0000000..b438665 Binary files /dev/null and b/Webview2WinFormsApp/obj/Debug/net6.0-windows/Webview2WinFormsApp.pdb differ diff --git a/Webview2WinFormsApp/obj/Debug/net6.0-windows/apphost.exe b/Webview2WinFormsApp/obj/Debug/net6.0-windows/apphost.exe new file mode 100644 index 0000000..1d5190b Binary files /dev/null and b/Webview2WinFormsApp/obj/Debug/net6.0-windows/apphost.exe differ diff --git a/Webview2WinFormsApp/obj/Debug/net6.0-windows/ref/Webview2WinFormsApp.dll b/Webview2WinFormsApp/obj/Debug/net6.0-windows/ref/Webview2WinFormsApp.dll new file mode 100644 index 0000000..b8dbea4 Binary files /dev/null and b/Webview2WinFormsApp/obj/Debug/net6.0-windows/ref/Webview2WinFormsApp.dll differ diff --git a/Webview2WinFormsApp/obj/Debug/net6.0-windows/refint/Webview2WinFormsApp.dll b/Webview2WinFormsApp/obj/Debug/net6.0-windows/refint/Webview2WinFormsApp.dll new file mode 100644 index 0000000..b8dbea4 Binary files /dev/null and b/Webview2WinFormsApp/obj/Debug/net6.0-windows/refint/Webview2WinFormsApp.dll differ diff --git a/Webview2WinFormsApp/obj/Webview2WinFormsApp.csproj.nuget.dgspec.json b/Webview2WinFormsApp/obj/Webview2WinFormsApp.csproj.nuget.dgspec.json new file mode 100644 index 0000000..ad3bba2 --- /dev/null +++ b/Webview2WinFormsApp/obj/Webview2WinFormsApp.csproj.nuget.dgspec.json @@ -0,0 +1,95 @@ +{ + "format": 1, + "restore": { + "C:\\Users\\home-dev\\source\\repos\\TestWordAddIn1\\Webview2WinFormsApp\\Webview2WinFormsApp.csproj": {} + }, + "projects": { + "C:\\Users\\home-dev\\source\\repos\\TestWordAddIn1\\UtilLib\\UtilLib.csproj": { + "restore": { + "projectUniqueName": "C:\\Users\\home-dev\\source\\repos\\TestWordAddIn1\\UtilLib\\UtilLib.csproj", + "projectName": "UtilLib", + "projectPath": "C:\\Users\\home-dev\\source\\repos\\TestWordAddIn1\\UtilLib\\UtilLib.csproj", + "frameworks": { + "net462": { + "projectReferences": {} + } + } + }, + "frameworks": { + "net462": {} + } + }, + "C:\\Users\\home-dev\\source\\repos\\TestWordAddIn1\\Webview2WinFormsApp\\Webview2WinFormsApp.csproj": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "C:\\Users\\home-dev\\source\\repos\\TestWordAddIn1\\Webview2WinFormsApp\\Webview2WinFormsApp.csproj", + "projectName": "Webview2WinFormsApp", + "projectPath": "C:\\Users\\home-dev\\source\\repos\\TestWordAddIn1\\Webview2WinFormsApp\\Webview2WinFormsApp.csproj", + "packagesPath": "C:\\Users\\home-dev\\.nuget\\packages\\", + "outputPath": "C:\\Users\\home-dev\\source\\repos\\TestWordAddIn1\\Webview2WinFormsApp\\obj\\", + "projectStyle": "PackageReference", + "fallbackFolders": [ + "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" + ], + "configFilePaths": [ + "C:\\Users\\home-dev\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" + ], + "originalTargetFrameworks": [ + "net6.0-windows" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net6.0-windows7.0": { + "targetAlias": "net6.0-windows", + "projectReferences": { + "C:\\Users\\home-dev\\source\\repos\\TestWordAddIn1\\UtilLib\\UtilLib.csproj": { + "projectPath": "C:\\Users\\home-dev\\source\\repos\\TestWordAddIn1\\UtilLib\\UtilLib.csproj" + } + } + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + } + }, + "frameworks": { + "net6.0-windows7.0": { + "targetAlias": "net6.0-windows", + "dependencies": { + "Microsoft.Web.WebView2": { + "target": "Package", + "version": "[1.0.2151.40, )" + } + }, + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + }, + "Microsoft.WindowsDesktop.App.WindowsForms": { + "privateAssets": "none" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\7.0.403\\RuntimeIdentifierGraph.json" + } + } + } + } +} \ No newline at end of file diff --git a/Webview2WinFormsApp/obj/Webview2WinFormsApp.csproj.nuget.g.props b/Webview2WinFormsApp/obj/Webview2WinFormsApp.csproj.nuget.g.props new file mode 100644 index 0000000..1ff5c3f --- /dev/null +++ b/Webview2WinFormsApp/obj/Webview2WinFormsApp.csproj.nuget.g.props @@ -0,0 +1,19 @@ + + + + True + NuGet + $(MSBuildThisFileDirectory)project.assets.json + $(UserProfile)\.nuget\packages\ + C:\Users\home-dev\.nuget\packages\;C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages + PackageReference + 6.7.0 + + + + + + + C:\Users\home-dev\.nuget\packages\microsoft.web.webview2\1.0.2151.40 + + \ No newline at end of file diff --git a/Webview2WinFormsApp/obj/Webview2WinFormsApp.csproj.nuget.g.targets b/Webview2WinFormsApp/obj/Webview2WinFormsApp.csproj.nuget.g.targets new file mode 100644 index 0000000..17eb77a --- /dev/null +++ b/Webview2WinFormsApp/obj/Webview2WinFormsApp.csproj.nuget.g.targets @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Webview2WinFormsApp/obj/project.assets.json b/Webview2WinFormsApp/obj/project.assets.json new file mode 100644 index 0000000..b2fff66 --- /dev/null +++ b/Webview2WinFormsApp/obj/project.assets.json @@ -0,0 +1,239 @@ +{ + "version": 3, + "targets": { + "net6.0-windows7.0": { + "Microsoft.Web.WebView2/1.0.2151.40": { + "type": "package", + "compile": { + "lib/netcoreapp3.0/Microsoft.Web.WebView2.Core.dll": { + "related": ".xml" + }, + "lib/netcoreapp3.0/Microsoft.Web.WebView2.WinForms.dll": { + "related": ".xml" + }, + "lib/netcoreapp3.0/Microsoft.Web.WebView2.Wpf.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netcoreapp3.0/Microsoft.Web.WebView2.Core.dll": { + "related": ".xml" + }, + "lib/netcoreapp3.0/Microsoft.Web.WebView2.WinForms.dll": { + "related": ".xml" + }, + "lib/netcoreapp3.0/Microsoft.Web.WebView2.Wpf.dll": { + "related": ".xml" + } + }, + "build": { + "build/Microsoft.Web.WebView2.targets": {} + }, + "runtimeTargets": { + "runtimes/win-arm64/native/WebView2Loader.dll": { + "assetType": "native", + "rid": "win-arm64" + }, + "runtimes/win-x64/native/WebView2Loader.dll": { + "assetType": "native", + "rid": "win-x64" + }, + "runtimes/win-x86/native/WebView2Loader.dll": { + "assetType": "native", + "rid": "win-x86" + } + } + }, + "UtilLib/1.0.0": { + "type": "project", + "compile": { + "bin/placeholder/UtilLib.dll": {} + }, + "runtime": { + "bin/placeholder/UtilLib.dll": {} + } + } + } + }, + "libraries": { + "Microsoft.Web.WebView2/1.0.2151.40": { + "sha512": "OPWjZVJvYhDm4Jq+7QdsQfEgv2QHrkaqUkdk4i9FahatsOJ4cIaVLfnDHGsKjcxGqCVX+Lo4mi4Lqh5hcgfsdw==", + "type": "package", + "path": "microsoft.web.webview2/1.0.2151.40", + "hasTools": true, + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.txt", + "NOTICE.txt", + "WebView2.idl", + "WebView2.tlb", + "build/Common.targets", + "build/Microsoft.Web.WebView2.targets", + "build/WebView2Rules.Project.xml", + "build/native/Microsoft.Web.WebView2.targets", + "build/native/arm64/WebView2Loader.dll", + "build/native/arm64/WebView2Loader.dll.lib", + "build/native/arm64/WebView2LoaderStatic.lib", + "build/native/include-winrt/WebView2Interop.h", + "build/native/include-winrt/WebView2Interop.idl", + "build/native/include-winrt/WebView2Interop.tlb", + "build/native/include/WebView2.h", + "build/native/include/WebView2EnvironmentOptions.h", + "build/native/x64/WebView2Loader.dll", + "build/native/x64/WebView2Loader.dll.lib", + "build/native/x64/WebView2LoaderStatic.lib", + "build/native/x86/WebView2Loader.dll", + "build/native/x86/WebView2Loader.dll.lib", + "build/native/x86/WebView2LoaderStatic.lib", + "build/wv2winrt.targets", + "lib/Microsoft.Web.WebView2.Core.winmd", + "lib/net45/Microsoft.Web.WebView2.Core.dll", + "lib/net45/Microsoft.Web.WebView2.Core.xml", + "lib/net45/Microsoft.Web.WebView2.WinForms.dll", + "lib/net45/Microsoft.Web.WebView2.WinForms.xml", + "lib/net45/Microsoft.Web.WebView2.Wpf.dll", + "lib/net45/Microsoft.Web.WebView2.Wpf.xml", + "lib/netcoreapp3.0/Microsoft.Web.WebView2.Core.dll", + "lib/netcoreapp3.0/Microsoft.Web.WebView2.Core.xml", + "lib/netcoreapp3.0/Microsoft.Web.WebView2.WinForms.dll", + "lib/netcoreapp3.0/Microsoft.Web.WebView2.WinForms.xml", + "lib/netcoreapp3.0/Microsoft.Web.WebView2.Wpf.dll", + "lib/netcoreapp3.0/Microsoft.Web.WebView2.Wpf.xml", + "microsoft.web.webview2.1.0.2151.40.nupkg.sha512", + "microsoft.web.webview2.nuspec", + "runtimes/win-arm64/native/WebView2Loader.dll", + "runtimes/win-arm64/native_uap/Microsoft.Web.WebView2.Core.dll", + "runtimes/win-x64/native/WebView2Loader.dll", + "runtimes/win-x64/native_uap/Microsoft.Web.WebView2.Core.dll", + "runtimes/win-x86/native/WebView2Loader.dll", + "runtimes/win-x86/native_uap/Microsoft.Web.WebView2.Core.dll", + "tools/VisualStudioToolsManifest.xml", + "tools/wv2winrt/Antlr3.Runtime.dll", + "tools/wv2winrt/Antlr4.StringTemplate.dll", + "tools/wv2winrt/System.Buffers.dll", + "tools/wv2winrt/System.CommandLine.DragonFruit.dll", + "tools/wv2winrt/System.CommandLine.Rendering.dll", + "tools/wv2winrt/System.CommandLine.dll", + "tools/wv2winrt/System.Memory.dll", + "tools/wv2winrt/System.Numerics.Vectors.dll", + "tools/wv2winrt/System.Runtime.CompilerServices.Unsafe.dll", + "tools/wv2winrt/codegen_util.dll", + "tools/wv2winrt/concrt140_app.dll", + "tools/wv2winrt/cs/System.CommandLine.resources.dll", + "tools/wv2winrt/de/System.CommandLine.resources.dll", + "tools/wv2winrt/es/System.CommandLine.resources.dll", + "tools/wv2winrt/fr/System.CommandLine.resources.dll", + "tools/wv2winrt/it/System.CommandLine.resources.dll", + "tools/wv2winrt/ja/System.CommandLine.resources.dll", + "tools/wv2winrt/ko/System.CommandLine.resources.dll", + "tools/wv2winrt/msvcp140_1_app.dll", + "tools/wv2winrt/msvcp140_2_app.dll", + "tools/wv2winrt/msvcp140_app.dll", + "tools/wv2winrt/pl/System.CommandLine.resources.dll", + "tools/wv2winrt/pt-BR/System.CommandLine.resources.dll", + "tools/wv2winrt/ru/System.CommandLine.resources.dll", + "tools/wv2winrt/tr/System.CommandLine.resources.dll", + "tools/wv2winrt/type_hierarchy.dll", + "tools/wv2winrt/vcamp140_app.dll", + "tools/wv2winrt/vccorlib140_app.dll", + "tools/wv2winrt/vcomp140_app.dll", + "tools/wv2winrt/vcruntime140_app.dll", + "tools/wv2winrt/winrt_winmd.dll", + "tools/wv2winrt/winrt_winmd.winmd", + "tools/wv2winrt/wv2winrt.exe", + "tools/wv2winrt/wv2winrt.exe.config", + "tools/wv2winrt/wv2winrt.xml", + "tools/wv2winrt/zh-Hans/System.CommandLine.resources.dll", + "tools/wv2winrt/zh-Hant/System.CommandLine.resources.dll" + ] + }, + "UtilLib/1.0.0": { + "type": "project", + "path": "../UtilLib/UtilLib.csproj", + "msbuildProject": "../UtilLib/UtilLib.csproj" + } + }, + "projectFileDependencyGroups": { + "net6.0-windows7.0": [ + "Microsoft.Web.WebView2 >= 1.0.2151.40", + "UtilLib >= 1.0.0" + ] + }, + "packageFolders": { + "C:\\Users\\home-dev\\.nuget\\packages\\": {}, + "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages": {} + }, + "project": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "C:\\Users\\home-dev\\source\\repos\\TestWordAddIn1\\Webview2WinFormsApp\\Webview2WinFormsApp.csproj", + "projectName": "Webview2WinFormsApp", + "projectPath": "C:\\Users\\home-dev\\source\\repos\\TestWordAddIn1\\Webview2WinFormsApp\\Webview2WinFormsApp.csproj", + "packagesPath": "C:\\Users\\home-dev\\.nuget\\packages\\", + "outputPath": "C:\\Users\\home-dev\\source\\repos\\TestWordAddIn1\\Webview2WinFormsApp\\obj\\", + "projectStyle": "PackageReference", + "fallbackFolders": [ + "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" + ], + "configFilePaths": [ + "C:\\Users\\home-dev\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" + ], + "originalTargetFrameworks": [ + "net6.0-windows" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net6.0-windows7.0": { + "targetAlias": "net6.0-windows", + "projectReferences": { + "C:\\Users\\home-dev\\source\\repos\\TestWordAddIn1\\UtilLib\\UtilLib.csproj": { + "projectPath": "C:\\Users\\home-dev\\source\\repos\\TestWordAddIn1\\UtilLib\\UtilLib.csproj" + } + } + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + } + }, + "frameworks": { + "net6.0-windows7.0": { + "targetAlias": "net6.0-windows", + "dependencies": { + "Microsoft.Web.WebView2": { + "target": "Package", + "version": "[1.0.2151.40, )" + } + }, + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + }, + "Microsoft.WindowsDesktop.App.WindowsForms": { + "privateAssets": "none" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\7.0.403\\RuntimeIdentifierGraph.json" + } + } + } +} \ No newline at end of file diff --git a/Webview2WinFormsApp/obj/project.nuget.cache b/Webview2WinFormsApp/obj/project.nuget.cache new file mode 100644 index 0000000..f578a34 --- /dev/null +++ b/Webview2WinFormsApp/obj/project.nuget.cache @@ -0,0 +1,10 @@ +{ + "version": 2, + "dgSpecHash": "VbcSSxKHafFhICMk5dWbDm0xV6C//86LQfN+t+JNJ5vTAAFzqkvWphTqxcpwoKnph6ZvpsnWqJ0UPmP5K+Yrdw==", + "success": true, + "projectFilePath": "C:\\Users\\home-dev\\source\\repos\\TestWordAddIn1\\Webview2WinFormsApp\\Webview2WinFormsApp.csproj", + "expectedPackageFiles": [ + "C:\\Users\\home-dev\\.nuget\\packages\\microsoft.web.webview2\\1.0.2151.40\\microsoft.web.webview2.1.0.2151.40.nupkg.sha512" + ], + "logs": [] +} \ No newline at end of file diff --git a/Webview2WinFormsApp/web/index.html b/Webview2WinFormsApp/web/index.html new file mode 100644 index 0000000..b3d7072 --- /dev/null +++ b/Webview2WinFormsApp/web/index.html @@ -0,0 +1,24 @@ + + + + test + + + + + + + + \ No newline at end of file diff --git a/packages/Microsoft.Web.WebView2.1.0.2151.40/.signature.p7s b/packages/Microsoft.Web.WebView2.1.0.2151.40/.signature.p7s new file mode 100644 index 0000000..c9e876a Binary files /dev/null and b/packages/Microsoft.Web.WebView2.1.0.2151.40/.signature.p7s differ diff --git a/packages/Microsoft.Web.WebView2.1.0.2151.40/LICENSE.txt b/packages/Microsoft.Web.WebView2.1.0.2151.40/LICENSE.txt new file mode 100644 index 0000000..45f0297 --- /dev/null +++ b/packages/Microsoft.Web.WebView2.1.0.2151.40/LICENSE.txt @@ -0,0 +1,27 @@ +Copyright (C) Microsoft Corporation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * The name of Microsoft Corporation, or the names of its contributors +may not be used to endorse or promote products derived from this +software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/packages/Microsoft.Web.WebView2.1.0.2151.40/Microsoft.Web.WebView2.1.0.2151.40.nupkg b/packages/Microsoft.Web.WebView2.1.0.2151.40/Microsoft.Web.WebView2.1.0.2151.40.nupkg new file mode 100644 index 0000000..1c68142 Binary files /dev/null and b/packages/Microsoft.Web.WebView2.1.0.2151.40/Microsoft.Web.WebView2.1.0.2151.40.nupkg differ diff --git a/packages/Microsoft.Web.WebView2.1.0.2151.40/NOTICE.txt b/packages/Microsoft.Web.WebView2.1.0.2151.40/NOTICE.txt new file mode 100644 index 0000000..bb64ba3 --- /dev/null +++ b/packages/Microsoft.Web.WebView2.1.0.2151.40/NOTICE.txt @@ -0,0 +1,85 @@ +NOTICES AND INFORMATION +Do Not Translate or Localize + +This software incorporates material from third parties. Microsoft makes certain +open source code available at https://3rdpartysource.microsoft.com, or you may +send a check or money order for US $5.00, including the product name, the open +source component name, and version number, to: + +Source Code Compliance Team +Microsoft Corporation +One Microsoft Way +Redmond, WA 98052 +USA + +Notwithstanding any other terms, you may reverse engineer this software to the +extent required to debug changes to any libraries licensed under the GNU Lesser +General Public License. + +---------------------------------------------------------------- + +Antlr3.Runtime 3.5.2-rc1 - BSD 3-Clause + +[The "BSD license"] +Copyright (c) 2011 The ANTLR Project +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +--------------------------------------------------------- + +--------------------------------------------------------- + +StringTemplate4 4.0.9-rc1 - BSD 3-Clause + +[The "BSD license"] +Copyright (c) 2011 The ANTLR Project +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +--------------------------------------------------------- diff --git a/packages/Microsoft.Web.WebView2.1.0.2151.40/WebView2.idl b/packages/Microsoft.Web.WebView2.1.0.2151.40/WebView2.idl new file mode 100644 index 0000000..21a3fcf --- /dev/null +++ b/packages/Microsoft.Web.WebView2.1.0.2151.40/WebView2.idl @@ -0,0 +1,8940 @@ +// Copyright (C) Microsoft Corporation. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import "objidl.idl"; +import "oaidl.idl"; +import "EventToken.idl"; + +[uuid(26d34152-879f-4065-bea2-3daa2cfadfb8), version(1.0)] +library WebView2 { + +// Interface forward declarations + +interface ICoreWebView2AcceleratorKeyPressedEventArgs; +interface ICoreWebView2AcceleratorKeyPressedEventHandler; +interface ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandler; +interface ICoreWebView2CallDevToolsProtocolMethodCompletedHandler; +interface ICoreWebView2CapturePreviewCompletedHandler; +interface ICoreWebView2; +interface ICoreWebView2_2; +interface ICoreWebView2_3; +interface ICoreWebView2_4; +interface ICoreWebView2_5; +interface ICoreWebView2_6; +interface ICoreWebView2_7; +interface ICoreWebView2_8; +interface ICoreWebView2_9; +interface ICoreWebView2_10; +interface ICoreWebView2_11; +interface ICoreWebView2_12; +interface ICoreWebView2_13; +interface ICoreWebView2_14; +interface ICoreWebView2_15; +interface ICoreWebView2_16; +interface ICoreWebView2_17; +interface ICoreWebView2_18; +interface ICoreWebView2BasicAuthenticationRequestedEventArgs; +interface ICoreWebView2BasicAuthenticationRequestedEventHandler; +interface ICoreWebView2BasicAuthenticationResponse; +interface ICoreWebView2BrowserProcessExitedEventArgs; +interface ICoreWebView2BrowserProcessExitedEventHandler; +interface ICoreWebView2BytesReceivedChangedEventHandler; +interface ICoreWebView2CompositionController; +interface ICoreWebView2CompositionController2; +interface ICoreWebView2CompositionController3; +interface ICoreWebView2Controller; +interface ICoreWebView2Controller2; +interface ICoreWebView2Controller3; +interface ICoreWebView2Controller4; +interface ICoreWebView2ControllerOptions; +interface ICoreWebView2ControllerOptions2; +interface ICoreWebView2ContentLoadingEventArgs; +interface ICoreWebView2ContentLoadingEventHandler; +interface ICoreWebView2ContextMenuRequestedEventArgs; +interface ICoreWebView2ContextMenuRequestedEventHandler; +interface ICoreWebView2Cookie; +interface ICoreWebView2CookieList; +interface ICoreWebView2CookieManager; +interface ICoreWebView2Certificate; +interface ICoreWebView2ClientCertificate; +interface ICoreWebView2StringCollection; +interface ICoreWebView2ClearBrowsingDataCompletedHandler; +interface ICoreWebView2ClientCertificateCollection; +interface ICoreWebView2ClientCertificateRequestedEventArgs; +interface ICoreWebView2ClientCertificateRequestedEventHandler; +interface ICoreWebView2ContextMenuItem; +interface ICoreWebView2ContextMenuItemCollection; +interface ICoreWebView2ContextMenuRequestedEventArgs; +interface ICoreWebView2ContextMenuRequestedEventHandler; +interface ICoreWebView2ContextMenuTarget; +interface ICoreWebView2ClearServerCertificateErrorActionsCompletedHandler; +interface ICoreWebView2CreateCoreWebView2CompositionControllerCompletedHandler; +interface ICoreWebView2CreateCoreWebView2ControllerCompletedHandler; +interface ICoreWebView2CreateCoreWebView2EnvironmentCompletedHandler; +interface ICoreWebView2ContainsFullScreenElementChangedEventHandler; +interface ICoreWebView2CursorChangedEventHandler; +interface ICoreWebView2CustomItemSelectedEventHandler; +interface ICoreWebView2CustomSchemeRegistration; +interface ICoreWebView2DocumentTitleChangedEventHandler; +interface ICoreWebView2DOMContentLoadedEventArgs; +interface ICoreWebView2DOMContentLoadedEventHandler; +interface ICoreWebView2Deferral; +interface ICoreWebView2DevToolsProtocolEventReceivedEventArgs; +interface ICoreWebView2DevToolsProtocolEventReceivedEventArgs2; +interface ICoreWebView2DevToolsProtocolEventReceivedEventHandler; +interface ICoreWebView2DevToolsProtocolEventReceiver; +interface ICoreWebView2DownloadOperation; +interface ICoreWebView2DownloadStartingEventArgs; +interface ICoreWebView2DownloadStartingEventHandler; +interface ICoreWebView2Environment; +interface ICoreWebView2Environment2; +interface ICoreWebView2Environment3; +interface ICoreWebView2Environment4; +interface ICoreWebView2Environment5; +interface ICoreWebView2Environment6; +interface ICoreWebView2Environment7; +interface ICoreWebView2Environment8; +interface ICoreWebView2Environment9; +interface ICoreWebView2Environment10; +interface ICoreWebView2Environment11; +interface ICoreWebView2Environment12; +interface ICoreWebView2Environment13; +interface ICoreWebView2EnvironmentOptions; +interface ICoreWebView2EnvironmentOptions2; +interface ICoreWebView2EnvironmentOptions3; +interface ICoreWebView2EnvironmentOptions4; +interface ICoreWebView2EnvironmentOptions5; +interface ICoreWebView2EstimatedEndTimeChangedEventHandler; +interface ICoreWebView2ExecuteScriptCompletedHandler; +interface ICoreWebView2Frame; +interface ICoreWebView2Frame2; +interface ICoreWebView2Frame3; +interface ICoreWebView2Frame4; +interface ICoreWebView2FrameContentLoadingEventHandler; +interface ICoreWebView2FrameCreatedEventArgs; +interface ICoreWebView2FrameCreatedEventHandler; +interface ICoreWebView2FrameDestroyedEventHandler; +interface ICoreWebView2FrameDOMContentLoadedEventHandler; +interface ICoreWebView2FrameNameChangedEventHandler; +interface ICoreWebView2FrameNavigationCompletedEventHandler; +interface ICoreWebView2FrameNavigationStartingEventHandler; +interface ICoreWebView2FramePermissionRequestedEventHandler; +interface ICoreWebView2FrameWebMessageReceivedEventHandler; +interface ICoreWebView2FrameInfo; +interface ICoreWebView2FrameInfoCollection; +interface ICoreWebView2FrameInfoCollectionIterator; +interface ICoreWebView2FocusChangedEventHandler; +interface ICoreWebView2GetCookiesCompletedHandler; +interface ICoreWebView2GetNonDefaultPermissionSettingsCompletedHandler; +interface ICoreWebView2HistoryChangedEventHandler; +interface ICoreWebView2HttpHeadersCollectionIterator; +interface ICoreWebView2HttpRequestHeaders; +interface ICoreWebView2HttpResponseHeaders; +interface ICoreWebView2IsDefaultDownloadDialogOpenChangedEventHandler; +interface ICoreWebView2LaunchingExternalUriSchemeEventArgs; +interface ICoreWebView2LaunchingExternalUriSchemeEventHandler; +interface ICoreWebView2MoveFocusRequestedEventArgs; +interface ICoreWebView2MoveFocusRequestedEventHandler; +interface ICoreWebView2NavigationCompletedEventArgs; +interface ICoreWebView2NavigationCompletedEventArgs2; +interface ICoreWebView2NavigationCompletedEventHandler; +interface ICoreWebView2NavigationStartingEventArgs; +interface ICoreWebView2NavigationStartingEventArgs2; +interface ICoreWebView2NavigationStartingEventArgs3; +interface ICoreWebView2NavigationStartingEventHandler; +interface ICoreWebView2NewBrowserVersionAvailableEventHandler; +interface ICoreWebView2NewWindowRequestedEventArgs; +interface ICoreWebView2NewWindowRequestedEventArgs2; +interface ICoreWebView2NewWindowRequestedEventArgs3; +interface ICoreWebView2NewWindowRequestedEventHandler; +interface ICoreWebView2PermissionRequestedEventArgs; +interface ICoreWebView2PermissionRequestedEventArgs2; +interface ICoreWebView2PermissionRequestedEventArgs3; +interface ICoreWebView2PermissionRequestedEventHandler; +interface ICoreWebView2PermissionSettingCollectionView; +interface ICoreWebView2PermissionSetting; +interface ICoreWebView2PointerInfo; +interface ICoreWebView2PrintSettings; +interface ICoreWebView2PrintSettings2; +interface ICoreWebView2PrintToPdfCompletedHandler; +interface ICoreWebView2PrintCompletedHandler; +interface ICoreWebView2PrintToPdfStreamCompletedHandler; +interface ICoreWebView2ProcessFailedEventArgs; +interface ICoreWebView2ProcessFailedEventArgs2; +interface ICoreWebView2ProcessFailedEventHandler; +interface ICoreWebView2Profile; +interface ICoreWebView2Profile2; +interface ICoreWebView2Profile3; +interface ICoreWebView2Profile4; +interface ICoreWebView2Profile5; +interface ICoreWebView2Profile6; +interface ICoreWebView2RasterizationScaleChangedEventHandler; +interface ICoreWebView2ServerCertificateErrorDetectedEventArgs; +interface ICoreWebView2ServerCertificateErrorDetectedEventHandler; +interface ICoreWebView2SetPermissionStateCompletedHandler; +interface ICoreWebView2ScriptDialogOpeningEventArgs; +interface ICoreWebView2ScriptDialogOpeningEventHandler; +interface ICoreWebView2Settings; +interface ICoreWebView2Settings2; +interface ICoreWebView2Settings3; +interface ICoreWebView2Settings4; +interface ICoreWebView2Settings5; +interface ICoreWebView2Settings6; +interface ICoreWebView2Settings7; +interface ICoreWebView2Settings8; +interface ICoreWebView2SharedBuffer; +interface ICoreWebView2SourceChangedEventArgs; +interface ICoreWebView2SourceChangedEventHandler; +interface ICoreWebView2StateChangedEventHandler; +interface ICoreWebView2StatusBarTextChangedEventHandler; +interface ICoreWebView2TrySuspendCompletedHandler; +interface ICoreWebView2WebMessageReceivedEventArgs; +interface ICoreWebView2WebMessageReceivedEventHandler; +interface ICoreWebView2WebResourceRequest; +interface ICoreWebView2WebResourceRequestedEventArgs; +interface ICoreWebView2WebResourceRequestedEventHandler; +interface ICoreWebView2WebResourceResponse; +interface ICoreWebView2WebResourceResponseReceivedEventHandler; +interface ICoreWebView2WebResourceResponseReceivedEventArgs; +interface ICoreWebView2WebResourceResponseView; +interface ICoreWebView2WebResourceResponseViewGetContentCompletedHandler; +interface ICoreWebView2WindowCloseRequestedEventHandler; +interface ICoreWebView2WindowFeatures; +interface ICoreWebView2ZoomFactorChangedEventHandler; +interface ICoreWebView2IsMutedChangedEventHandler; +interface ICoreWebView2IsDocumentPlayingAudioChangedEventHandler; +interface ICoreWebView2ProcessInfo; +interface ICoreWebView2ProcessInfoCollection; +interface ICoreWebView2ProcessInfosChangedEventHandler; +interface ICoreWebView2FaviconChangedEventHandler; +interface ICoreWebView2GetFaviconCompletedHandler; + +// Enums and structs + +/// Specifies the image format for the `ICoreWebView2::CapturePreview` method. + +[v1_enum] +typedef enum COREWEBVIEW2_CAPTURE_PREVIEW_IMAGE_FORMAT { + + /// Indicates that the PNG image format is used. + + COREWEBVIEW2_CAPTURE_PREVIEW_IMAGE_FORMAT_PNG, + + /// Indicates the JPEG image format is used. + + COREWEBVIEW2_CAPTURE_PREVIEW_IMAGE_FORMAT_JPEG, +} COREWEBVIEW2_CAPTURE_PREVIEW_IMAGE_FORMAT; + +/// Kind of cookie SameSite status used in the ICoreWebView2Cookie interface. +/// These fields match those as specified in https://developer.mozilla.org/docs/Web/HTTP/Cookies#. +/// Learn more about SameSite cookies here: https://tools.ietf.org/html/draft-west-first-party-cookies-07 +[v1_enum] +typedef enum COREWEBVIEW2_COOKIE_SAME_SITE_KIND { + /// None SameSite type. No restrictions on cross-site requests. + COREWEBVIEW2_COOKIE_SAME_SITE_KIND_NONE, + /// Lax SameSite type. The cookie will be sent with "same-site" requests, and with "cross-site" top level navigation. + COREWEBVIEW2_COOKIE_SAME_SITE_KIND_LAX, + /// Strict SameSite type. The cookie will only be sent along with "same-site" requests. + COREWEBVIEW2_COOKIE_SAME_SITE_KIND_STRICT, +} COREWEBVIEW2_COOKIE_SAME_SITE_KIND; + +/// Kind of cross origin resource access allowed for host resources during download. +/// Note that other normal access checks like same origin DOM access check and [Content +/// Security Policy](https://developer.mozilla.org/docs/Web/HTTP/CSP) still apply. +/// The following table illustrates the host resource cross origin access according to +/// access context and `COREWEBVIEW2_HOST_RESOURCE_ACCESS_KIND`. +/// +/// Cross Origin Access Context | DENY | ALLOW | DENY_CORS +/// --- | --- | --- | --- +/// From DOM like src of img, script or iframe element| Deny | Allow | Allow +/// From Script like Fetch or XMLHttpRequest| Deny | Allow | Deny +[v1_enum] +typedef enum COREWEBVIEW2_HOST_RESOURCE_ACCESS_KIND { + /// All cross origin resource access is denied, including normal sub resource access + /// as src of a script or image element. + COREWEBVIEW2_HOST_RESOURCE_ACCESS_KIND_DENY, + + /// All cross origin resource access is allowed, including accesses that are + /// subject to Cross-Origin Resource Sharing(CORS) check. The behavior is similar to + /// a web site sends back http header Access-Control-Allow-Origin: *. + COREWEBVIEW2_HOST_RESOURCE_ACCESS_KIND_ALLOW, + + /// Cross origin resource access is allowed for normal sub resource access like + /// as src of a script or image element, while any access that subjects to CORS check + /// will be denied. + /// See [Cross-Origin Resource Sharing](https://developer.mozilla.org/docs/Web/HTTP/CORS) + /// for more information. + COREWEBVIEW2_HOST_RESOURCE_ACCESS_KIND_DENY_CORS, +} COREWEBVIEW2_HOST_RESOURCE_ACCESS_KIND; + +/// Specifies the JavaScript dialog type used in the +/// `ICoreWebView2ScriptDialogOpeningEventHandler` interface. + +[v1_enum] +typedef enum COREWEBVIEW2_SCRIPT_DIALOG_KIND { + + /// Indicates that the dialog uses the `window.alert` JavaScript function. + + COREWEBVIEW2_SCRIPT_DIALOG_KIND_ALERT, + + /// Indicates that the dialog uses the `window.confirm` JavaScript function. + + COREWEBVIEW2_SCRIPT_DIALOG_KIND_CONFIRM, + + /// Indicates that the dialog uses the `window.prompt` JavaScript function. + + COREWEBVIEW2_SCRIPT_DIALOG_KIND_PROMPT, + + /// Indicates that the dialog uses the `beforeunload` JavaScript event. + + COREWEBVIEW2_SCRIPT_DIALOG_KIND_BEFOREUNLOAD, +} COREWEBVIEW2_SCRIPT_DIALOG_KIND; + +/// Specifies the process failure type used in the +/// `ICoreWebView2ProcessFailedEventArgs` interface. The values in this enum +/// make reference to the process kinds in the Chromium architecture. For more +/// information about what these processes are and what they do, see +/// [Browser Architecture - Inside look at modern web browser](https://developers.google.com/web/updates/2018/09/inside-browser-part1). + +[v1_enum] +typedef enum COREWEBVIEW2_PROCESS_FAILED_KIND { + + /// Indicates that the browser process ended unexpectedly. The WebView + /// automatically moves to the Closed state. The app has to recreate a new + /// WebView to recover from this failure. + + COREWEBVIEW2_PROCESS_FAILED_KIND_BROWSER_PROCESS_EXITED, + + /// Indicates that the main frame's render process ended unexpectedly. Any + /// subframes in the WebView will be gone too. A new render process is + /// created automatically and navigated to an error page. You can use the + /// `Reload` method to try to recover from this failure. Alternatively, you + /// can `Close` and recreate the WebView. + + COREWEBVIEW2_PROCESS_FAILED_KIND_RENDER_PROCESS_EXITED, + + /// Indicates that the main frame's render process is unresponsive. Renderer + /// process unresponsiveness can happen for the following reasons: + /// + /// * There is a **long-running script** being executed. For example, the + /// web content in your WebView might be performing a synchronous XHR, or have + /// entered an infinite loop. + /// * The **system is busy**. + /// + /// The `ProcessFailed` event will continue to be raised every few seconds + /// until the renderer process has become responsive again. The application + /// can consider taking action if the event keeps being raised. For example, + /// the application might show UI for the user to decide to keep waiting or + /// reload the page, or navigate away. + + COREWEBVIEW2_PROCESS_FAILED_KIND_RENDER_PROCESS_UNRESPONSIVE, + + /// Indicates that a frame-only render process ended unexpectedly. The process + /// exit does not affect the top-level document, only a subset of the + /// subframes within it. The content in these frames is replaced with an error + /// page in the frame. Your application can communicate with the main frame to + /// recover content in the impacted frames, using + /// `ICoreWebView2ProcessFailedEventArgs2::FrameInfosForFailedProcess` to get + /// information about the impacted frames. + + COREWEBVIEW2_PROCESS_FAILED_KIND_FRAME_RENDER_PROCESS_EXITED, + + /// Indicates that a utility process ended unexpectedly. The failed process + /// is recreated automatically. Your application does **not** need to handle + /// recovery for this event, but can use `ICoreWebView2ProcessFailedEventArgs` + /// and `ICoreWebView2ProcessFailedEventArgs2` to collect information about + /// the failure, including `ProcessDescription`. + + COREWEBVIEW2_PROCESS_FAILED_KIND_UTILITY_PROCESS_EXITED, + + /// Indicates that a sandbox helper process ended unexpectedly. This failure + /// is not fatal. Your application does **not** need to handle recovery for + /// this event, but can use `ICoreWebView2ProcessFailedEventArgs` and + /// `ICoreWebView2ProcessFailedEventArgs2` to collect information about + /// the failure. + + COREWEBVIEW2_PROCESS_FAILED_KIND_SANDBOX_HELPER_PROCESS_EXITED, + + /// Indicates that the GPU process ended unexpectedly. The failed process + /// is recreated automatically. Your application does **not** need to handle + /// recovery for this event, but can use `ICoreWebView2ProcessFailedEventArgs` + /// and `ICoreWebView2ProcessFailedEventArgs2` to collect information about + /// the failure. + + COREWEBVIEW2_PROCESS_FAILED_KIND_GPU_PROCESS_EXITED, + + /// Indicates that a PPAPI plugin process ended unexpectedly. This failure + /// is not fatal. Your application does **not** need to handle recovery for + /// this event, but can use `ICoreWebView2ProcessFailedEventArgs` and + /// `ICoreWebView2ProcessFailedEventArgs2` to collect information about + /// the failure, including `ProcessDescription`. + + COREWEBVIEW2_PROCESS_FAILED_KIND_PPAPI_PLUGIN_PROCESS_EXITED, + + /// Indicates that a PPAPI plugin broker process ended unexpectedly. This failure + /// is not fatal. Your application does **not** need to handle recovery for + /// this event, but can use `ICoreWebView2ProcessFailedEventArgs` and + /// `ICoreWebView2ProcessFailedEventArgs2` to collect information about + /// the failure. + + COREWEBVIEW2_PROCESS_FAILED_KIND_PPAPI_BROKER_PROCESS_EXITED, + + /// Indicates that a process of unspecified kind ended unexpectedly. Your + /// application can use `ICoreWebView2ProcessFailedEventArgs` and + /// `ICoreWebView2ProcessFailedEventArgs2` to collect information about + /// the failure. + + COREWEBVIEW2_PROCESS_FAILED_KIND_UNKNOWN_PROCESS_EXITED, +} COREWEBVIEW2_PROCESS_FAILED_KIND; + +/// Specifies the process failure reason used in the +/// `ICoreWebView2ProcessFailedEventArgs` interface. For process failures where +/// a process has exited, it indicates the type of issue that produced the +/// process exit. + +[v1_enum] +typedef enum COREWEBVIEW2_PROCESS_FAILED_REASON { + + /// An unexpected process failure occurred. + COREWEBVIEW2_PROCESS_FAILED_REASON_UNEXPECTED, + + /// The process became unresponsive. + /// This only applies to the main frame's render process. + + COREWEBVIEW2_PROCESS_FAILED_REASON_UNRESPONSIVE, + + /// The process was terminated. For example, from Task Manager. + + COREWEBVIEW2_PROCESS_FAILED_REASON_TERMINATED, + + /// The process crashed. Most crashes will generate dumps in the location + /// indicated by `ICoreWebView2Environment11::get_FailureReportFolderPath`. + + COREWEBVIEW2_PROCESS_FAILED_REASON_CRASHED, + + /// The process failed to launch. + + COREWEBVIEW2_PROCESS_FAILED_REASON_LAUNCH_FAILED, + + /// The process terminated due to running out of memory. + + COREWEBVIEW2_PROCESS_FAILED_REASON_OUT_OF_MEMORY, + + /// The process exited because its corresponding profile was deleted. + COREWEBVIEW2_PROCESS_FAILED_REASON_PROFILE_DELETED, +} COREWEBVIEW2_PROCESS_FAILED_REASON; + +/// Indicates the type of a permission request. + +[v1_enum] +typedef enum COREWEBVIEW2_PERMISSION_KIND { + + /// Indicates an unknown permission. + + COREWEBVIEW2_PERMISSION_KIND_UNKNOWN_PERMISSION, + + /// Indicates permission to capture audio. + + COREWEBVIEW2_PERMISSION_KIND_MICROPHONE, + + /// Indicates permission to capture video. + + COREWEBVIEW2_PERMISSION_KIND_CAMERA, + + /// Indicates permission to access geolocation. + + COREWEBVIEW2_PERMISSION_KIND_GEOLOCATION, + + /// Indicates permission to send web notifications. Apps that would like to + /// show notifications should handle `PermissionRequested` events + /// and no browser permission prompt will be shown for notification requests. + /// Note that push notifications are currently unavailable in WebView2. + + COREWEBVIEW2_PERMISSION_KIND_NOTIFICATIONS, + + /// Indicates permission to access generic sensor. Generic Sensor covering + /// ambient-light-sensor, accelerometer, gyroscope, and magnetometer. + + COREWEBVIEW2_PERMISSION_KIND_OTHER_SENSORS, + + /// Indicates permission to read the system clipboard without a user gesture. + + COREWEBVIEW2_PERMISSION_KIND_CLIPBOARD_READ, + + /// Indicates permission to automatically download multiple files. Permission + /// is requested when multiple downloads are triggered in quick succession. + + COREWEBVIEW2_PERMISSION_KIND_MULTIPLE_AUTOMATIC_DOWNLOADS, + + /// Indicates permission to read and write to files or folders on the device. + /// Permission is requested when developers use the [File System Access API](https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API) + /// to show the file or folder picker to the end user, and then request + /// "readwrite" permission for the user's selection. + + COREWEBVIEW2_PERMISSION_KIND_FILE_READ_WRITE, + + /// Indicates permission to play audio and video automatically on sites. This + /// permission affects the autoplay attribute and play method of the audio and + /// video HTML elements, and the start method of the Web Audio API. See the + /// [Autoplay guide for media and Web Audio APIs](https://developer.mozilla.org/en-US/docs/Web/Media/Autoplay_guide) for details. + + COREWEBVIEW2_PERMISSION_KIND_AUTOPLAY, + + /// Indicates permission to use fonts on the device. Permission is requested + /// when developers use the [Local Font Access API](https://wicg.github.io/local-font-access/) + /// to query the system fonts available for styling web content. + + COREWEBVIEW2_PERMISSION_KIND_LOCAL_FONTS, + + /// Indicates permission to send and receive system exclusive messages to/from MIDI + /// (Musical Instrument Digital Interface) devices. Permission is requested + /// when developers use the [Web MIDI API](https://developer.mozilla.org/en-US/docs/Web/API/Web_MIDI_API) + /// to request access to system exclusive MIDI messages. + COREWEBVIEW2_PERMISSION_KIND_MIDI_SYSTEM_EXCLUSIVE_MESSAGES, + + /// Indicates permission to open and place windows on the screen. Permission is + /// requested when developers use the [Multi-Screen Window Placement API](https://www.w3.org/TR/window-placement/) + /// to get screen details. + COREWEBVIEW2_PERMISSION_KIND_WINDOW_MANAGEMENT, +} COREWEBVIEW2_PERMISSION_KIND; + +/// Specifies the response to a permission request. + +[v1_enum] +typedef enum COREWEBVIEW2_PERMISSION_STATE { + + /// Specifies that the default browser behavior is used, which normally + /// prompt users for decision. + + COREWEBVIEW2_PERMISSION_STATE_DEFAULT, + + /// Specifies that the permission request is granted. + + COREWEBVIEW2_PERMISSION_STATE_ALLOW, + + /// Specifies that the permission request is denied. + + COREWEBVIEW2_PERMISSION_STATE_DENY, +} COREWEBVIEW2_PERMISSION_STATE; + +/// Indicates the error status values for web navigations. + +[v1_enum] +typedef enum COREWEBVIEW2_WEB_ERROR_STATUS { + + /// Indicates that an unknown error occurred. + + COREWEBVIEW2_WEB_ERROR_STATUS_UNKNOWN, + + /// Indicates that the SSL certificate common name does not match the web + /// address. + + COREWEBVIEW2_WEB_ERROR_STATUS_CERTIFICATE_COMMON_NAME_IS_INCORRECT, + + /// Indicates that the SSL certificate has expired. + + COREWEBVIEW2_WEB_ERROR_STATUS_CERTIFICATE_EXPIRED, + + /// Indicates that the SSL client certificate contains errors. + + COREWEBVIEW2_WEB_ERROR_STATUS_CLIENT_CERTIFICATE_CONTAINS_ERRORS, + + /// Indicates that the SSL certificate has been revoked. + + COREWEBVIEW2_WEB_ERROR_STATUS_CERTIFICATE_REVOKED, + + /// Indicates that the SSL certificate is not valid. The certificate may not + /// match the public key pins for the host name, the certificate is signed + /// by an untrusted authority or using a weak sign algorithm, the certificate + /// claimed DNS names violate name constraints, the certificate contains a + /// weak key, the validity period of the certificate is too long, lack of + /// revocation information or revocation mechanism, non-unique host name, + /// lack of certificate transparency information, or the certificate is + /// chained to a + /// [legacy Symantec root](https://security.googleblog.com/2018/03/distrust-of-symantec-pki-immediate.html). + + COREWEBVIEW2_WEB_ERROR_STATUS_CERTIFICATE_IS_INVALID, + + /// Indicates that the host is unreachable. + + COREWEBVIEW2_WEB_ERROR_STATUS_SERVER_UNREACHABLE, + + /// Indicates that the connection has timed out. + + COREWEBVIEW2_WEB_ERROR_STATUS_TIMEOUT, + + /// Indicates that the server returned an invalid or unrecognized response. + + COREWEBVIEW2_WEB_ERROR_STATUS_ERROR_HTTP_INVALID_SERVER_RESPONSE, + + /// Indicates that the connection was stopped. + + COREWEBVIEW2_WEB_ERROR_STATUS_CONNECTION_ABORTED, + + /// Indicates that the connection was reset. + + COREWEBVIEW2_WEB_ERROR_STATUS_CONNECTION_RESET, + + /// Indicates that the Internet connection has been lost. + + COREWEBVIEW2_WEB_ERROR_STATUS_DISCONNECTED, + + /// Indicates that a connection to the destination was not established. + + COREWEBVIEW2_WEB_ERROR_STATUS_CANNOT_CONNECT, + + /// Indicates that the provided host name was not able to be resolved. + + COREWEBVIEW2_WEB_ERROR_STATUS_HOST_NAME_NOT_RESOLVED, + + /// Indicates that the operation was canceled. This status code is also used + /// in the following cases: + /// - When the app cancels a navigation via NavigationStarting event. + /// - For original navigation if the app navigates the WebView2 in a rapid succession + /// away after the load for original navigation commenced, but before it completed. + + COREWEBVIEW2_WEB_ERROR_STATUS_OPERATION_CANCELED, + + /// Indicates that the request redirect failed. + + COREWEBVIEW2_WEB_ERROR_STATUS_REDIRECT_FAILED, + + /// Indicates that an unexpected error occurred. + + COREWEBVIEW2_WEB_ERROR_STATUS_UNEXPECTED_ERROR, + + /// Indicates that user is prompted with a login, waiting on user action. + /// Initial navigation to a login site will always return this even if app provides + /// credential using BasicAuthenticationRequested. + /// HTTP response status code in this case is 401. + /// See status code reference here: https://developer.mozilla.org/docs/Web/HTTP/Status. + + COREWEBVIEW2_WEB_ERROR_STATUS_VALID_AUTHENTICATION_CREDENTIALS_REQUIRED, + + /// Indicates that user lacks proper authentication credentials for a proxy server. + /// HTTP response status code in this case is 407. + /// See status code reference here: https://developer.mozilla.org/docs/Web/HTTP/Status. + + COREWEBVIEW2_WEB_ERROR_STATUS_VALID_PROXY_AUTHENTICATION_REQUIRED, +} COREWEBVIEW2_WEB_ERROR_STATUS; + +/// Specifies the web resource request contexts. + +[v1_enum] +typedef enum COREWEBVIEW2_WEB_RESOURCE_CONTEXT { + + /// Specifies all resources. + + COREWEBVIEW2_WEB_RESOURCE_CONTEXT_ALL, + + /// Specifies a document resource. + + COREWEBVIEW2_WEB_RESOURCE_CONTEXT_DOCUMENT, + + /// Specifies a CSS resource. + + COREWEBVIEW2_WEB_RESOURCE_CONTEXT_STYLESHEET, + + /// Specifies an image resource. + + COREWEBVIEW2_WEB_RESOURCE_CONTEXT_IMAGE, + + /// Specifies another media resource such as a video. + + COREWEBVIEW2_WEB_RESOURCE_CONTEXT_MEDIA, + + /// Specifies a font resource. + + COREWEBVIEW2_WEB_RESOURCE_CONTEXT_FONT, + + /// Specifies a script resource. + + COREWEBVIEW2_WEB_RESOURCE_CONTEXT_SCRIPT, + + /// Specifies an XML HTTP request, Fetch and EventSource API communication. + + COREWEBVIEW2_WEB_RESOURCE_CONTEXT_XML_HTTP_REQUEST, + + /// Specifies a Fetch API communication. + + // Note that this isn't working. Fetch API requests are fired as a part + // of COREWEBVIEW2_WEB_RESOURCE_CONTEXT_XML_HTTP_REQUEST. + + COREWEBVIEW2_WEB_RESOURCE_CONTEXT_FETCH, + + /// Specifies a TextTrack resource. + + COREWEBVIEW2_WEB_RESOURCE_CONTEXT_TEXT_TRACK, + + /// Specifies an EventSource API communication. + + // Note that this isn't working. EventSource API requests are fired as a part + // of COREWEBVIEW2_WEB_RESOURCE_CONTEXT_XML_HTTP_REQUEST. + + COREWEBVIEW2_WEB_RESOURCE_CONTEXT_EVENT_SOURCE, + + /// Specifies a WebSocket API communication. + + COREWEBVIEW2_WEB_RESOURCE_CONTEXT_WEBSOCKET, + + /// Specifies a Web App Manifest. + + COREWEBVIEW2_WEB_RESOURCE_CONTEXT_MANIFEST, + + /// Specifies a Signed HTTP Exchange. + + COREWEBVIEW2_WEB_RESOURCE_CONTEXT_SIGNED_EXCHANGE, + + /// Specifies a Ping request. + + COREWEBVIEW2_WEB_RESOURCE_CONTEXT_PING, + + /// Specifies a CSP Violation Report. + + COREWEBVIEW2_WEB_RESOURCE_CONTEXT_CSP_VIOLATION_REPORT, + + /// Specifies an other resource. + + COREWEBVIEW2_WEB_RESOURCE_CONTEXT_OTHER +} COREWEBVIEW2_WEB_RESOURCE_CONTEXT; + +/// Specifies the reason for moving focus. + +[v1_enum] +typedef enum COREWEBVIEW2_MOVE_FOCUS_REASON { + + /// Specifies that the code is setting focus into WebView. + + COREWEBVIEW2_MOVE_FOCUS_REASON_PROGRAMMATIC, + + /// Specifies that the focus is moving due to Tab traversal forward. + + COREWEBVIEW2_MOVE_FOCUS_REASON_NEXT, + + /// Specifies that the focus is moving due to Tab traversal backward. + + COREWEBVIEW2_MOVE_FOCUS_REASON_PREVIOUS, +} COREWEBVIEW2_MOVE_FOCUS_REASON; + +/// Specifies the key event type that triggered an `AcceleratorKeyPressed` +/// event. + +[v1_enum] +typedef enum COREWEBVIEW2_KEY_EVENT_KIND { + + /// Specifies that the key event type corresponds to window message + /// `WM_KEYDOWN`. + + COREWEBVIEW2_KEY_EVENT_KIND_KEY_DOWN, + + /// Specifies that the key event type corresponds to window message + /// `WM_KEYUP`. + + COREWEBVIEW2_KEY_EVENT_KIND_KEY_UP, + + /// Specifies that the key event type corresponds to window message + /// `WM_SYSKEYDOWN`. + + COREWEBVIEW2_KEY_EVENT_KIND_SYSTEM_KEY_DOWN, + + /// Specifies that the key event type corresponds to window message + /// `WM_SYSKEYUP`. + + COREWEBVIEW2_KEY_EVENT_KIND_SYSTEM_KEY_UP, +} COREWEBVIEW2_KEY_EVENT_KIND; + +/// Specifies the browser process exit type used in the +/// `ICoreWebView2BrowserProcessExitedEventArgs` interface. + +[v1_enum] +typedef enum COREWEBVIEW2_BROWSER_PROCESS_EXIT_KIND { + + /// Indicates that the browser process ended normally. + + COREWEBVIEW2_BROWSER_PROCESS_EXIT_KIND_NORMAL, + + /// Indicates that the browser process ended unexpectedly. + /// A `ProcessFailed` event will also be sent to listening WebViews from the + /// `ICoreWebView2Environment` associated to the failed process. + + COREWEBVIEW2_BROWSER_PROCESS_EXIT_KIND_FAILED +} COREWEBVIEW2_BROWSER_PROCESS_EXIT_KIND; + +/// Contains the information packed into the `LPARAM` sent to a Win32 key +/// event. For more information about `WM_KEYDOWN`, navigate to +/// [WM_KEYDOWN message](/windows/win32/inputdev/wm-keydown). + +typedef struct COREWEBVIEW2_PHYSICAL_KEY_STATUS { + + /// Specifies the repeat count for the current message. + + UINT32 RepeatCount; + + /// Specifies the scan code. + + UINT32 ScanCode; + + /// Indicates that the key is an extended key. + + BOOL IsExtendedKey; + + /// Indicates that a menu key is held down (context code). + + BOOL IsMenuKeyDown; + + /// Indicates that the key was held down. + + BOOL WasKeyDown; + + /// Indicates that the key was released. + + BOOL IsKeyReleased; +} COREWEBVIEW2_PHYSICAL_KEY_STATUS; + +/// A value representing RGBA color (Red, Green, Blue, Alpha) for WebView2. +/// Each component takes a value from 0 to 255, with 0 being no intensity +/// and 255 being the highest intensity. + +typedef struct COREWEBVIEW2_COLOR { + + /// Specifies the intensity of the Alpha ie. opacity value. 0 is transparent, + /// 255 is opaque. + + BYTE A; + + /// Specifies the intensity of the Red color. + + BYTE R; + + /// Specifies the intensity of the Green color. + + BYTE G; + + /// Specifies the intensity of the Blue color. + + BYTE B; +} COREWEBVIEW2_COLOR; + +/// Mouse event type used by SendMouseInput to convey the type of mouse event +/// being sent to WebView. The values of this enum align with the matching +/// WM_* window messages. + +[v1_enum] +typedef enum COREWEBVIEW2_MOUSE_EVENT_KIND { + + /// Mouse horizontal wheel scroll event, WM_MOUSEHWHEEL. + + COREWEBVIEW2_MOUSE_EVENT_KIND_HORIZONTAL_WHEEL = 0x020E, + + /// Left button double click mouse event, WM_LBUTTONDBLCLK. + + COREWEBVIEW2_MOUSE_EVENT_KIND_LEFT_BUTTON_DOUBLE_CLICK = 0x0203, + + /// Left button down mouse event, WM_LBUTTONDOWN. + + COREWEBVIEW2_MOUSE_EVENT_KIND_LEFT_BUTTON_DOWN = 0x0201, + + /// Left button up mouse event, WM_LBUTTONUP. + + COREWEBVIEW2_MOUSE_EVENT_KIND_LEFT_BUTTON_UP = 0x0202, + + /// Mouse leave event, WM_MOUSELEAVE. + + COREWEBVIEW2_MOUSE_EVENT_KIND_LEAVE = 0x02A3, + + /// Middle button double click mouse event, WM_MBUTTONDBLCLK. + + COREWEBVIEW2_MOUSE_EVENT_KIND_MIDDLE_BUTTON_DOUBLE_CLICK = 0x0209, + + /// Middle button down mouse event, WM_MBUTTONDOWN. + + COREWEBVIEW2_MOUSE_EVENT_KIND_MIDDLE_BUTTON_DOWN = 0x0207, + + /// Middle button up mouse event, WM_MBUTTONUP. + + COREWEBVIEW2_MOUSE_EVENT_KIND_MIDDLE_BUTTON_UP = 0x0208, + + /// Mouse move event, WM_MOUSEMOVE. + + COREWEBVIEW2_MOUSE_EVENT_KIND_MOVE = 0x0200, + + /// Right button double click mouse event, WM_RBUTTONDBLCLK. + + COREWEBVIEW2_MOUSE_EVENT_KIND_RIGHT_BUTTON_DOUBLE_CLICK = 0x0206, + + /// Right button down mouse event, WM_RBUTTONDOWN. + + COREWEBVIEW2_MOUSE_EVENT_KIND_RIGHT_BUTTON_DOWN = 0x0204, + + /// Right button up mouse event, WM_RBUTTONUP. + + COREWEBVIEW2_MOUSE_EVENT_KIND_RIGHT_BUTTON_UP = 0x0205, + + /// Mouse wheel scroll event, WM_MOUSEWHEEL. + + COREWEBVIEW2_MOUSE_EVENT_KIND_WHEEL = 0x020A, + + /// First or second X button double click mouse event, WM_XBUTTONDBLCLK. + + COREWEBVIEW2_MOUSE_EVENT_KIND_X_BUTTON_DOUBLE_CLICK = 0x020D, + + /// First or second X button down mouse event, WM_XBUTTONDOWN. + + COREWEBVIEW2_MOUSE_EVENT_KIND_X_BUTTON_DOWN = 0x020B, + + /// First or second X button up mouse event, WM_XBUTTONUP. + + COREWEBVIEW2_MOUSE_EVENT_KIND_X_BUTTON_UP = 0x020C, + + /// Mouse Right Button Down event over a nonclient area, WM_NCRBUTTONDOWN. + + COREWEBVIEW2_MOUSE_EVENT_KIND_NON_CLIENT_RIGHT_BUTTON_DOWN = 0x00A4, + + /// Mouse Right Button up event over a nonclient area, WM_NCRBUTTONUP. + + COREWEBVIEW2_MOUSE_EVENT_KIND_NON_CLIENT_RIGHT_BUTTON_UP = 0x00A5, +} COREWEBVIEW2_MOUSE_EVENT_KIND; + +/// Mouse event virtual keys associated with a COREWEBVIEW2_MOUSE_EVENT_KIND for +/// SendMouseInput. These values can be combined into a bit flag if more than +/// one virtual key is pressed for the event. The values of this enum align +/// with the matching MK_* mouse keys. + +[v1_enum] +typedef enum COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS { + + /// No additional keys pressed. + + COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS_NONE = 0x0, + + /// Left mouse button is down, MK_LBUTTON. + + COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS_LEFT_BUTTON = 0x0001, + + /// Right mouse button is down, MK_RBUTTON. + + COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS_RIGHT_BUTTON = 0x0002, + + /// SHIFT key is down, MK_SHIFT. + + COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS_SHIFT = 0x0004, + + /// CTRL key is down, MK_CONTROL. + + COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS_CONTROL = 0x0008, + + /// Middle mouse button is down, MK_MBUTTON. + + COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS_MIDDLE_BUTTON = 0x0010, + + /// First X button is down, MK_XBUTTON1 + + COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS_X_BUTTON1 = 0x0020, + + /// Second X button is down, MK_XBUTTON2 + + COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS_X_BUTTON2 = 0x0040, +} COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS; +cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS)") + +/// Pointer event type used by SendPointerInput to convey the type of pointer +/// event being sent to WebView. The values of this enum align with the +/// matching WM_POINTER* window messages. + +[v1_enum] +typedef enum COREWEBVIEW2_POINTER_EVENT_KIND { + + /// Corresponds to WM_POINTERACTIVATE. + + COREWEBVIEW2_POINTER_EVENT_KIND_ACTIVATE = 0x024B, + + /// Corresponds to WM_POINTERDOWN. + + COREWEBVIEW2_POINTER_EVENT_KIND_DOWN = 0x0246, + + /// Corresponds to WM_POINTERENTER. + + COREWEBVIEW2_POINTER_EVENT_KIND_ENTER = 0x0249, + + /// Corresponds to WM_POINTERLEAVE. + + COREWEBVIEW2_POINTER_EVENT_KIND_LEAVE = 0x024A, + + /// Corresponds to WM_POINTERUP. + + COREWEBVIEW2_POINTER_EVENT_KIND_UP = 0x0247, + + /// Corresponds to WM_POINTERUPDATE. + + COREWEBVIEW2_POINTER_EVENT_KIND_UPDATE = 0x0245, +} COREWEBVIEW2_POINTER_EVENT_KIND; + +/// Mode for how the Bounds property is interpreted in relation to the RasterizationScale property. +[v1_enum] +typedef enum COREWEBVIEW2_BOUNDS_MODE { + + /// Bounds property represents raw pixels. Physical size of Webview is not impacted by RasterizationScale. + + COREWEBVIEW2_BOUNDS_MODE_USE_RAW_PIXELS, + + /// Bounds property represents logical pixels and the RasterizationScale property is used to get the physical size of the WebView. + + COREWEBVIEW2_BOUNDS_MODE_USE_RASTERIZATION_SCALE, +} COREWEBVIEW2_BOUNDS_MODE; + +/// Specifies the client certificate kind. +[v1_enum] typedef enum COREWEBVIEW2_CLIENT_CERTIFICATE_KIND { + /// Specifies smart card certificate. + COREWEBVIEW2_CLIENT_CERTIFICATE_KIND_SMART_CARD, + /// Specifies PIN certificate. + COREWEBVIEW2_CLIENT_CERTIFICATE_KIND_PIN, + /// Specifies other certificate. + COREWEBVIEW2_CLIENT_CERTIFICATE_KIND_OTHER, +} COREWEBVIEW2_CLIENT_CERTIFICATE_KIND; + +/// State of the download operation. +[v1_enum] +typedef enum COREWEBVIEW2_DOWNLOAD_STATE { + /// The download is in progress. + COREWEBVIEW2_DOWNLOAD_STATE_IN_PROGRESS, + /// The connection with the file host was broken. The `InterruptReason` property + /// can be accessed from `ICoreWebView2DownloadOperation`. See + /// `COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON` for descriptions of kinds of + /// interrupt reasons. Host can check whether an interrupted download can be + /// resumed with the `CanResume` property on the `ICoreWebView2DownloadOperation`. + /// Once resumed, a download is in the `COREWEBVIEW2_DOWNLOAD_STATE_IN_PROGRESS` state. + COREWEBVIEW2_DOWNLOAD_STATE_INTERRUPTED, + /// The download completed successfully. + COREWEBVIEW2_DOWNLOAD_STATE_COMPLETED, +} COREWEBVIEW2_DOWNLOAD_STATE; + +/// Reason why a download was interrupted. +[v1_enum] +typedef enum COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON { + COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_NONE, + + /// Generic file error. + COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_FILE_FAILED, + /// Access denied due to security restrictions. + COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_FILE_ACCESS_DENIED, + /// Disk full. User should free some space or choose a different location to + /// store the file. + COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_FILE_NO_SPACE, + /// Result file path with file name is too long. + COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_FILE_NAME_TOO_LONG, + /// File is too large for file system. + COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_FILE_TOO_LARGE, + /// Microsoft Defender Smartscreen detected a virus in the file. + COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_FILE_MALICIOUS, + /// File was in use, too many files opened, or out of memory. + COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_FILE_TRANSIENT_ERROR, + /// File blocked by local policy. + COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_FILE_BLOCKED_BY_POLICY, + /// Security check failed unexpectedly. Microsoft Defender SmartScreen could + /// not scan this file. + COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_FILE_SECURITY_CHECK_FAILED, + /// Seeking past the end of a file in opening a file, as part of resuming an + /// interrupted download. The file did not exist or was not as large as + /// expected. Partially downloaded file was truncated or deleted, and download + /// will be restarted automatically. + COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_FILE_TOO_SHORT, + /// Partial file did not match the expected hash and was deleted. Download + /// will be restarted automatically. + COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_FILE_HASH_MISMATCH, + + /// Generic network error. User can retry the download manually. + COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_NETWORK_FAILED, + /// Network operation timed out. + COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_NETWORK_TIMEOUT, + /// Network connection lost. User can retry the download manually. + COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_NETWORK_DISCONNECTED, + /// Server has gone down. User can retry the download manually. + COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_NETWORK_SERVER_DOWN, + /// Network request invalid because original or redirected URI is invalid, has + /// an unsupported scheme, or is disallowed by network policy. + COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_NETWORK_INVALID_REQUEST, + + /// Generic server error. User can retry the download manually. + COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_SERVER_FAILED, + /// Server does not support range requests. + COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_SERVER_NO_RANGE, + /// Server does not have the requested data. + COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_SERVER_BAD_CONTENT, + /// Server did not authorize access to resource. + COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_SERVER_UNAUTHORIZED, + /// Server certificate problem. + COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_SERVER_CERTIFICATE_PROBLEM, + /// Server access forbidden. + COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_SERVER_FORBIDDEN, + /// Unexpected server response. Responding server may not be intended server. + /// User can retry the download manually. + COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_SERVER_UNEXPECTED_RESPONSE, + /// Server sent fewer bytes than the Content-Length header. Content-length + /// header may be invalid or connection may have closed. Download is treated + /// as complete unless there are + /// [strong validators](https://tools.ietf.org/html/rfc7232#section-2) present + /// to interrupt the download. + COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_SERVER_CONTENT_LENGTH_MISMATCH, + /// Unexpected cross-origin redirect. + COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_SERVER_CROSS_ORIGIN_REDIRECT, + + /// User canceled the download. + COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_USER_CANCELED, + /// User shut down the WebView. Resuming downloads that were interrupted + /// during shutdown is not yet supported. + COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_USER_SHUTDOWN, + /// User paused the download. + COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_USER_PAUSED, + + /// WebView crashed. + COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_DOWNLOAD_PROCESS_CRASHED, +} COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON; + +/// The orientation for printing, used by the `Orientation` property on +/// `ICoreWebView2PrintSettings`. +[v1_enum] +typedef enum COREWEBVIEW2_PRINT_ORIENTATION { + /// Print the page(s) in portrait orientation. + COREWEBVIEW2_PRINT_ORIENTATION_PORTRAIT, + + /// Print the page(s) in landscape orientation. + COREWEBVIEW2_PRINT_ORIENTATION_LANDSCAPE, +} COREWEBVIEW2_PRINT_ORIENTATION; + +/// The default download dialog can be aligned to any of the WebView corners +/// by setting the `DefaultDownloadDialogCornerAlignment` property. The default +/// position is top-right corner. +[v1_enum] +typedef enum COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT { + + /// Top-left corner of the WebView. + COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT_TOP_LEFT, + + /// Top-right corner of the WebView. + COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT_TOP_RIGHT, + + /// Bottom-left corner of the WebView. + COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT_BOTTOM_LEFT, + + /// Bottom-right corner of the WebView. + COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT_BOTTOM_RIGHT, + +} COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT; + +/// Indicates the process type used in the ICoreWebView2ProcessInfo interface. +[v1_enum] +typedef enum COREWEBVIEW2_PROCESS_KIND { + /// Indicates the browser process kind. + COREWEBVIEW2_PROCESS_KIND_BROWSER, + + /// Indicates the render process kind. + COREWEBVIEW2_PROCESS_KIND_RENDERER, + + /// Indicates the utility process kind. + COREWEBVIEW2_PROCESS_KIND_UTILITY, + + /// Indicates the sandbox helper process kind. + COREWEBVIEW2_PROCESS_KIND_SANDBOX_HELPER, + + /// Indicates the GPU process kind. + COREWEBVIEW2_PROCESS_KIND_GPU, + + /// Indicates the PPAPI plugin process kind. + COREWEBVIEW2_PROCESS_KIND_PPAPI_PLUGIN, + + /// Indicates the PPAPI plugin broker process kind. + COREWEBVIEW2_PROCESS_KIND_PPAPI_BROKER, +} COREWEBVIEW2_PROCESS_KIND; + +// PDF toolbar item. This enum must be in sync with ToolBarItem in pdf-store-data-types.ts +/// Specifies the PDF toolbar item types used for the `ICoreWebView2Settings::put_HiddenPdfToolbarItems` method. +[v1_enum] +typedef enum COREWEBVIEW2_PDF_TOOLBAR_ITEMS { + + /// No item + COREWEBVIEW2_PDF_TOOLBAR_ITEMS_NONE = 0x0, + + /// The save button + COREWEBVIEW2_PDF_TOOLBAR_ITEMS_SAVE = 0x0001, + + /// The print button + COREWEBVIEW2_PDF_TOOLBAR_ITEMS_PRINT = 0x0002, + + /// The save as button + COREWEBVIEW2_PDF_TOOLBAR_ITEMS_SAVE_AS = 0x0004, + + /// The zoom in button + COREWEBVIEW2_PDF_TOOLBAR_ITEMS_ZOOM_IN = 0x0008, + + /// The zoom out button + COREWEBVIEW2_PDF_TOOLBAR_ITEMS_ZOOM_OUT = 0x0010, + + /// The rotate button + COREWEBVIEW2_PDF_TOOLBAR_ITEMS_ROTATE = 0x0020, + + /// The fit page button + COREWEBVIEW2_PDF_TOOLBAR_ITEMS_FIT_PAGE = 0x0040, + + /// The page layout button + COREWEBVIEW2_PDF_TOOLBAR_ITEMS_PAGE_LAYOUT = 0x0080, + + /// The bookmarks button + COREWEBVIEW2_PDF_TOOLBAR_ITEMS_BOOKMARKS = 0x0100, + + /// The page select button + COREWEBVIEW2_PDF_TOOLBAR_ITEMS_PAGE_SELECTOR = 0x0200, + + /// The search button + COREWEBVIEW2_PDF_TOOLBAR_ITEMS_SEARCH = 0x0400, + + /// The full screen button + COREWEBVIEW2_PDF_TOOLBAR_ITEMS_FULL_SCREEN = 0x0800, + + /// The more settings button + COREWEBVIEW2_PDF_TOOLBAR_ITEMS_MORE_SETTINGS = 0x1000, + +} COREWEBVIEW2_PDF_TOOLBAR_ITEMS; +cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(COREWEBVIEW2_PDF_TOOLBAR_ITEMS)") + +/// Indicates the kind of context for which the context menu was created +/// for the `ICoreWebView2ContextMenuTarget::get_Kind` method. +/// This enum will always represent the active element that caused the context menu request. +/// If there is a selection with multiple images, audio and text, for example, the element that +/// the end user right clicks on within this selection will be the option represented by this enum. +[v1_enum] +typedef enum COREWEBVIEW2_CONTEXT_MENU_TARGET_KIND { + /// Indicates that the context menu was created for the page without any additional content. + COREWEBVIEW2_CONTEXT_MENU_TARGET_KIND_PAGE, + + /// Indicates that the context menu was created for an image element. + COREWEBVIEW2_CONTEXT_MENU_TARGET_KIND_IMAGE, + + /// Indicates that the context menu was created for selected text. + COREWEBVIEW2_CONTEXT_MENU_TARGET_KIND_SELECTED_TEXT, + + /// Indicates that the context menu was created for an audio element. + COREWEBVIEW2_CONTEXT_MENU_TARGET_KIND_AUDIO, + + /// Indicates that the context menu was created for a video element. + COREWEBVIEW2_CONTEXT_MENU_TARGET_KIND_VIDEO, +} COREWEBVIEW2_CONTEXT_MENU_TARGET_KIND; + +/// Specifies the menu item kind +/// for the `ICoreWebView2ContextMenuItem::get_Kind` method +[v1_enum] +typedef enum COREWEBVIEW2_CONTEXT_MENU_ITEM_KIND { + /// Specifies a command menu item kind. + COREWEBVIEW2_CONTEXT_MENU_ITEM_KIND_COMMAND, + + /// Specifies a check box menu item kind. `ContextMenuItem` objects of this kind + /// will need the `IsChecked` property to determine current state of the check box. + COREWEBVIEW2_CONTEXT_MENU_ITEM_KIND_CHECK_BOX, + + /// Specifies a radio button menu item kind. `ContextMenuItem` objects of this kind + /// will need the `IsChecked` property to determine current state of the radio button. + COREWEBVIEW2_CONTEXT_MENU_ITEM_KIND_RADIO, + + /// Specifies a separator menu item kind. `ContextMenuItem` objects of this kind + /// are used to signal a visual separator with no functionality. + COREWEBVIEW2_CONTEXT_MENU_ITEM_KIND_SEPARATOR, + + /// Specifies a submenu menu item kind. `ContextMenuItem` objects of this kind will contain + /// a `ContextMenuItemCollection` of its children `ContextMenuItem` objects. + COREWEBVIEW2_CONTEXT_MENU_ITEM_KIND_SUBMENU, +} COREWEBVIEW2_CONTEXT_MENU_ITEM_KIND; + +/// An enum to represent the options for WebView2 color scheme: auto, light, or dark. +[v1_enum] +typedef enum COREWEBVIEW2_PREFERRED_COLOR_SCHEME { + /// Auto color scheme. + COREWEBVIEW2_PREFERRED_COLOR_SCHEME_AUTO, + + /// Light color scheme. + COREWEBVIEW2_PREFERRED_COLOR_SCHEME_LIGHT, + + /// Dark color scheme. + COREWEBVIEW2_PREFERRED_COLOR_SCHEME_DARK +} COREWEBVIEW2_PREFERRED_COLOR_SCHEME; + +/// Specifies the datatype for the +/// `ICoreWebView2Profile2::ClearBrowsingData` method. +[v1_enum] +typedef enum COREWEBVIEW2_BROWSING_DATA_KINDS { + + /// Specifies file systems data. + COREWEBVIEW2_BROWSING_DATA_KINDS_FILE_SYSTEMS = 1 << 0, + + /// Specifies data stored by the IndexedDB DOM feature. + COREWEBVIEW2_BROWSING_DATA_KINDS_INDEXED_DB = 1 << 1, + + /// Specifies data stored by the localStorage DOM API. + COREWEBVIEW2_BROWSING_DATA_KINDS_LOCAL_STORAGE = 1 << 2, + + /// Specifies data stored by the Web SQL database DOM API. + COREWEBVIEW2_BROWSING_DATA_KINDS_WEB_SQL = 1 << 3, + + /// Specifies data stored by the CacheStorage DOM API. + COREWEBVIEW2_BROWSING_DATA_KINDS_CACHE_STORAGE = 1 << 4, + + /// Specifies DOM storage data, now and future. This browsing data kind is + /// inclusive of COREWEBVIEW2_BROWSING_DATA_KINDS_FILE_SYSTEMS, + /// COREWEBVIEW2_BROWSING_DATA_KINDS_INDEXED_DB, + /// COREWEBVIEW2_BROWSING_DATA_KINDS_LOCAL_STORAGE, + /// COREWEBVIEW2_BROWSING_DATA_KINDS_WEB_SQL, + /// COREWEBVIEW2_BROWSING_DATA_KINDS_SERVICE_WORKERS, + /// COREWEBVIEW2_BROWSING_DATA_KINDS_CACHE_STORAGE, + /// and some other data kinds not listed yet to keep consistent with + /// [DOM-accessible storage](https://www.w3.org/TR/clear-site-data/#storage). + COREWEBVIEW2_BROWSING_DATA_KINDS_ALL_DOM_STORAGE = 1 << 5, + + /// Specifies HTTP cookies data. + COREWEBVIEW2_BROWSING_DATA_KINDS_COOKIES = 1 << 6, + + /// Specifies all site data, now and future. This browsing data kind + /// is inclusive of COREWEBVIEW2_BROWSING_DATA_KINDS_ALL_DOM_STORAGE and + /// COREWEBVIEW2_BROWSING_DATA_KINDS_COOKIES. New site data types + /// may be added to this data kind in the future. + COREWEBVIEW2_BROWSING_DATA_KINDS_ALL_SITE = 1 << 7, + + /// Specifies disk cache. + COREWEBVIEW2_BROWSING_DATA_KINDS_DISK_CACHE = 1 << 8, + + /// Specifies download history data. + COREWEBVIEW2_BROWSING_DATA_KINDS_DOWNLOAD_HISTORY = 1 << 9, + + /// Specifies general autofill form data. + /// This excludes password information and includes information like: + /// names, street and email addresses, phone numbers, and arbitrary input. + /// This also includes payment data. + COREWEBVIEW2_BROWSING_DATA_KINDS_GENERAL_AUTOFILL = 1 << 10, + + /// Specifies password autosave data. + COREWEBVIEW2_BROWSING_DATA_KINDS_PASSWORD_AUTOSAVE = 1 << 11, + + /// Specifies browsing history data. + COREWEBVIEW2_BROWSING_DATA_KINDS_BROWSING_HISTORY = 1 << 12, + + /// Specifies settings data. + COREWEBVIEW2_BROWSING_DATA_KINDS_SETTINGS = 1 << 13, + + /// Specifies profile data that should be wiped to make it look like a new profile. + /// This does not delete account-scoped data like passwords but will remove access + /// to account-scoped data by signing the user out. + /// Specifies all profile data, now and future. New profile data types may be added + /// to this data kind in the future. + /// This browsing data kind is inclusive of COREWEBVIEW2_BROWSING_DATA_KINDS_ALL_SITE, + /// COREWEBVIEW2_BROWSING_DATA_KINDS_DISK_CACHE, + /// COREWEBVIEW2_BROWSING_DATA_KINDS_DOWNLOAD_HISTORY, + /// COREWEBVIEW2_BROWSING_DATA_KINDS_GENERAL_AUTOFILL, + /// COREWEBVIEW2_BROWSING_DATA_KINDS_PASSWORD_AUTOSAVE, + /// COREWEBVIEW2_BROWSING_DATA_KINDS_BROWSING_HISTORY, and + /// COREWEBVIEW2_BROWSING_DATA_KINDS_SETTINGS. + COREWEBVIEW2_BROWSING_DATA_KINDS_ALL_PROFILE = 1 << 14, + + /// Specifies service workers registered for an origin, and clear will result in + /// termination and deregistration of them. + COREWEBVIEW2_BROWSING_DATA_KINDS_SERVICE_WORKERS = 1 << 15, +} COREWEBVIEW2_BROWSING_DATA_KINDS; +cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(COREWEBVIEW2_BROWSING_DATA_KINDS)") + +/// Specifies the action type when server certificate error is detected to be +/// used in the `ICoreWebView2ServerCertificateErrorDetectedEventArgs` +/// interface. +[v1_enum] typedef enum COREWEBVIEW2_SERVER_CERTIFICATE_ERROR_ACTION { + /// Indicates to ignore the warning and continue the request with the TLS + /// certificate. This decision is cached for the RequestUri's host and the + /// server certificate in the session. + COREWEBVIEW2_SERVER_CERTIFICATE_ERROR_ACTION_ALWAYS_ALLOW, + + /// Indicates to reject the certificate and cancel the request. + COREWEBVIEW2_SERVER_CERTIFICATE_ERROR_ACTION_CANCEL, + + /// Indicates to display the default TLS interstitial error page to user for + /// page navigations. + /// For others TLS certificate is rejected and the request is cancelled. + COREWEBVIEW2_SERVER_CERTIFICATE_ERROR_ACTION_DEFAULT +} COREWEBVIEW2_SERVER_CERTIFICATE_ERROR_ACTION; + +/// Specifies the image format to use for favicon. +[v1_enum] +typedef enum COREWEBVIEW2_FAVICON_IMAGE_FORMAT { + /// Indicates that the PNG image format is used. + COREWEBVIEW2_FAVICON_IMAGE_FORMAT_PNG, + + /// Indicates the JPEG image format is used. + COREWEBVIEW2_FAVICON_IMAGE_FORMAT_JPEG, +} COREWEBVIEW2_FAVICON_IMAGE_FORMAT; + +/// Specifies the print dialog kind. +[v1_enum] typedef enum COREWEBVIEW2_PRINT_DIALOG_KIND { + /// Opens the browser print preview dialog. + COREWEBVIEW2_PRINT_DIALOG_KIND_BROWSER, + + /// Opens the system print dialog. + COREWEBVIEW2_PRINT_DIALOG_KIND_SYSTEM, + +} COREWEBVIEW2_PRINT_DIALOG_KIND; + +/// Specifies the duplex option for a print. +[v1_enum] typedef enum COREWEBVIEW2_PRINT_DUPLEX { + /// The default duplex for a printer. + COREWEBVIEW2_PRINT_DUPLEX_DEFAULT, + + /// Print on only one side of the sheet. + COREWEBVIEW2_PRINT_DUPLEX_ONE_SIDED, + + /// Print on both sides of the sheet, flipped along the long edge. + COREWEBVIEW2_PRINT_DUPLEX_TWO_SIDED_LONG_EDGE, + + /// Print on both sides of the sheet, flipped along the short edge. + COREWEBVIEW2_PRINT_DUPLEX_TWO_SIDED_SHORT_EDGE, + +} COREWEBVIEW2_PRINT_DUPLEX; + +/// Specifies the color mode for a print. +[v1_enum] typedef enum COREWEBVIEW2_PRINT_COLOR_MODE { + /// The default color mode for a printer. + COREWEBVIEW2_PRINT_COLOR_MODE_DEFAULT, + + /// Indicate that the printed output will be in color. + COREWEBVIEW2_PRINT_COLOR_MODE_COLOR, + + /// Indicate that the printed output will be in shades of gray. + COREWEBVIEW2_PRINT_COLOR_MODE_GRAYSCALE, + +} COREWEBVIEW2_PRINT_COLOR_MODE; + +/// Specifies the collation for a print. +[v1_enum] typedef enum COREWEBVIEW2_PRINT_COLLATION { + /// The default collation for a printer. + COREWEBVIEW2_PRINT_COLLATION_DEFAULT, + + /// Indicate that the collation has been selected for the printed output. + COREWEBVIEW2_PRINT_COLLATION_COLLATED, + + /// Indicate that the collation has not been selected for the printed output. + COREWEBVIEW2_PRINT_COLLATION_UNCOLLATED, + +} COREWEBVIEW2_PRINT_COLLATION; + +/// Specifies the media size for a print. +[v1_enum] typedef enum COREWEBVIEW2_PRINT_MEDIA_SIZE { + /// The default media size for a printer. + COREWEBVIEW2_PRINT_MEDIA_SIZE_DEFAULT, + + /// Indicate custom media size that is specific to the printer. + COREWEBVIEW2_PRINT_MEDIA_SIZE_CUSTOM, + +} COREWEBVIEW2_PRINT_MEDIA_SIZE; + +/// Indicates the status for printing. +[v1_enum] typedef enum COREWEBVIEW2_PRINT_STATUS { + /// Indicates that the print operation is succeeded. + COREWEBVIEW2_PRINT_STATUS_SUCCEEDED, + + /// Indicates that the printer is not available. + COREWEBVIEW2_PRINT_STATUS_PRINTER_UNAVAILABLE, + + /// Indicates that the print operation is failed. + COREWEBVIEW2_PRINT_STATUS_OTHER_ERROR, + +} COREWEBVIEW2_PRINT_STATUS; + +/// Tracking prevention levels. +[v1_enum] typedef enum COREWEBVIEW2_TRACKING_PREVENTION_LEVEL { + /// Tracking prevention is turned off. + COREWEBVIEW2_TRACKING_PREVENTION_LEVEL_NONE, + /// The least restrictive level of tracking prevention. Set to this level to + /// protect against malicious trackers but allows most other trackers and + /// personalize content and ads. + /// + /// See [Current tracking prevention + /// behavior](/microsoft-edge/web-platform/tracking-prevention#current-tracking-prevention-behavior) + /// for fine-grained information on what is being blocked with this level and + /// can change with different Edge versions. + COREWEBVIEW2_TRACKING_PREVENTION_LEVEL_BASIC, + /// The default level of tracking prevention. Set to this level to + /// protect against social media tracking on top of malicious trackers. + /// Content and ads will likely be less personalized. + /// + /// See [Current tracking prevention + /// behavior](/microsoft-edge/web-platform/tracking-prevention#current-tracking-prevention-behavior) + /// for fine-grained information on what is being blocked with this level and + /// can change with different Edge versions. + COREWEBVIEW2_TRACKING_PREVENTION_LEVEL_BALANCED, + /// The most restrictive level of tracking prevention. Set to this level to + /// protect + /// against malicious trackers and most trackers across sites. Content and ads + /// will likely have minimal personalization. + /// + /// This level blocks the most trackers but could cause some websites to not + /// behave as expected. + /// + /// See [Current tracking prevention + /// behavior](/microsoft-edge/web-platform/tracking-prevention#current-tracking-prevention-behavior) + /// for fine-grained information on what is being blocked with this level and + /// can change with different Edge versions. + COREWEBVIEW2_TRACKING_PREVENTION_LEVEL_STRICT, +} COREWEBVIEW2_TRACKING_PREVENTION_LEVEL; + +/// Specifies the desired access from script to `CoreWebView2SharedBuffer`. +[v1_enum] +typedef enum COREWEBVIEW2_SHARED_BUFFER_ACCESS { + /// Script from web page only has read access to the shared buffer. + COREWEBVIEW2_SHARED_BUFFER_ACCESS_READ_ONLY, + + /// Script from web page has read and write access to the shared buffer. + COREWEBVIEW2_SHARED_BUFFER_ACCESS_READ_WRITE + +} COREWEBVIEW2_SHARED_BUFFER_ACCESS ; + +/// Specifies memory usage target level of WebView. +[v1_enum] +typedef enum COREWEBVIEW2_MEMORY_USAGE_TARGET_LEVEL { + /// Specifies normal memory usage target level. + COREWEBVIEW2_MEMORY_USAGE_TARGET_LEVEL_NORMAL, + + /// Specifies low memory usage target level. + /// Used for inactivate WebView for reduced memory consumption. + COREWEBVIEW2_MEMORY_USAGE_TARGET_LEVEL_LOW, + +} COREWEBVIEW2_MEMORY_USAGE_TARGET_LEVEL; + +/// Specifies the navigation kind of each navigation. +[v1_enum] +typedef enum COREWEBVIEW2_NAVIGATION_KIND { + /// A navigation caused by `CoreWebView2.Reload()`, `location.reload()`, the end user + /// using F5 or other UX, or other reload mechanisms to reload the current document + /// without modifying the navigation history. + COREWEBVIEW2_NAVIGATION_KIND_RELOAD = 0, + + /// A navigation back or forward to a different entry in the session navigation history, + /// like via `CoreWebView2.Back()`, `location.back()`, the end user pressing Alt+Left + /// or other UX, or other mechanisms to navigate back or forward in the current + /// session navigation history. + /// + // Note: This kind doesn't distinguish back or forward, because we can't + // distinguish it from origin source `blink.mojom.NavigationType`. + COREWEBVIEW2_NAVIGATION_KIND_BACK_OR_FORWARD = 1, + + /// A navigation to another document, which can be caused by `CoreWebView2.Navigate()`, + /// `window.location.href = ...`, or other WebView2 or DOM APIs that navigate to a new URI. + COREWEBVIEW2_NAVIGATION_KIND_NEW_DOCUMENT = 2, + +} COREWEBVIEW2_NAVIGATION_KIND; + +// End of enums and structs + +/// WebView2 enables you to host web content using the latest Microsoft Edge +/// browser and web technology. + +[uuid(76eceacb-0462-4d94-ac83-423a6793775e), object, pointer_default(unique)] +interface ICoreWebView2 : IUnknown { + + /// The `ICoreWebView2Settings` object contains various modifiable settings + /// for the running WebView. + + [propget] HRESULT Settings([out, retval] ICoreWebView2Settings** settings); + + /// The URI of the current top level document. This value potentially + /// changes as a part of the `SourceChanged` event that runs for some cases + /// such as navigating to a different site or fragment navigations. It + /// remains the same for other types of navigations such as page refreshes + /// or `history.pushState` with the same URL as the current page. + /// + /// The caller must free the returned string with `CoTaskMemFree`. See + /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings). + /// + /// \snippet ControlComponent.cpp SourceChanged + [propget] HRESULT Source([out, retval] LPWSTR* uri); + + /// Cause a navigation of the top-level document to run to the specified URI. + /// For more information, navigate to [Navigation + /// events](/microsoft-edge/webview2/concepts/navigation-events). + /// + /// \> [!NOTE]\n\> This operation starts a navigation and the corresponding + /// `NavigationStarting` event triggers sometime after `Navigate` runs. + /// + /// \snippet ControlComponent.cpp Navigate + HRESULT Navigate([in] LPCWSTR uri); + + /// Initiates a navigation to htmlContent as source HTML of a new document. + /// The `htmlContent` parameter may not be larger than 2 MB (2 * 1024 * 1024 bytes) in total size. + /// The origin of the new page is `about:blank`. + /// + /// ```cpp + /// SetVirtualHostNameToFolderMapping( + /// L"appassets.example", L"assets", + /// COREWEBVIEW2_HOST_RESOURCE_ACCESS_KIND_DENY); + /// + /// WCHAR c_navString[] = LR" + /// + /// + /// + ///

Click me

+ /// "; + /// m_webView->NavigateToString(c_navString); + /// ``` + /// \snippet SettingsComponent.cpp NavigateToString + HRESULT NavigateToString([in] LPCWSTR htmlContent); + + /// Add an event handler for the `NavigationStarting` event. + /// `NavigationStarting` runs when the WebView main frame is requesting + /// permission to navigate to a different URI. Redirects trigger this + /// operation as well, and the navigation id is the same as the original + /// one. + /// + /// Navigations will be blocked until all `NavigationStarting` event handlers + /// return. + /// + /// \snippet SettingsComponent.cpp NavigationStarting + HRESULT add_NavigationStarting( + [in] ICoreWebView2NavigationStartingEventHandler* eventHandler, + [out] EventRegistrationToken* token); + + /// Remove an event handler previously added with `add_NavigationStarting`. + HRESULT remove_NavigationStarting( + [in] EventRegistrationToken token); + + /// Add an event handler for the `ContentLoading` event. `ContentLoading` + /// triggers before any content is loaded, including scripts added with + /// `AddScriptToExecuteOnDocumentCreated`. `ContentLoading` does not trigger + /// if a same page navigation occurs (such as through `fragment` + /// navigations or `history.pushState` navigations). This operation + /// follows the `NavigationStarting` and `SourceChanged` events and precedes + /// the `HistoryChanged` and `NavigationCompleted` events. + HRESULT add_ContentLoading( + [in] ICoreWebView2ContentLoadingEventHandler* eventHandler, + [out] EventRegistrationToken* token); + + /// Remove an event handler previously added with `add_ContentLoading`. + HRESULT remove_ContentLoading( + [in] EventRegistrationToken token); + + /// Add an event handler for the `SourceChanged` event. `SourceChanged` + /// triggers when the `Source` property changes. `SourceChanged` runs when + /// navigating to a different site or fragment navigations. It does not + /// trigger for other types of navigations such as page refreshes or + /// `history.pushState` with the same URL as the current page. + /// `SourceChanged` runs before `ContentLoading` for navigation to a new + /// document. + /// + /// \snippet ControlComponent.cpp SourceChanged + HRESULT add_SourceChanged( + [in] ICoreWebView2SourceChangedEventHandler* eventHandler, + [out] EventRegistrationToken* token); + + /// Remove an event handler previously added with `add_SourceChanged`. + HRESULT remove_SourceChanged( + [in] EventRegistrationToken token); + + /// Add an event handler for the `HistoryChanged` event. `HistoryChanged` is + /// raised for changes to joint session history, which consists of top-level + /// and manual frame navigations. Use `HistoryChanged` to verify that the + /// `CanGoBack` or `CanGoForward` value has changed. `HistoryChanged` also + /// runs for using `GoBack` or `GoForward`. `HistoryChanged` runs after + /// `SourceChanged` and `ContentLoading`. `CanGoBack` is false for + /// navigations initiated through ICoreWebView2Frame APIs if there has not yet + /// been a user gesture. + /// + /// \snippet ControlComponent.cpp HistoryChanged + HRESULT add_HistoryChanged( + [in] ICoreWebView2HistoryChangedEventHandler* eventHandler, + [out] EventRegistrationToken* token); + + /// Remove an event handler previously added with `add_HistoryChanged`. + HRESULT remove_HistoryChanged( + [in] EventRegistrationToken token); + + /// Add an event handler for the `NavigationCompleted` event. + /// `NavigationCompleted` runs when the WebView has completely loaded + /// (concurrently when `body.onload` runs) or loading stopped with error. + /// + /// \snippet ControlComponent.cpp NavigationCompleted + HRESULT add_NavigationCompleted( + [in] ICoreWebView2NavigationCompletedEventHandler* eventHandler, + [out] EventRegistrationToken* token); + + /// Remove an event handler previously added with `add_NavigationCompleted`. + HRESULT remove_NavigationCompleted( + [in] EventRegistrationToken token); + + /// Add an event handler for the `FrameNavigationStarting` event. + /// `FrameNavigationStarting` triggers when a child frame in the WebView + /// requests permission to navigate to a different URI. Redirects trigger + /// this operation as well, and the navigation id is the same as the original + /// one. + /// + /// Navigations will be blocked until all `FrameNavigationStarting` event + /// handlers return. + /// + /// \snippet SettingsComponent.cpp FrameNavigationStarting + HRESULT add_FrameNavigationStarting( + [in] ICoreWebView2NavigationStartingEventHandler* eventHandler, + [out] EventRegistrationToken* token); + + /// Remove an event handler previously added with + /// `add_FrameNavigationStarting`. + HRESULT remove_FrameNavigationStarting( + [in] EventRegistrationToken token); + + /// Add an event handler for the `FrameNavigationCompleted` event. + /// `FrameNavigationCompleted` triggers when a child frame has completely + /// loaded (concurrently when `body.onload` has triggered) or loading stopped with error. + /// + /// \snippet ControlComponent.cpp FrameNavigationCompleted + HRESULT add_FrameNavigationCompleted( + [in] ICoreWebView2NavigationCompletedEventHandler* eventHandler, + [out] EventRegistrationToken* token); + + /// Remove an event handler previously added with + /// `add_FrameNavigationCompleted`. + HRESULT remove_FrameNavigationCompleted( + [in] EventRegistrationToken token); + + /// Add an event handler for the `ScriptDialogOpening` event. + /// `ScriptDialogOpening` runs when a JavaScript dialog (`alert`, `confirm`, + /// `prompt`, or `beforeunload`) displays for the webview. This event only + /// triggers if the `ICoreWebView2Settings::AreDefaultScriptDialogsEnabled` + /// property is set to `FALSE`. The `ScriptDialogOpening` event suppresses + /// dialogs or replaces default dialogs with custom dialogs. + /// + /// If a deferral is not taken on the event args, the subsequent scripts are + /// blocked until the event handler returns. If a deferral is taken, the + /// scripts are blocked until the deferral is completed. + /// + /// \snippet SettingsComponent.cpp ScriptDialogOpening + HRESULT add_ScriptDialogOpening( + [in] ICoreWebView2ScriptDialogOpeningEventHandler* eventHandler, + [out] EventRegistrationToken* token); + + /// Remove an event handler previously added with `add_ScriptDialogOpening`. + HRESULT remove_ScriptDialogOpening( + [in] EventRegistrationToken token); + + /// Add an event handler for the `PermissionRequested` event. + /// `PermissionRequested` runs when content in a WebView requests permission + /// to access some privileged resources. + /// + /// If a deferral is not taken on the event args, the subsequent scripts are + /// blocked until the event handler returns. If a deferral is taken, the + /// scripts are blocked until the deferral is completed. + /// + /// \snippet SettingsComponent.cpp PermissionRequested0 + /// \snippet SettingsComponent.cpp PermissionRequested1 + HRESULT add_PermissionRequested( + [in] ICoreWebView2PermissionRequestedEventHandler* eventHandler, + [out] EventRegistrationToken* token); + + /// Remove an event handler previously added with `add_PermissionRequested`. + HRESULT remove_PermissionRequested( + [in] EventRegistrationToken token); + + /// Add an event handler for the `ProcessFailed` event. + /// `ProcessFailed` runs when any of the processes in the + /// [WebView2 Process Group](/microsoft-edge/webview2/concepts/process-model?tabs=csharp#processes-in-the-webview2-runtime) + /// encounters one of the following conditions: + /// + /// Condition | Details + /// ---|--- + /// Unexpected exit | The process indicated by the event args has exited unexpectedly (usually due to a crash). The failure might or might not be recoverable and some failures are auto-recoverable. + /// Unresponsiveness | The process indicated by the event args has become unresponsive to user input. This is only reported for renderer processes, and will run every few seconds until the process becomes responsive again. + /// + /// \> [!NOTE]\n\> When the failing process is the browser process, a + /// `ICoreWebView2Environment5::BrowserProcessExited` event will run too. + /// + /// Your application can use `ICoreWebView2ProcessFailedEventArgs` and + /// `ICoreWebView2ProcessFailedEventArgs2` to identify which condition and + /// process the event is for, and to collect diagnostics and handle recovery + /// if necessary. For more details about which cases need to be handled by + /// your application, see `COREWEBVIEW2_PROCESS_FAILED_KIND`. + /// + /// \snippet ProcessComponent.cpp ProcessFailed + HRESULT add_ProcessFailed( + [in] ICoreWebView2ProcessFailedEventHandler* eventHandler, + [out] EventRegistrationToken* token); + + /// Remove an event handler previously added with `add_ProcessFailed`. + HRESULT remove_ProcessFailed( + [in] EventRegistrationToken token); + + /// Add the provided JavaScript to a list of scripts that should be run after + /// the global object has been created, but before the HTML document has + /// been parsed and before any other script included by the HTML document is + /// run. This method injects a script that runs on all top-level document + /// and child frame page navigations. This method runs asynchronously, and + /// you must wait for the completion handler to finish before the injected + /// script is ready to run. When this method completes, the `Invoke` method + /// of the handler is run with the `id` of the injected script. `id` is a + /// string. To remove the injected script, use + /// `RemoveScriptToExecuteOnDocumentCreated`. + /// + /// If the method is run in add_NewWindowRequested handler it should be called + /// before the new window is set. If called after setting the NewWindow property, the initial script + /// may or may not apply to the initial navigation and may only apply to the subsequent navigation. + /// For more details see `ICoreWebView2NewWindowRequestedEventArgs::put_NewWindow`. + /// + /// \> [!NOTE]\n\> If an HTML document is running in a sandbox of some kind using + /// [sandbox](https://developer.mozilla.org/docs/Web/HTML/Element/iframe#attr-sandbox) + /// properties or the + /// [Content-Security-Policy](https://developer.mozilla.org/docs/Web/HTTP/Headers/Content-Security-Policy) + /// HTTP header affects the script that runs. For example, if the + /// `allow-modals` keyword is not set then requests to run the `alert` + /// function are ignored. + /// + /// \snippet ScriptComponent.cpp AddScriptToExecuteOnDocumentCreated + HRESULT AddScriptToExecuteOnDocumentCreated( + [in] LPCWSTR javaScript, + [in] ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandler* handler); + + /// Remove the corresponding JavaScript added using + /// `AddScriptToExecuteOnDocumentCreated` with the specified script ID. The + /// script ID should be the one returned by the `AddScriptToExecuteOnDocumentCreated`. + /// Both use `AddScriptToExecuteOnDocumentCreated` and this method in `NewWindowRequested` + /// event handler at the same time sometimes causes trouble. Since invalid scripts will + /// be ignored, the script IDs you got may not be valid anymore. + HRESULT RemoveScriptToExecuteOnDocumentCreated([in] LPCWSTR id); + + /// Run JavaScript code from the javascript parameter in the current + /// top-level document rendered in the WebView. The result of evaluating + /// the provided JavaScript is used in this parameter. The result value is + /// a JSON encoded string. If the result is undefined, contains a reference + /// cycle, or otherwise is not able to be encoded into JSON, then the result + /// is considered to be null, which is encoded in JSON as the string "null". + /// + /// \> [!NOTE]\n\> A function that has no explicit return value returns undefined. If the + /// script that was run throws an unhandled exception, then the result is + /// also "null". This method is applied asynchronously. If the method is + /// run after the `NavigationStarting` event during a navigation, the script + /// runs in the new document when loading it, around the time + /// `ContentLoading` is run. This operation executes the script even if + /// `ICoreWebView2Settings::IsScriptEnabled` is set to `FALSE`. + /// + /// \snippet ScriptComponent.cpp ExecuteScript + HRESULT ExecuteScript( + [in] LPCWSTR javaScript, + [in] ICoreWebView2ExecuteScriptCompletedHandler* handler); + + /// Capture an image of what WebView is displaying. Specify the format of + /// the image with the `imageFormat` parameter. The resulting image binary + /// data is written to the provided `imageStream` parameter. When + /// `CapturePreview` finishes writing to the stream, the `Invoke` method on + /// the provided `handler` parameter is run. This method fails if called + /// before the first ContentLoading event. For example if this is called in + /// the NavigationStarting event for the first navigation it will fail. + /// For subsequent navigations, the method may not fail, but will not capture + /// an image of a given webpage until the ContentLoading event has been fired + /// for it. Any call to this method prior to that will result in a capture of + /// the page being navigated away from. + /// + /// \snippet FileComponent.cpp CapturePreview + HRESULT CapturePreview( + [in] COREWEBVIEW2_CAPTURE_PREVIEW_IMAGE_FORMAT imageFormat, + [in] IStream* imageStream, + [in] ICoreWebView2CapturePreviewCompletedHandler* handler); + + /// Reload the current page. This is similar to navigating to the URI of + /// current top level document including all navigation events firing and + /// respecting any entries in the HTTP cache. But, the back or forward + /// history are not modified. + HRESULT Reload(); + + /// Post the specified webMessage to the top level document in this WebView. + /// The main page receives the message by subscribing to the `message` event of the + /// `window.chrome.webview` of the page document. + /// + /// ```cpp + /// window.chrome.webview.addEventListener('message', handler) + /// window.chrome.webview.removeEventListener('message', handler) + /// ``` + /// + /// The event args is an instance of `MessageEvent`. The + /// `ICoreWebView2Settings::IsWebMessageEnabled` setting must be `TRUE` or + /// the web message will not be sent. The `data` property of the event + /// arg is the `webMessage` string parameter parsed as a JSON string into a + /// JavaScript object. The `source` property of the event arg is a reference + /// to the `window.chrome.webview` object. For information about sending + /// messages from the HTML document in the WebView to the host, navigate to + /// [add_WebMessageReceived](/microsoft-edge/webview2/reference/win32/icorewebview2#add_webmessagereceived). + /// The message is delivered asynchronously. If a navigation occurs before + /// the message is posted to the page, the message is discarded. + /// + /// \snippet ScenarioWebMessage.cpp WebMessageReceived + HRESULT PostWebMessageAsJson([in] LPCWSTR webMessageAsJson); + + /// Posts a message that is a simple string rather than a JSON string + /// representation of a JavaScript object. This behaves in exactly the same + /// manner as `PostWebMessageAsJson`, but the `data` property of the event + /// arg of the `window.chrome.webview` message is a string with the same + /// value as `webMessageAsString`. Use this instead of + /// `PostWebMessageAsJson` if you want to communicate using simple strings + /// rather than JSON objects. + HRESULT PostWebMessageAsString([in] LPCWSTR webMessageAsString); + + /// Add an event handler for the `WebMessageReceived` event. + /// `WebMessageReceived` runs when the + /// `ICoreWebView2Settings::IsWebMessageEnabled` setting is set and the + /// top-level document of the WebView runs + /// `window.chrome.webview.postMessage`. The `postMessage` function is + /// `void postMessage(object)` where object is any object supported by JSON + /// conversion. + /// + /// \snippet assets\ScenarioWebMessage.html chromeWebView + /// + /// When the page calls `postMessage`, the object parameter is converted to a + /// JSON string and is posted asynchronously to the host process. This will + /// result in the handler's `Invoke` method being called with the JSON string + /// as a parameter. + /// + /// \snippet ScenarioWebMessage.cpp WebMessageReceived + /// + /// If the same page calls `postMessage` multiple times, the corresponding + /// `WebMessageReceived` events are guaranteed to be fired in the same order. + /// However, if multiple frames call `postMessage`, there is no guaranteed + /// order. In addition, `WebMessageReceived` events caused by calls to + /// `postMessage` are not guaranteed to be sequenced with events caused by DOM + /// APIs. For example, if the page runs + /// + /// ```javascript + /// chrome.webview.postMessage("message"); + /// window.open(); + /// ``` + /// + /// then the `NewWindowRequested` event might be fired before the + /// `WebMessageReceived` event. If you need the `WebMessageReceived` event + /// to happen before anything else, then in the `WebMessageReceived` handler + /// you can post a message back to the page and have the page wait until it + /// receives that message before continuing. + HRESULT add_WebMessageReceived( + [in] ICoreWebView2WebMessageReceivedEventHandler* handler, + [out] EventRegistrationToken* token); + + /// Remove an event handler previously added with `add_WebMessageReceived`. + HRESULT remove_WebMessageReceived( + [in] EventRegistrationToken token); + + /// Runs an asynchronous `DevToolsProtocol` method. For more information + /// about available methods, navigate to + /// [DevTools Protocol Viewer](https://chromedevtools.github.io/devtools-protocol/tot) + /// . The `methodName` parameter is the full name of the method in the + /// `{domain}.{method}` format. The `parametersAsJson` parameter is a JSON + /// formatted string containing the parameters for the corresponding method. + /// The `Invoke` method of the `handler` is run when the method + /// asynchronously completes. `Invoke` is run with the return object of the + /// method as a JSON string. This function returns E_INVALIDARG if the `methodName` is + /// unknown or the `parametersAsJson` has an error. In the case of such an error, the + /// `returnObjectAsJson` parameter of the handler will include information + /// about the error. + /// Note even though WebView2 dispatches the CDP messages in the order called, + /// CDP method calls may be processed out of order. + /// If you require CDP methods to run in a particular order, you should wait + /// for the previous method's completed handler to run before calling the + /// next method. + /// + /// \snippet ScriptComponent.cpp CallDevToolsProtocolMethod + HRESULT CallDevToolsProtocolMethod( + [in] LPCWSTR methodName, + [in] LPCWSTR parametersAsJson, + [in] ICoreWebView2CallDevToolsProtocolMethodCompletedHandler* handler); + + /// The process ID of the browser process that hosts the WebView. + [propget] HRESULT BrowserProcessId([out, retval] UINT32* value); + + /// `TRUE` if the WebView is able to navigate to a previous page in the + /// navigation history. If `CanGoBack` changes value, the `HistoryChanged` + /// event runs. + [propget] HRESULT CanGoBack([out, retval] BOOL* canGoBack); + + /// `TRUE` if the WebView is able to navigate to a next page in the + /// navigation history. If `CanGoForward` changes value, the + /// `HistoryChanged` event runs. + [propget] HRESULT CanGoForward([out, retval] BOOL* canGoForward); + + /// Navigates the WebView to the previous page in the navigation history. + HRESULT GoBack(); + + /// Navigates the WebView to the next page in the navigation history. + HRESULT GoForward(); + + /// Get a DevTools Protocol event receiver that allows you to subscribe to a + /// DevTools Protocol event. The `eventName` parameter is the full name of + /// the event in the format `{domain}.{event}`. For more information about + /// DevTools Protocol events description and event args, navigate to + /// [DevTools Protocol Viewer](https://chromedevtools.github.io/devtools-protocol/tot). + /// + /// \snippet ScriptComponent.cpp DevToolsProtocolEventReceived + HRESULT GetDevToolsProtocolEventReceiver( + [in] LPCWSTR eventName, + [out, retval] ICoreWebView2DevToolsProtocolEventReceiver** receiver); + + /// Stop all navigations and pending resource fetches. Does not stop scripts. + HRESULT Stop(); + + /// Add an event handler for the `NewWindowRequested` event. + /// `NewWindowRequested` runs when content inside the WebView requests to + /// open a new window, such as through `window.open`. The app can pass a + /// target WebView that is considered the opened window or mark the event as + /// `Handled`, in which case WebView2 does not open a window. + /// If either `Handled` or `NewWindow` properties are not set, the target + /// content will be opened on a popup window. + /// + /// If a deferral is not taken on the event args, scripts that resulted in the + /// new window that are requested are blocked until the event handler returns. + /// If a deferral is taken, then scripts are blocked until the deferral is + /// completed or new window is set. + /// + /// For more details and considerations on the target WebView to be supplied + /// at the opened window, see `ICoreWebView2NewWindowRequestedEventArgs::put_NewWindow`. + /// + /// \snippet AppWindow.cpp NewWindowRequested + HRESULT add_NewWindowRequested( + [in] ICoreWebView2NewWindowRequestedEventHandler* eventHandler, + [out] EventRegistrationToken* token); + + /// Remove an event handler previously added with `add_NewWindowRequested`. + HRESULT remove_NewWindowRequested( + [in] EventRegistrationToken token); + + /// Add an event handler for the `DocumentTitleChanged` event. + /// `DocumentTitleChanged` runs when the `DocumentTitle` property of the + /// WebView changes and may run before or after the `NavigationCompleted` + /// event. + /// + /// \snippet FileComponent.cpp DocumentTitleChanged + HRESULT add_DocumentTitleChanged( + [in] ICoreWebView2DocumentTitleChangedEventHandler* eventHandler, + [out] EventRegistrationToken* token); + + /// Remove an event handler previously added with `add_DocumentTitleChanged`. + HRESULT remove_DocumentTitleChanged( + [in] EventRegistrationToken token); + + /// The title for the current top-level document. If the document has no + /// explicit title or is otherwise empty, a default that may or may not match + /// the URI of the document is used. + /// + /// The caller must free the returned string with `CoTaskMemFree`. See + /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings). + [propget] HRESULT DocumentTitle([out, retval] LPWSTR* title); + + /// Add the provided host object to script running in the WebView with the + /// specified name. Host objects are exposed as host object proxies using + /// `window.chrome.webview.hostObjects.{name}`. Host object proxies are + /// promises and resolves to an object representing the host object. The + /// promise is rejected if the app has not added an object with the name. + /// When JavaScript code access a property or method of the object, a promise + /// is return, which resolves to the value returned from the host for the + /// property or method, or rejected in case of error, for example, no + /// property or method on the object or parameters are not valid. + /// + /// \> [!NOTE]\n\> While simple types, `IDispatch` and array are supported, and + /// `IUnknown` objects that also implement `IDispatch` are treated as `IDispatch`, + /// generic `IUnknown`, `VT_DECIMAL`, or `VT_RECORD` variant is not supported. + /// Remote JavaScript objects like callback functions are represented as an + /// `VT_DISPATCH` `VARIANT` with the object implementing `IDispatch`. The + /// JavaScript callback method may be invoked using `DISPID_VALUE` for the + /// `DISPID`. Such callback method invocations will return immediately and will + /// not wait for the JavaScript function to run and so will not provide the return + /// value of the JavaScript function. + /// Nested arrays are supported up to a depth of 3. Arrays of by + /// reference types are not supported. `VT_EMPTY` and `VT_NULL` are mapped + /// into JavaScript as `null`. In JavaScript, `null` and undefined are + /// mapped to `VT_EMPTY`. + /// + /// Additionally, all host objects are exposed as + /// `window.chrome.webview.hostObjects.sync.{name}`. Here the host objects + /// are exposed as synchronous host object proxies. These are not promises + /// and function runtimes or property access synchronously block running + /// script waiting to communicate cross process for the host code to run. + /// Accordingly the result may have reliability issues and it is recommended + /// that you use the promise-based asynchronous + /// `window.chrome.webview.hostObjects.{name}` API. + /// + /// Synchronous host object proxies and asynchronous host object proxies may + /// both use a proxy to the same host object. Remote changes made by one + /// proxy propagates to any other proxy of that same host object whether + /// the other proxies and synchronous or asynchronous. + /// + /// While JavaScript is blocked on a synchronous run to native code, that + /// native code is unable to run back to JavaScript. Attempts to do so fail + /// with `HRESULT_FROM_WIN32(ERROR_POSSIBLE_DEADLOCK)`. + /// + /// Host object proxies are JavaScript Proxy objects that intercept all + /// property get, property set, and method invocations. Properties or methods + /// that are a part of the Function or Object prototype are run locally. + /// Additionally any property or method in the + /// `chrome.webview.hostObjects.options.forceLocalProperties` + /// array are also run locally. This defaults to including optional methods + /// that have meaning in JavaScript like `toJSON` and `Symbol.toPrimitive`. + /// Add more to the array as required. + /// + /// The `chrome.webview.hostObjects.cleanupSome` method performs a best + /// effort garbage collection on host object proxies. + /// + /// The `chrome.webview.hostObjects.options` object provides the ability to + /// change some functionality of host objects. + /// + /// Options property | Details + /// ---|--- + /// `forceLocalProperties` | This is an array of host object property names that will be run locally, instead of being called on the native host object. This defaults to `then`, `toJSON`, `Symbol.toString`, and `Symbol.toPrimitive`. You can add other properties to specify that they should be run locally on the javascript host object proxy. + /// `log` | This is a callback that will be called with debug information. For example, you can set this to `console.log.bind(console)` to have it print debug information to the console to help when troubleshooting host object usage. By default this is null. + /// `shouldSerializeDates` | By default this is false, and javascript Date objects will be sent to host objects as a string using `JSON.stringify`. You can set this property to true to have Date objects properly serialize as a `VT_DATE` when sending to the native host object, and have `VT_DATE` properties and return values create a javascript Date object. + /// `defaultSyncProxy` | When calling a method on a synchronous proxy, the result should also be a synchronous proxy. But in some cases, the sync/async context is lost (for example, when providing to native code a reference to a function, and then calling that function in native code). In these cases, the proxy will be asynchronous, unless this property is set. + /// `forceAsyncMethodMatches ` | This is an array of regular expressions. When calling a method on a synchronous proxy, the method call will be performed asynchronously if the method name matches a string or regular expression in this array. Setting this value to `Async` will make any method that ends with Async be an asynchronous method call. If an async method doesn't match here and isn't forced to be asynchronous, the method will be invoked synchronously, blocking execution of the calling JavaScript and then returning the resolution of the promise, rather than returning a promise. + /// `ignoreMemberNotFoundError` | By default, an exception is thrown when attempting to get the value of a proxy property that doesn't exist on the corresponding native class. Setting this property to `true` switches the behavior to match Chakra WinRT projection (and general JavaScript) behavior of returning `undefined` with no error. + /// + /// Host object proxies additionally have the following methods which run + /// locally. + /// + /// Method name | Details + /// ---|--- + ///`applyHostFunction`, `getHostProperty`, `setHostProperty` | Perform a method invocation, property get, or property set on the host object. Use the methods to explicitly force a method or property to run remotely if a conflicting local method or property exists. For instance, `proxy.toString()` runs the local `toString` method on the proxy object. But proxy.applyHostFunction('toString') runs `toString` on the host proxied object instead. + ///`getLocalProperty`, `setLocalProperty` | Perform property get, or property set locally. Use the methods to force getting or setting a property on the host object proxy rather than on the host object it represents. For instance, `proxy.unknownProperty` gets the property named `unknownProperty` from the host proxied object. But proxy.getLocalProperty('unknownProperty') gets the value of the property `unknownProperty` on the proxy object. + ///`sync` | Asynchronous host object proxies expose a sync method which returns a promise for a synchronous host object proxy for the same host object. For example, `chrome.webview.hostObjects.sample.methodCall()` returns an asynchronous host object proxy. Use the `sync` method to obtain a synchronous host object proxy instead: `const syncProxy = await chrome.webview.hostObjects.sample.methodCall().sync()`. + ///`async` | Synchronous host object proxies expose an async method which blocks and returns an asynchronous host object proxy for the same host object. For example, `chrome.webview.hostObjects.sync.sample.methodCall()` returns a synchronous host object proxy. Running the `async` method on this blocks and then returns an asynchronous host object proxy for the same host object: `const asyncProxy = chrome.webview.hostObjects.sync.sample.methodCall().async()`. + ///`then` | Asynchronous host object proxies have a `then` method. Allows proxies to be awaitable. `then` returns a promise that resolves with a representation of the host object. If the proxy represents a JavaScript literal, a copy of that is returned locally. If the proxy represents a function, a non-awaitable proxy is returned. If the proxy represents a JavaScript object with a mix of literal properties and function properties, the a copy of the object is returned with some properties as host object proxies. + /// + /// All other property and method invocations (other than the above Remote + /// object proxy methods, `forceLocalProperties` list, and properties on + /// Function and Object prototypes) are run remotely. Asynchronous host + /// object proxies return a promise representing asynchronous completion of + /// remotely invoking the method, or getting the property. The promise + /// resolves after the remote operations complete and the promises resolve to + /// the resulting value of the operation. Synchronous host object proxies + /// work similarly, but block running JavaScript and wait for the remote + /// operation to complete. + /// + /// Setting a property on an asynchronous host object proxy works slightly + /// differently. The set returns immediately and the return value is the + /// value that is set. This is a requirement of the JavaScript Proxy object. + /// If you need to asynchronously wait for the property set to complete, use + /// the `setHostProperty` method which returns a promise as described above. + /// Synchronous object property set property synchronously blocks until the + /// property is set. + /// + /// For example, suppose you have a COM object with the following interface. + /// + /// \snippet HostObjectSample.idl AddHostObjectInterface + /// + /// Add an instance of this interface into your JavaScript with + /// `AddHostObjectToScript`. In this case, name it `sample`. + /// + /// \snippet ScenarioAddHostObject.cpp AddHostObjectToScript + /// + /// In the HTML document, use the COM object using + /// `chrome.webview.hostObjects.sample`. + /// Note that `CoreWebView2.AddHostObjectToScript` only applies to the + /// top-level document and not to frames. To add host objects to frames use + /// `CoreWebView2Frame.AddHostObjectToScript`. + /// + /// \snippet assets\ScenarioAddHostObject.html HostObjectUsage + /// + /// Exposing host objects to script has security risk. For more information + /// about best practices, navigate to + /// [Best practices for developing secure WebView2 applications](/microsoft-edge/webview2/concepts/security). + HRESULT AddHostObjectToScript([in] LPCWSTR name, [in] VARIANT* object); + + /// Remove the host object specified by the name so that it is no longer + /// accessible from JavaScript code in the WebView. While new access + /// attempts are denied, if the object is already obtained by JavaScript code + /// in the WebView, the JavaScript code continues to have access to that + /// object. Run this method for a name that is already removed or never + /// added fails. + HRESULT RemoveHostObjectFromScript([in] LPCWSTR name); + + /// Opens the DevTools window for the current document in the WebView. Does + /// nothing if run when the DevTools window is already open. + HRESULT OpenDevToolsWindow(); + + /// Add an event handler for the `ContainsFullScreenElementChanged` event. + /// `ContainsFullScreenElementChanged` triggers when the + /// `ContainsFullScreenElement` property changes. An HTML element inside the + /// WebView may enter fullscreen to the size of the WebView or leave + /// fullscreen. This event is useful when, for example, a video element + /// requests to go fullscreen. The listener of + /// `ContainsFullScreenElementChanged` may resize the WebView in response. + /// + /// \snippet AppWindow.cpp ContainsFullScreenElementChanged + HRESULT add_ContainsFullScreenElementChanged( + [in] ICoreWebView2ContainsFullScreenElementChangedEventHandler* eventHandler, + [out] EventRegistrationToken* token); + + /// Remove an event handler previously added with + /// `add_ContainsFullScreenElementChanged`. + HRESULT remove_ContainsFullScreenElementChanged( + [in] EventRegistrationToken token); + + /// Indicates if the WebView contains a fullscreen HTML element. + [propget] HRESULT ContainsFullScreenElement( + [out, retval] BOOL* containsFullScreenElement); + + /// Add an event handler for the `WebResourceRequested` event. + /// `WebResourceRequested` runs when the WebView is performing a URL request + /// to a matching URL and resource context filter that was added with + /// `AddWebResourceRequestedFilter`. At least one filter must be added for + /// the event to run. + /// + /// The web resource requested may be blocked until the event handler returns + /// if a deferral is not taken on the event args. If a deferral is taken, + /// then the web resource requested is blocked until the deferral is + /// completed. + /// + /// If this event is subscribed in the add_NewWindowRequested handler it should be called + /// after the new window is set. For more details see `ICoreWebView2NewWindowRequestedEventArgs::put_NewWindow`. + /// + /// This event is by default raised for file, http, and https URI schemes. + /// This is also raised for registered custom URI schemes. For more details + /// see `ICoreWebView2CustomSchemeRegistration`. + /// + /// \snippet SettingsComponent.cpp WebResourceRequested0 + /// \snippet SettingsComponent.cpp WebResourceRequested1 + HRESULT add_WebResourceRequested( + [in] ICoreWebView2WebResourceRequestedEventHandler* eventHandler, + [out] EventRegistrationToken* token); + + /// Remove an event handler previously added with `add_WebResourceRequested`. + HRESULT remove_WebResourceRequested( + [in] EventRegistrationToken token); + + /// Adds a URI and resource context filter for the `WebResourceRequested` + /// event. A web resource request with a resource context that matches this + /// filter's resource context and a URI that matches this filter's URI + /// wildcard string will be raised via the `WebResourceRequested` event. + /// + /// The `uri` parameter value is a wildcard string matched against the URI + /// of the web resource request. This is a glob style + /// wildcard string in which a `*` matches zero or more characters and a `?` + /// matches exactly one character. + /// These wildcard characters can be escaped using a backslash just before + /// the wildcard character in order to represent the literal `*` or `?`. + /// + /// The matching occurs over the URI as a whole string and not limiting + /// wildcard matches to particular parts of the URI. + /// The wildcard filter is compared to the URI after the URI has been + /// normalized, any URI fragment has been removed, and non-ASCII hostnames + /// have been converted to punycode. + /// + /// Specifying a `nullptr` for the uri is equivalent to an empty string which + /// matches no URIs. + /// + /// For more information about resource context filters, navigate to + /// [COREWEBVIEW2_WEB_RESOURCE_CONTEXT](/microsoft-edge/webview2/reference/win32/webview2-idl#corewebview2_web_resource_context). + /// + /// | URI Filter String | Request URI | Match | Notes | + /// | ---- | ---- | ---- | ---- | + /// | `*` | `https://contoso.com/a/b/c` | Yes | A single * will match all URIs | + /// | `*://contoso.com/*` | `https://contoso.com/a/b/c` | Yes | Matches everything in contoso.com across all schemes | + /// | `*://contoso.com/*` | `https://example.com/?https://contoso.com/` | Yes | But also matches a URI with just the same text anywhere in the URI | + /// | `example` | `https://contoso.com/example` | No | The filter does not perform partial matches | + /// | `*example` | `https://contoso.com/example` | Yes | The filter matches across URI parts | + /// | `*example` | `https://contoso.com/path/?example` | Yes | The filter matches across URI parts | + /// | `*example` | `https://contoso.com/path/?query#example` | No | The filter is matched against the URI with no fragment | + /// | `*example` | `https://example` | No | The URI is normalized before filter matching so the actual URI used for comparison is `https://example/` | + /// | `*example/` | `https://example` | Yes | Just like above, but this time the filter ends with a / just like the normalized URI | + /// | `https://xn--qei.example/` | `https://❤.example/` | Yes | Non-ASCII hostnames are normalized to punycode before wildcard comparison | + /// | `https://❤.example/` | `https://xn--qei.example/` | No | Non-ASCII hostnames are normalized to punycode before wildcard comparison | + HRESULT AddWebResourceRequestedFilter( + [in] LPCWSTR const uri, + [in] COREWEBVIEW2_WEB_RESOURCE_CONTEXT const resourceContext); + + /// Removes a matching WebResource filter that was previously added for the + /// `WebResourceRequested` event. If the same filter was added multiple + /// times, then it must be removed as many times as it was added for the + /// removal to be effective. Returns `E_INVALIDARG` for a filter that was + /// never added. + HRESULT RemoveWebResourceRequestedFilter( + [in] LPCWSTR const uri, + [in] COREWEBVIEW2_WEB_RESOURCE_CONTEXT const resourceContext); + + /// Add an event handler for the `WindowCloseRequested` event. + /// `WindowCloseRequested` triggers when content inside the WebView + /// requested to close the window, such as after `window.close` is run. The + /// app should close the WebView and related app window if that makes sense + /// to the app. + /// + /// \snippet AppWindow.cpp WindowCloseRequested + HRESULT add_WindowCloseRequested( + [in] ICoreWebView2WindowCloseRequestedEventHandler* eventHandler, + [out] EventRegistrationToken* token); + + /// Remove an event handler previously added with `add_WindowCloseRequested`. + HRESULT remove_WindowCloseRequested( + [in] EventRegistrationToken token); +} + +/// A continuation of the ICoreWebView2 interface. +[uuid(9E8F0CF8-E670-4B5E-B2BC-73E061E3184C), object, pointer_default(unique)] +interface ICoreWebView2_2 : ICoreWebView2 { + /// Add an event handler for the WebResourceResponseReceived event. + /// WebResourceResponseReceived is raised when the WebView receives the + /// response for a request for a web resource (any URI resolution performed by + /// the WebView; such as HTTP/HTTPS, file and data requests from redirects, + /// navigations, declarations in HTML, implicit favicon lookups, and fetch API + /// usage in the document). The host app can use this event to view the actual + /// request and response for a web resource. There is no guarantee about the + /// order in which the WebView processes the response and the host app's + /// handler runs. The app's handler will not block the WebView from processing + /// the response. + /// \snippet ScenarioAuthentication.cpp WebResourceResponseReceived + HRESULT add_WebResourceResponseReceived( + [in] ICoreWebView2WebResourceResponseReceivedEventHandler* eventHandler, + [out] EventRegistrationToken* token); + /// Remove an event handler previously added with + /// add_WebResourceResponseReceived. + HRESULT remove_WebResourceResponseReceived( + [in] EventRegistrationToken token); + + /// Navigates using a constructed WebResourceRequest object. This lets you + /// provide post data or additional request headers during navigation. + /// The headers in the WebResourceRequest override headers + /// added by WebView2 runtime except for Cookie headers. + /// Method can only be either "GET" or "POST". Provided post data will only + /// be sent only if the method is "POST" and the uri scheme is HTTP(S). + /// \snippet ScenarioNavigateWithWebResourceRequest.cpp NavigateWithWebResourceRequest + HRESULT NavigateWithWebResourceRequest([in] ICoreWebView2WebResourceRequest* request); + + /// Add an event handler for the DOMContentLoaded event. + /// DOMContentLoaded is raised when the initial html document has been parsed. + /// This aligns with the document's DOMContentLoaded event in html. + /// + /// \snippet ScenarioDOMContentLoaded.cpp DOMContentLoaded + HRESULT add_DOMContentLoaded( + [in] ICoreWebView2DOMContentLoadedEventHandler* eventHandler, + [out] EventRegistrationToken* token); + + /// Remove an event handler previously added with add_DOMContentLoaded. + HRESULT remove_DOMContentLoaded( + [in] EventRegistrationToken token); + + /// Gets the cookie manager object associated with this ICoreWebView2. + /// See ICoreWebView2CookieManager. + /// + /// \snippet ScenarioCookieManagement.cpp CookieManager + [propget] HRESULT CookieManager([out, retval] ICoreWebView2CookieManager** cookieManager); + + /// Exposes the CoreWebView2Environment used to create this CoreWebView2. + [propget] HRESULT Environment([out, retval] ICoreWebView2Environment** environment); +} + +/// A continuation of the ICoreWebView2_2 interface. +[uuid(A0D6DF20-3B92-416D-AA0C-437A9C727857), object, pointer_default(unique)] +interface ICoreWebView2_3 : ICoreWebView2_2 { + /// An app may call the `TrySuspend` API to have the WebView2 consume less memory. + /// This is useful when a Win32 app becomes invisible, or when a Universal Windows + /// Platform app is being suspended, during the suspended event handler before completing + /// the suspended event. + /// The CoreWebView2Controller's IsVisible property must be false when the API is called. + /// Otherwise, the API fails with `HRESULT_FROM_WIN32(ERROR_INVALID_STATE)`. + /// Suspending is similar to putting a tab to sleep in the Edge browser. Suspending pauses + /// WebView script timers and animations, minimizes CPU usage for the associated + /// browser renderer process and allows the operating system to reuse the memory that was + /// used by the renderer process for other processes. + /// Note that Suspend is best effort and considered completed successfully once the request + /// is sent to browser renderer process. If there is a running script, the script will continue + /// to run and the renderer process will be suspended after that script is done. + /// See [Sleeping Tabs FAQ](https://techcommunity.microsoft.com/t5/articles/sleeping-tabs-faq/m-p/1705434) + /// for conditions that might prevent WebView from being suspended. In those situations, + /// the completed handler will be invoked with isSuccessful as false and errorCode as S_OK. + /// The WebView will be automatically resumed when it becomes visible. Therefore, the + /// app normally does not have to call `Resume` explicitly. + /// The app can call `Resume` and then `TrySuspend` periodically for an invisible WebView so that + /// the invisible WebView can sync up with latest data and the page ready to show fresh content + /// when it becomes visible. + /// All WebView APIs can still be accessed when a WebView is suspended. Some APIs like Navigate + /// will auto resume the WebView. To avoid unexpected auto resume, check `IsSuspended` property + /// before calling APIs that might change WebView state. + /// + /// \snippet ViewComponent.cpp ToggleIsVisibleOnMinimize + /// + /// \snippet ViewComponent.cpp Suspend + /// + HRESULT TrySuspend([in] ICoreWebView2TrySuspendCompletedHandler* handler); + + /// Resumes the WebView so that it resumes activities on the web page. + /// This API can be called while the WebView2 controller is invisible. + /// The app can interact with the WebView immediately after `Resume`. + /// WebView will be automatically resumed when it becomes visible. + /// + /// \snippet ViewComponent.cpp ToggleIsVisibleOnMinimize + /// + /// \snippet ViewComponent.cpp Resume + /// + HRESULT Resume(); + + /// Whether WebView is suspended. + /// `TRUE` when WebView is suspended, from the time when TrySuspend has completed + /// successfully until WebView is resumed. + [propget] HRESULT IsSuspended([out, retval] BOOL* isSuspended); + + /// Sets a mapping between a virtual host name and a folder path to make available to web sites + /// via that host name. + /// + /// After setting the mapping, documents loaded in the WebView can use HTTP or HTTPS URLs at + /// the specified host name specified by hostName to access files in the local folder specified + /// by folderPath. + /// + /// This mapping applies to both top-level document and iframe navigations as well as subresource + /// references from a document. This also applies to web workers including dedicated/shared worker + /// and service worker, for loading either worker scripts or subresources + /// (importScripts(), fetch(), XHR, etc.) issued from within a worker. + /// For virtual host mapping to work with service worker, please keep the virtual host name + /// mappings consistent among all WebViews sharing the same browser instance. As service worker + /// works independently of WebViews, we merge mappings from all WebViews when resolving virtual + /// host name, inconsistent mappings between WebViews would lead unexpected behavior. + /// + /// Due to a current implementation limitation, media files accessed using virtual host name can be + /// very slow to load. + /// As the resource loaders for the current page might have already been created and running, + /// changes to the mapping might not be applied to the current page and a reload of the page is + /// needed to apply the new mapping. + /// + /// Both absolute and relative paths are supported for folderPath. Relative paths are interpreted + /// as relative to the folder where the exe of the app is in. + /// + /// Note that the folderPath length must not exceed the Windows MAX_PATH limit. + /// + /// accessKind specifies the level of access to resources under the virtual host from other sites. + /// + /// For example, after calling + /// ```cpp + /// SetVirtualHostNameToFolderMapping( + /// L"appassets.example", L"assets", + /// COREWEBVIEW2_HOST_RESOURCE_ACCESS_KIND_DENY); + /// ``` + /// navigating to `https://appassets.example/my-local-file.html` will + /// show the content from my-local-file.html in the assets subfolder located on disk under + /// the same path as the app's executable file. + /// + /// DOM elements that want to reference local files will have their host reference virtual host in the source. + /// If there are multiple folders being used, define one unique virtual host per folder. + /// For example, you can embed a local image like this + /// ```cpp + /// WCHAR c_navString[] = L""; + /// m_webView->NavigateToString(c_navString); + /// ``` + /// The example above shows the image wv2.png by resolving the folder mapping above. + /// + /// You should typically choose virtual host names that are never used by real sites. + /// If you own a domain such as example.com, another option is to use a subdomain reserved for + /// the app (like my-app.example.com). + /// + /// [RFC 6761](https://tools.ietf.org/html/rfc6761) has reserved several special-use domain + /// names that are guaranteed to not be used by real sites (for example, .example, .test, and + /// .invalid.) + /// + /// Note that using `.local` as the top-level domain name will work but can cause a delay + /// during navigations. You should avoid using `.local` if you can. + /// + /// Apps should use distinct domain names when mapping folder from different sources that + /// should be isolated from each other. For instance, the app might use app-file.example for + /// files that ship as part of the app, and book1.example might be used for files containing + /// books from a less trusted source that were previously downloaded and saved to the disk by + /// the app. + /// + /// The host name used in the APIs is canonicalized using Chromium's host name parsing logic + /// before being used internally. For more information see [HTML5 2.6 URLs](https://dev.w3.org/html5/spec-LC/urls.html). + /// + /// All host names that are canonicalized to the same string are considered identical. + /// For example, `EXAMPLE.COM` and `example.com` are treated as the same host name. + /// An international host name and its Punycode-encoded host name are considered the same host + /// name. There is no DNS resolution for host name and the trailing '.' is not normalized as + /// part of canonicalization. + /// + /// Therefore `example.com` and `example.com.` are treated as different host names. Similarly, + /// `virtual-host-name` and `virtual-host-name.example.com` are treated as different host names + /// even if the machine has a DNS suffix of `example.com`. + /// + /// Specify the minimal cross-origin access necessary to run the app. If there is not a need to + /// access local resources from other origins, use COREWEBVIEW2_HOST_RESOURCE_ACCESS_KIND_DENY. + /// + /// \snippet AppWindow.cpp AddVirtualHostNameToFolderMapping + /// + /// \snippet AppWindow.cpp LocalUrlUsage + HRESULT SetVirtualHostNameToFolderMapping( + [in] LPCWSTR hostName, + [in] LPCWSTR folderPath, + [in] COREWEBVIEW2_HOST_RESOURCE_ACCESS_KIND accessKind); + + /// Clears a host name mapping for local folder that was added by `SetVirtualHostNameToFolderMapping`. + HRESULT ClearVirtualHostNameToFolderMapping( + [in] LPCWSTR hostName); +} + +/// A continuation of the ICoreWebView2_3 interface to support FrameCreated and +/// DownloadStarting events. +[uuid(20d02d59-6df2-42dc-bd06-f98a694b1302), object, pointer_default(unique)] +interface ICoreWebView2_4 : ICoreWebView2_3 { + /// Raised when a new iframe is created. + /// Handle this event to get access to ICoreWebView2Frame objects. + /// Use ICoreWebView2Frame.add_Destroyed to listen for when this iframe goes + /// away. + HRESULT add_FrameCreated( + [in] ICoreWebView2FrameCreatedEventHandler * eventHandler, + [out] EventRegistrationToken * token); + + /// Remove an event handler previously added with add_FrameCreated. + HRESULT remove_FrameCreated([in] EventRegistrationToken token); + + /// Add an event handler for the `DownloadStarting` event. This event is + /// raised when a download has begun, blocking the default download dialog, + /// but not blocking the progress of the download. + /// + /// The host can choose to cancel a download, change the result file path, + /// and hide the default download dialog. + /// If the host chooses to cancel the download, the download is not saved, no + /// dialog is shown, and the state is changed to + /// COREWEBVIEW2_DOWNLOAD_STATE_INTERRUPTED with interrupt reason + /// COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_USER_CANCELED. Otherwise, the + /// download is saved to the default path after the event completes, + /// and default download dialog is shown if the host did not choose to hide it. + /// The host can change the visibility of the download dialog using the + /// `Handled` property. If the event is not handled, downloads complete + /// normally with the default dialog shown. + /// + /// \snippet ScenarioCustomDownloadExperience.cpp DownloadStarting + HRESULT add_DownloadStarting( + [in] ICoreWebView2DownloadStartingEventHandler* eventHandler, + [out] EventRegistrationToken* token); + + /// Remove an event handler previously added with `add_DownloadStarting`. + HRESULT remove_DownloadStarting( + [in] EventRegistrationToken token); +} + +/// A continuation of the ICoreWebView2_4 interface to support ClientCertificateRequested +/// event. +[uuid(bedb11b8-d63c-11eb-b8bc-0242ac130003), object, pointer_default(unique)] +interface ICoreWebView2_5 : ICoreWebView2_4 { + /// Add an event handler for the ClientCertificateRequested event. + /// The ClientCertificateRequested event is raised when the WebView2 + /// is making a request to an HTTP server that needs a client certificate + /// for HTTP authentication. + /// Read more about HTTP client certificates at + /// [RFC 8446 The Transport Layer Security (TLS) Protocol Version 1.3](https://tools.ietf.org/html/rfc8446). + /// + /// With this event you have several options for responding to client certificate requests: + /// + /// Scenario | Handled | Cancel | SelectedCertificate + /// ---------------------------------------------------------- | ------- | ------ | ------------------- + /// Respond to server with a certificate | True | False | MutuallyTrustedCertificate value + /// Respond to server without certificate | True | False | null + /// Display default client certificate selection dialog prompt | False | False | n/a + /// Cancel the request | n/a | True | n/a + /// + /// If you don't handle the event, WebView2 will + /// show the default client certificate selection dialog prompt to user. + /// + /// \snippet SettingsComponent.cpp ClientCertificateRequested1 + /// \snippet ScenarioClientCertificateRequested.cpp ClientCertificateRequested2 + HRESULT add_ClientCertificateRequested( + [in] ICoreWebView2ClientCertificateRequestedEventHandler* eventHandler, + [out] EventRegistrationToken* token); + + /// Remove an event handler previously added with add_ClientCertificateRequested. + HRESULT remove_ClientCertificateRequested([in] EventRegistrationToken token); +} + +/// This interface is an extension of `ICoreWebView2_5` that manages opening +/// the browser task manager window. +[uuid(499aadac-d92c-4589-8a75-111bfc167795), object, pointer_default(unique)] +interface ICoreWebView2_6 : ICoreWebView2_5 { + /// Opens the Browser Task Manager view as a new window in the foreground. + /// If the Browser Task Manager is already open, this will bring it into + /// the foreground. WebView2 currently blocks the Shift+Esc shortcut for + /// opening the task manager. An end user can open the browser task manager + /// manually via the `Browser task manager` entry of the DevTools window's + /// title bar's context menu. + HRESULT OpenTaskManagerWindow(); +} + +/// This interface is an extension of `ICoreWebView2_6` that supports printing +/// to PDF. +[uuid(79c24d83-09a3-45ae-9418-487f32a58740), object, pointer_default(unique)] +interface ICoreWebView2_7 : ICoreWebView2_6 { + /// Print the current page to PDF asynchronously with the provided settings. + /// See `ICoreWebView2PrintSettings` for description of settings. Passing + /// nullptr for `printSettings` results in default print settings used. + /// + /// Use `resultFilePath` to specify the path to the PDF file. The host should + /// provide an absolute path, including file name. If the path + /// points to an existing file, the file will be overwritten. If the path is + /// not valid, the method fails with `E_INVALIDARG`. + /// + /// The async `PrintToPdf` operation completes when the data has been written + /// to the PDF file. At this time the + /// `ICoreWebView2PrintToPdfCompletedHandler` is invoked. If the + /// application exits before printing is complete, the file is not saved. + /// Only one `Printing` operation can be in progress at a time. If + /// `PrintToPdf` is called while a `PrintToPdf` or `PrintToPdfStream` or `Print` or + /// `ShowPrintUI` job is in progress, the completed handler is immediately invoked + /// with `isSuccessful` set to FALSE. + /// + /// \snippet FileComponent.cpp PrintToPdf + HRESULT PrintToPdf( + [in] LPCWSTR resultFilePath, + [in] ICoreWebView2PrintSettings* printSettings, + [in] ICoreWebView2PrintToPdfCompletedHandler* handler); +} + +/// This interface is an extension of `ICoreWebView2_7` that supports media features. +[uuid(E9632730-6E1E-43AB-B7B8-7B2C9E62E094), object, pointer_default(unique)] +interface ICoreWebView2_8 : ICoreWebView2_7 { + /// Adds an event handler for the `IsMutedChanged` event. + /// `IsMutedChanged` is raised when the IsMuted property changes value. + /// + /// \snippet AudioComponent.cpp IsMutedChanged + HRESULT add_IsMutedChanged( + [in] ICoreWebView2IsMutedChangedEventHandler* eventHandler, + [out] EventRegistrationToken* token); + + /// Remove an event handler previously added with `add_IsMutedChanged`. + HRESULT remove_IsMutedChanged( + [in] EventRegistrationToken token); + + /// Indicates whether all audio output from this CoreWebView2 is muted or not. + /// + /// \snippet AudioComponent.cpp ToggleIsMuted + [propget] HRESULT IsMuted([out, retval] BOOL* value); + + /// Sets the `IsMuted` property. + /// + /// \snippet AudioComponent.cpp ToggleIsMuted + [propput] HRESULT IsMuted([in] BOOL value); + + /// Adds an event handler for the `IsDocumentPlayingAudioChanged` event. + /// `IsDocumentPlayingAudioChanged` is raised when the IsDocumentPlayingAudio property changes value. + /// + /// \snippet AudioComponent.cpp IsDocumentPlayingAudioChanged + HRESULT add_IsDocumentPlayingAudioChanged( + [in] ICoreWebView2IsDocumentPlayingAudioChangedEventHandler* eventHandler, + [out] EventRegistrationToken* token); + + /// Remove an event handler previously added with `add_IsDocumentPlayingAudioChanged`. + HRESULT remove_IsDocumentPlayingAudioChanged( + [in] EventRegistrationToken token); + + /// Indicates whether any audio output from this CoreWebView2 is playing. + /// This property will be true if audio is playing even if IsMuted is true. + /// + /// \snippet AudioComponent.cpp IsDocumentPlayingAudio + [propget] HRESULT IsDocumentPlayingAudio([out, retval] BOOL* value); +} + +/// This interface is an extension of `ICoreWebView2_8` that default download +/// dialog positioning and anchoring. +[uuid(4d7b2eab-9fdc-468d-b998-a9260b5ed651), object, pointer_default(unique)] +interface ICoreWebView2_9 : ICoreWebView2_8 { + /// Raised when the `IsDefaultDownloadDialogOpen` property changes. This event + /// comes after the `DownloadStarting` event. Setting the `Handled` property + /// on the `DownloadStartingEventArgs` disables the default download dialog + /// and ensures that this event is never raised. + HRESULT add_IsDefaultDownloadDialogOpenChanged( + [in] ICoreWebView2IsDefaultDownloadDialogOpenChangedEventHandler* handler, + [out] EventRegistrationToken* token); + + /// Remove an event handler previously added with + /// `add_IsDefaultDownloadDialogOpenChanged`. + HRESULT remove_IsDefaultDownloadDialogOpenChanged( + [in] EventRegistrationToken token); + + /// `TRUE` if the default download dialog is currently open. The value of this + /// property changes only when the default download dialog is explicitly + /// opened or closed. Hiding the WebView implicitly hides the dialog, but does + /// not change the value of this property. + [propget] HRESULT IsDefaultDownloadDialogOpen([out, retval] BOOL* value); + + /// Open the default download dialog. If the dialog is opened before there + /// are recent downloads, the dialog shows all past downloads for the + /// current profile. Otherwise, the dialog shows only the recent downloads + /// with a "See more" button for past downloads. Calling this method raises + /// the `IsDefaultDownloadDialogOpenChanged` event if the dialog was closed. + /// No effect if the dialog is already open. + /// + /// \snippet ViewComponent.cpp ToggleDefaultDownloadDialog + HRESULT OpenDefaultDownloadDialog(); + + /// Close the default download dialog. Calling this method raises the + /// `IsDefaultDownloadDialogOpenChanged` event if the dialog was open. No + /// effect if the dialog is already closed. + HRESULT CloseDefaultDownloadDialog(); + + /// Get the default download dialog corner alignment. + [propget] HRESULT DefaultDownloadDialogCornerAlignment( + [out, retval] COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT* value); + + /// Set the default download dialog corner alignment. The dialog can be + /// aligned to any of the WebView corners (see + /// COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT). When the WebView + /// or dialog changes size, the dialog keeps its position relative to the + /// corner. The dialog may become partially or completely outside of the + /// WebView bounds if the WebView is small enough. Set the margin relative to + /// the corner with the `DefaultDownloadDialogMargin` property. The corner + /// alignment and margin should be set during initialization to ensure that + /// they are correctly applied when the layout is first computed, otherwise + /// they will not take effect until the next time the WebView position or size + /// is updated. + /// + /// \snippet ViewComponent.cpp SetDefaultDownloadDialogPosition + [propput] HRESULT DefaultDownloadDialogCornerAlignment( + [in] COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT value); + + /// Get the default download dialog margin. + [propget] HRESULT DefaultDownloadDialogMargin([out, retval] POINT* value); + + /// Set the default download dialog margin relative to the WebView corner + /// specified by `DefaultDownloadDialogCornerAlignment`. The margin is a + /// point that describes the vertical and horizontal distances between the + /// chosen WebView corner and the default download dialog corner nearest to + /// it. Positive values move the dialog towards the center of the WebView from + /// the chosen WebView corner, and negative values move the dialog away from + /// it. Use (0, 0) to align the dialog to the WebView corner with no margin. + /// The corner alignment and margin should be set during initialization to + /// ensure that they are correctly applied when the layout is first computed, + /// otherwise they will not take effect until the next time the WebView + /// position or size is updated. + [propput] HRESULT DefaultDownloadDialogMargin([in] POINT value); +} + +/// This interface is an extension of `ICoreWebView2_9` that supports +/// BasicAuthenticationRequested event. +[uuid(b1690564-6f5a-4983-8e48-31d1143fecdb), object, pointer_default(unique)] +interface ICoreWebView2_10 : ICoreWebView2_9 { + /// Add an event handler for the BasicAuthenticationRequested event. + /// BasicAuthenticationRequested event is raised when WebView encounters a + /// Basic HTTP Authentication request as described in + /// https://developer.mozilla.org/docs/Web/HTTP/Authentication, a Digest + /// HTTP Authentication request as described in + /// https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Authorization#digest, + /// an NTLM authentication or a Proxy Authentication request. + /// + /// The host can provide a response with credentials for the authentication or + /// cancel the request. If the host sets the Cancel property to false but does not + /// provide either UserName or Password properties on the Response property, then + /// WebView2 will show the default authentication challenge dialog prompt to + /// the user. + /// + /// \snippet ScenarioAuthentication.cpp BasicAuthenticationRequested + HRESULT add_BasicAuthenticationRequested( + [in] ICoreWebView2BasicAuthenticationRequestedEventHandler* eventHandler, + [out] EventRegistrationToken* token); + + /// Remove an event handler previously added with add_BasicAuthenticationRequested. + HRESULT remove_BasicAuthenticationRequested( + [in] EventRegistrationToken token); +} + +/// This interface is an extension of `ICoreWebView2_10` that supports sessionId +/// for CDP method calls and ContextMenuRequested event. +[uuid(0be78e56-c193-4051-b943-23b460c08bdb), object, pointer_default(unique)] +interface ICoreWebView2_11 : ICoreWebView2_10 { + /// Runs an asynchronous `DevToolsProtocol` method for a specific session of + /// an attached target. + /// There could be multiple `DevToolsProtocol` targets in a WebView. + /// Besides the top level page, iframes from different origin and web workers + /// are also separate targets. Attaching to these targets allows interaction with them. + /// When the DevToolsProtocol is attached to a target, the connection is identified + /// by a sessionId. + /// To use this API, you must set the `flatten` parameter to true when calling + /// `Target.attachToTarget` or `Target.setAutoAttach` `DevToolsProtocol` method. + /// Using `Target.setAutoAttach` is recommended as that would allow you to attach + /// to dedicated worker targets, which are not discoverable via other APIs like + /// `Target.getTargets`. + /// For more information about targets and sessions, navigate to + /// [DevTools Protocol Viewer](https://chromedevtools.github.io/devtools-protocol/tot/Target). + /// For more information about available methods, navigate to + /// [DevTools Protocol Viewer](https://chromedevtools.github.io/devtools-protocol/tot) + /// The `sessionId` parameter is the sessionId for an attached target. + /// nullptr or empty string is treated as the session for the default target for the top page. + /// The `methodName` parameter is the full name of the method in the + /// `{domain}.{method}` format. The `parametersAsJson` parameter is a JSON + /// formatted string containing the parameters for the corresponding method. + /// The `Invoke` method of the `handler` is run when the method + /// asynchronously completes. `Invoke` is run with the return object of the + /// method as a JSON string. This function returns E_INVALIDARG if the `methodName` is + /// unknown or the `parametersAsJson` has an error. In the case of such an error, the + /// `returnObjectAsJson` parameter of the handler will include information + /// about the error. + /// + /// \snippet ScriptComponent.cpp DevToolsProtocolMethodMultiSession + /// + /// \snippet ScriptComponent.cpp CallDevToolsProtocolMethodForSession + HRESULT CallDevToolsProtocolMethodForSession( + [in] LPCWSTR sessionId, + [in] LPCWSTR methodName, + [in] LPCWSTR parametersAsJson, + [in] ICoreWebView2CallDevToolsProtocolMethodCompletedHandler* handler); + + /// Add an event handler for the `ContextMenuRequested` event. + /// `ContextMenuRequested` event is raised when a context menu is requested by the user + /// and the content inside WebView hasn't disabled context menus. + /// The host has the option to create their own context menu with the information provided in + /// the event or can add items to or remove items from WebView context menu. + /// If the host doesn't handle the event, WebView will display the default context menu. + /// + /// \snippet SettingsComponent.cpp EnableCustomMenu + HRESULT add_ContextMenuRequested( + [in] ICoreWebView2ContextMenuRequestedEventHandler* eventHandler, + [out] EventRegistrationToken* token); + + /// Remove an event handler previously added with `add_ContextMenuRequested`. + HRESULT remove_ContextMenuRequested( + [in] EventRegistrationToken token); +} + +/// This interface is an extension of `ICoreWebView2_11` that supports +/// StatusBarTextChanged event. +[uuid(35D69927-BCFA-4566-9349-6B3E0D154CAC), object, pointer_default(unique)] +interface ICoreWebView2_12 : ICoreWebView2_11 { + /// Add an event handler for the `StatusBarTextChanged` event. + /// `StatusBarTextChanged` fires when the WebView is showing a status message, + /// a URL, or an empty string (an indication to hide the status bar). + /// \snippet SettingsComponent.cpp StatusBarTextChanged + HRESULT add_StatusBarTextChanged( + [in] ICoreWebView2StatusBarTextChangedEventHandler* eventHandler, + [out] EventRegistrationToken* token); + + /// Remove an event handler previously added with `add_StatusBarTextChanged`. + HRESULT remove_StatusBarTextChanged([in] EventRegistrationToken token); + + /// The status message text. + /// + /// The caller must free the returned string with `CoTaskMemFree`. See + /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings). + [propget] HRESULT StatusBarText([out, retval] LPWSTR* value); +} + +/// This interface is an extension of `ICoreWebView2_12` that supports Profile +/// API. +[uuid(F75F09A8-667E-4983-88D6-C8773F315E84), object, pointer_default(unique)] +interface ICoreWebView2_13 : ICoreWebView2_12 { + /// The associated `ICoreWebView2Profile` object. If this CoreWebView2 was created with a + /// CoreWebView2ControllerOptions, the CoreWebView2Profile will match those specified options. + /// Otherwise if this CoreWebView2 was created without a CoreWebView2ControllerOptions, then + /// this will be the default CoreWebView2Profile for the corresponding CoreWebView2Environment. + /// + /// \snippet AppWindow.cpp CoreWebView2Profile + [propget] HRESULT Profile([out, retval] ICoreWebView2Profile** value); +} + +/// This interface is an extension of `ICoreWebView2_13` that adds +/// ServerCertificate support. +[uuid(6DAA4F10-4A90-4753-8898-77C5DF534165), object, pointer_default(unique)] +interface ICoreWebView2_14 : ICoreWebView2_13 { + /// Add an event handler for the ServerCertificateErrorDetected event. + /// The ServerCertificateErrorDetected event is raised when the WebView2 + /// cannot verify server's digital certificate while loading a web page. + /// + /// This event will raise for all web resources and follows the `WebResourceRequested` event. + /// + /// If you don't handle the event, WebView2 will show the default TLS interstitial error page to the user + /// for navigations, and for non-navigations the web request is cancelled. + /// + /// Note that WebView2 before raising `ServerCertificateErrorDetected` raises a `NavigationCompleted` event + /// with `IsSuccess` as FALSE and any of the below WebErrorStatuses that indicate a certificate failure. + /// + /// - COREWEBVIEW2_WEB_ERROR_STATUS_CERTIFICATE_COMMON_NAME_IS_INCORRECT + /// - COREWEBVIEW2_WEB_ERROR_STATUS_CERTIFICATE_EXPIRED + /// - COREWEBVIEW2_WEB_ERROR_STATUS_CLIENT_CERTIFICATE_CONTAINS_ERRORS + /// - COREWEBVIEW2_WEB_ERROR_STATUS_CERTIFICATE_REVOKED + /// - COREWEBVIEW2_WEB_ERROR_STATUS_CERTIFICATE_IS_INVALID + /// + /// For more details see `ICoreWebView2NavigationCompletedEventArgs::get_IsSuccess` and handle + /// ServerCertificateErrorDetected event or show the default TLS interstitial error page to the user + /// according to the app needs. + /// + /// WebView2 caches the response when action is `COREWEBVIEW2_SERVER_CERTIFICATE_ERROR_ACTION_ALWAYS_ALLOW` + /// for the RequestUri's host and the server certificate in the session and the `ServerCertificateErrorDetected` + /// event won't be raised again. + /// + /// To raise the event again you must clear the cache using `ClearServerCertificateErrorActions`. + /// + /// \snippet SettingsComponent.cpp ServerCertificateErrorDetected1 + HRESULT add_ServerCertificateErrorDetected( + [in] ICoreWebView2ServerCertificateErrorDetectedEventHandler* + eventHandler, + [out] EventRegistrationToken* token); + /// Remove an event handler previously added with add_ServerCertificateErrorDetected. + HRESULT remove_ServerCertificateErrorDetected([in] EventRegistrationToken token); + + /// Clears all cached decisions to proceed with TLS certificate errors from the + /// ServerCertificateErrorDetected event for all WebView2's sharing the same session. + HRESULT ClearServerCertificateErrorActions( + [in] ICoreWebView2ClearServerCertificateErrorActionsCompletedHandler* + handler); +} + +/// Receives `StatusBarTextChanged` events. +[uuid(A5E3B0D0-10DF-4156-BFAD-3B43867ACAC6), object, pointer_default(unique)] +interface ICoreWebView2StatusBarTextChangedEventHandler : IUnknown { + /// Called to provide the implementer with the event args for the + /// corresponding event. No event args exist and the `args` + /// parameter is set to `null`. + HRESULT Invoke( + [in] ICoreWebView2* sender, + [in] IUnknown* args); +} + +/// This interface is an extension of `ICoreWebView2_14` that supports status Favicons. +[uuid(517B2D1D-7DAE-4A66-A4F4-10352FFB9518), object, pointer_default(unique)] +interface ICoreWebView2_15 : ICoreWebView2_14 { + /// Add an event handler for the `FaviconChanged` event. + /// The `FaviconChanged` event is raised when the + /// [favicon](https://developer.mozilla.org/docs/Glossary/Favicon) + /// had a different URL then the previous URL. + /// The FaviconChanged event will be raised for first navigating to a new + /// document, whether or not a document declares a Favicon in HTML if the + /// favicon is different from the previous fav icon. The event will + /// be raised again if a favicon is declared in its HTML or has script + /// to set its favicon. The favicon information can then be retrieved with + /// `GetFavicon` and `FaviconUri`. + HRESULT add_FaviconChanged( + [in] ICoreWebView2FaviconChangedEventHandler* eventHandler, + [out] EventRegistrationToken* token); + + /// Remove the event handler for `FaviconChanged` event. + HRESULT remove_FaviconChanged( + [in] EventRegistrationToken token); + + /// Get the current Uri of the favicon as a string. + /// If the value is null, then the return value is `E_POINTER`, otherwise it is `S_OK`. + /// If a page has no favicon then the value is an empty string. + [propget] HRESULT FaviconUri([out, retval] LPWSTR* value); + + /// Async function for getting the actual image data of the favicon. + /// The image is copied to the `imageStream` object in `ICoreWebView2GetFaviconCompletedHandler`. + /// If there is no image then no data would be copied into the imageStream. + /// The `format` is the file format to return the image stream. + /// `completedHandler` is executed at the end of the operation. + /// + /// \snippet SettingsComponent.cpp FaviconChanged + HRESULT GetFavicon( + [in] COREWEBVIEW2_FAVICON_IMAGE_FORMAT format, + [in] ICoreWebView2GetFaviconCompletedHandler* completedHandler); +} + +/// A continuation of the `ICoreWebView2` interface to support printing. +[uuid(0EB34DC9-9F91-41E1-8639-95CD5943906B), object, pointer_default(unique)] +interface ICoreWebView2_16 : ICoreWebView2_15 { + /// Print the current web page asynchronously to the specified printer with the provided settings. + /// See `ICoreWebView2PrintSettings` for description of settings. Passing + /// nullptr for `printSettings` results in default print settings used. + /// + /// The handler will return `errorCode` as `S_OK` and `printStatus` as COREWEBVIEW2_PRINT_STATUS_PRINTER_UNAVAILABLE + /// if `printerName` doesn't match with the name of any installed printers on the user OS. The handler + /// will return `errorCode` as `E_INVALIDARG` and `printStatus` as COREWEBVIEW2_PRINT_STATUS_OTHER_ERROR + /// if the caller provides invalid settings for a given printer. + /// + /// The async `Print` operation completes when it finishes printing to the printer. + /// At this time the `ICoreWebView2PrintCompletedHandler` is invoked. + /// Only one `Printing` operation can be in progress at a time. If `Print` is called while a `Print` or `PrintToPdf` + /// or `PrintToPdfStream` or `ShowPrintUI` job is in progress, the completed handler is immediately invoked + /// with `E_ABORT` and `printStatus` is COREWEBVIEW2_PRINT_STATUS_OTHER_ERROR. + /// This is only for printing operation on one webview. + /// + /// | errorCode | printStatus | Notes | + /// | --- | --- | --- | + /// | S_OK | COREWEBVIEW2_PRINT_STATUS_SUCCEEDED | Print operation succeeded. | + /// | S_OK | COREWEBVIEW2_PRINT_STATUS_PRINTER_UNAVAILABLE | If specified printer is not found or printer status is not available, offline or error state. | + /// | S_OK | COREWEBVIEW2_PRINT_STATUS_OTHER_ERROR | Print operation is failed. | + /// | E_INVALIDARG | COREWEBVIEW2_PRINT_STATUS_OTHER_ERROR | If the caller provides invalid settings for the specified printer. | + /// | E_ABORT | COREWEBVIEW2_PRINT_STATUS_OTHER_ERROR | Print operation is failed as printing job already in progress. | + /// + /// \snippet AppWindow.cpp PrintToPrinter + HRESULT Print( + [in] ICoreWebView2PrintSettings* printSettings, + [in] ICoreWebView2PrintCompletedHandler* handler); + + /// Opens the print dialog to print the current web page. See `COREWEBVIEW2_PRINT_DIALOG_KIND` + /// for descriptions of print dialog kinds. + /// + /// Invoking browser or system print dialog doesn't open new print dialog if + /// it is already open. + /// + /// \snippet AppWindow.cpp ShowPrintUI + HRESULT ShowPrintUI([in] COREWEBVIEW2_PRINT_DIALOG_KIND printDialogKind); + + /// Provides the Pdf data of current web page asynchronously for the provided settings. + /// Stream will be rewound to the start of the pdf data. + /// + /// See `ICoreWebView2PrintSettings` for description of settings. Passing + /// nullptr for `printSettings` results in default print settings used. + /// + /// The async `PrintToPdfStream` operation completes when it finishes + /// writing to the stream. At this time the `ICoreWebView2PrintToPdfStreamCompletedHandler` + /// is invoked. Only one `Printing` operation can be in progress at a time. If + /// `PrintToPdfStream` is called while a `PrintToPdfStream` or `PrintToPdf` or `Print` + /// or `ShowPrintUI` job is in progress, the completed handler is immediately invoked with `E_ABORT`. + /// This is only for printing operation on one webview. + /// + /// \snippet AppWindow.cpp PrintToPdfStream + HRESULT PrintToPdfStream([in] ICoreWebView2PrintSettings* printSettings, + [in] ICoreWebView2PrintToPdfStreamCompletedHandler* handler); +} + +/// Receives the result of the `Print` method. +[uuid(8FD80075-ED08-42DB-8570-F5D14977461E), object, pointer_default(unique)] +interface ICoreWebView2PrintCompletedHandler : IUnknown { + /// Provides the result of the corresponding asynchronous method. + HRESULT Invoke([in] HRESULT errorCode, [in] COREWEBVIEW2_PRINT_STATUS printStatus); +} + +/// This interface is an extension of `ICoreWebView2_16` that supports shared buffer based on file mapping. +[uuid(702E75D4-FD44-434D-9D70-1A68A6B1192A), object, pointer_default(unique)] +interface ICoreWebView2_17 : ICoreWebView2_16 { + /// Share a shared buffer object with script of the main frame in the WebView. + /// The script will receive a `sharedbufferreceived` event from chrome.webview. + /// The event arg for that event will have the following methods and properties: + /// `getBuffer()`: return an ArrayBuffer object with the backing content from the shared buffer. + /// `additionalData`: an object as the result of parsing `additionalDataAsJson` as JSON string. + /// This property will be `undefined` if `additionalDataAsJson` is nullptr or empty string. + /// `source`: with a value set as `chrome.webview` object. + /// If a string is provided as `additionalDataAsJson` but it is not a valid JSON string, + /// the API will fail with `E_INVALIDARG`. + /// If `access` is COREWEBVIEW2_SHARED_BUFFER_ACCESS_READ_ONLY, the script will only have read access to the buffer. + /// If the script tries to modify the content in a read only buffer, it will cause an access + /// violation in WebView renderer process and crash the renderer process. + /// If the shared buffer is already closed, the API will fail with `RO_E_CLOSED`. + /// + /// The script code should call `chrome.webview.releaseBuffer` with + /// the shared buffer as the parameter to release underlying resources as soon + /// as it does not need access to the shared buffer any more. + /// + /// The application can post the same shared buffer object to multiple web pages or iframes, or + /// post to the same web page or iframe multiple times. Each `PostSharedBufferToScript` will + /// create a separate ArrayBuffer object with its own view of the memory and is separately + /// released. The underlying shared memory will be released when all the views are released. + /// + /// For example, if we want to send data to script for one time read only consumption. + /// + /// \snippet ScenarioSharedBuffer.cpp OneTimeShareBuffer + /// + /// In the HTML document, + /// + /// \snippet assets\ScenarioSharedBuffer.html ShareBufferScriptCode_1 + /// + /// \snippet assets\ScenarioSharedBuffer.html ShareBufferScriptCode_2 + /// + /// Sharing a buffer to script has security risk. You should only share buffer with trusted site. + /// If a buffer is shared to a untrusted site, possible sensitive information could be leaked. + /// If a buffer is shared as modifiable by the script and the script modifies it in an unexpected way, + /// it could result in corrupted data that might even crash the application. + /// + HRESULT PostSharedBufferToScript( + [in] ICoreWebView2SharedBuffer* sharedBuffer, + [in] COREWEBVIEW2_SHARED_BUFFER_ACCESS access, + [in] LPCWSTR additionalDataAsJson); +} + +/// Receives the result of the `PrintToPdfStream` method. +/// `errorCode` returns S_OK if the PrintToPdfStream operation succeeded. +/// The printable pdf data is returned in the `pdfStream` object. +[uuid(4C9F8229-8F93-444F-A711-2C0DFD6359D5), object, pointer_default(unique)] +interface ICoreWebView2PrintToPdfStreamCompletedHandler : IUnknown { + /// Provides the result of the corresponding asynchronous method. + HRESULT Invoke([in] HRESULT errorCode, [in] IStream* pdfStream); +} + +/// Settings used by the `Print` method. +[uuid(CA7F0E1F-3484-41D1-8C1A-65CD44A63F8D), object, pointer_default(unique)] +interface ICoreWebView2PrintSettings2 : ICoreWebView2PrintSettings { + /// Page range to print. Defaults to empty string, which means print all pages. + /// If the Page range is empty string or null, then it applies the default. + /// + /// The PageRanges property is a list of page ranges specifying one or more pages that + /// should be printed separated by commas. Any whitespace between page ranges is ignored. + /// A valid page range is either a single integer identifying the page to print, or a range + /// in the form `[start page]-[last page]` where `start page` and `last page` are integers + /// identifying the first and last inclusive pages respectively to print. + /// Every page identifier is an integer greater than 0 unless wildcards are used (see below examples). + /// The first page is 1. + /// + /// In a page range of the form `[start page]-[last page]` the start page number must be + /// larger than 0 and less than or equal to the document's total page count. + /// If the `start page` is not present, then 1 is used as the `start page`. + /// The `last page` must be larger than the `start page`. + /// If the `last page` is not present, then the document total page count is used as the `last page`. + /// + /// Repeating a page does not print it multiple times. To print multiple times, use the `Copies` property. + /// + /// The pages are always printed in ascending order, even if specified in non-ascending order. + /// + /// If page range is not valid or if a page is greater than document total page count, + /// `ICoreWebView2PrintCompletedHandler` or `ICoreWebView2PrintToPdfStreamCompletedHandler` + /// handler will return `E_INVALIDARG`. + /// + /// The following examples assume a document with 20 total pages. + /// + /// | Example | Result | Notes | + /// | --- | --- | --- | + /// | "2" | Page 2 | | + /// | "1-4, 9, 3-6, 10, 11" | Pages 1-6, 9-11 | | + /// | "1-4, -6" | Pages 1-6 | The "-6" is interpreted as "1-6". | + /// | "2-" | Pages 2-20 | The "2-" is interpreted as "pages 2 to the end of the document". | + /// | "4-2, 11, -6" | Invalid | "4-2" is an invalid range. | + /// | "-" | Pages 1-20 | The "-" is interpreted as "page 1 to the end of the document". | + /// | "1-4dsf, 11" | Invalid | | + /// | "2-2" | Page 2 | | + /// + /// The caller must free the returned string with `CoTaskMemFree`. See + /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings) + [propget] HRESULT PageRanges([out, retval] LPWSTR* value); + + /// Set the `PageRanges` property. + [propput] HRESULT PageRanges([in] LPCWSTR value); + + /// Prints multiple pages of a document on a single piece of paper. Choose from 1, 2, 4, 6, 9 or 16. + /// The default value is 1. + [propget] HRESULT PagesPerSide([out, retval] INT32* value); + + /// Set the `PagesPerSide` property. Returns `E_INVALIDARG` if an invalid value is + /// provided, and the current value is not changed. + /// + /// Below examples shows print output for PagesPerSide and Duplex. + /// + /// | PagesPerSide | Total pages | Two-sided printing | Result | + /// | --- | --- | --- | --- | + /// | 1 | 1 | - | 1 page on the front side. | + /// | 2 | 1 | Yes | 1 page on the front side. | + /// | 2 | 4 | - | 2 pages on the first paper and 2 pages on the next paper. | + /// | 2 | 4 | Yes | 2 pages on the front side and 2 pages on back side. | + /// | 4 | 4 | Yes | 4 pages on the front side. | + /// | 4 | 8 | Yes | 4 pages on the front side and 4 pages on the back side. | + [propput] HRESULT PagesPerSide([in] INT32 value); + + /// Number of copies to print. Minimum value is `1` and the maximum copies count is `999`. + /// The default value is 1. + /// + /// This value is ignored in PrintToPdfStream method. + [propget] HRESULT Copies([out, retval] INT32* value); + + /// Set the `Copies` property. Returns `E_INVALIDARG` if an invalid value is provided + /// and the current value is not changed. + [propput] HRESULT Copies([in] INT32 value); + + /// Printer collation. See `COREWEBVIEW2_PRINT_COLLATION` for descriptions of + /// collation. The default value is `COREWEBVIEW2_PRINT_COLLATION_DEFAULT`. + /// + /// Printing uses default value of printer's collation if an invalid value is provided + /// for the specific printer. + /// + /// This value is ignored in PrintToPdfStream method. + [propget] HRESULT Collation([out, retval] COREWEBVIEW2_PRINT_COLLATION* value); + + /// Set the `Collation` property. + [propput] HRESULT Collation([in] COREWEBVIEW2_PRINT_COLLATION value); + + /// Printer color mode. See `COREWEBVIEW2_PRINT_COLOR_MODE` for descriptions + /// of color modes. The default value is `COREWEBVIEW2_PRINT_COLOR_MODE_DEFAULT`. + /// + /// Printing uses default value of printer supported color if an invalid value is provided + /// for the specific printer. + [propget] HRESULT ColorMode([out, retval] COREWEBVIEW2_PRINT_COLOR_MODE* value); + + /// Set the `ColorMode` property. + [propput] HRESULT ColorMode([in] COREWEBVIEW2_PRINT_COLOR_MODE value); + + /// Printer duplex settings. See `COREWEBVIEW2_PRINT_DUPLEX` for descriptions of duplex. + /// The default value is `COREWEBVIEW2_PRINT_DUPLEX_DEFAULT`. + /// + /// Printing uses default value of printer's duplex if an invalid value is provided + /// for the specific printer. + /// + /// This value is ignored in PrintToPdfStream method. + [propget] HRESULT Duplex([out, retval] COREWEBVIEW2_PRINT_DUPLEX* value); + + /// Set the `Duplex` property. + [propput] HRESULT Duplex([in] COREWEBVIEW2_PRINT_DUPLEX value); + + /// Printer media size. See `COREWEBVIEW2_PRINT_MEDIA_SIZE` for descriptions of media size. + /// The default value is `COREWEBVIEW2_PRINT_MEDIA_SIZE_DEFAULT`. + /// + /// If media size is `COREWEBVIEW2_PRINT_MEDIA_SIZE_CUSTOM`, you should set the `PageWidth` + /// and `PageHeight`. + /// + /// Printing uses default value of printer supported media size if an invalid value is provided + /// for the specific printer. + /// + /// This value is ignored in PrintToPdfStream method. + [propget] HRESULT MediaSize([out, retval] COREWEBVIEW2_PRINT_MEDIA_SIZE* value); + + /// Set the `MediaSize` property. + [propput] HRESULT MediaSize([in] COREWEBVIEW2_PRINT_MEDIA_SIZE value); + + /// The name of the printer to use. Defaults to empty string. + /// If the printer name is empty string or null, then it prints to the default + /// printer on the user OS. + /// + /// This value is ignored in PrintToPdfStream method. + /// + /// The caller must free the returned string with `CoTaskMemFree`. See + /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings) + [propget] HRESULT PrinterName([out, retval] LPWSTR* value); + + /// Set the `PrinterName` property. If provided printer name doesn't match + /// with the name of any installed printers on the user OS, + /// `ICoreWebView2PrintCompletedHandler` handler will return `errorCode` as + /// `S_OK` and `printStatus` as COREWEBVIEW2_PRINT_STATUS_PRINTER_UNAVAILABLE. + /// + /// Use [Enum Printers](/windows/win32/printdocs/enumprinters) + /// to enumerate available printers. + [propput] HRESULT PrinterName([in] LPCWSTR value); +} + +/// This interface is an extension of `ICoreWebView2_17` that manages +/// navigation requests to URI schemes registered with the OS. +[uuid(7A626017-28BE-49B2-B865-3BA2B3522D90), object, pointer_default(unique)] +interface ICoreWebView2_18 : ICoreWebView2_17 { + /// Add an event handler for the `LaunchingExternalUriScheme` event. + /// The `LaunchingExternalUriScheme` event is raised when a navigation request is made to + /// a URI scheme that is registered with the OS. + /// The `LaunchingExternalUriScheme` event handler may suppress the default dialog + /// or replace the default dialog with a custom dialog. + /// + /// If a deferral is not taken on the event args, the external URI scheme launch is + /// blocked until the event handler returns. If a deferral is taken, the + /// external URI scheme launch is blocked until the deferral is completed. + /// The host also has the option to cancel the URI scheme launch. + /// + /// The `NavigationStarting` and `NavigationCompleted` events will be raised, + /// regardless of whether the `Cancel` property is set to `TRUE` or + /// `FALSE`. The `NavigationCompleted` event will be raised with the `IsSuccess` property + /// set to `FALSE` and the `WebErrorStatus` property set to `ConnectionAborted` regardless of + /// whether the host sets the `Cancel` property on the + /// `ICoreWebView2LaunchingExternalUriSchemeEventArgs`. The `SourceChanged`, `ContentLoading`, + /// and `HistoryChanged` events will not be raised for this navigation to the external URI + /// scheme regardless of the `Cancel` property. + /// The `LaunchingExternalUriScheme` event will be raised after the + /// `NavigationStarting` event and before the `NavigationCompleted` event. + /// The default `CoreWebView2Settings` will also be updated upon navigation to an external + /// URI scheme. If a setting on the `CoreWebView2Settings` interface has been changed, + /// navigating to an external URI scheme will trigger the `CoreWebView2Settings` to update. + /// + /// The WebView2 may not display the default dialog based on user settings, browser settings, + /// and whether the origin is determined as a + /// [trustworthy origin](https://w3c.github.io/webappsec-secure-contexts# + /// potentially-trustworthy-origin); however, the event will still be raised. + /// + /// If the request is initiated by a cross-origin frame without a user gesture, + /// the request will be blocked and the `LaunchingExternalUriScheme` event will not + /// be raised. + /// \snippet SettingsComponent.cpp ToggleLaunchingExternalUriScheme + HRESULT add_LaunchingExternalUriScheme( + [in] ICoreWebView2LaunchingExternalUriSchemeEventHandler* eventHandler, + [out] EventRegistrationToken* token); + + /// Remove an event handler previously added with + /// `add_LaunchingExternalUriScheme`. + HRESULT remove_LaunchingExternalUriScheme( + [in] EventRegistrationToken token); +} + +/// This interface is an extension of `ICoreWebView2_18` that manages memory usage +/// target level. +[uuid(6921F954-79B0-437F-A997-C85811897C68), object, pointer_default(unique)] +interface ICoreWebView2_19 : ICoreWebView2_18 { + + /// `MemoryUsageTargetLevel` indicates desired memory consumption level of + /// WebView. + [propget] HRESULT MemoryUsageTargetLevel( + [out, retval] COREWEBVIEW2_MEMORY_USAGE_TARGET_LEVEL* level); + + /// An app may set `MemoryUsageTargetLevel` to indicate desired memory + /// consumption level of WebView. Scripts will not be impacted and continue + /// to run. This is useful for inactive apps that still want to run scripts + /// and/or keep network connections alive and therefore could not call + /// `TrySuspend` and `Resume` to reduce memory consumption. These apps can + /// set memory usage target level to `COREWEBVIEW2_MEMORY_USAGE_TARGET_LEVEL_LOW` + /// when the app becomes inactive, and set back to + /// `COREWEBVIEW2_MEMORY_USAGE_TARGET_LEVEL_NORMAL` when the app becomes + /// active. It is not necessary to set CoreWebView2Controller's IsVisible + /// property to false when setting the property. + /// It is a best effort operation to change memory usage level, and the + /// API will return before the operation completes. + /// Setting the level to `COREWEBVIEW2_MEMORY_USAGE_TARGET_LEVEL_LOW` + /// could potentially cause memory for some WebView browser processes to be + /// swapped out to disk in some circumstances. + /// It is a best effort to reduce memory usage as much as possible. If a script + /// runs after its related memory has been swapped out, the memory will be swapped + /// back in to ensure the script can still run, but performance might be impacted. + /// Therefore, the app should set the level back to + /// `COREWEBVIEW2_MEMORY_USAGE_TARGET_LEVEL_NORMAL` when the app becomes + /// active again. Setting memory usage target level back to normal will not happen + /// automatically. + /// An app should choose to use either the combination of `TrySuspend` and `Resume` + /// or the combination of setting MemoryUsageTargetLevel to low and normal. It is + /// not advisable to mix them. + /// Trying to set `MemoryUsageTargetLevel` while suspended will be ignored. + /// The `TrySuspend` and `Resume` methods will change the `MemoryUsageTargetLevel`. + /// `TrySuspend` will automatically set `MemoryUsageTargetLevel` to low while + /// `Resume` on suspended WebView will automatically set `MemoryUsageTargetLevel` + /// to normal. Calling `Resume` when the WebView is not suspended would not change + /// `MemoryUsageTargetLevel`. + /// + /// \snippet ViewComponent.cpp MemoryUsageTargetLevel + [propput] HRESULT MemoryUsageTargetLevel( + [in] COREWEBVIEW2_MEMORY_USAGE_TARGET_LEVEL level); + +} + +/// Event handler for the `LaunchingExternalUriScheme` event. +[uuid(74F712E0-8165-43A9-A13F-0CCE597E75DF), object, pointer_default(unique)] +interface ICoreWebView2LaunchingExternalUriSchemeEventHandler: IUnknown { + /// Receives the event args for the corresponding event. + HRESULT Invoke( + [in] ICoreWebView2* sender, + [in] ICoreWebView2LaunchingExternalUriSchemeEventArgs* args); +} + +/// Event args for `LaunchingExternalUriScheme` event. +[uuid(07D1A6C3-7175-4BA1-9306-E593CA07E46C), object, pointer_default(unique)] +interface ICoreWebView2LaunchingExternalUriSchemeEventArgs: IUnknown { + /// The URI with the external URI scheme to be launched. + + [propget] HRESULT Uri([out, retval] LPWSTR* value); + + /// The origin initiating the external URI scheme launch. + /// The origin will be an empty string if the request is initiated by calling + /// `CoreWebView2.Navigate` on the external URI scheme. If a script initiates + /// the navigation, the `InitiatingOrigin` will be the top-level document's + /// `Source`, for example, if `window.location` is set to `"calculator://", the + /// `InitiatingOrigin` will be set to `calculator://`. If the request is initiated + /// from a child frame, the `InitiatingOrigin` will be the source of that child frame. + + [propget] HRESULT InitiatingOrigin([out, retval] LPWSTR* value); + + /// `TRUE` when the external URI scheme request was initiated through a user gesture. + /// + /// \> [!NOTE]\n\> Being initiated through a user gesture does not mean that user intended + /// to access the associated resource. + + [propget] HRESULT IsUserInitiated([out, retval] BOOL* value); + + /// The event handler may set this property to `TRUE` to cancel the external URI scheme + /// launch. If set to `TRUE`, the external URI scheme will not be launched, and the default + /// dialog is not displayed. This property can be used to replace the normal + /// handling of launching an external URI scheme. + /// The initial value of the `Cancel` property is `FALSE`. + + [propget] HRESULT Cancel([out, retval] BOOL* value); + + /// Sets the `Cancel` property. + + [propput] HRESULT Cancel([in] BOOL value); + + /// Returns an `ICoreWebView2Deferral` object. Use this operation to + /// complete the event at a later time. + + HRESULT GetDeferral([out, retval] ICoreWebView2Deferral** value); +} + +/// The caller implements this interface to handle the BasicAuthenticationRequested event. +[uuid(58b4d6c2-18d4-497e-b39b-9a96533fa278), object, pointer_default(unique)] +interface ICoreWebView2BasicAuthenticationRequestedEventHandler : IUnknown { + /// Called to provide the implementer with the event args for the + /// corresponding event. + HRESULT Invoke( + [in] ICoreWebView2* sender, + [in] ICoreWebView2BasicAuthenticationRequestedEventArgs* args); +} + +/// Implements the interface to receive `IsDefaultDownloadDialogOpenChanged` +/// events. +[uuid(3117da26-ae13-438d-bd46-edbeb2c4ce81), object, pointer_default(unique)] +interface ICoreWebView2IsDefaultDownloadDialogOpenChangedEventHandler : IUnknown { + /// Provides the event args for the corresponding event. No event args exist + /// and the `args` parameter is set to `null`. + HRESULT Invoke([in] ICoreWebView2* sender, + [in] IUnknown* args); +} + +/// Receives the result of the `PrintToPdf` method. If the print to PDF +/// operation succeeds, `isSuccessful` is true. Otherwise, if the operation +/// failed, `isSuccessful` is set to false. An invalid path returns +/// `E_INVALIDARG`. +[uuid(ccf1ef04-fd8e-4d5f-b2de-0983e41b8c36), object, pointer_default(unique)] +interface ICoreWebView2PrintToPdfCompletedHandler : IUnknown { + + /// Provides the result of the corresponding asynchronous method. + HRESULT Invoke([in] HRESULT errorCode, BOOL isSuccessful); +} + +/// Settings used by the `PrintToPdf` method. +[uuid(377f3721-c74e-48ca-8db1-df68e51d60e2), object, pointer_default(unique)] +interface ICoreWebView2PrintSettings : IUnknown { + + /// The orientation can be portrait or landscape. The default orientation is + /// portrait. See `COREWEBVIEW2_PRINT_ORIENTATION`. + [propget] HRESULT Orientation( + [out, retval] COREWEBVIEW2_PRINT_ORIENTATION* orientation); + + /// Sets the `Orientation` property. + [propput] HRESULT Orientation( + [in] COREWEBVIEW2_PRINT_ORIENTATION orientation); + + /// The scale factor is a value between 0.1 and 2.0. The default is 1.0. + [propget] HRESULT ScaleFactor([out, retval] double* scaleFactor); + + /// Sets the `ScaleFactor` property. Returns `E_INVALIDARG` if an invalid + /// value is provided, and the current value is not changed. + [propput] HRESULT ScaleFactor([in] double scaleFactor); + + /// The page width in inches. The default width is 8.5 inches. + [propget] HRESULT PageWidth([out, retval] double* pageWidth); + + /// Sets the `PageWidth` property. Returns `E_INVALIDARG` if the page width is + /// less than or equal to zero, and the current value is not changed. + [propput] HRESULT PageWidth([in] double pageWidth); + + /// The page height in inches. The default height is 11 inches. + [propget] HRESULT PageHeight([out, retval] double* pageHeight); + + /// Sets the `PageHeight` property. Returns `E_INVALIDARG` if the page height + /// is less than or equal to zero, and the current value is not changed. + [propput] HRESULT PageHeight([in] double pageHeight); + + /// The top margin in inches. The default is 1 cm, or ~0.4 inches. + [propget] HRESULT MarginTop([out, retval] double* marginTop); + + /// Sets the `MarginTop` property. A margin cannot be less than zero. + /// Returns `E_INVALIDARG` if an invalid value is provided, and the current + /// value is not changed. + [propput] HRESULT MarginTop([in] double marginTop); + + /// The bottom margin in inches. The default is 1 cm, or ~0.4 inches. + [propget] HRESULT MarginBottom([out, retval] double* marginBottom); + + /// Sets the `MarginBottom` property. A margin cannot be less than zero. + /// Returns `E_INVALIDARG` if an invalid value is provided, and the current + /// value is not changed. + [propput] HRESULT MarginBottom([in] double marginBottom); + + /// The left margin in inches. The default is 1 cm, or ~0.4 inches. + [propget] HRESULT MarginLeft([out, retval] double* marginLeft); + + /// Sets the `MarginLeft` property. A margin cannot be less than zero. + /// Returns `E_INVALIDARG` if an invalid value is provided, and the current + /// value is not changed. + [propput] HRESULT MarginLeft([in] double marginLeft); + + /// The right margin in inches. The default is 1 cm, or ~0.4 inches. + [propget] HRESULT MarginRight([out, retval] double* marginRight); + + /// Set the `MarginRight` property.A margin cannot be less than zero. + /// Returns `E_INVALIDARG` if an invalid value is provided, and the current + /// value is not changed. + [propput] HRESULT MarginRight([in] double marginRight); + + /// `TRUE` if background colors and images should be printed. The default value + /// is `FALSE`. + [propget] HRESULT ShouldPrintBackgrounds( + [out, retval] BOOL* shouldPrintBackgrounds); + + /// Set the `ShouldPrintBackgrounds` property. + [propput] HRESULT ShouldPrintBackgrounds([in] BOOL shouldPrintBackgrounds); + + /// `TRUE` if only the current end user's selection of HTML in the document + /// should be printed. The default value is `FALSE`. + [propget] HRESULT ShouldPrintSelectionOnly( + [out, retval] BOOL* shouldPrintSelectionOnly); + + /// Set the `ShouldPrintSelectionOnly` property. + [propput] HRESULT ShouldPrintSelectionOnly( + [in] BOOL shouldPrintSelectionOnly); + + /// `TRUE` if header and footer should be printed. The default value is `FALSE`. + /// The header consists of the date and time of printing, and the title of the + /// page. The footer consists of the URI and page number. The height of the + /// header and footer is 0.5 cm, or ~0.2 inches. + [propget] HRESULT ShouldPrintHeaderAndFooter( + [out, retval] BOOL* shouldPrintHeaderAndFooter); + + /// Set the `ShouldPrintHeaderAndFooter` property. + [propput] HRESULT ShouldPrintHeaderAndFooter( + [in] BOOL shouldPrintHeaderAndFooter); + + /// The title in the header if `ShouldPrintHeaderAndFooter` is `TRUE`. The + /// default value is the title of the current document. + /// + /// The caller must free the returned string with `CoTaskMemFree`. See + /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings). + [propget] HRESULT HeaderTitle([out, retval] LPWSTR* headerTitle); + + /// Set the `HeaderTitle` property. If an empty string or null value is + /// provided, no title is shown in the header. + [propput] HRESULT HeaderTitle([in] LPCWSTR headerTitle); + + /// The URI in the footer if `ShouldPrintHeaderAndFooter` is `TRUE`. The + /// default value is the current URI. + /// + /// The caller must free the returned string with `CoTaskMemFree`. See + /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings). + [propget] HRESULT FooterUri([out, retval] LPWSTR* footerUri); + + /// Set the `FooterUri` property. If an empty string or null value is + /// provided, no URI is shown in the footer. + [propput] HRESULT FooterUri([in] LPCWSTR footerUri); +} + +/// The caller implements this interface to receive the TrySuspend result. +[uuid(00F206A7-9D17-4605-91F6-4E8E4DE192E3), object, pointer_default(unique)] +interface ICoreWebView2TrySuspendCompletedHandler : IUnknown { + + /// Provides the result of the TrySuspend operation. + /// See [Sleeping Tabs FAQ](https://techcommunity.microsoft.com/t5/articles/sleeping-tabs-faq/m-p/1705434) + /// for conditions that might prevent WebView from being suspended. In those situations, + /// isSuccessful will be false and errorCode is S_OK. + HRESULT Invoke([in] HRESULT errorCode, [in] BOOL isSuccessful); + +} + +/// The owner of the `CoreWebView2` object that provides support for resizing, +/// showing and hiding, focusing, and other functionality related to +/// windowing and composition. The `CoreWebView2Controller` owns the +/// `CoreWebView2`, and if all references to the `CoreWebView2Controller` go +/// away, the WebView is closed. +[uuid(4d00c0d1-9434-4eb6-8078-8697a560334f), object, pointer_default(unique)] +interface ICoreWebView2Controller : IUnknown { + + /// The `IsVisible` property determines whether to show or hide the WebView2. + /// If `IsVisible` is set to `FALSE`, the WebView2 is transparent and is + /// not rendered. However, this does not affect the window containing the + /// WebView2 (the `HWND` parameter that was passed to + /// `CreateCoreWebView2Controller`). If you want that window to disappear + /// too, run `ShowWindow` on it directly in addition to modifying the + /// `IsVisible` property. WebView2 as a child window does not get window + /// messages when the top window is minimized or restored. For performance + /// reasons, developers should set the `IsVisible` property of the WebView to + /// `FALSE` when the app window is minimized and back to `TRUE` when the app + /// window is restored. The app window does this by handling + /// `SIZE_MINIMIZED and SIZE_RESTORED` command upon receiving `WM_SIZE` + /// message. + /// + /// There are CPU and memory benefits when the page is hidden. For instance, + /// Chromium has code that throttles activities on the page like animations + /// and some tasks are run less frequently. Similarly, WebView2 will + /// purge some caches to reduce memory usage. + /// + /// \snippet ViewComponent.cpp ToggleIsVisible + [propget] HRESULT IsVisible([out, retval] BOOL* isVisible); + + /// Sets the `IsVisible` property. + /// + /// \snippet ViewComponent.cpp ToggleIsVisibleOnMinimize + [propput] HRESULT IsVisible([in] BOOL isVisible); + + /// The WebView bounds. Bounds are relative to the parent `HWND`. The app + /// has two ways to position a WebView. + /// + /// * Create a child `HWND` that is the WebView parent `HWND`. Position + /// the window where the WebView should be. Use `(0, 0)` for the + /// top-left corner (the offset) of the `Bounds` of the WebView. + /// * Use the top-most window of the app as the WebView parent HWND. For + /// example, to position WebView correctly in the app, set the top-left + /// corner of the Bound of the WebView. + /// + /// The values of `Bounds` are limited by the coordinate space of the host. + + [propget] HRESULT Bounds([out, retval] RECT* bounds); + + /// Sets the `Bounds` property. + /// + /// \snippet ViewComponent.cpp ResizeWebView + + [propput] HRESULT Bounds([in] RECT bounds); + + /// The zoom factor for the WebView. + /// + /// \> [!NOTE]\n\> Changing zoom factor may cause `window.innerWidth`, + /// `window.innerHeight`, both, and page layout to change. A zoom factor + /// that is applied by the host by running `ZoomFactor` becomes the new + /// default zoom for the WebView. The zoom factor applies across navigations + /// and is the zoom factor WebView is returned to when the user chooses + /// Ctrl+0. When the zoom factor is changed by the user (resulting in + /// the app receiving `ZoomFactorChanged`), that zoom applies only for the + /// current page. Any user applied zoom is only for the current page and is + /// reset on a navigation. Specifying a `zoomFactor` less than or equal to + /// `0` is not allowed. WebView also has an internal supported zoom factor + /// range. When a specified zoom factor is out of that range, it is + /// normalized to be within the range, and a `ZoomFactorChanged` event is + /// triggered for the real applied zoom factor. When the range normalization + /// happens, the `ZoomFactor` property reports the zoom factor specified + /// during the previous modification of the `ZoomFactor` property until the + /// `ZoomFactorChanged` event is received after WebView applies the + /// normalized zoom factor. + + [propget] HRESULT ZoomFactor([out, retval] double* zoomFactor); + + /// Sets the `ZoomFactor` property. + + [propput] HRESULT ZoomFactor([in] double zoomFactor); + + /// Adds an event handler for the `ZoomFactorChanged` event. + /// `ZoomFactorChanged` runs when the `ZoomFactor` property of the WebView + /// changes. The event may run because the `ZoomFactor` property was + /// modified, or due to the user manually modifying the zoom. When it is + /// modified using the `ZoomFactor` property, the internal zoom factor is + /// updated immediately and no `ZoomFactorChanged` event is triggered. + /// WebView associates the last used zoom factor for each site. It is + /// possible for the zoom factor to change when navigating to a different + /// page. When the zoom factor changes due to a navigation change, the + /// `ZoomFactorChanged` event runs right after the `ContentLoading` event. + /// + /// \snippet ViewComponent.cpp ZoomFactorChanged + + HRESULT add_ZoomFactorChanged( + [in] ICoreWebView2ZoomFactorChangedEventHandler* eventHandler, + [out] EventRegistrationToken* token); + + /// Remove an event handler previously added with `add_ZoomFactorChanged`. + + HRESULT remove_ZoomFactorChanged( + [in] EventRegistrationToken token); + + /// Updates `Bounds` and `ZoomFactor` properties at the same time. This + /// operation is atomic from the perspective of the host. After returning + /// from this function, the `Bounds` and `ZoomFactor` properties are both + /// updated if the function is successful, or neither is updated if the + /// function fails. If `Bounds` and `ZoomFactor` are both updated by the + /// same scale (for example, `Bounds` and `ZoomFactor` are both doubled), + /// then the page does not display a change in `window.innerWidth` or + /// `window.innerHeight` and the WebView renders the content at the new size + /// and zoom without intermediate renderings. This function also updates + /// just one of `ZoomFactor` or `Bounds` by passing in the new value for one + /// and the current value for the other. + /// + /// \snippet ViewComponent.cpp SetBoundsAndZoomFactor + + HRESULT SetBoundsAndZoomFactor([in] RECT bounds, [in] double zoomFactor); + + /// Moves focus into WebView. WebView gets focus and focus is set to + /// correspondent element in the page hosted in the WebView. For + /// Programmatic reason, focus is set to previously focused element or the + /// default element if no previously focused element exists. For `Next` + /// reason, focus is set to the first element. For `Previous` reason, focus + /// is set to the last element. WebView changes focus through user + /// interaction including selecting into a WebView or Tab into it. For + /// tabbing, the app runs MoveFocus with Next or Previous to align with Tab + /// and Shift+Tab respectively when it decides the WebView is the next + /// element that may exist in a tab. Or, the app runs `IsDialogMessage` + /// as part of the associated message loop to allow the platform to auto + /// handle tabbing. The platform rotates through all windows with + /// `WS_TABSTOP`. When the WebView gets focus from `IsDialogMessage`, it is + /// internally put the focus on the first or last element for tab and + /// Shift+Tab respectively. + /// + /// \snippet App.cpp MoveFocus0 + /// + /// \snippet ControlComponent.cpp MoveFocus1 + /// + /// \snippet ControlComponent.cpp MoveFocus2 + + HRESULT MoveFocus([in] COREWEBVIEW2_MOVE_FOCUS_REASON reason); + + /// Adds an event handler for the `MoveFocusRequested` event. + /// `MoveFocusRequested` runs when user tries to tab out of the WebView. The + /// focus of the WebView has not changed when this event is run. + /// + /// \snippet ControlComponent.cpp MoveFocusRequested + + HRESULT add_MoveFocusRequested( + [in] ICoreWebView2MoveFocusRequestedEventHandler* eventHandler, + [out] EventRegistrationToken* token); + + /// Removes an event handler previously added with `add_MoveFocusRequested`. + + HRESULT remove_MoveFocusRequested( + [in] EventRegistrationToken token); + + /// Adds an event handler for the `GotFocus` event. `GotFocus` runs when + /// WebView has focus. + + HRESULT add_GotFocus( + [in] ICoreWebView2FocusChangedEventHandler* eventHandler, + [out] EventRegistrationToken* token); + + /// Removes an event handler previously added with `add_GotFocus`. + + HRESULT remove_GotFocus( + [in] EventRegistrationToken token); + + /// Adds an event handler for the `LostFocus` event. `LostFocus` runs when + /// WebView loses focus. In the case where `MoveFocusRequested` event is + /// run, the focus is still on WebView when `MoveFocusRequested` event runs. + /// `LostFocus` only runs afterwards when code of the app or default action + /// of `MoveFocusRequested` event set focus away from WebView. + + HRESULT add_LostFocus( + [in] ICoreWebView2FocusChangedEventHandler* eventHandler, + [out] EventRegistrationToken* token); + + /// Removes an event handler previously added with `add_LostFocus`. + + HRESULT remove_LostFocus( + [in] EventRegistrationToken token); + + /// Adds an event handler for the `AcceleratorKeyPressed` event. + /// `AcceleratorKeyPressed` runs when an accelerator key or key combo is + /// pressed or released while the WebView is focused. A key is considered an + /// accelerator if either of the following conditions are true. + /// + /// * Ctrl or Alt is currently being held. + /// * The pressed key does not map to a character. + /// + /// A few specific keys are never considered accelerators, such as Shift. + /// The `Escape` key is always considered an accelerator. + /// + /// Auto-repeated key events caused by holding the key down also triggers + /// this event. Filter out the auto-repeated key events by verifying the + /// `KeyEventLParam` or `PhysicalKeyStatus` event args. + /// + /// In windowed mode, the event handler is run synchronously. Until you + /// run `Handled()` on the event args or the event handler returns, the + /// browser process is blocked and outgoing cross-process COM requests fail + /// with `RPC_E_CANTCALLOUT_ININPUTSYNCCALL`. All `CoreWebView2` API methods + /// work, however. + /// + /// In windowless mode, the event handler is run asynchronously. Further + /// input do not reach the browser until the event handler returns or + /// `Handled()` is run, but the browser process is not blocked, and outgoing + /// COM requests work normally. + /// + /// It is recommended to run `Handled(TRUE)` as early as are able to know + /// that you want to handle the accelerator key. + /// + /// \snippet ControlComponent.cpp AcceleratorKeyPressed + + HRESULT add_AcceleratorKeyPressed( + [in] ICoreWebView2AcceleratorKeyPressedEventHandler* eventHandler, + [out] EventRegistrationToken* token); + + /// Removes an event handler previously added with + /// `add_AcceleratorKeyPressed`. + + HRESULT remove_AcceleratorKeyPressed( + [in] EventRegistrationToken token); + + /// The parent window provided by the app that this WebView is using to + /// render content. This API initially returns the window passed into + /// `CreateCoreWebView2Controller`. + + [propget] HRESULT ParentWindow([out, retval] HWND* parentWindow); + + /// Sets the parent window for the WebView. This causes the WebView to + /// re-parent the main WebView window to the newly provided window. + + [propput] HRESULT ParentWindow([in] HWND parentWindow); + + /// This is a notification separate from `Bounds` that tells WebView that the + /// main WebView parent (or any ancestor) `HWND` moved. This is needed + /// for accessibility and certain dialogs in WebView to work correctly. + /// + /// \snippet ViewComponent.cpp NotifyParentWindowPositionChanged + + HRESULT NotifyParentWindowPositionChanged(); + + /// Closes the WebView and cleans up the underlying browser instance. + /// Cleaning up the browser instance releases the resources powering the + /// WebView. The browser instance is shut down if no other WebViews are + /// using it. + /// + /// After running `Close`, most methods will fail and event handlers stop + /// running. Specifically, the WebView releases the associated references to + /// any associated event handlers when `Close` is run. + /// + /// `Close` is implicitly run when the `CoreWebView2Controller` loses the + /// final reference and is destructed. But it is best practice to + /// explicitly run `Close` to avoid any accidental cycle of references + /// between the WebView and the app code. Specifically, if you capture a + /// reference to the WebView in an event handler you create a reference cycle + /// between the WebView and the event handler. Run `Close` to break the + /// cycle by releasing all event handlers. But to avoid the situation, it is + /// best to both explicitly run `Close` on the WebView and to not capture a + /// reference to the WebView to ensure the WebView is cleaned up correctly. + /// `Close` is synchronous and won't trigger the `beforeunload` event. + /// + /// \snippet AppWindow.cpp Close + HRESULT Close(); + + /// Gets the `CoreWebView2` associated with this `CoreWebView2Controller`. + + [propget] HRESULT CoreWebView2([out, retval] ICoreWebView2** coreWebView2); +} + +/// A continuation of the ICoreWebView2Controller interface. +[uuid(c979903e-d4ca-4228-92eb-47ee3fa96eab), object, pointer_default(unique)] +interface ICoreWebView2Controller2 : ICoreWebView2Controller { + /// The `DefaultBackgroundColor` property is the color WebView renders + /// underneath all web content. This means WebView renders this color when + /// there is no web content loaded such as before the initial navigation or + /// between navigations. This also means web pages with undefined css + /// background properties or background properties containing transparent + /// pixels will render their contents over this color. Web pages with defined + /// and opaque background properties that span the page will obscure the + /// `DefaultBackgroundColor` and display normally. The default value for this + /// property is white to resemble the native browser experience. + /// + /// The Color is specified by the COREWEBVIEW2_COLOR that represents an RGBA + /// value. The `A` represents an Alpha value, meaning + /// `DefaultBackgroundColor` can be transparent. In the case of a transparent + /// `DefaultBackgroundColor` WebView will render hosting app content as the + /// background. This Alpha value is not supported on Windows 7. Any `A` value + /// other than 255 will result in E_INVALIDARG on Windows 7. + /// It is supported on all other WebView compatible platforms. + /// + /// Semi-transparent colors are not currently supported by this API and + /// setting `DefaultBackgroundColor` to a semi-transparent color will fail + /// with E_INVALIDARG. The only supported alpha values are 0 and 255, all + /// other values will result in E_INVALIDARG. + /// `DefaultBackgroundColor` can only be an opaque color or transparent. + /// + /// This value may also be set by using the + /// `WEBVIEW2_DEFAULT_BACKGROUND_COLOR` environment variable. There is a + /// known issue with background color where setting the color by API can + /// still leave the app with a white flicker before the + /// `DefaultBackgroundColor` takes effect. Setting the color via environment + /// variable solves this issue. The value must be a hex value that can + /// optionally prepend a 0x. The value must account for the alpha value + /// which is represented by the first 2 digits. So any hex value fewer than 8 + /// digits will assume a prepended 00 to the hex value and result in a + /// transparent color. + /// `get_DefaultBackgroundColor` will return the result of this environment + /// variable if used. This environment variable can only set the + /// `DefaultBackgroundColor` once. Subsequent updates to background color + /// must be done through API call. + /// + /// \snippet ViewComponent.cpp DefaultBackgroundColor + [propget] HRESULT DefaultBackgroundColor( + [out, retval] COREWEBVIEW2_COLOR* backgroundColor); + + /// Sets the `DefaultBackgroundColor` property. + [propput] HRESULT DefaultBackgroundColor( + [in] COREWEBVIEW2_COLOR backgroundColor); +} + +/// A continuation of the ICoreWebView2Controller2 interface. +[uuid(f9614724-5d2b-41dc-aef7-73d62b51543b), object, pointer_default(unique)] +interface ICoreWebView2Controller3 : ICoreWebView2Controller2 { + /// The rasterization scale for the WebView. The rasterization scale is the + /// combination of the monitor DPI scale and text scaling set by the user. + /// This value should be updated when the DPI scale of the app's top level + /// window changes (i.e. monitor DPI scale changes or window changes monitor) + /// or when the text scale factor of the system changes. + /// + /// \snippet AppWindow.cpp DPIChanged + /// + /// \snippet AppWindow.cpp TextScaleChanged1 + /// + /// \snippet AppWindow.cpp TextScaleChanged2 + /// + /// Rasterization scale applies to the WebView content, as well as + /// popups, context menus, scroll bars, and so on. Normal app scaling + /// scenarios should use the ZoomFactor property or SetBoundsAndZoomFactor + /// API which only scale the rendered HTML content and not popups, context + /// menus, scroll bars, and so on. + /// + /// \snippet ViewComponent.cpp RasterizationScale + [propget] HRESULT RasterizationScale([out, retval] double* scale); + /// Set the rasterization scale property. + [propput] HRESULT RasterizationScale([in] double scale); + + /// ShouldDetectMonitorScaleChanges property determines whether the WebView + /// attempts to track monitor DPI scale changes. When true, the WebView will + /// track monitor DPI scale changes, update the RasterizationScale property, + /// and raises RasterizationScaleChanged event. When false, the WebView will + /// not track monitor DPI scale changes, and the app must update the + /// RasterizationScale property itself. RasterizationScaleChanged event will + /// never raise when ShouldDetectMonitorScaleChanges is false. Apps that want + /// to set their own rasterization scale should set this property to false to + /// avoid the WebView2 updating the RasterizationScale property to match the + /// monitor DPI scale. + [propget] HRESULT ShouldDetectMonitorScaleChanges([out, retval] BOOL* value); + /// Set the ShouldDetectMonitorScaleChanges property. + [propput] HRESULT ShouldDetectMonitorScaleChanges([in] BOOL value); + + /// Add an event handler for the RasterizationScaleChanged event. + /// The event is raised when the WebView detects that the monitor DPI scale + /// has changed, ShouldDetectMonitorScaleChanges is true, and the WebView has + /// changed the RasterizationScale property. + /// + /// \snippet ViewComponent.cpp RasterizationScaleChanged + HRESULT add_RasterizationScaleChanged( + [in] ICoreWebView2RasterizationScaleChangedEventHandler* eventHandler, + [out] EventRegistrationToken* token); + /// Remove an event handler previously added with + /// add_RasterizationScaleChanged. + HRESULT remove_RasterizationScaleChanged( + [in] EventRegistrationToken token); + + /// BoundsMode affects how setting the Bounds and RasterizationScale + /// properties work. Bounds mode can either be in COREWEBVIEW2_BOUNDS_MODE_USE_RAW_PIXELS + /// mode or COREWEBVIEW2_BOUNDS_MODE_USE_RASTERIZATION_SCALE mode. + /// + /// When the mode is in COREWEBVIEW2_BOUNDS_MODE_USE_RAW_PIXELS, setting the bounds + /// property will set the size of the WebView in raw screen pixels. Changing + /// the rasterization scale in this mode won't change the raw pixel size of + /// the WebView and will only change the rasterization scale. + /// + /// When the mode is in COREWEBVIEW2_BOUNDS_MODE_USE_RASTERIZATION_SCALE, setting the + /// bounds property will change the logical size of the WebView which can be + /// described by the following equation: + /// ```text + /// Logical size * rasterization scale = Raw Pixel size + /// ``` + /// In this case, changing the rasterization scale will keep the logical size + /// the same and change the raw pixel size. + /// + /// \snippet ViewComponent.cpp BoundsMode + [propget] HRESULT BoundsMode( + [out, retval] COREWEBVIEW2_BOUNDS_MODE* boundsMode); + /// Set the BoundsMode property. + [propput] HRESULT BoundsMode([in] COREWEBVIEW2_BOUNDS_MODE boundsMode); +} + +/// This is the ICoreWebView2Controller4 interface. +/// The ICoreWebView2Controller4 provides interface to enable/disable external drop. +[uuid(97d418d5-a426-4e49-a151-e1a10f327d9e), object, pointer_default(unique)] +interface ICoreWebView2Controller4 : ICoreWebView2Controller3 { + /// Gets the `AllowExternalDrop` property which is used to configure the + /// capability that dragging objects from outside the bounds of webview2 and + /// dropping into webview2 is allowed or disallowed. The default value is + /// TRUE. + /// + /// \snippet SettingsComponent.cpp ToggleAllowExternalDrop + [propget] HRESULT AllowExternalDrop([ out, retval ] BOOL * value); + /// Sets the `AllowExternalDrop` property which is used to configure the + /// capability that dragging objects from outside the bounds of webview2 and + /// dropping into webview2 is allowed or disallowed. + /// + /// \snippet SettingsComponent.cpp ToggleAllowExternalDrop + [propput] HRESULT AllowExternalDrop([in] BOOL value); +} + +/// This interface is an extension of the ICoreWebView2Controller interface to +/// support visual hosting. An object implementing the +/// ICoreWebView2CompositionController interface will also implement +/// ICoreWebView2Controller. Callers are expected to use +/// ICoreWebView2Controller for resizing, visibility, focus, and so on, and +/// then use ICoreWebView2CompositionController to connect to a composition +/// tree and provide input meant for the WebView. +[uuid(3df9b733-b9ae-4a15-86b4-eb9ee9826469), object, pointer_default(unique)] +interface ICoreWebView2CompositionController : IUnknown { + /// The RootVisualTarget is a visual in the hosting app's visual tree. This + /// visual is where the WebView will connect its visual tree. The app uses + /// this visual to position the WebView within the app. The app still needs + /// to use the Bounds property to size the WebView. The RootVisualTarget + /// property can be an IDCompositionVisual or a + /// Windows::UI::Composition::ContainerVisual. WebView will connect its visual + /// tree to the provided visual before returning from the property setter. The + /// app needs to commit on its device setting the RootVisualTarget property. + /// The RootVisualTarget property supports being set to nullptr to disconnect + /// the WebView from the app's visual tree. + /// \snippet ViewComponent.cpp SetRootVisualTarget + /// \snippet ViewComponent.cpp BuildDCompTree + [propget] HRESULT RootVisualTarget([out, retval] IUnknown** target); + /// Set the RootVisualTarget property. + [propput] HRESULT RootVisualTarget([in] IUnknown* target); + + /// If eventKind is COREWEBVIEW2_MOUSE_EVENT_KIND_HORIZONTAL_WHEEL or + /// COREWEBVIEW2_MOUSE_EVENT_KIND_WHEEL, then mouseData specifies the amount of + /// wheel movement. A positive value indicates that the wheel was rotated + /// forward, away from the user; a negative value indicates that the wheel was + /// rotated backward, toward the user. One wheel click is defined as + /// WHEEL_DELTA, which is 120. + /// If eventKind is COREWEBVIEW2_MOUSE_EVENT_KIND_X_BUTTON_DOUBLE_CLICK + /// COREWEBVIEW2_MOUSE_EVENT_KIND_X_BUTTON_DOWN, or + /// COREWEBVIEW2_MOUSE_EVENT_KIND_X_BUTTON_UP, then mouseData specifies which X + /// buttons were pressed or released. This value should be 1 if the first X + /// button is pressed/released and 2 if the second X button is + /// pressed/released. + /// If eventKind is COREWEBVIEW2_MOUSE_EVENT_KIND_LEAVE, then virtualKeys, + /// mouseData, and point should all be zero. + /// If eventKind is any other value, then mouseData should be zero. + /// Point is expected to be in the client coordinate space of the WebView. + /// To track mouse events that start in the WebView and can potentially move + /// outside of the WebView and host application, calling SetCapture and + /// ReleaseCapture is recommended. + /// To dismiss hover popups, it is also recommended to send + /// COREWEBVIEW2_MOUSE_EVENT_KIND_LEAVE messages. + /// \snippet ViewComponent.cpp SendMouseInput + HRESULT SendMouseInput( + [in] COREWEBVIEW2_MOUSE_EVENT_KIND eventKind, + [in] COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS virtualKeys, + [in] UINT32 mouseData, + [in] POINT point); + + /// SendPointerInput accepts touch or pen pointer input of types defined in + /// COREWEBVIEW2_POINTER_EVENT_KIND. Any pointer input from the system must be + /// converted into an ICoreWebView2PointerInfo first. + HRESULT SendPointerInput( + [in] COREWEBVIEW2_POINTER_EVENT_KIND eventKind, + [in] ICoreWebView2PointerInfo* pointerInfo); + + /// The current cursor that WebView thinks it should be. The cursor should be + /// set in WM_SETCURSOR through \::SetCursor or set on the corresponding + /// parent/ancestor HWND of the WebView through \::SetClassLongPtr. The HCURSOR + /// can be freed so CopyCursor/DestroyCursor is recommended to keep your own + /// copy if you are doing more than immediately setting the cursor. + [propget] HRESULT Cursor([out, retval] HCURSOR* cursor); + + /// The current system cursor ID reported by the underlying rendering engine + /// for WebView. For example, most of the time, when the cursor is over text, + /// this will return the int value for IDC_IBEAM. The systemCursorId is only + /// valid if the rendering engine reports a default Windows cursor resource + /// value. Navigate to + /// [LoadCursorW](/windows/win32/api/winuser/nf-winuser-loadcursorw) for more + /// details. Otherwise, if custom CSS cursors are being used, this will return + /// 0. To actually use systemCursorId in LoadCursor or LoadImage, + /// MAKEINTRESOURCE must be called on it first. + /// + /// \snippet ViewComponent.cpp SystemCursorId + [propget] HRESULT SystemCursorId([out, retval] UINT32* systemCursorId); + + /// Add an event handler for the CursorChanged event. + /// The event is raised when WebView thinks the cursor should be changed. For + /// example, when the mouse cursor is currently the default cursor but is then + /// moved over text, it may try to change to the IBeam cursor. + /// + /// It is expected for the developer to send + /// COREWEBVIEW2_MOUSE_EVENT_KIND_LEAVE messages (in addition to + /// COREWEBVIEW2_MOUSE_EVENT_KIND_MOVE messages) through the SendMouseInput + /// API. This is to ensure that the mouse is actually within the WebView that + /// sends out CursorChanged events. + /// + /// \snippet ViewComponent.cpp CursorChanged + HRESULT add_CursorChanged( + [in] ICoreWebView2CursorChangedEventHandler* eventHandler, + [out] EventRegistrationToken* token); + /// Remove an event handler previously added with add_CursorChanged. + HRESULT remove_CursorChanged( + [in] EventRegistrationToken token); +} + +/// A continuation of the ICoreWebView2CompositionController interface. +[uuid(0b6a3d24-49cb-4806-ba20-b5e0734a7b26), object, pointer_default(unique)] +interface ICoreWebView2CompositionController2 : ICoreWebView2CompositionController { + /// Returns the Automation Provider for the WebView. This object implements + /// IRawElementProviderSimple. + [propget] HRESULT AutomationProvider([out, retval] IUnknown** provider); +} + + +/// This interface is the continuation of the +/// ICoreWebView2CompositionController2 interface to manage drag and drop. +[uuid(9570570e-4d76-4361-9ee1-f04d0dbdfb1e), object, pointer_default(unique)] +interface ICoreWebView2CompositionController3 : ICoreWebView2CompositionController2 { + /// This function corresponds to [IDropTarget::DragEnter](/windows/win32/api/oleidl/nf-oleidl-idroptarget-dragenter). + /// + /// This function has a dependency on AllowExternalDrop property of + /// CoreWebView2Controller and return E_FAIL to callers to indicate this + /// operation is not allowed if AllowExternalDrop property is set to false. + /// + /// The hosting application must register as an IDropTarget and implement + /// and forward DragEnter calls to this function. + /// + /// point parameter must be modified to include the WebView's offset and be in + /// the WebView's client coordinates (Similar to how SendMouseInput works). + /// + /// \snippet DropTarget.cpp DragEnter + HRESULT DragEnter( + [in] IDataObject* dataObject, + [in] DWORD keyState, + [in] POINT point, + [out, retval] DWORD* effect); + + /// This function corresponds to [IDropTarget::DragLeave](/windows/win32/api/oleidl/nf-oleidl-idroptarget-dragleave). + /// + /// This function has a dependency on AllowExternalDrop property of + /// CoreWebView2Controller and return E_FAIL to callers to indicate this + /// operation is not allowed if AllowExternalDrop property is set to false. + /// + /// The hosting application must register as an IDropTarget and implement + /// and forward DragLeave calls to this function. + /// + /// \snippet DropTarget.cpp DragLeave + HRESULT DragLeave(); + + /// This function corresponds to [IDropTarget::DragOver](/windows/win32/api/oleidl/nf-oleidl-idroptarget-dragover). + /// + /// This function has a dependency on AllowExternalDrop property of + /// CoreWebView2Controller and return E_FAIL to callers to indicate this + /// operation is not allowed if AllowExternalDrop property is set to false. + /// + /// The hosting application must register as an IDropTarget and implement + /// and forward DragOver calls to this function. + /// + /// point parameter must be modified to include the WebView's offset and be in + /// the WebView's client coordinates (Similar to how SendMouseInput works). + /// + /// \snippet DropTarget.cpp DragOver + HRESULT DragOver( + [in] DWORD keyState, + [in] POINT point, + [out, retval] DWORD* effect); + + /// This function corresponds to [IDropTarget::Drop](/windows/win32/api/oleidl/nf-oleidl-idroptarget-drop). + /// + /// This function has a dependency on AllowExternalDrop property of + /// CoreWebView2Controller and return E_FAIL to callers to indicate this + /// operation is not allowed if AllowExternalDrop property is set to false. + /// + /// The hosting application must register as an IDropTarget and implement + /// and forward Drop calls to this function. + /// + /// point parameter must be modified to include the WebView's offset and be in + /// the WebView's client coordinates (Similar to how SendMouseInput works). + /// + /// \snippet DropTarget.cpp Drop + HRESULT Drop( + [in] IDataObject* dataObject, + [in] DWORD keyState, + [in] POINT point, + [out, retval] DWORD* effect); +} + +/// This interface is used to complete deferrals on event args that support +/// getting deferrals using the `GetDeferral` method. + +[uuid(c10e7f7b-b585-46f0-a623-8befbf3e4ee0), object, pointer_default(unique)] +interface ICoreWebView2Deferral : IUnknown { + + /// Completes the associated deferred event. Complete should only be run + /// once for each deferral taken. + + HRESULT Complete(); +} + +/// Defines properties that enable, disable, or modify WebView features. +/// Changes to `IsGeneralAutofillEnabled` and `IsPasswordAutosaveEnabled` +/// apply immediately, while other setting changes made after `NavigationStarting` +/// event do not apply until the next top-level navigation. + +[uuid(e562e4f0-d7fa-43ac-8d71-c05150499f00), object, pointer_default(unique)] +interface ICoreWebView2Settings : IUnknown { + + /// Controls if running JavaScript is enabled in all future navigations in + /// the WebView. This only affects scripts in the document. Scripts + /// injected with `ExecuteScript` runs even if script is disabled. + /// The default value is `TRUE`. + /// + /// \snippet SettingsComponent.cpp IsScriptEnabled + [propget] HRESULT IsScriptEnabled( + [out, retval] BOOL* isScriptEnabled); + + /// Sets the `IsScriptEnabled` property. + [propput] HRESULT IsScriptEnabled([in] BOOL isScriptEnabled); + + /// The `IsWebMessageEnabled` property is used when loading a new HTML + /// document. If set to `TRUE`, communication from the host to the top-level + /// HTML document of the WebView is allowed using `PostWebMessageAsJson`, + /// `PostWebMessageAsString`, and message event of `window.chrome.webview`. + /// For more information, navigate to PostWebMessageAsJson. Communication + /// from the top-level HTML document of the WebView to the host is allowed + /// using the postMessage function of `window.chrome.webview` and + /// `add_WebMessageReceived` method. For more information, navigate to + /// [add_WebMessageReceived](/microsoft-edge/webview2/reference/win32/icorewebview2#add_webmessagereceived). + /// If set to false, then communication is disallowed. `PostWebMessageAsJson` + /// and `PostWebMessageAsString` fails with `E_ACCESSDENIED` and + /// `window.chrome.webview.postMessage` fails by throwing an instance of an + /// `Error` object. The default value is `TRUE`. + /// + /// \snippet ScenarioWebMessage.cpp IsWebMessageEnabled + [propget] HRESULT IsWebMessageEnabled( + [out, retval] BOOL* isWebMessageEnabled); + + /// Sets the `IsWebMessageEnabled` property. + [propput] HRESULT IsWebMessageEnabled([in] BOOL isWebMessageEnabled); + + /// `AreDefaultScriptDialogsEnabled` is used when loading a new HTML + /// document. If set to `FALSE`, WebView2 does not render the default JavaScript + /// dialog box (Specifically those displayed by the JavaScript alert, + /// confirm, prompt functions and `beforeunload` event). Instead, if an + /// event handler is set using `add_ScriptDialogOpening`, WebView sends an + /// event that contains all of the information for the dialog and allow the + /// host app to show a custom UI. + /// The default value is `TRUE`. + [propget] HRESULT AreDefaultScriptDialogsEnabled( + [out, retval] BOOL* areDefaultScriptDialogsEnabled); + + /// Sets the `AreDefaultScriptDialogsEnabled` property. + [propput] HRESULT AreDefaultScriptDialogsEnabled( + [in] BOOL areDefaultScriptDialogsEnabled); + + /// `IsStatusBarEnabled` controls whether the status bar is displayed. The + /// status bar is usually displayed in the lower left of the WebView and + /// shows things such as the URI of a link when the user hovers over it and + /// other information. + /// The default value is `TRUE`. + /// The status bar UI can be altered by web content and should not be considered secure. + [propget] HRESULT IsStatusBarEnabled([out, retval] BOOL* isStatusBarEnabled); + + /// Sets the `IsStatusBarEnabled` property. + [propput] HRESULT IsStatusBarEnabled([in] BOOL isStatusBarEnabled); + + /// `AreDevToolsEnabled` controls whether the user is able to use the context + /// menu or keyboard shortcuts to open the DevTools window. + /// The default value is `TRUE`. + [propget] HRESULT AreDevToolsEnabled([out, retval] BOOL* areDevToolsEnabled); + + /// Sets the `AreDevToolsEnabled` property. + [propput] HRESULT AreDevToolsEnabled([in] BOOL areDevToolsEnabled); + + /// The `AreDefaultContextMenusEnabled` property is used to prevent default + /// context menus from being shown to user in WebView. + /// The default value is `TRUE`. + /// + /// \snippet SettingsComponent.cpp DisableContextMenu + [propget] HRESULT AreDefaultContextMenusEnabled([out, retval] BOOL* enabled); + + /// Sets the `AreDefaultContextMenusEnabled` property. + [propput] HRESULT AreDefaultContextMenusEnabled([in] BOOL enabled); + + /// The `AreHostObjectsAllowed` property is used to control whether host + /// objects are accessible from the page in WebView. + /// The default value is `TRUE`. + /// + /// \snippet SettingsComponent.cpp HostObjectsAccess + [propget] HRESULT AreHostObjectsAllowed([out, retval] BOOL* allowed); + + /// Sets the `AreHostObjectsAllowed` property. + + [propput] HRESULT AreHostObjectsAllowed([in] BOOL allowed); + + /// The `IsZoomControlEnabled` property is used to prevent the user from + /// impacting the zoom of the WebView. When disabled, the user is not able + /// to zoom using Ctrl++, Ctrl+-, or Ctrl+mouse wheel, but the zoom + /// is set using `ZoomFactor` API. The default value is `TRUE`. + /// + /// \snippet SettingsComponent.cpp DisableZoomControl + + [propget] HRESULT IsZoomControlEnabled([out, retval] BOOL* enabled); + + /// Sets the `IsZoomControlEnabled` property. + + [propput] HRESULT IsZoomControlEnabled([in] BOOL enabled); + + /// The `IsBuiltInErrorPageEnabled` property is used to disable built in + /// error page for navigation failure and render process failure. When + /// disabled, a blank page is displayed when the related error happens. + /// The default value is `TRUE`. + /// + /// \snippet SettingsComponent.cpp BuiltInErrorPageEnabled + [propget] HRESULT IsBuiltInErrorPageEnabled([out, retval] BOOL* enabled); + + /// Sets the `IsBuiltInErrorPageEnabled` property. + [propput] HRESULT IsBuiltInErrorPageEnabled([in] BOOL enabled); +} + +/// A continuation of the ICoreWebView2Settings interface that manages the user agent. + +[uuid(ee9a0f68-f46c-4e32-ac23-ef8cac224d2a), object, pointer_default(unique)] +interface ICoreWebView2Settings2 : ICoreWebView2Settings { + /// Returns the User Agent. The default value is the default User Agent of the + /// Microsoft Edge browser. + /// + /// The caller must free the returned string with `CoTaskMemFree`. See + /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings). + /// + /// \snippet SettingsComponent.cpp UserAgent + [propget] HRESULT UserAgent([out, retval] LPWSTR* userAgent); + /// Sets the `UserAgent` property. This property may be overridden if + /// the User-Agent header is set in a request. If the parameter is empty + /// the User Agent will not be updated and the current User Agent will remain. + /// Returns `HRESULT_FROM_WIN32(ERROR_INVALID_STATE)` if the owning WebView is + /// closed. + [propput] HRESULT UserAgent([in] LPCWSTR userAgent); +} + +/// A continuation of the ICoreWebView2Settings interface that manages whether +/// browser accelerator keys are enabled. +[uuid(fdb5ab74-af33-4854-84f0-0a631deb5eba), object, pointer_default(unique)] +interface ICoreWebView2Settings3 : ICoreWebView2Settings2 { + /// When this setting is set to FALSE, it disables all accelerator keys that + /// access features specific to a web browser, including but not limited to: + /// - Ctrl-F and F3 for Find on Page + /// - Ctrl-P for Print + /// - Ctrl-R and F5 for Reload + /// - Ctrl-Plus and Ctrl-Minus for zooming + /// - Ctrl-Shift-C and F12 for DevTools + /// - Special keys for browser functions, such as Back, Forward, and Search + /// + /// It does not disable accelerator keys related to movement and text editing, + /// such as: + /// - Home, End, Page Up, and Page Down + /// - Ctrl-X, Ctrl-C, Ctrl-V + /// - Ctrl-A for Select All + /// - Ctrl-Z for Undo + /// + /// Those accelerator keys will always be enabled unless they are handled in + /// the `AcceleratorKeyPressed` event. + /// + /// This setting has no effect on the `AcceleratorKeyPressed` event. The event + /// will be fired for all accelerator keys, whether they are enabled or not. + /// + /// The default value for `AreBrowserAcceleratorKeysEnabled` is TRUE. + /// + /// \snippet SettingsComponent.cpp AreBrowserAcceleratorKeysEnabled + [propget] HRESULT AreBrowserAcceleratorKeysEnabled( + [out, retval] BOOL* areBrowserAcceleratorKeysEnabled); + + /// Sets the `AreBrowserAcceleratorKeysEnabled` property. + [propput] HRESULT AreBrowserAcceleratorKeysEnabled( + [in] BOOL areBrowserAcceleratorKeysEnabled); +} + +/// A continuation of the ICoreWebView2Settings interface to manage autofill. +[uuid(cb56846c-4168-4d53-b04f-03b6d6796ff2), object, pointer_default(unique)] +interface ICoreWebView2Settings4 : ICoreWebView2Settings3 { + /// IsPasswordAutosaveEnabled controls whether autosave for password + /// information is enabled. The IsPasswordAutosaveEnabled property behaves + /// independently of the IsGeneralAutofillEnabled property. When IsPasswordAutosaveEnabled is + /// false, no new password data is saved and no Save/Update Password prompts are displayed. + /// However, if there was password data already saved before disabling this setting, + /// then that password information is auto-populated, suggestions are shown and clicking on + /// one will populate the fields. + /// When IsPasswordAutosaveEnabled is true, password information is auto-populated, + /// suggestions are shown and clicking on one will populate the fields, new data + /// is saved, and a Save/Update Password prompt is displayed. + /// It will take effect immediately after setting. + /// The default value is `FALSE`. + /// This property has the same value as + /// `CoreWebView2Profile.IsPasswordAutosaveEnabled`, and changing one will + /// change the other. All `CoreWebView2`s with the same `CoreWebView2Profile` + /// will share the same value for this property, so for the `CoreWebView2`s + /// with the same profile, their + /// `CoreWebView2Settings.IsPasswordAutosaveEnabled` and + /// `CoreWebView2Profile.IsPasswordAutosaveEnabled` will always have the same + /// value. + /// + /// \snippet SettingsComponent.cpp PasswordAutosaveEnabled + [propget] HRESULT IsPasswordAutosaveEnabled([out, retval] BOOL* value); + + /// Set the IsPasswordAutosaveEnabled property. + [propput] HRESULT IsPasswordAutosaveEnabled([in] BOOL value); + + /// IsGeneralAutofillEnabled controls whether autofill for information + /// like names, street and email addresses, phone numbers, and arbitrary input + /// is enabled. This excludes password and credit card information. When + /// IsGeneralAutofillEnabled is false, no suggestions appear, and no new information + /// is saved. When IsGeneralAutofillEnabled is true, information is saved, suggestions + /// appear and clicking on one will populate the form fields. + /// It will take effect immediately after setting. + /// The default value is `TRUE`. + /// This property has the same value as + /// `CoreWebView2Profile.IsGeneralAutofillEnabled`, and changing one will + /// change the other. All `CoreWebView2`s with the same `CoreWebView2Profile` + /// will share the same value for this property, so for the `CoreWebView2`s + /// with the same profile, their + /// `CoreWebView2Settings.IsGeneralAutofillEnabled` and + /// `CoreWebView2Profile.IsGeneralAutofillEnabled` will always have the same + /// value. + /// + /// \snippet SettingsComponent.cpp GeneralAutofillEnabled + [propget] HRESULT IsGeneralAutofillEnabled([out, retval] BOOL* value); + + /// Set the IsGeneralAutofillEnabled property. + [propput] HRESULT IsGeneralAutofillEnabled([in] BOOL value); +} + +/// A continuation of the ICoreWebView2Settings interface to manage pinch zoom. +[uuid(183e7052-1d03-43a0-ab99-98e043b66b39), object, pointer_default(unique)] +interface ICoreWebView2Settings5 : ICoreWebView2Settings4 { + /// Pinch-zoom, referred to as "Page Scale" zoom, is performed as a post-rendering step, + /// it changes the page scale factor property and scales the surface the web page is + /// rendered onto when user performs a pinch zooming action. It does not change the layout + /// but rather changes the viewport and clips the web content, the content outside of the + /// viewport isn't visible onscreen and users can't reach this content using mouse. + /// + /// The `IsPinchZoomEnabled` property enables or disables the ability of + /// the end user to use a pinching motion on touch input enabled devices + /// to scale the web content in the WebView2. It defaults to `TRUE`. + /// When set to `FALSE`, the end user cannot pinch zoom after the next navigation. + /// Disabling/Enabling `IsPinchZoomEnabled` only affects the end user's ability to use + /// pinch motions and does not change the page scale factor. + /// This API only affects the Page Scale zoom and has no effect on the + /// existing browser zoom properties (`IsZoomControlEnabled` and `ZoomFactor`) + /// or other end user mechanisms for zooming. + /// + /// \snippet SettingsComponent.cpp TogglePinchZoomEnabled + [propget] HRESULT IsPinchZoomEnabled([out, retval] BOOL* enabled); + /// Set the `IsPinchZoomEnabled` property + [propput] HRESULT IsPinchZoomEnabled([in] BOOL enabled); +} + +/// A continuation of the ICoreWebView2Settings interface to manage swipe navigation. +[uuid(11cb3acd-9bc8-43b8-83bf-f40753714f87), object, pointer_default(unique)] +interface ICoreWebView2Settings6 : ICoreWebView2Settings5 { + /// The `IsSwipeNavigationEnabled` property enables or disables the ability of the + /// end user to use swiping gesture on touch input enabled devices to + /// navigate in WebView2. It defaults to `TRUE`. + /// + /// When this property is `TRUE`, then all configured navigation gestures are enabled: + /// 1. Swiping left and right to navigate forward and backward is always configured. + /// 2. Swiping down to refresh is off by default and not exposed via our API currently, + /// it requires the "--pull-to-refresh" option to be included in the additional browser + /// arguments to be configured. (See put_AdditionalBrowserArguments.) + /// + /// When set to `FALSE`, the end user cannot swipe to navigate or pull to refresh. + /// This API only affects the overscrolling navigation functionality and has no + /// effect on the scrolling interaction used to explore the web content shown + /// in WebView2. + /// + /// Disabling/Enabling IsSwipeNavigationEnabled takes effect after the + /// next navigation. + /// + /// \snippet SettingsComponent.cpp ToggleSwipeNavigationEnabled + [propget] HRESULT IsSwipeNavigationEnabled([out, retval] BOOL* enabled); + /// Set the `IsSwipeNavigationEnabled` property + [propput] HRESULT IsSwipeNavigationEnabled([in] BOOL enabled); +} + +/// A continuation of the ICoreWebView2Settings interface to hide Pdf toolbar items. +[uuid(488dc902-35ef-42d2-bc7d-94b65c4bc49c), object, pointer_default(unique)] +interface ICoreWebView2Settings7 : ICoreWebView2Settings6 { + /// `HiddenPdfToolbarItems` is used to customize the PDF toolbar items. By default, it is COREWEBVIEW2_PDF_TOOLBAR_ITEMS_NONE and so it displays all of the items. + /// Changes to this property apply to all CoreWebView2s in the same environment and using the same profile. + /// Changes to this setting apply only after the next navigation. + /// \snippet SettingsComponent.cpp ToggleHidePdfToolbarItems + [propget] HRESULT HiddenPdfToolbarItems([out, retval] COREWEBVIEW2_PDF_TOOLBAR_ITEMS* hidden_pdf_toolbar_items); + + /// Set the `HiddenPdfToolbarItems` property. + [propput] HRESULT HiddenPdfToolbarItems([in] COREWEBVIEW2_PDF_TOOLBAR_ITEMS hidden_pdf_toolbar_items); +} + +/// A continuation of the ICoreWebView2Settings interface to manage smartscreen. +[uuid(9e6b0e8f-86ad-4e81-8147-a9b5edb68650), object, pointer_default(unique)] +interface ICoreWebView2Settings8 : ICoreWebView2Settings7 { + /// SmartScreen helps webviews identify reported phishing and malware websites + /// and also helps users make informed decisions about downloads. + /// `IsReputationCheckingRequired` is used to control whether SmartScreen + /// enabled or not. SmartScreen is enabled or disabled for all CoreWebView2s + /// using the same user data folder. If + /// CoreWebView2Setting.IsReputationCheckingRequired is true for any + /// CoreWebView2 using the same user data folder, then SmartScreen is enabled. + /// If CoreWebView2Setting.IsReputationCheckingRequired is false for all + /// CoreWebView2 using the same user data folder, then SmartScreen is + /// disabled. When it is changed, the change will be applied to all WebViews + /// using the same user data folder on the next navigation or download. The + /// default value for `IsReputationCheckingRequired` is true. If the newly + /// created CoreWebview2 does not set SmartScreen to false, when + /// navigating(Such as Navigate(), LoadDataUrl(), ExecuteScript(), etc.), the + /// default value will be applied to all CoreWebview2 using the same user data + /// folder. + /// SmartScreen of WebView2 apps can be controlled by Windows system setting + /// "SmartScreen for Microsoft Edge", specially, for WebView2 in Windows + /// Store apps, SmartScreen is controlled by another Windows system setting + /// "SmartScreen for Microsoft Store apps". When the Windows setting is enabled, the + /// SmartScreen operates under the control of the `IsReputationCheckingRequired`. + /// When the Windows setting is disabled, the SmartScreen will be disabled + /// regardless of the `IsReputationCheckingRequired` value set in WebView2 apps. + /// In other words, under this circumstance the value of + /// `IsReputationCheckingRequired` will be saved but overridden by system setting. + /// Upon re-enabling the Windows setting, the CoreWebview2 will reference the + /// `IsReputationCheckingRequired` to determine the SmartScreen status. + /// \snippet SettingsComponent.cpp ToggleSmartScreen + [propget] HRESULT IsReputationCheckingRequired([out, retval] BOOL* value); + + /// Sets whether this webview2 instance needs SmartScreen protection for its content. + /// Set the `IsReputationCheckingRequired` property. + [propput] HRESULT IsReputationCheckingRequired([in] BOOL value); +} + +/// Event args for the `ProcessFailed` event. +[uuid(8155a9a4-1474-4a86-8cae-151b0fa6b8ca), object, pointer_default(unique)] +interface ICoreWebView2ProcessFailedEventArgs : IUnknown { + + /// The kind of process failure that has occurred. This is a combination of + /// process kind (for example, browser, renderer, gpu) and failure (exit, + /// unresponsiveness). Renderer processes are further divided in _main frame_ + /// renderer (`RenderProcessExited`, `RenderProcessUnresponsive`) and + /// _subframe_ renderer (`FrameRenderProcessExited`). To learn about the + /// conditions under which each failure kind occurs, see + /// `COREWEBVIEW2_PROCESS_FAILED_KIND`. + [propget] HRESULT ProcessFailedKind( + [out, retval] COREWEBVIEW2_PROCESS_FAILED_KIND* processFailedKind); +} + +/// Receives `ProcessFailed` events. +[uuid(79e0aea4-990b-42d9-aa1d-0fcc2e5bc7f1), object, pointer_default(unique)] +interface ICoreWebView2ProcessFailedEventHandler : IUnknown { + + /// Provides the event args for the corresponding event. + + HRESULT Invoke( + [in] ICoreWebView2* sender, + [in] ICoreWebView2ProcessFailedEventArgs* args); +} + +/// Implements the interface to receive `ZoomFactorChanged` events. Use the +/// `ICoreWebView2Controller.ZoomFactor` property to get the modified zoom +/// factor. + +[uuid(b52d71d6-c4df-4543-a90c-64a3e60f38cb), object, pointer_default(unique)] +interface ICoreWebView2ZoomFactorChangedEventHandler : IUnknown { + + /// Provides the event args for the corresponding event. No event args exist + /// and the `args` parameter is set to `null`. + + HRESULT Invoke([in] ICoreWebView2Controller* sender, [in] IUnknown* args); +} + +/// Iterator for a collection of HTTP headers. For more information, navigate +/// to ICoreWebView2HttpRequestHeaders and ICoreWebView2HttpResponseHeaders. +/// +/// \snippet ScenarioWebViewEventMonitor.cpp HttpRequestHeaderIterator +[uuid(0702fc30-f43b-47bb-ab52-a42cb552ad9f), object, pointer_default(unique)] +interface ICoreWebView2HttpHeadersCollectionIterator : IUnknown { + + /// Get the name and value of the current HTTP header of the iterator. If + /// the previous `MoveNext` operation set the `hasNext` parameter to `FALSE`, + /// this method fails. + /// + /// The caller must free the returned strings with `CoTaskMemFree`. See + /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings). + + HRESULT GetCurrentHeader([out] LPWSTR* name, [out] LPWSTR* value); + + /// `TRUE` when the iterator has not run out of headers. If the collection + /// over which the iterator is iterating is empty or if the iterator has gone + /// past the end of the collection then this is `FALSE`. + + [propget] HRESULT HasCurrentHeader([out, retval] BOOL* hasCurrent); + + /// Move the iterator to the next HTTP header in the collection. + /// + /// \> [!NOTE]\n \> If no more HTTP headers exist, the `hasNext` parameter is set to + /// `FALSE`. After this occurs the `GetCurrentHeader` method fails. + + HRESULT MoveNext([out, retval] BOOL* hasNext); +} + +/// HTTP request headers. Used to inspect the HTTP request on +/// `WebResourceRequested` event and `NavigationStarting` event. +/// +/// \> [!NOTE]\n\> It is possible to modify the HTTP request from a `WebResourceRequested` +/// event, but not from a `NavigationStarting` event. +[uuid(e86cac0e-5523-465c-b536-8fb9fc8c8c60), object, pointer_default(unique)] +interface ICoreWebView2HttpRequestHeaders : IUnknown { + + /// Gets the header value matching the name. + /// + /// The caller must free the returned string with `CoTaskMemFree`. See + /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings). + + HRESULT GetHeader([in] LPCWSTR name, [out, retval] LPWSTR* value); + + /// Gets the header value matching the name using an iterator. + + HRESULT GetHeaders([in] LPCWSTR name, [out, retval] ICoreWebView2HttpHeadersCollectionIterator** iterator); + + /// Verifies that the headers contain an entry that matches the header name. + + HRESULT Contains([in] LPCWSTR name, [out, retval] BOOL* contains); + + /// Adds or updates header that matches the name. + + HRESULT SetHeader([in] LPCWSTR name, [in] LPCWSTR value); + + /// Removes header that matches the name. + + HRESULT RemoveHeader([in] LPCWSTR name); + + /// Gets an iterator over the collection of request headers. + + HRESULT GetIterator( + [out, retval] ICoreWebView2HttpHeadersCollectionIterator** iterator); +} + +/// HTTP response headers. Used to construct a `WebResourceResponse` for the +/// `WebResourceRequested` event. +[uuid(03c5ff5a-9b45-4a88-881c-89a9f328619c), object, pointer_default(unique)] +interface ICoreWebView2HttpResponseHeaders : IUnknown { + + /// Appends header line with name and value. + + HRESULT AppendHeader([in] LPCWSTR name, [in] LPCWSTR value); + + /// Verifies that the headers contain entries that match the header name. + + HRESULT Contains([in] LPCWSTR name, [out, retval] BOOL* contains); + + /// Gets the first header value in the collection matching the name. + /// + /// The caller must free the returned string with `CoTaskMemFree`. See + /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings). + + HRESULT GetHeader([in] LPCWSTR name, [out, retval] LPWSTR* value); + + /// Gets the header values matching the name. + + HRESULT GetHeaders([in] LPCWSTR name, [out, retval] ICoreWebView2HttpHeadersCollectionIterator** iterator); + + /// Gets an iterator over the collection of entire response headers. + + HRESULT GetIterator( + [out, retval] ICoreWebView2HttpHeadersCollectionIterator** iterator); +} + +/// An HTTP request used with the `WebResourceRequested` event. +[uuid(97055cd4-512c-4264-8b5f-e3f446cea6a5), object, pointer_default(unique)] +interface ICoreWebView2WebResourceRequest : IUnknown { + + /// The request URI. + /// + /// The caller must free the returned string with `CoTaskMemFree`. See + /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings). + + [propget] HRESULT Uri([out, retval] LPWSTR* uri); + + /// Sets the `Uri` property. + + [propput] HRESULT Uri([in] LPCWSTR uri); + + /// The HTTP request method. + /// + /// The caller must free the returned string with `CoTaskMemFree`. See + /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings). + + [propget] HRESULT Method([out, retval] LPWSTR* method); + + /// Sets the `Method` property. + + [propput] HRESULT Method([in] LPCWSTR method); + + /// The HTTP request message body as stream. POST data should be here. If a + /// stream is set, which overrides the message body, the stream must have + /// all the content data available by the time the `WebResourceRequested` + /// event deferral of this response is completed. Stream should be agile or + /// be created from a background STA to prevent performance impact to the UI + /// thread. `Null` means no content data. `IStream` semantics apply + /// (return `S_OK` to `Read` runs until all data is exhausted). + + [propget] HRESULT Content([out, retval] IStream** content); + + /// Sets the `Content` property. + + [propput] HRESULT Content([in] IStream* content); + + /// The mutable HTTP request headers + + [propget] HRESULT Headers([out, retval] ICoreWebView2HttpRequestHeaders** headers); +} + +/// An HTTP response used with the `WebResourceRequested` event. +[uuid(aafcc94f-fa27-48fd-97df-830ef75aaec9), object, pointer_default(unique)] +interface ICoreWebView2WebResourceResponse : IUnknown { + + /// HTTP response content as stream. Stream must have all the content data + /// available by the time the `WebResourceRequested` event deferral of this + /// response is completed. Stream should be agile or be created from a + /// background thread to prevent performance impact to the UI thread. `Null` + /// means no content data. `IStream` semantics apply (return `S_OK` to + /// `Read` runs until all data is exhausted). + /// When providing the response data, you should consider relevant HTTP + /// request headers just like an HTTP server would do. For example, if the + /// request was for a video resource in a HTML video element, the request may + /// contain the [Range](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Range) + /// header to request only a part of the video that is streaming. In this + /// case, your response stream should be only the portion of the video + /// specified by the range HTTP request headers and you should set the + /// appropriate + /// [Content-Range](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Range) + /// header in the response. + + [propget] HRESULT Content([out, retval] IStream** content); + + /// Sets the `Content` property. + + [propput] HRESULT Content([in] IStream* content); + + /// Overridden HTTP response headers. + + [propget] HRESULT Headers([out, retval] ICoreWebView2HttpResponseHeaders** headers); + + /// The HTTP response status code. + + [propget] HRESULT StatusCode([out, retval] int* statusCode); + + /// Sets the `StatusCode` property. + + [propput] HRESULT StatusCode([in] int statusCode); + + /// The HTTP response reason phrase. + /// + /// The caller must free the returned string with `CoTaskMemFree`. See + /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings). + + [propget] HRESULT ReasonPhrase([out, retval] LPWSTR* reasonPhrase); + + /// Sets the `ReasonPhrase` property. + + [propput] HRESULT ReasonPhrase([in] LPCWSTR reasonPhrase); +} + +/// Event args for the `NavigationStarting` event. +[uuid(5b495469-e119-438a-9b18-7604f25f2e49), object, pointer_default(unique)] +interface ICoreWebView2NavigationStartingEventArgs : IUnknown { + + /// The uri of the requested navigation. + /// + /// The caller must free the returned string with `CoTaskMemFree`. See + /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings). + + [propget] HRESULT Uri([out, retval] LPWSTR* uri); + + /// `TRUE` when the navigation was initiated through a user gesture as + /// opposed to programmatic navigation by page script. Navigations initiated + /// via WebView2 APIs are considered as user initiated. + + [propget] HRESULT IsUserInitiated([out, retval] BOOL* isUserInitiated); + + /// `TRUE` when the navigation is redirected. + + [propget] HRESULT IsRedirected([out, retval] BOOL* isRedirected); + + /// The HTTP request headers for the navigation. + /// + /// \> [!NOTE]\n\> You are not able to modify the HTTP request headers in a + /// `NavigationStarting` event. + + [propget] HRESULT RequestHeaders([out, retval] ICoreWebView2HttpRequestHeaders** requestHeaders); + + /// The host may set this flag to cancel the navigation. If set, the + /// navigation is not longer present and the content of the current page is + /// intact. For performance reasons, `GET` HTTP requests may happen, while + /// the host is responding. You may set cookies and use part of a request + /// for the navigation. Cancellation for navigation to `about:blank` or + /// frame navigation to `srcdoc` is not supported. Such attempts are + /// ignored. A cancelled navigation will fire a `NavigationCompleted` event + /// with a `WebErrorStatus` of + /// `COREWEBVIEW2_WEB_ERROR_STATUS_OPERATION_CANCELED`. + + [propget] HRESULT Cancel([out, retval] BOOL* cancel); + + /// Sets the `Cancel` property. + + [propput] HRESULT Cancel([in] BOOL cancel); + + /// The ID of the navigation. + + [propget] HRESULT NavigationId([out, retval] UINT64* navigationId); +} + +/// The AdditionalAllowedFrameAncestors API that enable developers to provide additional allowed frame ancestors. +[uuid(9086BE93-91AA-472D-A7E0-579F2BA006AD), object, pointer_default(unique)] +interface ICoreWebView2NavigationStartingEventArgs2 : ICoreWebView2NavigationStartingEventArgs { + + /// Get additional allowed frame ancestors set by the host app. + /// + /// The caller must free the returned string with `CoTaskMemFree`. See + /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings). + [propget] HRESULT AdditionalAllowedFrameAncestors([out, retval] LPWSTR* value); + + /// The app may set this property to allow a frame to be embedded by additional ancestors besides what is allowed by + /// http header [X-Frame-Options](https://developer.mozilla.org/docs/Web/HTTP/Headers/X-Frame-Options) + /// and [Content-Security-Policy frame-ancestors directive](https://developer.mozilla.org/docs/Web/HTTP/Headers/Content-Security-Policy/frame-ancestors). + /// If set, a frame ancestor is allowed if it is allowed by the additional allowed frame + /// ancestors or original http header from the site. + /// Whether an ancestor is allowed by the additional allowed frame ancestors is done the same way as if the site provided + /// it as the source list of the Content-Security-Policy frame-ancestors directive. + /// For example, if `https://example.com` and `https://www.example.com` are the origins of the top + /// page and intermediate iframes that embed a nested site-embedding iframe, and you fully trust + /// those origins, you should set this property to `https://example.com https://www.example.com`. + /// This property gives the app the ability to use iframe to embed sites that otherwise + /// could not be embedded in an iframe in trusted app pages. + /// This could potentially subject the embedded sites to [Clickjacking](https://en.wikipedia.org/wiki/Clickjacking) + /// attack from the code running in the embedding web page. Therefore, you should only + /// set this property with origins of fully trusted embedding page and any intermediate iframes. + /// Whenever possible, you should use the list of specific origins of the top and intermediate + /// frames instead of wildcard characters for this property. + /// This API is to provide limited support for app scenarios that used to be supported by + /// `` element in other solutions like JavaScript UWP apps and Electron. + /// You should limit the usage of this property to trusted pages, and specific navigation + /// target url, by checking the `Source` of the WebView2, and `Uri` of the event args. + /// + /// This property is ignored for top level document navigation. + /// + /// \snippet ScriptComponent.cpp AdditionalAllowedFrameAncestors_1 + /// + /// \snippet ScriptComponent.cpp AdditionalAllowedFrameAncestors_2 + [propput] HRESULT AdditionalAllowedFrameAncestors([in] LPCWSTR value); + +} + +/// The NavigationKind API that enables developers to get more information about +/// navigation type. +[uuid(DDFFE494-4942-4BD2-AB73-35B8FF40E19F), object, pointer_default(unique)] +interface ICoreWebView2NavigationStartingEventArgs3 : ICoreWebView2NavigationStartingEventArgs2 { + + /// Get the navigation kind of this navigation. + /// + [propget] HRESULT NavigationKind([out, retval] COREWEBVIEW2_NAVIGATION_KIND* navigation_kind); + +} + +/// Receives `NavigationStarting` events. +[uuid(9adbe429-f36d-432b-9ddc-f8881fbd76e3), object, pointer_default(unique)] +interface ICoreWebView2NavigationStartingEventHandler : IUnknown { + + /// Provides the event args for the corresponding event. + + HRESULT Invoke( + [in] ICoreWebView2* sender, + [in] ICoreWebView2NavigationStartingEventArgs* args); +} + +/// Event args for the `ContentLoading` event. +[uuid(0c8a1275-9b6b-4901-87ad-70df25bafa6e), object, pointer_default(unique)] +interface ICoreWebView2ContentLoadingEventArgs : IUnknown { + + /// `TRUE` if the loaded content is an error page. + + [propget] HRESULT IsErrorPage([out, retval] BOOL* isErrorPage); + + /// The ID of the navigation. + + [propget] HRESULT NavigationId([out, retval] UINT64* navigationId); +} + +/// Receives `ContentLoading` events. +[uuid(364471e7-f2be-4910-bdba-d72077d51c4b), object, pointer_default(unique)] +interface ICoreWebView2ContentLoadingEventHandler : IUnknown { + + /// Provides the event args for the corresponding event. + + HRESULT Invoke([in] ICoreWebView2* sender, [in] ICoreWebView2ContentLoadingEventArgs* args); +} + +/// Event args for the `SourceChanged` event. +[uuid(31e0e545-1dba-4266-8914-f63848a1f7d7), object, pointer_default(unique)] +interface ICoreWebView2SourceChangedEventArgs : IUnknown { + + /// `TRUE` if the page being navigated to is a new document. + + [propget] HRESULT IsNewDocument([out, retval] BOOL* isNewDocument); +} + +/// Receives `SourceChanged` events. +[uuid(3c067f9f-5388-4772-8b48-79f7ef1ab37c), object, pointer_default(unique)] +interface ICoreWebView2SourceChangedEventHandler : IUnknown { + + /// Provides the event args for the corresponding event. + + HRESULT Invoke([in] ICoreWebView2* sender, [in] ICoreWebView2SourceChangedEventArgs* args); +} + +/// Receives `HistoryChanged` events. +[uuid(c79a420c-efd9-4058-9295-3e8b4bcab645), object, pointer_default(unique)] +interface ICoreWebView2HistoryChangedEventHandler : IUnknown { + + /// Provides the event args for the corresponding event. No event args exist + /// and the `args` parameter is set to `null`. + + HRESULT Invoke([in] ICoreWebView2* sender, [in] IUnknown* args); +} + +/// Event args for the `ScriptDialogOpening` event. +[uuid(7390bb70-abe0-4843-9529-f143b31b03d6), object, pointer_default(unique)] +interface ICoreWebView2ScriptDialogOpeningEventArgs : IUnknown { + + /// The URI of the page that requested the dialog box. + /// + /// The caller must free the returned string with `CoTaskMemFree`. See + /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings). + + [propget] HRESULT Uri([out, retval] LPWSTR* uri); + + /// The kind of JavaScript dialog box. `alert`, `confirm`, `prompt`, or + /// `beforeunload`. + + [propget] HRESULT Kind([out, retval] COREWEBVIEW2_SCRIPT_DIALOG_KIND* kind); + + /// The message of the dialog box. From JavaScript this is the first + /// parameter passed to `alert`, `confirm`, and `prompt` and is empty for + /// `beforeunload`. + /// + /// The caller must free the returned string with `CoTaskMemFree`. See + /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings). + + [propget] HRESULT Message([out, retval] LPWSTR* message); + + /// The host may run this to respond with **OK** to `confirm`, `prompt`, and + /// `beforeunload` dialogs. Do not run this method to indicate cancel. + /// From JavaScript, this means that the `confirm` and `beforeunload` function + /// returns `TRUE` if `Accept` is run. And for the prompt function it returns + /// the value of `ResultText` if `Accept` is run and otherwise returns + /// `FALSE`. + + HRESULT Accept(); + + /// The second parameter passed to the JavaScript prompt dialog. + /// The result of the prompt JavaScript function uses this value as the + /// default value. + /// + /// The caller must free the returned string with `CoTaskMemFree`. See + /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings). + + [propget] HRESULT DefaultText([out, retval] LPWSTR* defaultText); + + /// The return value from the JavaScript prompt function if `Accept` is run. + /// This value is ignored for dialog kinds other than prompt. If `Accept` + /// is not run, this value is ignored and `FALSE` is returned from prompt. + /// + /// The caller must free the returned string with `CoTaskMemFree`. See + /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings). + + [propget] HRESULT ResultText([out, retval] LPWSTR* resultText); + + /// Sets the `ResultText` property. + + [propput] HRESULT ResultText([in] LPCWSTR resultText); + + /// Returns an `ICoreWebView2Deferral` object. Use this operation to + /// complete the event at a later time. + + HRESULT GetDeferral([out, retval] ICoreWebView2Deferral** deferral); +} + +/// Receives `ScriptDialogOpening` events. +[uuid(ef381bf9-afa8-4e37-91c4-8ac48524bdfb), object, pointer_default(unique)] +interface ICoreWebView2ScriptDialogOpeningEventHandler : IUnknown { + + /// Provides the event args for the corresponding event. + + HRESULT Invoke( + [in] ICoreWebView2* sender, + [in] ICoreWebView2ScriptDialogOpeningEventArgs* args); +} + +/// Event args for the `NavigationCompleted` event. +[uuid(30d68b7d-20d9-4752-a9ca-ec8448fbb5c1), object, pointer_default(unique)] +interface ICoreWebView2NavigationCompletedEventArgs : IUnknown { + + /// `TRUE` when the navigation is successful. `FALSE` for a navigation that + /// ended up in an error page (failures due to no network, DNS lookup + /// failure, HTTP server responds with 4xx), but may also be `FALSE` for + /// additional scenarios such as `window.stop()` run on navigated page. + /// Note that WebView2 will report the navigation as 'unsuccessful' if the load + /// for the navigation did not reach the expected completion for any reason. Such + /// reasons include potentially catastrophic issues such network and certificate + /// issues, but can also be the result of intended actions such as the app canceling a navigation or + /// navigating away before the original navigation completed. Applications should not + /// just rely on this flag, but also consider the reported WebErrorStatus to + /// determine whether the failure is indeed catastrophic in their context. + /// WebErrorStatuses that may indicate a non-catastrophic failure include: + /// - COREWEBVIEW2_WEB_ERROR_STATUS_OPERATION_CANCELED + /// - COREWEBVIEW2_WEB_ERROR_STATUS_VALID_AUTHENTICATION_CREDENTIALS_REQUIRED + /// - COREWEBVIEW2_WEB_ERROR_STATUS_VALID_PROXY_AUTHENTICATION_REQUIRED + + [propget] HRESULT IsSuccess([out, retval] BOOL* isSuccess); + + /// The error code if the navigation failed. + + [propget] HRESULT WebErrorStatus([out, retval] COREWEBVIEW2_WEB_ERROR_STATUS* + webErrorStatus); + + /// The ID of the navigation. + + [propget] HRESULT NavigationId([out, retval] UINT64* navigationId); +} + +/// This is an interface for the StatusCode property of +/// ICoreWebView2NavigationCompletedEventArgs +[uuid(FDF8B738-EE1E-4DB2-A329-8D7D7B74D792), object, pointer_default(unique)] +interface ICoreWebView2NavigationCompletedEventArgs2 : ICoreWebView2NavigationCompletedEventArgs { + /// The HTTP status code of the navigation if it involved an HTTP request. + /// For instance, this will usually be 200 if the request was successful, 404 + /// if a page was not found, etc. See + /// https://developer.mozilla.org/docs/Web/HTTP/Status for a list of + /// common status codes. + /// + /// The `HttpStatusCode` property will be 0 in the following cases: + /// * The navigation did not involve an HTTP request. For instance, if it was + /// a navigation to a file:// URL, or if it was a same-document navigation. + /// * The navigation failed before a response was received. For instance, if + /// the hostname was not found, or if there was a network error. + /// + /// In those cases, you can get more information from the `IsSuccess` and + /// `WebErrorStatus` properties. + /// + /// If the navigation receives a successful HTTP response, but the navigated + /// page calls `window.stop()` before it finishes loading, then + /// `HttpStatusCode` may contain a success code like 200, but `IsSuccess` will + /// be FALSE and `WebErrorStatus` will be + /// `COREWEBVIEW2_WEB_ERROR_STATUS_CONNECTION_ABORTED`. + /// + /// Since WebView2 handles HTTP continuations and redirects automatically, it + /// is unlikely for `HttpStatusCode` to ever be in the 1xx or 3xx ranges. + [propget] HRESULT HttpStatusCode([out, retval] int* http_status_code); +} + +/// Receives `NavigationCompleted` events. +[uuid(d33a35bf-1c49-4f98-93ab-006e0533fe1c), object, pointer_default(unique)] +interface ICoreWebView2NavigationCompletedEventHandler : IUnknown { + + /// Provides the event args for the corresponding event. + + HRESULT Invoke( + [in] ICoreWebView2* sender, + [in] ICoreWebView2NavigationCompletedEventArgs* args); +} + +/// Event args for the `PermissionRequested` event. +[uuid(973ae2ef-ff18-4894-8fb2-3c758f046810), object, pointer_default(unique)] +interface ICoreWebView2PermissionRequestedEventArgs : IUnknown { + + /// The origin of the web content that requests the permission. + /// + /// The caller must free the returned string with `CoTaskMemFree`. See + /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings). + + [propget] HRESULT Uri([out, retval] LPWSTR* uri); + + /// The type of the permission that is requested. + + [propget] HRESULT PermissionKind([out, retval] COREWEBVIEW2_PERMISSION_KIND* permissionKind); + + /// `TRUE` when the permission request was initiated through a user gesture. + /// + /// \> [!NOTE]\n\> Being initiated through a user gesture does not mean that user intended + /// to access the associated resource. + + [propget] HRESULT IsUserInitiated([out, retval] BOOL* isUserInitiated); + + /// The status of a permission request, (for example is the request is granted). + /// The default value is `COREWEBVIEW2_PERMISSION_STATE_DEFAULT`. + + [propget] HRESULT State([out, retval] COREWEBVIEW2_PERMISSION_STATE* state); + + /// Sets the `State` property. + + [propput] HRESULT State([in] COREWEBVIEW2_PERMISSION_STATE state); + + /// Gets an `ICoreWebView2Deferral` object. Use the deferral object to make + /// the permission decision at a later time. The deferral only applies to the + /// current request, and does not prevent the `PermissionRequested` event from + /// getting raised for new requests. However, for some permission kinds the + /// WebView will avoid creating a new request if there is a pending request of + /// the same kind. + + HRESULT GetDeferral([out, retval] ICoreWebView2Deferral** deferral); +} + +/// Receives `PermissionRequested` events. +[uuid(15e1c6a3-c72a-4df3-91d7-d097fbec6bfd), object, pointer_default(unique)] +interface ICoreWebView2PermissionRequestedEventHandler : IUnknown { + + /// Provides the event args for the corresponding event. + + HRESULT Invoke( + [in] ICoreWebView2* sender, + [in] ICoreWebView2PermissionRequestedEventArgs* args); +} + +/// Receives the result of the `AddScriptToExecuteOnDocumentCreated` method. +[uuid(b99369f3-9b11-47b5-bc6f-8e7895fcea17), object, pointer_default(unique)] +interface ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandler : IUnknown { + + /// Provide the completion status and result of the corresponding + /// asynchronous method. + + HRESULT Invoke([in] HRESULT errorCode, [in] LPCWSTR id); +} + +/// Receives the result of the `ExecuteScript` method. +[uuid(49511172-cc67-4bca-9923-137112f4c4cc), object, pointer_default(unique)] +interface ICoreWebView2ExecuteScriptCompletedHandler : IUnknown { + + /// Provide the implementer with the completion status and result of the + /// corresponding asynchronous method. + + HRESULT Invoke([in] HRESULT errorCode, [in] LPCWSTR resultObjectAsJson); +} + +/// Event args for the `WebResourceRequested` event. +[uuid(453e667f-12c7-49d4-be6d-ddbe7956f57a), object, pointer_default(unique)] +interface ICoreWebView2WebResourceRequestedEventArgs : IUnknown { + + /// The Web resource request. The request object may be missing some headers + /// that are added by network stack at a later time. + + [propget] HRESULT Request([out, retval] ICoreWebView2WebResourceRequest** request); + + /// A placeholder for the web resource response object. If this object is + /// set, the web resource request is completed with the specified response. + + [propget] HRESULT Response([out, retval] ICoreWebView2WebResourceResponse** response); + + /// Sets the `Response` property. Create an empty web resource response + /// object with `CreateWebResourceResponse` and then modify it to construct + /// the response. + + [propput] HRESULT Response([in] ICoreWebView2WebResourceResponse* response); + + /// Obtain an `ICoreWebView2Deferral` object and put the event into a + /// deferred state. Use the `ICoreWebView2Deferral` object to complete the + /// request at a later time. + + HRESULT GetDeferral([out, retval] ICoreWebView2Deferral** deferral); + + /// The web resource request context. + + [propget] HRESULT ResourceContext([out, retval] COREWEBVIEW2_WEB_RESOURCE_CONTEXT* context); +} + +/// Runs when a URL request (through network, file, and so on) is made in +/// the webview for a Web resource matching resource context filter and URL +/// specified in `AddWebResourceRequestedFilter`. The host views and modifies +/// the request or provide a response in a similar pattern to HTTP, in which +/// case the request immediately completed. This may not contain any request +/// headers that are added by the network stack, such as an `Authorization` +/// header. +[uuid(ab00b74c-15f1-4646-80e8-e76341d25d71), object, pointer_default(unique)] +interface ICoreWebView2WebResourceRequestedEventHandler : IUnknown { + + /// Provides the event args for the corresponding event. + + HRESULT Invoke( + [in] ICoreWebView2* sender, + [in] ICoreWebView2WebResourceRequestedEventArgs* args); +} + +/// Receives the result of the `CapturePreview` method. The result is written +/// to the stream provided in the `CapturePreview` method. + +[uuid(697e05e9-3d8f-45fa-96f4-8ffe1ededaf5), object, pointer_default(unique)] +interface ICoreWebView2CapturePreviewCompletedHandler : IUnknown { + + /// Provides the completion status of the corresponding asynchronous method. + + HRESULT Invoke([in] HRESULT errorCode); +} + +/// Receives `GotFocus` and `LostFocus` events. + +[uuid(05ea24bd-6452-4926-9014-4b82b498135d), object, pointer_default(unique)] +interface ICoreWebView2FocusChangedEventHandler : IUnknown { + + /// Provides the event args for the corresponding event. No event args exist + /// and the `args` parameter is set to `null`. + + HRESULT Invoke( + [in] ICoreWebView2Controller* sender, + [in] IUnknown* args); +} + +/// Event args for the `MoveFocusRequested` event. + +[uuid(2d6aa13b-3839-4a15-92fc-d88b3c0d9c9d), object, pointer_default(unique)] +interface ICoreWebView2MoveFocusRequestedEventArgs : IUnknown { + + /// The reason for WebView to run the `MoveFocusRequested` event. + + [propget] HRESULT Reason([out, retval] COREWEBVIEW2_MOVE_FOCUS_REASON* reason); + + /// Indicates whether the event has been handled by the app. If the app has + /// moved the focus to another desired location, it should set the `Handled` + /// property to `TRUE`. When the `Handled` property is `FALSE` after the + /// event handler returns, default action is taken. The default action is to + /// try to find the next tab stop child window in the app and try to move + /// focus to that window. If no other window exists to move focus, focus is + /// cycled within the web content of the WebView. + + [propget] HRESULT Handled([out, retval] BOOL* value); + + /// Sets the `Handled` property. + + [propput] HRESULT Handled([in] BOOL value); +} + +/// Receives `MoveFocusRequested` events. + +[uuid(69035451-6dc7-4cb8-9bce-b2bd70ad289f), object, pointer_default(unique)] +interface ICoreWebView2MoveFocusRequestedEventHandler : IUnknown { + + /// Provides the event args for the corresponding event. + + HRESULT Invoke( + [in] ICoreWebView2Controller* sender, + [in] ICoreWebView2MoveFocusRequestedEventArgs* args); +} + +/// Event args for the `WebMessageReceived` event. +[uuid(0f99a40c-e962-4207-9e92-e3d542eff849), object, pointer_default(unique)] +interface ICoreWebView2WebMessageReceivedEventArgs : IUnknown { + + /// The URI of the document that sent this web message. + /// + /// The caller must free the returned string with `CoTaskMemFree`. See + /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings). + + [propget] HRESULT Source([out, retval] LPWSTR* source); + + /// The message posted from the WebView content to the host converted to a + /// JSON string. Run this operation to communicate using JavaScript objects. + /// + /// For example, the following `postMessage` runs result in the following + /// `WebMessageAsJson` values. + /// + /// ```json + /// postMessage({'a': 'b'}) L"{\"a\": \"b\"}" + /// postMessage(1.2) L"1.2" + /// postMessage('example') L"\"example\"" + /// ``` + /// + /// The caller must free the returned string with `CoTaskMemFree`. See + /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings). + + [propget] HRESULT WebMessageAsJson([out, retval] LPWSTR* webMessageAsJson); + + /// If the message posted from the WebView content to the host is a string + /// type, this method returns the value of that string. If the message + /// posted is some other kind of JavaScript type this method fails with the + /// following error. + /// + /// ```text + /// E_INVALIDARG + /// ``` + /// + /// Run this operation to communicate using simple strings. + /// + /// For example, the following `postMessage` runs result in the following + /// `WebMessageAsString` values. + /// + /// ```json + /// postMessage({'a': 'b'}) E_INVALIDARG + /// postMessage(1.2) E_INVALIDARG + /// postMessage('example') L"example" + /// ``` + /// + /// The caller must free the returned string with `CoTaskMemFree`. See + /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings). + + HRESULT TryGetWebMessageAsString([out, retval] LPWSTR* webMessageAsString); +} + +/// Receives `WebMessageReceived` events. +[uuid(57213f19-00e6-49fa-8e07-898ea01ecbd2), object, pointer_default(unique)] +interface ICoreWebView2WebMessageReceivedEventHandler : IUnknown { + + /// Provides the event args for the corresponding event. + + HRESULT Invoke( + [in] ICoreWebView2* sender, + [in] ICoreWebView2WebMessageReceivedEventArgs* args); +} + +/// Event args for the `DevToolsProtocolEventReceived` event. +[uuid(653c2959-bb3a-4377-8632-b58ada4e66c4), object, pointer_default(unique)] +interface ICoreWebView2DevToolsProtocolEventReceivedEventArgs : IUnknown { + + /// The parameter object of the corresponding `DevToolsProtocol` event + /// represented as a JSON string. + /// + /// The caller must free the returned string with `CoTaskMemFree`. See + /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings). + + [propget] HRESULT ParameterObjectAsJson([out, retval] LPWSTR* + parameterObjectAsJson); +} + +/// This is a continuation of the `ICoreWebView2DevToolsProtocolEventReceivedEventArgs` +/// interface that provides the session ID of the target where the event originates from. +[uuid(2DC4959D-1494-4393-95BA-BEA4CB9EBD1B), object, pointer_default(unique)] +interface ICoreWebView2DevToolsProtocolEventReceivedEventArgs2 : ICoreWebView2DevToolsProtocolEventReceivedEventArgs { + + /// The sessionId of the target where the event originates from. + /// Empty string is returned as sessionId if the event comes from the default + /// session for the top page. + /// + /// The caller must free the returned string with `CoTaskMemFree`. See + /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings). + /// + /// \snippet ScriptComponent.cpp DevToolsProtocolEventReceivedSessionId + [propget] HRESULT SessionId([out, retval] LPWSTR* sessionId); +} + +/// Receives `DevToolsProtocolEventReceived` events from the WebView. +[uuid(e2fda4be-5456-406c-a261-3d452138362c), object, pointer_default(unique)] +interface ICoreWebView2DevToolsProtocolEventReceivedEventHandler : IUnknown { + + /// Provides the event args for the corresponding event. + + HRESULT Invoke( + [in] ICoreWebView2* sender, + [in] ICoreWebView2DevToolsProtocolEventReceivedEventArgs* args); +} + +/// Receives `CallDevToolsProtocolMethod` completion results. +[uuid(5c4889f0-5ef6-4c5a-952c-d8f1b92d0574), object, pointer_default(unique)] +interface ICoreWebView2CallDevToolsProtocolMethodCompletedHandler : IUnknown { + + /// Provides the completion status and result of the corresponding + /// asynchronous method. + + HRESULT Invoke([in] HRESULT errorCode, [in] LPCWSTR returnObjectAsJson); +} + +/// Receives the `CoreWebView2Controller` created using `CreateCoreWebView2Controller`. + +[uuid(6c4819f3-c9b7-4260-8127-c9f5bde7f68c), object, pointer_default(unique)] +interface ICoreWebView2CreateCoreWebView2ControllerCompletedHandler : IUnknown { + + /// Provides the completion status and result of the corresponding + /// asynchronous method. + + HRESULT Invoke(HRESULT errorCode, ICoreWebView2Controller* createdController); +} + +/// The caller implements this interface to receive the CoreWebView2Controller +/// created via CreateCoreWebView2CompositionController. +[uuid(02fab84b-1428-4fb7-ad45-1b2e64736184), object, pointer_default(unique)] +interface ICoreWebView2CreateCoreWebView2CompositionControllerCompletedHandler : IUnknown { + /// Called to provide the implementer with the completion status and result + /// of the corresponding asynchronous method call. + HRESULT Invoke( + HRESULT errorCode, + ICoreWebView2CompositionController* webView); +} + +/// Event args for the `NewWindowRequested` event. The event is run when +/// content inside webview requested to a open a new window (through +/// `window.open()` and so on). +[uuid(34acb11c-fc37-4418-9132-f9c21d1eafb9), object, pointer_default(unique)] +interface ICoreWebView2NewWindowRequestedEventArgs : IUnknown { + + /// The target uri of the new window requested. + /// + /// The caller must free the returned string with `CoTaskMemFree`. See + /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings). + + [propget] HRESULT Uri([out, retval] LPWSTR* uri); + + /// Sets a CoreWebView2 as a result of the NewWindowRequested event. Provides + /// a WebView as the target for a `window.open()` from inside the + /// requesting WebView. If this is set, the top-level window of this WebView + /// is returned as the opened + /// [WindowProxy](https://developer.mozilla.org/en-US/docs/glossary/windowproxy) + /// to the opener script. If this is not set, then `Handled` is checked to + /// determine behavior for NewWindowRequested event. + /// CoreWebView2 provided in the `NewWindow` property must be on the same + /// Environment as the opener WebView and should not have been navigated + /// previously. Don't use methods that cause navigation or interact with the + /// DOM on this CoreWebView2 until the target content has loaded. Setting event + /// handlers, changing Settings properties, or other methods are fine to call. + /// Changes to settings should be made before `put_NewWindow` is called to + /// ensure that those settings take effect for the newly setup WebView. Once the + /// NewWindow is set the underlying web contents of this CoreWebView2 will be + /// replaced and navigated as appropriate for the new window. After setting + /// new window it cannot be changed and error will be return otherwise. + /// + /// The methods which should affect the new web contents like + /// AddScriptToExecuteOnDocumentCreated has to be called and completed before setting NewWindow. + /// Other methods which should affect the new web contents like add_WebResourceRequested have to be called after setting NewWindow. + /// It is best not to use RemoveScriptToExecuteOnDocumentCreated before setting NewWindow, otherwise it may not work for later added scripts. + /// + /// The new WebView must have the same profile as the opener WebView. + + [propput] HRESULT NewWindow([in] ICoreWebView2* newWindow); + + /// Gets the new window. + + [propget] HRESULT NewWindow([out, retval] ICoreWebView2** newWindow); + + /// Sets whether the `NewWindowRequested` event is handled by host. If this + /// is `FALSE` and no `NewWindow` is set, the WebView opens a popup window + /// and it returns as opened `WindowProxy`. If set to `TRUE` and no + /// `NewWindow` is set for `window.open`, the opened `WindowProxy` is for an + /// testing window object and no window loads. + /// The default value is `FALSE`. + + [propput] HRESULT Handled([in] BOOL handled); + + /// Gets whether the `NewWindowRequested` event is handled by host. + + [propget] HRESULT Handled([out, retval] BOOL* handled); + + /// `TRUE` when the new window request was initiated through a user gesture. + /// Examples of user initiated requests are: + /// + /// - Selecting an anchor tag with target + /// - Programmatic window open from a script that directly run as a result of + /// user interaction such as via onclick handlers. + /// + /// Non-user initiated requests are programmatic window opens from a script + /// that are not directly triggered by user interaction, such as those that + /// run while loading a new page or via timers. + /// The Microsoft Edge popup blocker is disabled for WebView so the app is + /// able to use this flag to block non-user initiated popups. + + [propget] HRESULT IsUserInitiated([out, retval] BOOL* isUserInitiated); + + /// Obtain an `ICoreWebView2Deferral` object and put the event into a + /// deferred state. Use the `ICoreWebView2Deferral` object to complete the + /// window open request at a later time. While this event is deferred the + /// opener window returns a `WindowProxy` to an un-navigated window, which + /// navigates when the deferral is complete. + + HRESULT GetDeferral([out, retval] ICoreWebView2Deferral** deferral); + + /// Window features specified by the `window.open`. The features should be + /// considered for positioning and sizing of new webview windows. + + [propget] HRESULT WindowFeatures([out, retval] ICoreWebView2WindowFeatures** value); +} + +/// This is a continuation of the `ICoreWebView2NewWindowRequestedEventArgs` interface. +[uuid(bbc7baed-74c6-4c92-b63a-7f5aeae03de3), object, pointer_default(unique)] +interface ICoreWebView2NewWindowRequestedEventArgs2 : ICoreWebView2NewWindowRequestedEventArgs { + /// Gets the name of the new window. This window can be created via `window.open(url, windowName)`, + /// where the windowName parameter corresponds to `Name` property. + /// If no windowName is passed to `window.open`, then the `Name` property + /// will be set to an empty string. Additionally, if window is opened through other means, + /// such as `...` or ``, + /// then the `Name` property will be set accordingly. In the case of target=_blank, + /// the `Name` property will be an empty string. + /// Opening a window via ctrl+clicking a link would result in the `Name` property + /// being set to an empty string. + /// + /// The caller must free the returned string with `CoTaskMemFree`. See + /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings). + [propget] HRESULT Name([out, retval] LPWSTR* value); +} + +/// The window features for a WebView popup window. The fields match the +/// `windowFeatures` passed to `window.open` as specified in +/// [Window features](https://developer.mozilla.org/docs/Web/API/Window/open#Window_features) +/// on MDN. +/// +/// There is no requirement for you to respect the values. If your app does +/// not have corresponding UI features (for example, no toolbar) or if all +/// instance of WebView are opened in tabs and do not have distinct size or +/// positions, then your app does not respect the values. You may want to +/// respect values, but perhaps only some apply to the UI of you app. +/// Accordingly, you may respect all, some, or none of the properties as +/// appropriate for your app. For all numeric properties, if the value that is +/// passed to `window.open` is outside the range of an unsigned 32bit int, the +/// resulting value is the absolute value of the maximum for unsigned 32bit +/// integer. If you are not able to parse the value an integer, it is +/// considered `0`. If the value is a floating point value, it is rounded down +/// to an integer. +/// +/// In runtime versions 98 or later, the values of `ShouldDisplayMenuBar`, +/// `ShouldDisplayStatus`, `ShouldDisplayToolbar`, and `ShouldDisplayScrollBars` +/// will not directly depend on the equivalent fields in the `windowFeatures` +/// string. Instead, they will all be false if the window is expected to be a +/// popup, and true if it is not. +[uuid(5eaf559f-b46e-4397-8860-e422f287ff1e), object, pointer_default(unique)] +interface ICoreWebView2WindowFeatures : IUnknown { + + /// Specifies left and top values. + + [propget] HRESULT HasPosition([out, retval] BOOL* value); + + /// Specifies height and width values. + + [propget] HRESULT HasSize([out, retval] BOOL* value); + + /// Specifies the left position of the window. If `HasPosition` is set to + /// `FALSE`, this field is ignored. + + [propget] HRESULT Left([out, retval] UINT32* value); + + /// Specifies the top position of the window. If `HasPosition` is set to + /// `FALSE`, this field is ignored. + + [propget] HRESULT Top([out, retval] UINT32* value); + + /// Specifies the height of the window. Minimum value is `100`. If + /// `HasSize` is set to `FALSE`, this field is ignored. + + [propget] HRESULT Height([out, retval] UINT32* value); + + /// Specifies the width of the window. Minimum value is `100`. If `HasSize` + /// is set to `FALSE`, this field is ignored. + + [propget] HRESULT Width([out, retval] UINT32* value); + + /// Indicates that the menu bar is displayed. + + [propget] HRESULT ShouldDisplayMenuBar([out, retval] BOOL* value); + + /// Indicates that the status bar is displayed. + + [propget] HRESULT ShouldDisplayStatus([out, retval] BOOL* value); + + /// Indicates that the browser toolbar is displayed. + + [propget] HRESULT ShouldDisplayToolbar([out, retval] BOOL* value); + + /// Indicates that the scroll bars are displayed. + + [propget] HRESULT ShouldDisplayScrollBars([out, retval] BOOL* value); +} + +/// Receives `NewWindowRequested` events. +[uuid(d4c185fe-c81c-4989-97af-2d3fa7ab5651), object, pointer_default(unique)] +interface ICoreWebView2NewWindowRequestedEventHandler : IUnknown { + + /// Provides the event args for the corresponding event. + + HRESULT Invoke( + [in] ICoreWebView2* sender, + [in] ICoreWebView2NewWindowRequestedEventArgs* args); +} + +/// Receives `DocumentTitleChanged` events. Use the `DocumentTitle` property +/// to get the modified title. + +[uuid(f5f2b923-953e-4042-9f95-f3a118e1afd4), object, pointer_default(unique)] +interface ICoreWebView2DocumentTitleChangedEventHandler : IUnknown { + + /// Provides the event args for the corresponding event. No event args exist + /// and the `args` parameter is set to `null`. + + HRESULT Invoke([in] ICoreWebView2* sender, [in] IUnknown* args); +} + +/// Event args for the `AcceleratorKeyPressed` event. + +[uuid(9f760f8a-fb79-42be-9990-7b56900fa9c7), object, pointer_default(unique)] +interface ICoreWebView2AcceleratorKeyPressedEventArgs : IUnknown { + + /// The key event type that caused the event to run. + + [propget] HRESULT KeyEventKind([out, retval] COREWEBVIEW2_KEY_EVENT_KIND* keyEventKind); + + /// The Win32 virtual key code of the key that was pressed or released. It + /// is one of the Win32 virtual key constants such as `VK_RETURN` or an + /// (uppercase) ASCII value such as `A`. Verify whether Ctrl or Alt + /// are pressed by running `GetKeyState(VK_CONTROL)` or + /// `GetKeyState(VK_MENU)`. + + [propget] HRESULT VirtualKey([out, retval] UINT* virtualKey); + + /// The `LPARAM` value that accompanied the window message. For more + /// information, navigate to [WM_KEYDOWN](/windows/win32/inputdev/wm-keydown) + /// and [WM_KEYUP](/windows/win32/inputdev/wm-keyup). + + [propget] HRESULT KeyEventLParam([out, retval] INT* lParam); + + /// A structure representing the information passed in the `LPARAM` of the + /// window message. + + [propget] HRESULT PhysicalKeyStatus( + [out, retval] COREWEBVIEW2_PHYSICAL_KEY_STATUS* physicalKeyStatus); + + /// During `AcceleratorKeyPressedEvent` handler invocation the WebView is + /// blocked waiting for the decision of if the accelerator is handled by the + /// host (or not). If the `Handled` property is set to `TRUE` then this + /// prevents the WebView from performing the default action for this + /// accelerator key. Otherwise the WebView performs the default action for + /// the accelerator key. + + [propget] HRESULT Handled([out, retval] BOOL* handled); + + /// Sets the `Handled` property. + + [propput] HRESULT Handled([in] BOOL handled); +} + +/// Receives `AcceleratorKeyPressed` events. + +[uuid(b29c7e28-fa79-41a8-8e44-65811c76dcb2), object, pointer_default(unique)] +interface ICoreWebView2AcceleratorKeyPressedEventHandler : IUnknown { + + /// Provides the event args for the corresponding event. + + HRESULT Invoke( + [in] ICoreWebView2Controller* sender, + [in] ICoreWebView2AcceleratorKeyPressedEventArgs* args); +} + +/// Receives `NewBrowserVersionAvailable` events. +[uuid(f9a2976e-d34e-44fc-adee-81b6b57ca914), object, pointer_default(unique)] +interface ICoreWebView2NewBrowserVersionAvailableEventHandler : IUnknown { + + /// Provides the event args for the corresponding event. + + HRESULT Invoke([in] ICoreWebView2Environment* sender, + [in] IUnknown* args); +} + +/// Receives `BrowserProcessExited` events. +[uuid(fa504257-a216-4911-a860-fe8825712861), object, pointer_default(unique)] +interface ICoreWebView2BrowserProcessExitedEventHandler : IUnknown { + /// Provides the event args for the corresponding event. + HRESULT Invoke( + [in] ICoreWebView2Environment* sender, + [in] ICoreWebView2BrowserProcessExitedEventArgs* args); +} + +/// Receives `ContainsFullScreenElementChanged` events. + +[uuid(e45d98b1-afef-45be-8baf-6c7728867f73), object, pointer_default(unique)] +interface ICoreWebView2ContainsFullScreenElementChangedEventHandler : IUnknown { + + /// Provides the event args for the corresponding event. No event args exist + /// and the `args` parameter is set to `null`. + + HRESULT Invoke([in] ICoreWebView2* sender, [in] IUnknown* args); +} + +/// Receives `WindowCloseRequested` events. +[uuid(5c19e9e0-092f-486b-affa-ca8231913039), object, pointer_default(unique)] +interface ICoreWebView2WindowCloseRequestedEventHandler : IUnknown { + + /// Provides the event args for the corresponding event. No event args exist + /// and the `args` parameter is set to `null`. + + HRESULT Invoke([in] ICoreWebView2* sender, [in] IUnknown* args); +} + +/// Receives `WebResourceResponseReceived` events. +[uuid(7DE9898A-24F5-40C3-A2DE-D4F458E69828), object, pointer_default(unique)] +interface ICoreWebView2WebResourceResponseReceivedEventHandler : IUnknown { + /// Provides the event args for the corresponding event. + HRESULT Invoke( + [in] ICoreWebView2* sender, + [in] ICoreWebView2WebResourceResponseReceivedEventArgs* args); +} + +/// Event args for the `BrowserProcessExited` event. +[uuid(1f00663f-af8c-4782-9cdd-dd01c52e34cb), object, pointer_default(unique)] +interface ICoreWebView2BrowserProcessExitedEventArgs : IUnknown { + /// The kind of browser process exit that has occurred. + [propget] HRESULT BrowserProcessExitKind( + [out, retval] COREWEBVIEW2_BROWSER_PROCESS_EXIT_KIND* browserProcessExitKind); + + /// The process ID of the browser process that has exited. + [propget] HRESULT BrowserProcessId([out, retval] UINT32* value); +} + +/// Event args for the WebResourceResponseReceived event. +[uuid(D1DB483D-6796-4B8B-80FC-13712BB716F4), object, pointer_default(unique)] +interface ICoreWebView2WebResourceResponseReceivedEventArgs : IUnknown { + /// The request object for the web resource, as committed. This includes + /// headers added by the network stack that were not be included during the + /// associated WebResourceRequested event, such as Authentication headers. + /// Modifications to this object have no effect on how the request is + /// processed as it has already been sent. + [propget] HRESULT Request([out, retval] ICoreWebView2WebResourceRequest** request); + /// View of the response object received for the web resource. + [propget] HRESULT Response([out, retval] ICoreWebView2WebResourceResponseView** response); +} + +/// View of the HTTP representation for a web resource response. The properties +/// of this object are not mutable. This response view is used with the +/// WebResourceResponseReceived event. +[uuid(79701053-7759-4162-8F7D-F1B3F084928D), object, pointer_default(unique)] +interface ICoreWebView2WebResourceResponseView : IUnknown { + /// The HTTP response headers as received. + [propget] HRESULT Headers( + [out, retval] ICoreWebView2HttpResponseHeaders** headers); + /// The HTTP response status code. + [propget] HRESULT StatusCode([out, retval] int* statusCode); + /// The HTTP response reason phrase. + /// + /// The caller must free the returned string with `CoTaskMemFree`. See + /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings). + [propget] HRESULT ReasonPhrase([out, retval] LPWSTR* reasonPhrase); + + /// Get the response content asynchronously. The handler will receive the + /// response content stream. + /// + /// This method returns null if content size is more than 123MB or for navigations that become downloads + /// or if response is downloadable content type (e.g., application/octet-stream). + /// See `add_DownloadStarting` event to handle the response. + /// + /// If this method is being called again before a first call has completed, + /// the handler will be invoked at the same time the handlers from prior calls + /// are invoked. + /// If this method is being called after a first call has completed, the + /// handler will be invoked immediately. + /// \snippet ScenarioWebViewEventMonitor.cpp GetContent + HRESULT GetContent( + [in] ICoreWebView2WebResourceResponseViewGetContentCompletedHandler* handler); +} + +/// Receives the result of the +/// `ICoreWebView2WebResourceResponseView::GetContent` method. +[uuid(875738E1-9FA2-40E3-8B74-2E8972DD6FE7), object, pointer_default(unique)] +interface ICoreWebView2WebResourceResponseViewGetContentCompletedHandler : IUnknown { + /// Provides the completion status and result of the corresponding + /// asynchronous method call. A failure `errorCode` will be passed if the + /// content failed to load. `E_ABORT` means the response loading was blocked + /// (e.g., by CORS policy); `ERROR_CANCELLED` means the response loading was + /// cancelled. `ERROR_NO_DATA` means the response has no content data, + /// `content` is `null` in this case. Note content (if any) is ignored for + /// redirects, 204 No Content, 205 Reset Content, and HEAD-request responses. + HRESULT Invoke([in] HRESULT errorCode, [in] IStream* content); +} + +/// Event args for the DOMContentLoaded event. +[uuid(16B1E21A-C503-44F2-84C9-70ABA5031283), object, pointer_default(unique)] +interface ICoreWebView2DOMContentLoadedEventArgs : IUnknown { + /// The ID of the navigation which corresponds to other navigation ID properties on other navigation events. + [propget] HRESULT NavigationId([out, retval] UINT64* navigationId); +} + +/// Receives `DOMContentLoaded` events. +[uuid(4BAC7E9C-199E-49ED-87ED-249303ACF019), object, pointer_default(unique)] +interface ICoreWebView2DOMContentLoadedEventHandler : IUnknown { + /// Provides the event args for the corresponding event. + HRESULT Invoke( + [in] ICoreWebView2* sender, + [in] ICoreWebView2DOMContentLoadedEventArgs* args); +} + +/// Provides a set of properties that are used to manage an +/// ICoreWebView2Cookie. +/// +/// \snippet ScenarioCookieManagement.cpp CookieObject +[uuid(AD26D6BE-1486-43E6-BF87-A2034006CA21), object, pointer_default(unique)] +interface ICoreWebView2Cookie : IUnknown { + /// Cookie name. + /// + /// The caller must free the returned string with `CoTaskMemFree`. See + /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings). + [propget] HRESULT Name([out, retval] LPWSTR* name); + + /// Cookie value. + /// + /// The caller must free the returned string with `CoTaskMemFree`. See + /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings). + [propget] HRESULT Value([out, retval] LPWSTR* value); + /// Set the cookie value property. + [propput] HRESULT Value([in] LPCWSTR value); + + /// The domain for which the cookie is valid. + /// The default is the host that this cookie has been received from. + /// Note that, for instance, ".bing.com", "bing.com", and "www.bing.com" are + /// considered different domains. + /// + /// The caller must free the returned string with `CoTaskMemFree`. See + /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings). + [propget] HRESULT Domain([out, retval] LPWSTR* domain); + + /// The path for which the cookie is valid. The default is "/", which means + /// this cookie will be sent to all pages on the Domain. + /// + /// The caller must free the returned string with `CoTaskMemFree`. See + /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings). + [propget] HRESULT Path([out, retval] LPWSTR* path); + + /// The expiration date and time for the cookie as the number of seconds since the UNIX epoch. + /// The default is -1.0, which means cookies are session cookies by default. + [propget] HRESULT Expires([out, retval] double* expires); + /// Set the Expires property. Cookies are session cookies and will not be + /// persistent if Expires is set to -1.0. NaN, infinity, and any negative + /// value set other than -1.0 is disallowed. + [propput] HRESULT Expires([in] double expires); + + /// Whether this cookie is http-only. + /// True if a page script or other active content cannot access this + /// cookie. The default is false. + [propget] HRESULT IsHttpOnly([out, retval] BOOL* isHttpOnly); + /// Set the IsHttpOnly property. + [propput] HRESULT IsHttpOnly([in] BOOL isHttpOnly); + + /// SameSite status of the cookie which represents the enforcement mode of the cookie. + /// The default is COREWEBVIEW2_COOKIE_SAME_SITE_KIND_LAX. + [propget] HRESULT SameSite([out, retval] COREWEBVIEW2_COOKIE_SAME_SITE_KIND* sameSite); + /// Set the SameSite property. + [propput] HRESULT SameSite([in] COREWEBVIEW2_COOKIE_SAME_SITE_KIND sameSite); + + /// The security level of this cookie. True if the client is only to return + /// the cookie in subsequent requests if those requests use HTTPS. + /// The default is false. + /// Note that cookie that requests COREWEBVIEW2_COOKIE_SAME_SITE_KIND_NONE but + /// is not marked Secure will be rejected. + [propget] HRESULT IsSecure([out, retval] BOOL* isSecure); + /// Set the IsSecure property. + [propput] HRESULT IsSecure([in] BOOL isSecure); + + /// Whether this is a session cookie. The default is false. + [propget] HRESULT IsSession([out, retval] BOOL* isSession); +} + +/// Creates, adds or updates, gets, or or view the cookies. The changes would +/// apply to the context of the user profile. That is, other WebViews under the +/// same user profile could be affected. +[uuid(177CD9E7-B6F5-451A-94A0-5D7A3A4C4141), object, pointer_default(unique)] +interface ICoreWebView2CookieManager : IUnknown { + /// Create a cookie object with a specified name, value, domain, and path. + /// One can set other optional properties after cookie creation. + /// This only creates a cookie object and it is not added to the cookie + /// manager until you call AddOrUpdateCookie. + /// Leading or trailing whitespace(s), empty string, and special characters + /// are not allowed for name. + /// See ICoreWebView2Cookie for more details. + HRESULT CreateCookie( + [in] LPCWSTR name, + [in] LPCWSTR value, + [in] LPCWSTR domain, + [in] LPCWSTR path, + [out, retval] ICoreWebView2Cookie** cookie); + + /// Creates a cookie whose params matches those of the specified cookie. + HRESULT CopyCookie( + [in] ICoreWebView2Cookie* cookieParam, + [out, retval] ICoreWebView2Cookie** cookie); + + /// Gets a list of cookies matching the specific URI. + /// If uri is empty string or null, all cookies under the same profile are + /// returned. + /// You can modify the cookie objects by calling + /// ICoreWebView2CookieManager::AddOrUpdateCookie, and the changes + /// will be applied to the webview. + /// \snippet ScenarioCookieManagement.cpp GetCookies + HRESULT GetCookies( + [in] LPCWSTR uri, + [in] ICoreWebView2GetCookiesCompletedHandler* handler); + + /// Adds or updates a cookie with the given cookie data; may overwrite + /// cookies with matching name, domain, and path if they exist. + /// This method will fail if the domain of the given cookie is not specified. + /// \snippet ScenarioCookieManagement.cpp AddOrUpdateCookie + HRESULT AddOrUpdateCookie([in] ICoreWebView2Cookie* cookie); + + /// Deletes a cookie whose name and domain/path pair + /// match those of the specified cookie. + HRESULT DeleteCookie([in] ICoreWebView2Cookie* cookie); + + /// Deletes cookies with matching name and uri. + /// Cookie name is required. + /// All cookies with the given name where domain + /// and path match provided URI are deleted. + HRESULT DeleteCookies([in] LPCWSTR name, [in] LPCWSTR uri); + + /// Deletes cookies with matching name and domain/path pair. + /// Cookie name is required. + /// If domain is specified, deletes only cookies with the exact domain. + /// If path is specified, deletes only cookies with the exact path. + HRESULT DeleteCookiesWithDomainAndPath([in] LPCWSTR name, [in] LPCWSTR domain, [in] LPCWSTR path); + + /// Deletes all cookies under the same profile. + /// This could affect other WebViews under the same user profile. + HRESULT DeleteAllCookies(); +} + +/// A list of cookie objects. See `ICoreWebView2Cookie`. +/// \snippet ScenarioCookieManagement.cpp GetCookies +[uuid(F7F6F714-5D2A-43C6-9503-346ECE02D186), object, pointer_default(unique)] +interface ICoreWebView2CookieList : IUnknown { + /// The number of cookies contained in the ICoreWebView2CookieList. + [propget] HRESULT Count([out, retval] UINT* count); + + /// Gets the cookie object at the given index. + HRESULT GetValueAtIndex([in] UINT index, [out, retval] ICoreWebView2Cookie** cookie); +} + +/// Receives the result of the `GetCookies` method. The result is written to +/// the cookie list provided in the `GetCookies` method call. +[uuid(5A4F5069-5C15-47C3-8646-F4DE1C116670), object, pointer_default(unique)] +interface ICoreWebView2GetCookiesCompletedHandler : IUnknown { + /// Provides the completion status of the corresponding asynchronous method + /// call. + HRESULT Invoke(HRESULT result, ICoreWebView2CookieList* cookieList); +} + +/// Provides access to the client certificate metadata. +[uuid(e7188076-bcc3-11eb-8529-0242ac130003), object, pointer_default(unique)] +interface ICoreWebView2ClientCertificate : IUnknown { + /// Subject of the certificate. + /// + /// The caller must free the returned string with `CoTaskMemFree`. See + /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings). + [propget] HRESULT Subject([out, retval] LPWSTR* value); + /// Name of the certificate authority that issued the certificate. + /// + /// The caller must free the returned string with `CoTaskMemFree`. See + /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings). + [propget] HRESULT Issuer([out, retval] LPWSTR* value); + /// The valid start date and time for the certificate as the number of seconds since + /// the UNIX epoch. + [propget] HRESULT ValidFrom([out, retval] double* value); + /// The valid expiration date and time for the certificate as the number of seconds since + /// the UNIX epoch. + [propget] HRESULT ValidTo([out, retval] double* value); + /// Base64 encoding of DER encoded serial number of the certificate. + /// Read more about DER at [RFC 7468 DER] + /// (https://tools.ietf.org/html/rfc7468#appendix-B). + /// + /// The caller must free the returned string with `CoTaskMemFree`. See + /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings). + [propget] HRESULT DerEncodedSerialNumber([out, retval] LPWSTR* value); + /// Display name for a certificate. + /// + /// The caller must free the returned string with `CoTaskMemFree`. See + /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings). + [propget] HRESULT DisplayName([out, retval] LPWSTR* value); + /// PEM encoded data for the certificate. + /// Returns Base64 encoding of DER encoded certificate. + /// Read more about PEM at [RFC 1421 Privacy Enhanced Mail] + /// (https://tools.ietf.org/html/rfc1421). + /// + /// The caller must free the returned string with `CoTaskMemFree`. See + /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings). + HRESULT ToPemEncoding([out, retval] LPWSTR* pemEncodedData); + /// Collection of PEM encoded client certificate issuer chain. + /// In this collection first element is the current certificate followed by + /// intermediate1, intermediate2...intermediateN-1. Root certificate is the + /// last element in collection. + [propget] HRESULT PemEncodedIssuerCertificateChain([out, retval] + ICoreWebView2StringCollection** value); + /// Kind of a certificate (eg., smart card, pin, other). + [propget] HRESULT Kind([out, retval] + COREWEBVIEW2_CLIENT_CERTIFICATE_KIND* value); +} + +/// A collection of client certificate object. +[uuid(ef5674d2-bcc3-11eb-8529-0242ac130003), object, pointer_default(unique)] +interface ICoreWebView2ClientCertificateCollection : IUnknown { + /// The number of client certificates contained in the + /// ICoreWebView2ClientCertificateCollection. + [propget] HRESULT Count([out, retval] UINT* value); + /// Gets the certificate object at the given index. + HRESULT GetValueAtIndex([in] UINT index, + [out, retval] ICoreWebView2ClientCertificate** certificate); +} + +/// A collection of strings. +[uuid(f41f3f8a-bcc3-11eb-8529-0242ac130003), object, pointer_default(unique)] +interface ICoreWebView2StringCollection : IUnknown { + /// The number of strings contained in ICoreWebView2StringCollection. + [propget] HRESULT Count([out, retval] UINT* value); + + /// Gets the value at a given index. + /// + /// The caller must free the returned string with `CoTaskMemFree`. See + /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings). + HRESULT GetValueAtIndex([in] UINT index, [out, retval] LPWSTR* value); +} + +/// An event handler for the `ClientCertificateRequested` event. +[uuid(d7175ba2-bcc3-11eb-8529-0242ac130003), object, pointer_default(unique)] +interface ICoreWebView2ClientCertificateRequestedEventHandler : IUnknown { + /// Provides the event args for the corresponding event. + HRESULT Invoke([in] ICoreWebView2* sender, + [in] ICoreWebView2ClientCertificateRequestedEventArgs* args); +} + +/// Event args for the `ClientCertificateRequested` event. +[uuid(bc59db28-bcc3-11eb-8529-0242ac130003), object, pointer_default(unique)] +interface ICoreWebView2ClientCertificateRequestedEventArgs : IUnknown { + /// Host name of the server that requested client certificate authentication. + /// Normalization rules applied to the hostname are: + /// * Convert to lowercase characters for ascii characters. + /// * Punycode is used for representing non ascii characters. + /// * Strip square brackets for IPV6 address. + /// + /// The caller must free the returned string with `CoTaskMemFree`. See + /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings). + [propget] HRESULT Host([out, retval] LPWSTR* value); + + /// Port of the server that requested client certificate authentication. + [propget] HRESULT Port([out, retval] int* value); + + /// Returns true if the server that issued this request is an http proxy. + /// Returns false if the server is the origin server. + [propget] HRESULT IsProxy([out, retval] BOOL* value); + + /// Returns the `ICoreWebView2StringCollection`. + /// The collection contains Base64 encoding of DER encoded distinguished names of + /// certificate authorities allowed by the server. + [propget] HRESULT AllowedCertificateAuthorities([out, retval] + ICoreWebView2StringCollection** value); + + /// Returns the `ICoreWebView2ClientCertificateCollection` when client + /// certificate authentication is requested. The collection contains mutually + /// trusted CA certificates. + [propget] HRESULT MutuallyTrustedCertificates([out, retval] + ICoreWebView2ClientCertificateCollection** value); + + /// Returns the selected certificate. + [propget] HRESULT SelectedCertificate([out, retval] + ICoreWebView2ClientCertificate** value); + + /// Sets the certificate to respond to the server. + [propput] HRESULT SelectedCertificate( + [in] ICoreWebView2ClientCertificate* value); + + /// You may set this flag to cancel the certificate selection. If canceled, + /// the request is aborted regardless of the `Handled` property. By default the + /// value is `FALSE`. + [propget] HRESULT Cancel([out, retval] BOOL* value); + + /// Sets the `Cancel` property. + [propput] HRESULT Cancel([in] BOOL value); + + /// You may set this flag to `TRUE` to respond to the server with or + /// without a certificate. If this flag is `TRUE` with a `SelectedCertificate` + /// it responds to the server with the selected certificate otherwise respond to the + /// server without a certificate. By default the value of `Handled` and `Cancel` are `FALSE` + /// and display default client certificate selection dialog prompt to allow the user to + /// choose a certificate. The `SelectedCertificate` is ignored unless `Handled` is set `TRUE`. + [propget] HRESULT Handled([out, retval] BOOL* value); + + /// Sets the `Handled` property. + [propput] HRESULT Handled([in] BOOL value); + + /// Returns an `ICoreWebView2Deferral` object. Use this operation to + /// complete the event at a later time. + HRESULT GetDeferral([out, retval] ICoreWebView2Deferral** deferral); +} + +/// This mostly represents a combined win32 +/// POINTER_INFO/POINTER_TOUCH_INFO/POINTER_PEN_INFO object. It takes fields +/// from all three and excludes some win32 specific data types like HWND and +/// HANDLE. Note, sourceDevice is taken out but we expect the PointerDeviceRect +/// and DisplayRect to cover the existing use cases of sourceDevice. +/// Another big difference is that any of the point or rect locations are +/// expected to be in WebView physical coordinates. That is, coordinates +/// relative to the WebView and no DPI scaling applied. +// +// The PointerId, PointerFlags, ButtonChangeKind, PenFlags, PenMask, TouchFlags, +// and TouchMask are all #defined flags or enums in the +// POINTER_INFO/POINTER_TOUCH_INFO/POINTER_PEN_INFO structure. We define those +// properties here as UINT32 or INT32 and expect the developer to know how to +// populate those values based on the Windows definitions. +[uuid(e6995887-d10d-4f5d-9359-4ce46e4f96b9), object, pointer_default(unique)] +interface ICoreWebView2PointerInfo : IUnknown { + /// Get the PointerKind of the pointer event. This corresponds to the + /// pointerKind property of the POINTER_INFO struct. The values are defined by + /// the POINTER_INPUT_KIND enum in the Windows SDK (winuser.h). Supports + /// PT_PEN and PT_TOUCH. + [propget] HRESULT PointerKind([out, retval] DWORD* pointerKind); + /// Set the PointerKind of the pointer event. This corresponds to the + /// pointerKind property of the POINTER_INFO struct. The values are defined by + /// the POINTER_INPUT_KIND enum in the Windows SDK (winuser.h). Supports + /// PT_PEN and PT_TOUCH. + [propput] HRESULT PointerKind([in] DWORD pointerKind); + + /// Get the PointerId of the pointer event. This corresponds to the pointerId + /// property of the POINTER_INFO struct as defined in the Windows SDK + /// (winuser.h). + [propget] HRESULT PointerId([out, retval] UINT32* pointerId); + /// Set the PointerId of the pointer event. This corresponds to the pointerId + /// property of the POINTER_INFO struct as defined in the Windows SDK + /// (winuser.h). + [propput] HRESULT PointerId([in] UINT32 pointerId); + + /// Get the FrameID of the pointer event. This corresponds to the frameId + /// property of the POINTER_INFO struct as defined in the Windows SDK + /// (winuser.h). + [propget] HRESULT FrameId([out, retval] UINT32* frameId); + /// Set the FrameID of the pointer event. This corresponds to the frameId + /// property of the POINTER_INFO struct as defined in the Windows SDK + /// (winuser.h). + [propput] HRESULT FrameId([in] UINT32 frameId); + + /// Get the PointerFlags of the pointer event. This corresponds to the + /// pointerFlags property of the POINTER_INFO struct. The values are defined + /// by the POINTER_FLAGS constants in the Windows SDK (winuser.h). + [propget] HRESULT PointerFlags([out, retval] UINT32* pointerFlags); + /// Set the PointerFlags of the pointer event. This corresponds to the + /// pointerFlags property of the POINTER_INFO struct. The values are defined + /// by the POINTER_FLAGS constants in the Windows SDK (winuser.h). + [propput] HRESULT PointerFlags([in] UINT32 pointerFlags); + + /// Get the PointerDeviceRect of the sourceDevice property of the + /// POINTER_INFO struct as defined in the Windows SDK (winuser.h). + [propget] HRESULT PointerDeviceRect([out, retval] RECT* pointerDeviceRect); + /// Set the PointerDeviceRect of the sourceDevice property of the + /// POINTER_INFO struct as defined in the Windows SDK (winuser.h). + [propput] HRESULT PointerDeviceRect([in] RECT pointerDeviceRect); + + /// Get the DisplayRect of the sourceDevice property of the POINTER_INFO + /// struct as defined in the Windows SDK (winuser.h). + [propget] HRESULT DisplayRect([out, retval] RECT* displayRect); + /// Set the DisplayRect of the sourceDevice property of the POINTER_INFO + /// struct as defined in the Windows SDK (winuser.h). + [propput] HRESULT DisplayRect([in] RECT displayRect); + + /// Get the PixelLocation of the pointer event. This corresponds to the + /// ptPixelLocation property of the POINTER_INFO struct as defined in the + /// Windows SDK (winuser.h). + [propget] HRESULT PixelLocation([out, retval] POINT* pixelLocation); + /// Set the PixelLocation of the pointer event. This corresponds to the + /// ptPixelLocation property of the POINTER_INFO struct as defined in the + /// Windows SDK (winuser.h). + [propput] HRESULT PixelLocation([in] POINT pixelLocation); + + /// Get the HimetricLocation of the pointer event. This corresponds to the + /// ptHimetricLocation property of the POINTER_INFO struct as defined in the + /// Windows SDK (winuser.h). + [propget] HRESULT HimetricLocation([out, retval] POINT* himetricLocation); + /// Set the HimetricLocation of the pointer event. This corresponds to the + /// ptHimetricLocation property of the POINTER_INFO struct as defined in the + /// Windows SDK (winuser.h). + [propput] HRESULT HimetricLocation([in] POINT himetricLocation); + + /// Get the PixelLocationRaw of the pointer event. This corresponds to the + /// ptPixelLocationRaw property of the POINTER_INFO struct as defined in the + /// Windows SDK (winuser.h). + [propget] HRESULT PixelLocationRaw([out, retval] POINT* pixelLocationRaw); + /// Set the PixelLocationRaw of the pointer event. This corresponds to the + /// ptPixelLocationRaw property of the POINTER_INFO struct as defined in the + /// Windows SDK (winuser.h). + [propput] HRESULT PixelLocationRaw([in] POINT pixelLocationRaw); + + /// Get the HimetricLocationRaw of the pointer event. This corresponds to the + /// ptHimetricLocationRaw property of the POINTER_INFO struct as defined in + /// the Windows SDK (winuser.h). + [propget] HRESULT HimetricLocationRaw([out, retval] POINT* himetricLocationRaw); + /// Set the HimetricLocationRaw of the pointer event. This corresponds to the + /// ptHimetricLocationRaw property of the POINTER_INFO struct as defined in + /// the Windows SDK (winuser.h). + [propput] HRESULT HimetricLocationRaw([in] POINT himetricLocationRaw); + + /// Get the Time of the pointer event. This corresponds to the dwTime property + /// of the POINTER_INFO struct as defined in the Windows SDK (winuser.h). + [propget] HRESULT Time([out, retval] DWORD* time); + /// Set the Time of the pointer event. This corresponds to the dwTime property + /// of the POINTER_INFO struct as defined in the Windows SDK (winuser.h). + [propput] HRESULT Time([in] DWORD time); + + /// Get the HistoryCount of the pointer event. This corresponds to the + /// historyCount property of the POINTER_INFO struct as defined in the Windows + /// SDK (winuser.h). + [propget] HRESULT HistoryCount([out, retval] UINT32* historyCount); + /// Set the HistoryCount of the pointer event. This corresponds to the + /// historyCount property of the POINTER_INFO struct as defined in the Windows + /// SDK (winuser.h). + [propput] HRESULT HistoryCount([in] UINT32 historyCount); + + /// Get the InputData of the pointer event. This corresponds to the InputData + /// property of the POINTER_INFO struct as defined in the Windows SDK + /// (winuser.h). + [propget] HRESULT InputData([out, retval] INT32* inputData); + /// Set the InputData of the pointer event. This corresponds to the InputData + /// property of the POINTER_INFO struct as defined in the Windows SDK + /// (winuser.h). + [propput] HRESULT InputData([in] INT32 inputData); + + /// Get the KeyStates of the pointer event. This corresponds to the + /// dwKeyStates property of the POINTER_INFO struct as defined in the Windows + /// SDK (winuser.h). + [propget] HRESULT KeyStates([out, retval] DWORD* keyStates); + /// Set the KeyStates of the pointer event. This corresponds to the + /// dwKeyStates property of the POINTER_INFO struct as defined in the Windows + /// SDK (winuser.h). + [propput] HRESULT KeyStates([in] DWORD keyStates); + + /// Get the PerformanceCount of the pointer event. This corresponds to the + /// PerformanceCount property of the POINTER_INFO struct as defined in the + /// Windows SDK (winuser.h). + [propget] HRESULT PerformanceCount([out, retval] UINT64* performanceCount); + /// Set the PerformanceCount of the pointer event. This corresponds to the + /// PerformanceCount property of the POINTER_INFO struct as defined in the + /// Windows SDK (winuser.h). + [propput] HRESULT PerformanceCount([in] UINT64 performanceCount); + + /// Get the ButtonChangeKind of the pointer event. This corresponds to the + /// ButtonChangeKind property of the POINTER_INFO struct. The values are + /// defined by the POINTER_BUTTON_CHANGE_KIND enum in the Windows SDK + /// (winuser.h). + [propget] HRESULT ButtonChangeKind([out, retval] INT32* buttonChangeKind); + /// Set the ButtonChangeKind of the pointer event. This corresponds to the + /// ButtonChangeKind property of the POINTER_INFO struct. The values are + /// defined by the POINTER_BUTTON_CHANGE_KIND enum in the Windows SDK + /// (winuser.h). + [propput] HRESULT ButtonChangeKind([in] INT32 buttonChangeKind); + + // Pen specific attributes + + /// Get the PenFlags of the pointer event. This corresponds to the penFlags + /// property of the POINTER_PEN_INFO struct. The values are defined by the + /// PEN_FLAGS constants in the Windows SDK (winuser.h). + [propget] HRESULT PenFlags([out, retval] UINT32* penFLags); + /// Set the PenFlags of the pointer event. This corresponds to the penFlags + /// property of the POINTER_PEN_INFO struct. The values are defined by the + /// PEN_FLAGS constants in the Windows SDK (winuser.h). + [propput] HRESULT PenFlags([in] UINT32 penFLags); + + /// Get the PenMask of the pointer event. This corresponds to the penMask + /// property of the POINTER_PEN_INFO struct. The values are defined by the + /// PEN_MASK constants in the Windows SDK (winuser.h). + [propget] HRESULT PenMask([out, retval] UINT32* penMask); + /// Set the PenMask of the pointer event. This corresponds to the penMask + /// property of the POINTER_PEN_INFO struct. The values are defined by the + /// PEN_MASK constants in the Windows SDK (winuser.h). + [propput] HRESULT PenMask([in] UINT32 penMask); + + /// Get the PenPressure of the pointer event. This corresponds to the pressure + /// property of the POINTER_PEN_INFO struct as defined in the Windows SDK + /// (winuser.h). + [propget] HRESULT PenPressure([out, retval] UINT32* penPressure); + /// Set the PenPressure of the pointer event. This corresponds to the pressure + /// property of the POINTER_PEN_INFO struct as defined in the Windows SDK + /// (winuser.h). + [propput] HRESULT PenPressure([in] UINT32 penPressure); + + /// Get the PenRotation of the pointer event. This corresponds to the rotation + /// property of the POINTER_PEN_INFO struct as defined in the Windows SDK + /// (winuser.h). + [propget] HRESULT PenRotation([out, retval] UINT32* penRotation); + /// Set the PenRotation of the pointer event. This corresponds to the rotation + /// property of the POINTER_PEN_INFO struct as defined in the Windows SDK + /// (winuser.h). + [propput] HRESULT PenRotation([in] UINT32 penRotation); + + /// Get the PenTiltX of the pointer event. This corresponds to the tiltX + /// property of the POINTER_PEN_INFO struct as defined in the Windows SDK + /// (winuser.h). + [propget] HRESULT PenTiltX([out, retval] INT32* penTiltX); + /// Set the PenTiltX of the pointer event. This corresponds to the tiltX + /// property of the POINTER_PEN_INFO struct as defined in the Windows SDK + /// (winuser.h). + [propput] HRESULT PenTiltX([in] INT32 penTiltX); + + /// Get the PenTiltY of the pointer event. This corresponds to the tiltY + /// property of the POINTER_PEN_INFO struct as defined in the Windows SDK + /// (winuser.h). + [propget] HRESULT PenTiltY([out, retval] INT32* penTiltY); + /// Set the PenTiltY of the pointer event. This corresponds to the tiltY + /// property of the POINTER_PEN_INFO struct as defined in the Windows SDK + /// (winuser.h). + [propput] HRESULT PenTiltY([in] INT32 penTiltY); + + // Touch specific attributes + + /// Get the TouchFlags of the pointer event. This corresponds to the + /// touchFlags property of the POINTER_TOUCH_INFO struct. The values are + /// defined by the TOUCH_FLAGS constants in the Windows SDK (winuser.h). + [propget] HRESULT TouchFlags([out, retval] UINT32* touchFlags); + /// Set the TouchFlags of the pointer event. This corresponds to the + /// touchFlags property of the POINTER_TOUCH_INFO struct. The values are + /// defined by the TOUCH_FLAGS constants in the Windows SDK (winuser.h). + [propput] HRESULT TouchFlags([in] UINT32 touchFlags); + + /// Get the TouchMask of the pointer event. This corresponds to the + /// touchMask property of the POINTER_TOUCH_INFO struct. The values are + /// defined by the TOUCH_MASK constants in the Windows SDK (winuser.h). + [propget] HRESULT TouchMask([out, retval] UINT32* touchMask); + /// Set the TouchMask of the pointer event. This corresponds to the + /// touchMask property of the POINTER_TOUCH_INFO struct. The values are + /// defined by the TOUCH_MASK constants in the Windows SDK (winuser.h). + [propput] HRESULT TouchMask([in] UINT32 touchMask); + + /// Get the TouchContact of the pointer event. This corresponds to the + /// rcContact property of the POINTER_TOUCH_INFO struct as defined in the + /// Windows SDK (winuser.h). + [propget] HRESULT TouchContact([out, retval] RECT* touchContact); + /// Set the TouchContact of the pointer event. This corresponds to the + /// rcContact property of the POINTER_TOUCH_INFO struct as defined in the + /// Windows SDK (winuser.h). + [propput] HRESULT TouchContact([in] RECT touchContact); + + /// Get the TouchContactRaw of the pointer event. This corresponds to the + /// rcContactRaw property of the POINTER_TOUCH_INFO struct as defined in the + /// Windows SDK (winuser.h). + [propget] HRESULT TouchContactRaw([out, retval] RECT* touchContactRaw); + /// Set the TouchContactRaw of the pointer event. This corresponds to the + /// rcContactRaw property of the POINTER_TOUCH_INFO struct as defined in the + /// Windows SDK (winuser.h). + [propput] HRESULT TouchContactRaw([in] RECT touchContactRaw); + + /// Get the TouchOrientation of the pointer event. This corresponds to the + /// orientation property of the POINTER_TOUCH_INFO struct as defined in the + /// Windows SDK (winuser.h). + [propget] HRESULT TouchOrientation([out, retval] UINT32* touchOrientation); + /// Set the TouchOrientation of the pointer event. This corresponds to the + /// orientation property of the POINTER_TOUCH_INFO struct as defined in the + /// Windows SDK (winuser.h). + [propput] HRESULT TouchOrientation([in] UINT32 touchOrientation); + + /// Get the TouchPressure of the pointer event. This corresponds to the + /// pressure property of the POINTER_TOUCH_INFO struct as defined in the + /// Windows SDK (winuser.h). + [propget] HRESULT TouchPressure([out, retval] UINT32* touchPressure); + /// Set the TouchPressure of the pointer event. This corresponds to the + /// pressure property of the POINTER_TOUCH_INFO struct as defined in the + /// Windows SDK (winuser.h). + [propput] HRESULT TouchPressure([in] UINT32 touchPressure); +} + +/// The caller implements this interface to receive CursorChanged events. Use +/// the Cursor property to get the new cursor. +[uuid(9da43ccc-26e1-4dad-b56c-d8961c94c571), object, pointer_default(unique)] +interface ICoreWebView2CursorChangedEventHandler : IUnknown { + /// Called to provide the implementer with the event args for the + /// corresponding event. There are no event args and the args + /// parameter will be null. + HRESULT Invoke([in] ICoreWebView2CompositionController* sender, [in] IUnknown* args); +} + +/// Receives `RasterizationScaleChanged` events. Use the `RasterizationScale` +/// property to get the modified scale. + +[uuid(9c98c8b1-ac53-427e-a345-3049b5524bbe), object, pointer_default(unique)] +interface ICoreWebView2RasterizationScaleChangedEventHandler : IUnknown { + /// Called to provide the implementer with the event args for the + /// corresponding event. There are no event args and the args + /// parameter will be null. + HRESULT Invoke( + [in] ICoreWebView2Controller* sender, + [in] IUnknown* args); +} + +/// Represents the WebView2 Environment. WebViews created from an environment +/// run on the browser process specified with environment parameters and +/// objects created from an environment should be used in the same +/// environment. Using it in different environments are not guaranteed to be +/// compatible and may fail. + +[uuid(b96d755e-0319-4e92-a296-23436f46a1fc), object, pointer_default(unique)] +interface ICoreWebView2Environment : IUnknown { + + /// Asynchronously create a new WebView. + /// + /// `parentWindow` is the `HWND` in which the WebView should be displayed and + /// from which receive input. The WebView adds a child window to the + /// provided window before this function returns. Z-order and other things + /// impacted by sibling window order are affected accordingly. If you want to + /// move the WebView to a different parent after it has been created, you must + /// call put_ParentWindow to update tooltip positions, accessibility trees, + /// and such. + /// + /// HWND_MESSAGE is a valid parameter for `parentWindow` for an invisible + /// WebView for Windows 8 and above. In this case the window will never + /// become visible. You are not able to reparent the window after you have + /// created the WebView. This is not supported in Windows 7 or below. + /// Passing this parameter in Windows 7 or below will return + /// ERROR_INVALID_WINDOW_HANDLE in the controller callback. + /// + /// It is recommended that the app set Application User Model ID for the + /// process or the app window. If none is set, during WebView creation a + /// generated Application User Model ID is set to root window of + /// `parentWindow`. + /// + /// \snippet AppWindow.cpp CreateCoreWebView2Controller + /// + /// It is recommended that the app handles restart manager messages, to + /// gracefully restart it in the case when the app is using the WebView2 + /// Runtime from a certain installation and that installation is being + /// uninstalled. For example, if a user installs a version of the WebView2 + /// Runtime and opts to use another version of the WebView2 Runtime for + /// testing the app, and then uninstalls the 1st version of the WebView2 + /// Runtime without closing the app, the app restarts to allow + /// un-installation to succeed. + /// + /// \snippet AppWindow.cpp RestartManager + /// + /// The app should retry `CreateCoreWebView2Controller` upon failure, unless the + /// error code is `HRESULT_FROM_WIN32(ERROR_INVALID_STATE)`. + /// When the app retries `CreateCoreWebView2Controller` upon failure, it is + /// recommended that the app restarts from creating a new WebView2 + /// Environment. If a WebView2 Runtime update happens, the version + /// associated with a WebView2 Environment may have been removed and causing + /// the object to no longer work. Creating a new WebView2 Environment works + /// since it uses the latest version. + /// + /// WebView creation fails with `HRESULT_FROM_WIN32(ERROR_INVALID_STATE)` if a + /// running instance using the same user data folder exists, and the Environment + /// objects have different `EnvironmentOptions`. For example, if a WebView was + /// created with one language, an attempt to create a WebView with a different + /// language using the same user data folder will fail. + /// + /// The creation will fail with `E_ABORT` if `parentWindow` is destroyed + /// before the creation is finished. If this is caused by a call to + /// `DestroyWindow`, the creation completed handler will be invoked before + /// `DestroyWindow` returns, so you can use this to cancel creation and clean + /// up resources synchronously when quitting a thread. + /// + /// In rare cases the creation can fail with `E_UNEXPECTED` if runtime does not have + /// permissions to the user data folder. + + HRESULT CreateCoreWebView2Controller( + HWND parentWindow, + ICoreWebView2CreateCoreWebView2ControllerCompletedHandler* handler); + + /// Create a new web resource response object. The `headers` parameter is + /// the raw response header string delimited by newline. It is also possible + /// to create this object with null headers string and then use the + /// `ICoreWebView2HttpResponseHeaders` to construct the headers line by line. + /// For more information about other parameters, navigate to + /// [ICoreWebView2WebResourceResponse](/microsoft-edge/webview2/reference/win32/icorewebview2webresourceresponse). + /// + /// \snippet SettingsComponent.cpp WebResourceRequested0 + /// \snippet SettingsComponent.cpp WebResourceRequested1 + HRESULT CreateWebResourceResponse( + [in] IStream* content, + [in] int statusCode, + [in] LPCWSTR reasonPhrase, + [in] LPCWSTR headers, + [out, retval] ICoreWebView2WebResourceResponse** response); + + /// The browser version info of the current `ICoreWebView2Environment`, + /// including channel name if it is not the WebView2 Runtime. It matches the + /// format of the `GetAvailableCoreWebView2BrowserVersionString` API. + /// Channel names are `beta`, `dev`, and `canary`. + /// + /// The caller must free the returned string with `CoTaskMemFree`. See + /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings). + /// + /// \snippet AppWindow.cpp GetBrowserVersionString + [propget] HRESULT BrowserVersionString([out, retval] LPWSTR* versionInfo); + + /// Add an event handler for the `NewBrowserVersionAvailable` event. + /// `NewBrowserVersionAvailable` runs when a newer version of the WebView2 + /// Runtime is installed and available using WebView2. To use the newer + /// version of the browser you must create a new environment and WebView. + /// The event only runs for new version from the same WebView2 Runtime from + /// which the code is running. When not running with installed WebView2 + /// Runtime, no event is run. + /// + /// Because a user data folder is only able to be used by one browser + /// process at a time, if you want to use the same user data folder in the + /// WebView using the new version of the browser, you must close the + /// environment and instance of WebView that are using the older version of + /// the browser first. Or simply prompt the user to restart the app. + /// + /// \snippet AppWindow.cpp NewBrowserVersionAvailable + HRESULT add_NewBrowserVersionAvailable( + [in] ICoreWebView2NewBrowserVersionAvailableEventHandler* eventHandler, + [out] EventRegistrationToken* token); + + /// Remove an event handler previously added with `add_NewBrowserVersionAvailable`. + HRESULT remove_NewBrowserVersionAvailable( + [in] EventRegistrationToken token); +} + +/// A continuation of the ICoreWebView2Environment interface. +[uuid(41F3632B-5EF4-404F-AD82-2D606C5A9A21), object, pointer_default(unique)] +interface ICoreWebView2Environment2 : ICoreWebView2Environment { + /// Create a new web resource request object. + /// URI parameter must be absolute URI. + /// The headers string is the raw request header string delimited by CRLF + /// (optional in last header). + /// It's also possible to create this object with null headers string + /// and then use the ICoreWebView2HttpRequestHeaders to construct the headers + /// line by line. + /// For information on other parameters see ICoreWebView2WebResourceRequest. + /// + /// \snippet ScenarioNavigateWithWebResourceRequest.cpp NavigateWithWebResourceRequest + HRESULT CreateWebResourceRequest([in] LPCWSTR uri, + [in] LPCWSTR method, + [in] IStream* postData, + [in] LPCWSTR headers, + [out, retval] ICoreWebView2WebResourceRequest** request); +} + +/// A continuation of the ICoreWebView2Environment2 interface. +[uuid(80a22ae3-be7c-4ce2-afe1-5a50056cdeeb), object, pointer_default(unique)] +interface ICoreWebView2Environment3 : ICoreWebView2Environment2 { + /// Asynchronously create a new WebView for use with visual hosting. + /// + /// parentWindow is the HWND in which the app will connect the visual tree of + /// the WebView. This will be the HWND that the app will receive pointer/ + /// mouse input meant for the WebView (and will need to use SendMouseInput/ + /// SendPointerInput to forward). If the app moves the WebView visual tree to + /// underneath a different window, then it needs to call put_ParentWindow to + /// update the new parent HWND of the visual tree. + /// + /// HWND_MESSAGE is not a valid parameter for `parentWindow` for visual hosting. + /// The underlying implementation of supporting HWND_MESSAGE would break + /// accessibility for visual hosting. This is supported in windowed + /// WebViews - see CreateCoreWebView2Controller. + /// + /// Use put_RootVisualTarget on the created CoreWebView2CompositionController to + /// provide a visual to host the browser's visual tree. + /// + /// It is recommended that the application set Application User Model ID for + /// the process or the application window. If none is set, during WebView + /// creation a generated Application User Model ID is set to root window of + /// parentWindow. + /// \snippet AppWindow.cpp CreateCoreWebView2Controller + /// + /// It is recommended that the application handles restart manager messages + /// so that it can be restarted gracefully in the case when the app is using + /// Edge for WebView from a certain installation and that installation is + /// being uninstalled. For example, if a user installs Edge from Dev channel + /// and opts to use Edge from that channel for testing the app, and then + /// uninstalls Edge from that channel without closing the app, the app will + /// be restarted to allow uninstallation of the dev channel to succeed. + /// \snippet AppWindow.cpp RestartManager + /// + /// The app should retry `CreateCoreWebView2CompositionController` upon failure, + /// unless the error code is `HRESULT_FROM_WIN32(ERROR_INVALID_STATE)`. + /// When the app retries `CreateCoreWebView2CompositionController` + /// upon failure, it is recommended that the app restarts from creating a new + /// WebView2 Environment. If a WebView2 Runtime update happens, the version + /// associated with a WebView2 Environment may have been removed and causing + /// the object to no longer work. Creating a new WebView2 Environment works + /// since it uses the latest version. + /// + /// WebView creation fails with `HRESULT_FROM_WIN32(ERROR_INVALID_STATE)` if a + /// running instance using the same user data folder exists, and the Environment + /// objects have different `EnvironmentOptions`. For example, if a WebView was + /// created with one language, an attempt to create a WebView with a different + /// language using the same user data folder will fail. + /// + /// The creation will fail with `E_ABORT` if `parentWindow` is destroyed + /// before the creation is finished. If this is caused by a call to + /// `DestroyWindow`, the creation completed handler will be invoked before + /// `DestroyWindow` returns, so you can use this to cancel creation and clean + /// up resources synchronously when quitting a thread. + /// + /// In rare cases the creation can fail with `E_UNEXPECTED` if runtime does not have + /// permissions to the user data folder. + /// + /// CreateCoreWebView2CompositionController is supported in the following versions of Windows: + /// + /// - Windows 11 + /// - Windows 10 + /// - Windows Server 2019 + /// - Windows Server 2016 + /// + HRESULT CreateCoreWebView2CompositionController( + HWND parentWindow, + ICoreWebView2CreateCoreWebView2CompositionControllerCompletedHandler* handler); + + /// Create an empty ICoreWebView2PointerInfo. The returned + /// ICoreWebView2PointerInfo needs to be populated with all of the relevant + /// info before calling SendPointerInput. + HRESULT CreateCoreWebView2PointerInfo( + [out, retval] ICoreWebView2PointerInfo** pointerInfo); +} + +/// A continuation of the ICoreWebView2Environment3 interface. +[uuid(20944379-6dcf-41d6-a0a0-abc0fc50de0d), object, pointer_default(unique)] +interface ICoreWebView2Environment4 : ICoreWebView2Environment3 { + /// Returns the Automation Provider for the WebView that matches the provided + /// window. Host apps are expected to implement + /// IRawElementProviderHwndOverride. When GetOverrideProviderForHwnd is + /// called, the app can pass the HWND to GetAutomationProviderForWindow to + /// find the matching WebView Automation Provider. + HRESULT GetAutomationProviderForWindow([in] HWND hwnd, + [out, retval] IUnknown** provider); +} + +/// A continuation of the `ICoreWebView2Environment4` interface that supports +/// the `BrowserProcessExited` event. +[uuid(319e423d-e0d7-4b8d-9254-ae9475de9b17), object, pointer_default(unique)] +interface ICoreWebView2Environment5 : ICoreWebView2Environment4 { + /// Add an event handler for the `BrowserProcessExited` event. + /// The `BrowserProcessExited` event is raised when the collection of WebView2 + /// Runtime processes for the browser process of this environment terminate + /// due to browser process failure or normal shutdown (for example, when all + /// associated WebViews are closed), after all resources have been released + /// (including the user data folder). To learn about what these processes are, + /// go to [Process model](/microsoft-edge/webview2/concepts/process-model). + /// + /// A handler added with this method is called until removed with + /// `remove_BrowserProcessExited`, even if a new browser process is bound to + /// this environment after earlier `BrowserProcessExited` events are raised. + /// + /// Multiple app processes can share a browser process by creating their webviews + /// from a `ICoreWebView2Environment` with the same user data folder. When the entire + /// collection of WebView2Runtime processes for the browser process exit, all + /// associated `ICoreWebView2Environment` objects receive the `BrowserProcessExited` + /// event. Multiple processes sharing the same browser process need to coordinate + /// their use of the shared user data folder to avoid race conditions and + /// unnecessary waits. For example, one process should not clear the user data + /// folder at the same time that another process recovers from a crash by recreating + /// its WebView controls; one process should not block waiting for the event if + /// other app processes are using the same browser process (the browser process will + /// not exit until those other processes have closed their webviews too). + /// + /// Note this is an event from the `ICoreWebView2Environment3` interface, not + /// the `ICoreWebView2` one. The difference between `BrowserProcessExited` and + /// `ICoreWebView2`'s `ProcessFailed` is that `BrowserProcessExited` is + /// raised for any **browser process** exit (expected or unexpected, after all + /// associated processes have exited too), while `ProcessFailed` is raised for + /// **unexpected** process exits of any kind (browser, render, GPU, and all + /// other types), or for main frame **render process** unresponsiveness. To + /// learn more about the WebView2 Process Model, go to + /// [Process model](/microsoft-edge/webview2/concepts/process-model). + /// + /// In the case the browser process crashes, both `BrowserProcessExited` and + /// `ProcessFailed` events are raised, but the order is not guaranteed. These + /// events are intended for different scenarios. It is up to the app to + /// coordinate the handlers so they do not try to perform reliability recovery + /// while also trying to move to a new WebView2 Runtime version or remove the + /// user data folder. + /// + /// \snippet AppWindow.cpp Close + HRESULT add_BrowserProcessExited( + [in] ICoreWebView2BrowserProcessExitedEventHandler* eventHandler, + [out] EventRegistrationToken* token); + + /// Remove an event handler previously added with `add_BrowserProcessExited`. + HRESULT remove_BrowserProcessExited([in] EventRegistrationToken token); +} + +/// This interface is an extension of the ICoreWebView2Environment that supports +/// creating print settings for printing to PDF. +[uuid(e59ee362-acbd-4857-9a8e-d3644d9459a9), object, pointer_default(unique)] +interface ICoreWebView2Environment6 : ICoreWebView2Environment5 { + /// Creates the `ICoreWebView2PrintSettings` used by the `PrintToPdf` + /// method. + HRESULT CreatePrintSettings( + [out, retval] ICoreWebView2PrintSettings** printSettings); +} + +/// This interface is an extension of the ICoreWebView2Environment. An object +/// implementing the ICoreWebView2Environment7 interface will also +/// implement ICoreWebView2Environment. +[uuid(43C22296-3BBD-43A4-9C00-5C0DF6DD29A2), object, pointer_default(unique)] +interface ICoreWebView2Environment7 : ICoreWebView2Environment6 { + /// Returns the user data folder that all CoreWebView2's created from this + /// environment are using. + /// This could be either the value passed in by the developer when creating + /// the environment object or the calculated one for default handling. It + /// will always be an absolute path. + /// + /// The caller must free the returned string with `CoTaskMemFree`. See + /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings). + /// + /// \snippet AppWindow.cpp GetUserDataFolder + [propget] HRESULT UserDataFolder([ out, retval ] LPWSTR * value); +} + +/// A continuation of the `ICoreWebView2Environment7` interface that supports +/// the `ProcessInfosChanged` event. +[uuid(D6EB91DD-C3D2-45E5-BD29-6DC2BC4DE9CF), object, pointer_default(unique)] +interface ICoreWebView2Environment8 : ICoreWebView2Environment7 { + /// Adds an event handler for the `ProcessInfosChanged` event. + /// + /// \snippet ProcessComponent.cpp ProcessInfosChanged + /// \snippet ProcessComponent.cpp ProcessInfosChanged1 + HRESULT add_ProcessInfosChanged( + [in] ICoreWebView2ProcessInfosChangedEventHandler* eventHandler, + [out] EventRegistrationToken* token); + + /// Remove an event handler previously added with `add_ProcessInfosChanged`. + HRESULT remove_ProcessInfosChanged( + [in] EventRegistrationToken token); + + /// Returns the `ICoreWebView2ProcessInfoCollection` + /// Provide a list of all process using same user data folder except for crashpad process. + HRESULT GetProcessInfos([out, retval]ICoreWebView2ProcessInfoCollection** value); +} + +/// Provides a set of properties for a process in the `ICoreWebView2Environment`. +[uuid(84FA7612-3F3D-4FBF-889D-FAD000492D72), object, pointer_default(unique)] +interface ICoreWebView2ProcessInfo : IUnknown { + + /// The process id of the process. + [propget] HRESULT ProcessId([out, retval] INT32* value); + + /// The kind of the process. + [propget] HRESULT Kind([out, retval] COREWEBVIEW2_PROCESS_KIND* kind); +} + +/// A continuation of the ICoreWebView2Environment interface for +/// creating CoreWebView2 ContextMenuItem objects. +[uuid(f06f41bf-4b5a-49d8-b9f6-fa16cd29f274), object, pointer_default(unique)] +interface ICoreWebView2Environment9 : ICoreWebView2Environment8 { + /// Create a custom `ContextMenuItem` object to insert into the WebView context menu. + /// CoreWebView2 will rewind the icon stream before decoding. + /// There is a limit of 1000 active custom context menu items at a given time. + /// Attempting to create more before deleting existing ones will fail with + /// ERROR_NOT_ENOUGH_QUOTA. + /// It is recommended to reuse ContextMenuItems across ContextMenuRequested events + /// for performance. + /// The returned ContextMenuItem object's `IsEnabled` property will default to `TRUE` + /// and `IsChecked` property will default to `FALSE`. A `CommandId` will be assigned + /// to the ContextMenuItem object that's unique across active custom context menu items, + /// but command ID values of deleted ContextMenuItems can be reassigned. + HRESULT CreateContextMenuItem( + [in] LPCWSTR label, + [in] IStream* iconStream, + [in] COREWEBVIEW2_CONTEXT_MENU_ITEM_KIND kind, + [out, retval] ICoreWebView2ContextMenuItem** item); +} + +/// This interface is used to create `ICoreWebView2ControllerOptions` object, which +/// can be passed as a parameter in `CreateCoreWebView2ControllerWithOptions` and +/// `CreateCoreWebView2CompositionControllerWithOptions` function for multiple profiles support. +/// The profile will be created on disk or opened when calling `CreateCoreWebView2ControllerWithOptions` or +/// `CreateCoreWebView2CompositionControllerWithOptions` no matter InPrivate mode is enabled or not, and +/// it will be released in memory when the corresponding controller is closed but still remain on disk. +/// If you create a WebView2Controller with {ProfileName="name", InPrivate=false} and then later create another +/// one with {ProfileName="name", InPrivate=true}, these two controllers using the same profile would be allowed to +/// run at the same time. +/// As WebView2 is built on top of Edge browser, it follows Edge's behavior pattern. To create an InPrivate WebView, +/// we gets an off-the-record profile (an InPrivate profile) from a regular profile, then create the WebView with the +/// off-the-record profile. +/// +/// \snippet AppWindow.cpp CreateControllerWithOptions +[uuid(ee0eb9df-6f12-46ce-b53f-3f47b9c928e0), object, pointer_default(unique)] +interface ICoreWebView2Environment10 : ICoreWebView2Environment9 { + /// Create a new ICoreWebView2ControllerOptions to be passed as a parameter of + /// CreateCoreWebView2ControllerWithOptions and CreateCoreWebView2CompositionControllerWithOptions. + /// The 'options' is settable and in it the default value for profile name is the empty string, + /// and the default value for IsInPrivateModeEnabled is false. + /// Also the profile name can be reused. + HRESULT CreateCoreWebView2ControllerOptions( + [out, retval] ICoreWebView2ControllerOptions** options); + + /// Create a new WebView with options. + HRESULT CreateCoreWebView2ControllerWithOptions( + [in] HWND parentWindow, + [in] ICoreWebView2ControllerOptions* options, + [in] ICoreWebView2CreateCoreWebView2ControllerCompletedHandler* handler); + + /// Create a new WebView in visual hosting mode with options. + HRESULT CreateCoreWebView2CompositionControllerWithOptions( + [in] HWND parentWindow, + [in] ICoreWebView2ControllerOptions* options, + [in] ICoreWebView2CreateCoreWebView2CompositionControllerCompletedHandler* handler); +} + +/// A list containing process id and corresponding process type. +[uuid(402B99CD-A0CC-4FA5-B7A5-51D86A1D2339), object, pointer_default(unique)] +interface ICoreWebView2ProcessInfoCollection : IUnknown { + /// The number of process contained in the ICoreWebView2ProcessInfoCollection. + [propget] HRESULT Count([out, retval] UINT* count); + + /// Gets the `ICoreWebView2ProcessInfo` located in the `ICoreWebView2ProcessInfoCollection` + /// at the given index. + HRESULT GetValueAtIndex([in] UINT32 index, + [out, retval] ICoreWebView2ProcessInfo** processInfo); +} + +/// An event handler for the `ProcessInfosChanged` event. +[uuid(F4AF0C39-44B9-40E9-8B11-0484CFB9E0A1), object, pointer_default(unique)] +interface ICoreWebView2ProcessInfosChangedEventHandler : IUnknown { + /// Provides the event args for the corresponding event. No event args exist + /// and the `args` parameter is set to `null`. + HRESULT Invoke([in] ICoreWebView2Environment* sender, [in] IUnknown* args); +} + +/// Options used to create WebView2 Environment. A default implementation is +/// provided in `WebView2EnvironmentOptions.h`. +/// +/// \snippet AppWindow.cpp CreateCoreWebView2EnvironmentWithOptions + +[uuid(2fde08a8-1e9a-4766-8c05-95a9ceb9d1c5), object, pointer_default(unique)] +interface ICoreWebView2EnvironmentOptions : IUnknown { + + /// Changes the behavior of the WebView. The arguments are passed to the + /// browser process as part of the command. For more information about + /// using command-line switches with Chromium browser processes, navigate to + /// [Run Chromium with Flags](https://www.chromium.org/developers/how-tos/run-chromium-with-flags). + /// The value appended to a switch is appended to the browser process, for + /// example, in `--edge-webview-switches=xxx` the value is `xxx`. If you + /// specify a switch that is important to WebView functionality, it is + /// ignored, for example, `--user-data-dir`. Specific features are disabled + /// internally and blocked from being enabled. If a switch is specified + /// multiple times, only the last instance is used. + /// + /// \> [!NOTE]\n\> A merge of the different values of the same switch is not attempted, + /// except for disabled and enabled features. The features specified by + /// `--enable-features` and `--disable-features` are merged with simple + /// logic.\n\> * The features is the union of the specified features + /// and built-in features. If a feature is disabled, it is removed from the + /// enabled features list. + /// + /// If you specify command-line switches and use the + /// `additionalBrowserArguments` parameter, the `--edge-webview-switches` + /// value takes precedence and is processed last. If a switch fails to + /// parse, the switch is ignored. The default state for the operation is + /// to run the browser process with no extra flags. + /// + /// The caller must free the returned string with `CoTaskMemFree`. See + /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings). + [propget] HRESULT AdditionalBrowserArguments([out, retval] LPWSTR* value); + + /// Sets the `AdditionalBrowserArguments` property. + /// + /// Please note that calling this API twice will replace the previous value + /// rather than appending to it. If there are multiple switches, there + /// should be a space in between them. The one exception is if multiple + /// features are being enabled/disabled for a single switch, in which + /// case the features should be comma-seperated. + /// Ex. "--disable-features=feature1,feature2 --some-other-switch --do-something" + [propput] HRESULT AdditionalBrowserArguments([in] LPCWSTR value); + + /// The default display language for WebView. It applies to browser UI such as + /// context menu and dialogs. It also applies to the `accept-languages` HTTP + /// header that WebView sends to websites. The intended locale value is in the + /// format of BCP 47 Language Tags. More information can be found from + /// [IETF BCP47](https://www.ietf.org/rfc/bcp/bcp47.html). + /// + /// The caller must free the returned string with `CoTaskMemFree`. See + /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings). + [propget] HRESULT Language([out, retval] LPWSTR* value); + + /// Sets the `Language` property. + [propput] HRESULT Language([in] LPCWSTR value); + + /// Specifies the version of the WebView2 Runtime binaries required to be + /// compatible with your app. This defaults to the WebView2 Runtime version + /// that corresponds with the version of the SDK the app is using. The + /// format of this value is the same as the format of the + /// `BrowserVersionString` property and other `BrowserVersion` values. Only + /// the version part of the `BrowserVersion` value is respected. The channel + /// suffix, if it exists, is ignored. The version of the WebView2 Runtime + /// binaries actually used may be different from the specified + /// `TargetCompatibleBrowserVersion`. The binaries are only guaranteed to be + /// compatible. Verify the actual version on the `BrowserVersionString` + /// property on the `ICoreWebView2Environment`. + /// + /// The caller must free the returned string with `CoTaskMemFree`. See + /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings). + [propget] HRESULT TargetCompatibleBrowserVersion([out, retval] LPWSTR* value); + + /// Sets the `TargetCompatibleBrowserVersion` property. + [propput] HRESULT TargetCompatibleBrowserVersion([in] LPCWSTR value); + + /// The `AllowSingleSignOnUsingOSPrimaryAccount` property is used to enable + /// single sign on with Azure Active Directory (AAD) and personal Microsoft + /// Account (MSA) resources inside WebView. All AAD accounts, connected to + /// Windows and shared for all apps, are supported. For MSA, SSO is only enabled + /// for the account associated for Windows account login, if any. + /// Default is disabled. Universal Windows Platform apps must also declare + /// `enterpriseCloudSSO` + /// [Restricted capabilities](/windows/uwp/packaging/app-capability-declarations\#restricted-capabilities) + /// for the single sign on (SSO) to work. + [propget] HRESULT AllowSingleSignOnUsingOSPrimaryAccount([out, retval] BOOL* allow); + + /// Sets the `AllowSingleSignOnUsingOSPrimaryAccount` property. + [propput] HRESULT AllowSingleSignOnUsingOSPrimaryAccount([in] BOOL allow); +} + +/// Additional options used to create WebView2 Environment. A default implementation is +/// provided in `WebView2EnvironmentOptions.h`. +/// +/// \snippet AppWindow.cpp CreateCoreWebView2EnvironmentWithOptions + +// Note: ICoreWebView2EnvironmentOptions* interfaces derive from IUnknown to make moving +// the API from experimental to public smoothier. These interfaces are mostly internal to +// WebView's own code. Normal apps just use the objects we provided and never interact +// with the interfaces. Advanced apps might implement their own options object. In that +// case, it is also easier for them to implement the interface if it is derived from IUnknown. +[uuid(FF85C98A-1BA7-4A6B-90C8-2B752C89E9E2), object, pointer_default(unique)] +interface ICoreWebView2EnvironmentOptions2 : IUnknown { + + /// Whether other processes can create WebView2 from WebView2Environment created with the + /// same user data folder and therefore sharing the same WebView browser process instance. + /// Default is FALSE. + [propget] HRESULT ExclusiveUserDataFolderAccess([out, retval] BOOL* value); + + /// Sets the `ExclusiveUserDataFolderAccess` property. + /// The `ExclusiveUserDataFolderAccess` property specifies that the WebView environment + /// obtains exclusive access to the user data folder. + /// If the user data folder is already being used by another WebView environment with a + /// different value for `ExclusiveUserDataFolderAccess` property, the creation of a WebView2Controller + /// using the environment object will fail with `HRESULT_FROM_WIN32(ERROR_INVALID_STATE)`. + /// When set as TRUE, no other WebView can be created from other processes using WebView2Environment + /// objects with the same UserDataFolder. This prevents other processes from creating WebViews + /// which share the same browser process instance, since sharing is performed among + /// WebViews that have the same UserDataFolder. When another process tries to create a + /// WebView2Controller from an WebView2Environment object created with the same user data folder, + /// it will fail with `HRESULT_FROM_WIN32(ERROR_INVALID_STATE)`. + [propput] HRESULT ExclusiveUserDataFolderAccess([in] BOOL value); +} + +/// Additional options used to create WebView2 Environment to manage crash +/// reporting. +[uuid(4A5C436E-A9E3-4A2E-89C3-910D3513F5CC), object, pointer_default(unique)] +interface ICoreWebView2EnvironmentOptions3 : IUnknown { + /// When `IsCustomCrashReportingEnabled` is set to `TRUE`, Windows won't send crash data to Microsoft endpoint. + /// `IsCustomCrashReportingEnabled` is default to be `FALSE`, in this case, WebView will respect OS consent. + [propget] HRESULT IsCustomCrashReportingEnabled([out, retval] BOOL* value); + + /// Sets the `IsCustomCrashReportingEnabled` property. + [propput] HRESULT IsCustomCrashReportingEnabled([in] BOOL value); +} + +/// Additional options used to create WebView2 Environment that manages custom scheme registration. +[uuid(ac52d13f-0d38-475a-9dca-876580d6793e), object, pointer_default(unique)] +interface ICoreWebView2EnvironmentOptions4 : IUnknown { + /// Array of custom scheme registrations. The returned + /// ICoreWebView2CustomSchemeRegistration pointers must be released, and the + /// array itself must be deallocated with CoTaskMemFree. + HRESULT GetCustomSchemeRegistrations( + [out] UINT32* count, + [out] ICoreWebView2CustomSchemeRegistration*** schemeRegistrations); + /// Set the array of custom scheme registrations to be used. + /// \snippet AppWindow.cpp CoreWebView2CustomSchemeRegistration + HRESULT SetCustomSchemeRegistrations( + [in] UINT32 count, + [in] ICoreWebView2CustomSchemeRegistration** schemeRegistrations); +} + +/// Additional options used to create WebView2 Environment to manage tracking +/// prevention. +[uuid(0AE35D64-C47F-4464-814E-259C345D1501), object, pointer_default(unique)] +interface ICoreWebView2EnvironmentOptions5 : IUnknown { + /// The `EnableTrackingPrevention` property is used to enable/disable tracking prevention + /// feature in WebView2. This property enable/disable tracking prevention for all the + /// WebView2's created in the same environment. By default this feature is enabled to block + /// potentially harmful trackers and trackers from sites that aren't visited before and set to + /// `COREWEBVIEW2_TRACKING_PREVENTION_LEVEL_BALANCED` or whatever value was last changed/persisted + /// on the profile. + /// + /// You can set this property to false to disable the tracking prevention feature if the app only + /// renders content in the WebView2 that is known to be safe. Disabling this feature when creating + /// environment also improves runtime performance by skipping related code. + /// + /// You shouldn't disable this property if WebView2 is being used as a "full browser" with arbitrary + /// navigation and should protect end user privacy. + /// + /// There is `ICoreWebView2Profile3::PreferredTrackingPreventionLevel` property to control levels of + /// tracking prevention of the WebView2's associated with a same profile. However, you can also disable + /// tracking prevention later using `ICoreWebView2Profile3::PreferredTrackingPreventionLevel` property and + /// `COREWEBVIEW2_TRACKING_PREVENTION_LEVEL_NONE` value but that doesn't improves runtime performance. + /// + /// See `ICoreWebView2Profile3::PreferredTrackingPreventionLevel` for more details. + /// + /// Tracking prevention protects users from online tracking by restricting the ability of trackers to + /// access browser-based storage as well as the network. See [Tracking prevention](/microsoft-edge/web-platform/tracking-prevention). + [propget] HRESULT EnableTrackingPrevention([out, retval] BOOL* value); + /// Sets the `EnableTrackingPrevention` property. + [propput] HRESULT EnableTrackingPrevention([in] BOOL value); +} + +/// A continuation of the ICoreWebView2Environment interface for +/// getting the crash dump folder path. +[uuid(F0913DC6-A0EC-42EF-9805-91DFF3A2966A), object, pointer_default(unique)] +interface ICoreWebView2Environment11 : ICoreWebView2Environment10 { + /// `FailureReportFolderPath` returns the path of the folder where minidump files are written. + /// Whenever a WebView2 process crashes, a crash dump file will be created in the crash dump folder. + /// The crash dump format is minidump files. Please see + /// [Minidump Files documentation](/windows/win32/debug/minidump-files) for detailed information. + /// Normally when a single child process fails, a minidump will be generated and written to disk, + /// then the `ProcessFailed` event is raised. But for unexpected crashes, a minidump file might not be generated + /// at all, despite whether `ProcessFailed` event is raised. If there are multiple + /// process failures at once, multiple minidump files could be generated. Thus `FailureReportFolderPath` + /// could contain old minidump files that are not associated with a specific `ProcessFailed` event. + /// \snippet AppWindow.cpp GetFailureReportFolder + [propget] HRESULT FailureReportFolderPath([out, retval] LPWSTR* value); +} + +/// A continuation of the ICoreWebView2Environment interface for creating shared buffer object. +[uuid(F503DB9B-739F-48DD-B151-FDFCF253F54E), object, pointer_default(unique)] +interface ICoreWebView2Environment12 : ICoreWebView2Environment11 { + /// Create a shared memory based buffer with the specified size in bytes. + /// The buffer can be shared with web contents in WebView by calling + /// `PostSharedBufferToScript` on `CoreWebView2` or `CoreWebView2Frame` object. + /// Once shared, the same content of the buffer will be accessible from both + /// the app process and script in WebView. Modification to the content will be visible + /// to all parties that have access to the buffer. + /// The shared buffer is presented to the script as ArrayBuffer. All JavaScript APIs + /// that work for ArrayBuffer including Atomics APIs can be used on it. + /// There is currently a limitation that only size less than 2GB is supported. + HRESULT CreateSharedBuffer( + [in] UINT64 size, + [out, retval] ICoreWebView2SharedBuffer** shared_buffer); +} + +/// Receives the `WebView2Environment` created using +/// `CreateCoreWebView2Environment`. +[uuid(4e8a3389-c9d8-4bd2-b6b5-124fee6cc14d), object, pointer_default(unique)] +interface ICoreWebView2CreateCoreWebView2EnvironmentCompletedHandler : IUnknown { + + /// Provides the completion status and result of the corresponding + /// asynchronous method. + + HRESULT Invoke(HRESULT errorCode, ICoreWebView2Environment* createdEnvironment); +} + +/// A Receiver is created for a particular DevTools Protocol event and allows +/// you to subscribe and unsubscribe from that event. Obtained from the +/// WebView object using `GetDevToolsProtocolEventReceiver`. +[uuid(b32ca51a-8371-45e9-9317-af021d080367), object, pointer_default(unique)] +interface ICoreWebView2DevToolsProtocolEventReceiver : IUnknown { + + /// Subscribe to a `DevToolsProtocol` event. The `Invoke` method of the + /// `handler` runs whenever the corresponding `DevToolsProtocol` event runs. + /// `Invoke` runs with an event args object containing the parameter object + /// of the DevTools Protocol event as a JSON string. + /// + /// \snippet ScriptComponent.cpp DevToolsProtocolEventReceived + + HRESULT add_DevToolsProtocolEventReceived( + [in] ICoreWebView2DevToolsProtocolEventReceivedEventHandler* handler, + [out] EventRegistrationToken* token); + + /// Remove an event handler previously added with + /// `add_DevToolsProtocolEventReceived`. + + HRESULT remove_DevToolsProtocolEventReceived( + [in] EventRegistrationToken token); + +} + +/// ICoreWebView2Frame provides direct access to the iframes information. +/// You can get an ICoreWebView2Frame by handling the ICoreWebView2_4::add_FrameCreated event. +[uuid(f1131a5e-9ba9-11eb-a8b3-0242ac130003), object, pointer_default(unique)] +interface ICoreWebView2Frame : IUnknown { + /// The name of the iframe from the iframe html tag declaring it. + /// You can access this property even if the iframe is destroyed. + /// + /// The caller must free the returned string with `CoTaskMemFree`. See + /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings). + [propget] HRESULT Name([ out, retval ] LPWSTR * name); + /// Raised when the iframe changes its window.name property. + HRESULT add_NameChanged( + [in] ICoreWebView2FrameNameChangedEventHandler * eventHandler, + [out] EventRegistrationToken * token); + /// Remove an event handler previously added with add_NameChanged. + HRESULT remove_NameChanged([in] EventRegistrationToken token); + + /// Add the provided host object to script running in the iframe with the + /// specified name for the list of the specified origins. The host object + /// will be accessible for this iframe only if the iframe's origin during + /// access matches one of the origins which are passed. The provided origins + /// will be normalized before comparing to the origin of the document. + /// So the scheme name is made lower case, the host will be punycode decoded + /// as appropriate, default port values will be removed, and so on. + /// This means the origin's host may be punycode encoded or not and will match + /// regardless. If list contains malformed origin the call will fail. + /// The method can be called multiple times in a row without calling + /// RemoveHostObjectFromScript for the same object name. It will replace + /// the previous object with the new object and new list of origins. + /// List of origins will be treated as following: + /// 1. empty list - call will succeed and object will be added for the iframe + /// but it will not be exposed to any origin; + /// 2. list with origins - during access to host object from iframe the + /// origin will be checked that it belongs to this list; + /// 3. list with "*" element - host object will be available for iframe for + /// all origins. We suggest not to use this feature without understanding + /// security implications of giving access to host object from from iframes + /// with unknown origins. + /// 4. list with "file://" element - host object will be available for iframes + /// loaded via file protocol. + /// Calling this method fails if it is called after the iframe is destroyed. + /// \snippet ScenarioAddHostObject.cpp AddHostObjectToScriptWithOrigins + /// For more information about host objects navigate to + /// ICoreWebView2::AddHostObjectToScript. + HRESULT AddHostObjectToScriptWithOrigins( + [in] LPCWSTR name, + [in] VARIANT * object, + [in] UINT32 originsCount, + [ in, size_is(originsCount) ] LPCWSTR * origins); + /// Remove the host object specified by the name so that it is no longer + /// accessible from JavaScript code in the iframe. While new access + /// attempts are denied, if the object is already obtained by JavaScript code + /// in the iframe, the JavaScript code continues to have access to that + /// object. Calling this method for a name that is already removed or was + /// never added fails. If the iframe is destroyed this method will return fail + /// also. + HRESULT RemoveHostObjectFromScript([in] LPCWSTR name); + + /// The Destroyed event is raised when the iframe corresponding + /// to this CoreWebView2Frame object is removed or the document + /// containing that iframe is destroyed. + HRESULT add_Destroyed( + [in] ICoreWebView2FrameDestroyedEventHandler * eventHandler, + [out] EventRegistrationToken * token); + /// Remove an event handler previously added with add_Destroyed. + HRESULT remove_Destroyed([in] EventRegistrationToken token); + /// Check whether a frame is destroyed. Returns true during + /// the Destroyed event. + HRESULT IsDestroyed([ out, retval ] BOOL * destroyed); +} + +/// A continuation of the ICoreWebView2Frame interface with navigation events, +/// executing script and posting web messages. +[uuid(7a6a5834-d185-4dbf-b63f-4a9bc43107d4), object, pointer_default(unique)] +interface ICoreWebView2Frame2 : ICoreWebView2Frame { + /// Add an event handler for the `NavigationStarting` event. + /// A frame navigation will raise a `NavigationStarting` event and + /// a `CoreWebView2.FrameNavigationStarting` event. All of the + /// `FrameNavigationStarting` event handlers for the current frame will be + /// run before the `NavigationStarting` event handlers. All of the event handlers + /// share a common `NavigationStartingEventArgs` object. Whichever event handler is + /// last to change the `NavigationStartingEventArgs.Cancel` property will + /// decide if the frame navigation will be cancelled. Redirects raise this + /// event as well, and the navigation id is the same as the original one. + /// + /// Navigations will be blocked until all `NavigationStarting` and + /// `CoreWebView2.FrameNavigationStarting` event handlers return. + HRESULT add_NavigationStarting( + [in] ICoreWebView2FrameNavigationStartingEventHandler* eventHandler, + [out] EventRegistrationToken* token); + + /// Remove an event handler previously added with `add_NavigationStarting`. + HRESULT remove_NavigationStarting( + [in] EventRegistrationToken token); + + /// Add an event handler for the `ContentLoading` event. `ContentLoading` + /// triggers before any content is loaded, including scripts added with + /// `AddScriptToExecuteOnDocumentCreated`. `ContentLoading` does not trigger + /// if a same page navigation occurs (such as through `fragment` + /// navigations or `history.pushState` navigations). This operation + /// follows the `NavigationStarting` and precedes `NavigationCompleted` events. + HRESULT add_ContentLoading( + [in] ICoreWebView2FrameContentLoadingEventHandler * eventHandler, + [out] EventRegistrationToken* token); + + /// Remove an event handler previously added with `add_ContentLoading`. + HRESULT remove_ContentLoading( + [in] EventRegistrationToken token); + + /// Add an event handler for the `NavigationCompleted` event. + /// `NavigationCompleted` runs when the CoreWebView2Frame has completely + /// loaded (concurrently when `body.onload` runs) or loading stopped with error. + HRESULT add_NavigationCompleted( + [in] ICoreWebView2FrameNavigationCompletedEventHandler * + eventHandler, + [out] EventRegistrationToken* token); + + /// Remove an event handler previously added with `add_NavigationCompleted`. + HRESULT remove_NavigationCompleted( + [in] EventRegistrationToken token); + + /// Add an event handler for the DOMContentLoaded event. + /// DOMContentLoaded is raised when the iframe html document has been parsed. + /// This aligns with the document's DOMContentLoaded event in html. + HRESULT add_DOMContentLoaded( + [in] ICoreWebView2FrameDOMContentLoadedEventHandler * eventHandler, + [out] EventRegistrationToken* token); + /// Remove an event handler previously added with add_DOMContentLoaded. + HRESULT remove_DOMContentLoaded( + [in] EventRegistrationToken token); + + /// Run JavaScript code from the javascript parameter in the current frame. + /// The result of evaluating the provided JavaScript is passed to the completion handler. + /// The result value is a JSON encoded string. If the result is undefined, + /// contains a reference cycle, or otherwise is not able to be encoded into + /// JSON, then the result is considered to be null, which is encoded + /// in JSON as the string "null". + /// + /// \> [!NOTE]\n\> A function that has no explicit return value returns undefined. If the + /// script that was run throws an unhandled exception, then the result is + /// also "null". This method is applied asynchronously. If the method is + /// run before `ContentLoading`, the script will not be executed + /// and the string "null" will be returned. + /// This operation executes the script even if `ICoreWebView2Settings::IsScriptEnabled` is + /// set to `FALSE`. + /// + /// \snippet ScenarioDOMContentLoaded.cpp ExecuteScriptFrame + HRESULT ExecuteScript( + [in] LPCWSTR javaScript, + [in] ICoreWebView2ExecuteScriptCompletedHandler* handler); + + /// Posts the specified webMessage to the frame. + /// The frame receives the message by subscribing to the `message` event of + /// the `window.chrome.webview` of the frame document. + /// + /// ```cpp + /// window.chrome.webview.addEventListener('message', handler) + /// window.chrome.webview.removeEventListener('message', handler) + /// ``` + /// + /// The event args is an instances of `MessageEvent`. The + /// `ICoreWebView2Settings::IsWebMessageEnabled` setting must be `TRUE` or + /// the message will not be sent. The `data` property of the event + /// args is the `webMessage` string parameter parsed as a JSON string into a + /// JavaScript object. The `source` property of the event args is a reference + /// to the `window.chrome.webview` object. For information about sending + /// messages from the HTML document in the WebView to the host, navigate to + /// [add_WebMessageReceived](/microsoft-edge/webview2/reference/win32/icorewebview2#add_webmessagereceived). + /// The message is delivered asynchronously. If a navigation occurs before the + /// message is posted to the page, the message is discarded. + HRESULT PostWebMessageAsJson([in] LPCWSTR webMessageAsJson); + + /// Posts a message that is a simple string rather than a JSON string + /// representation of a JavaScript object. This behaves in exactly the same + /// manner as `PostWebMessageAsJson`, but the `data` property of the event + /// args of the `window.chrome.webview` message is a string with the same + /// value as `webMessageAsString`. Use this instead of + /// `PostWebMessageAsJson` if you want to communicate using simple strings + /// rather than JSON objects. + HRESULT PostWebMessageAsString([in] LPCWSTR webMessageAsString); + + /// Add an event handler for the `WebMessageReceived` event. + /// `WebMessageReceived` runs when the + /// `ICoreWebView2Settings::IsWebMessageEnabled` setting is set and the + /// frame document runs `window.chrome.webview.postMessage`. + /// The `postMessage` function is `void postMessage(object)` + /// where object is any object supported by JSON conversion. + /// + /// \snippet assets\ScenarioWebMessage.html chromeWebView + /// + /// When the frame calls `postMessage`, the object parameter is converted to a + /// JSON string and is posted asynchronously to the host process. This will + /// result in the handlers `Invoke` method being called with the JSON string + /// as its parameter. + /// + /// \snippet ScenarioWebMessage.cpp WebMessageReceivedIFrame + HRESULT add_WebMessageReceived( + [in] ICoreWebView2FrameWebMessageReceivedEventHandler * + handler, + [out] EventRegistrationToken * token); + + /// Remove an event handler previously added with `add_WebMessageReceived`. + HRESULT remove_WebMessageReceived([in] EventRegistrationToken token); +} + +/// Receives `FrameCreated` event. +[uuid(38059770-9baa-11eb-a8b3-0242ac130003), object, pointer_default(unique)] +interface ICoreWebView2FrameCreatedEventHandler : IUnknown { + /// Provides the result for the iframe created event. + HRESULT Invoke([in] ICoreWebView2 * sender, + [in] ICoreWebView2FrameCreatedEventArgs * args); +} + +/// Receives `FrameNameChanged` event. +[uuid(435c7dc8-9baa-11eb-a8b3-0242ac130003), object, pointer_default(unique)] +interface ICoreWebView2FrameNameChangedEventHandler : IUnknown { + /// Provides the result for the iframe name changed event. + /// No event args exist and the `args` parameter is set to `null`. + HRESULT Invoke([in] ICoreWebView2Frame * sender, [in] IUnknown * args); +} + +/// Receives `NavigationStarting` events for iframe. +[uuid(e79908bf-2d5d-4968-83db-263fea2c1da3), object, pointer_default(unique)] +interface ICoreWebView2FrameNavigationStartingEventHandler : IUnknown { + /// Provides the event args for the corresponding event. + HRESULT Invoke( + [in] ICoreWebView2Frame* sender, + [in] ICoreWebView2NavigationStartingEventArgs* args); +} + +/// Receives `ContentLoading` events for iframe. +[uuid(0d6156f2-d332-49a7-9e03-7d8f2feeee54), object, pointer_default(unique)] +interface ICoreWebView2FrameContentLoadingEventHandler : IUnknown { + /// Provides the event args for the corresponding event. + HRESULT Invoke( + [in] ICoreWebView2Frame* sender, + [in] ICoreWebView2ContentLoadingEventArgs* args); +} + +/// Receives `NavigationCompleted` events for iframe. +[uuid(609302ad-0e36-4f9a-a210-6a45272842a9), object, pointer_default(unique)] +interface ICoreWebView2FrameNavigationCompletedEventHandler : IUnknown { + /// Provides the event args for the corresponding event. + HRESULT Invoke( + [in] ICoreWebView2Frame* sender, + [in] ICoreWebView2NavigationCompletedEventArgs* args); +} + +/// Receives `DOMContentLoaded` events for iframe. +[uuid(38d9520d-340f-4d1e-a775-43fce9753683), object, pointer_default(unique)] +interface ICoreWebView2FrameDOMContentLoadedEventHandler : IUnknown { + /// Provides the event args for the corresponding event. + HRESULT Invoke( + [in] ICoreWebView2Frame* sender, + [in] ICoreWebView2DOMContentLoadedEventArgs* args); +} + +/// Receives `WebMessageReceived` events for iframe. +[uuid(e371e005-6d1d-4517-934b-a8f1629c62a5), object, pointer_default(unique)] +interface ICoreWebView2FrameWebMessageReceivedEventHandler : IUnknown { + /// Provides the event args for the corresponding event. + HRESULT Invoke( + [in] ICoreWebView2Frame* sender, + [in] ICoreWebView2WebMessageReceivedEventArgs* args); +} + +/// Event args for the `FrameCreated` events. +[uuid(4d6e7b5e-9baa-11eb-a8b3-0242ac130003), object, pointer_default(unique)] +interface ICoreWebView2FrameCreatedEventArgs : IUnknown { + /// The frame which was created. + [propget] HRESULT Frame([ out, retval ] ICoreWebView2Frame **frame); +} + +/// Receives `FrameDestroyed` event. +[uuid(59dd7b4c-9baa-11eb-a8b3-0242ac130003), object, pointer_default(unique)] +interface ICoreWebView2FrameDestroyedEventHandler : IUnknown { + /// Provides the result for the iframe destroyed event. + /// No event args exist and the `args` parameter is set to `null`. + HRESULT Invoke([in] ICoreWebView2Frame * sender, [in] IUnknown * args); +} + +/// Add an event handler for the `DownloadStarting` event. +[uuid(efedc989-c396-41ca-83f7-07f845a55724), object, pointer_default(unique)] +interface ICoreWebView2DownloadStartingEventHandler : IUnknown { + /// Provides the event args for the corresponding event. + HRESULT Invoke( + [in] ICoreWebView2* sender, + [in] ICoreWebView2DownloadStartingEventArgs* args); +} + +/// Event args for the `DownloadStarting` event. +[uuid(e99bbe21-43e9-4544-a732-282764eafa60), object, pointer_default(unique)] +interface ICoreWebView2DownloadStartingEventArgs : IUnknown { + /// Returns the `ICoreWebView2DownloadOperation` for the download that + /// has started. + [propget] HRESULT DownloadOperation( + [out, retval] ICoreWebView2DownloadOperation** downloadOperation); + + /// The host may set this flag to cancel the download. If canceled, the + /// download save dialog is not displayed regardless of the + /// `Handled` property. + [propget] HRESULT Cancel([out, retval] BOOL* cancel); + + /// Sets the `Cancel` property. + [propput] HRESULT Cancel([in] BOOL cancel); + + /// The path to the file. If setting the path, the host should ensure that it + /// is an absolute path, including the file name, and that the path does not + /// point to an existing file. If the path points to an existing file, the + /// file will be overwritten. If the directory does not exist, it is created. + /// + /// The caller must free the returned string with `CoTaskMemFree`. See + /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings). + [propget] HRESULT ResultFilePath([out, retval] LPWSTR* resultFilePath); + + /// Sets the `ResultFilePath` property. + [propput] HRESULT ResultFilePath([in] LPCWSTR resultFilePath); + + /// The host may set this flag to `TRUE` to hide the default download dialog + /// for this download. The download will progress as normal if it is not + /// canceled, there will just be no default UI shown. By default the value is + /// `FALSE` and the default download dialog is shown. + [propget] HRESULT Handled([out, retval] BOOL* handled); + + /// Sets the `Handled` property. + [propput] HRESULT Handled([in] BOOL handled); + + /// Returns an `ICoreWebView2Deferral` object. Use this operation to + /// complete the event at a later time. + HRESULT GetDeferral([out, retval] ICoreWebView2Deferral** deferral); +} + +/// Implements the interface to receive `BytesReceivedChanged` event. Use the +/// `ICoreWebView2DownloadOperation.BytesReceived` property to get the received +/// bytes count. +[uuid(828e8ab6-d94c-4264-9cef-5217170d6251), object, pointer_default(unique)] +interface ICoreWebView2BytesReceivedChangedEventHandler : IUnknown { + /// Provides the event args for the corresponding event. No event args exist + /// and the `args` parameter is set to `null`. + HRESULT Invoke( + [in] ICoreWebView2DownloadOperation* sender, [in] IUnknown* args); +} + +/// Implements the interface to receive `EstimatedEndTimeChanged` event. Use the +/// `ICoreWebView2DownloadOperation.EstimatedEndTime` property to get the new +/// estimated end time. +[uuid(28f0d425-93fe-4e63-9f8d-2aeec6d3ba1e), object, pointer_default(unique)] +interface ICoreWebView2EstimatedEndTimeChangedEventHandler : IUnknown { + /// Provides the event args for the corresponding event. No event args exist + /// and the `args` parameter is set to `null`. + HRESULT Invoke( + [in] ICoreWebView2DownloadOperation* sender, [in] IUnknown* args); +} + +/// Implements the interface to receive `StateChanged` event. Use the +/// `ICoreWebView2DownloadOperation.State` property to get the current state, +/// which can be in progress, interrupted, or completed. Use the +/// `ICoreWebView2DownloadOperation.InterruptReason` property to get the +/// interrupt reason if the download is interrupted. +[uuid(81336594-7ede-4ba9-bf71-acf0a95b58dd), object, pointer_default(unique)] +interface ICoreWebView2StateChangedEventHandler : IUnknown { + /// Provides the event args for the corresponding event. No event args exist + /// and the `args` parameter is set to `null`. + HRESULT Invoke( + [in] ICoreWebView2DownloadOperation* sender, [in] IUnknown* args); +} + +/// Represents a download operation. Gives access to the download's metadata +/// and supports a user canceling, pausing, or resuming the download. +[uuid(3d6b6cf2-afe1-44c7-a995-c65117714336), object, pointer_default(unique)] +interface ICoreWebView2DownloadOperation : IUnknown { + /// Add an event handler for the `BytesReceivedChanged` event. + /// + /// \snippet ScenarioCustomDownloadExperience.cpp BytesReceivedChanged + HRESULT add_BytesReceivedChanged( + [in] ICoreWebView2BytesReceivedChangedEventHandler* eventHandler, + [out] EventRegistrationToken* token); + + /// Remove an event handler previously added with `add_BytesReceivedChanged`. + HRESULT remove_BytesReceivedChanged( + [in] EventRegistrationToken token); + + /// Add an event handler for the `EstimatedEndTimeChanged` event. + HRESULT add_EstimatedEndTimeChanged( + [in] ICoreWebView2EstimatedEndTimeChangedEventHandler* eventHandler, + [out] EventRegistrationToken* token); + + /// Remove an event handler previously added with `add_EstimatedEndTimeChanged`. + HRESULT remove_EstimatedEndTimeChanged( + [in] EventRegistrationToken token); + + /// Add an event handler for the `StateChanged` event. + /// + /// \snippet ScenarioCustomDownloadExperience.cpp StateChanged + HRESULT add_StateChanged( + [in] ICoreWebView2StateChangedEventHandler* eventHandler, + [out] EventRegistrationToken* token); + + /// Remove an event handler previously added with `add_StateChanged`. + HRESULT remove_StateChanged( + [in] EventRegistrationToken token); + + /// The URI of the download. + /// + /// The caller must free the returned string with `CoTaskMemFree`. See + /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings). + [propget] HRESULT Uri([out, retval] LPWSTR* uri); + + /// The Content-Disposition header value from the download's HTTP response. + /// + /// The caller must free the returned string with `CoTaskMemFree`. See + /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings). + [propget] HRESULT ContentDisposition([out, retval] LPWSTR* contentDisposition); + + /// MIME type of the downloaded content. + /// + /// The caller must free the returned string with `CoTaskMemFree`. See + /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings). + [propget] HRESULT MimeType([out, retval] LPWSTR* mimeType); + + /// The expected size of the download in total number of bytes based on the + /// HTTP Content-Length header. Returns -1 if the size is unknown. + [propget] HRESULT TotalBytesToReceive([out, retval] INT64* totalBytesToReceive); + + /// The number of bytes that have been written to the download file. + [propget] HRESULT BytesReceived([out, retval] INT64* bytesReceived); + + /// The estimated end time in [ISO 8601 Date and Time Format](https://www.iso.org/iso-8601-date-and-time-format.html). + /// + /// The caller must free the returned string with `CoTaskMemFree`. See + /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings). + [propget] HRESULT EstimatedEndTime([out, retval] LPWSTR* estimatedEndTime); + + /// The absolute path to the download file, including file name. Host can change + /// this from `ICoreWebView2DownloadStartingEventArgs`. + /// + /// The caller must free the returned string with `CoTaskMemFree`. See + /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings). + [propget] HRESULT ResultFilePath([out, retval] LPWSTR* resultFilePath); + + /// The state of the download. A download can be in progress, interrupted, or + /// completed. See `COREWEBVIEW2_DOWNLOAD_STATE` for descriptions of states. + [propget] HRESULT State([out, retval] COREWEBVIEW2_DOWNLOAD_STATE* downloadState); + + /// The reason why connection with file host was broken. + [propget] HRESULT InterruptReason( + [out, retval] COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON* interruptReason); + + /// Cancels the download. If canceled, the default download dialog shows + /// that the download was canceled. Host should set the `Cancel` property from + /// `ICoreWebView2SDownloadStartingEventArgs` if the download should be + /// canceled without displaying the default download dialog. + HRESULT Cancel(); + + /// Pauses the download. If paused, the default download dialog shows that the + /// download is paused. No effect if download is already paused. Pausing a + /// download changes the state to `COREWEBVIEW2_DOWNLOAD_STATE_INTERRUPTED` + /// with `InterruptReason` set to `COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_USER_PAUSED`. + HRESULT Pause(); + + /// Resumes a paused download. May also resume a download that was interrupted + /// for another reason, if `CanResume` returns true. Resuming a download changes + /// the state from `COREWEBVIEW2_DOWNLOAD_STATE_INTERRUPTED` to + /// `COREWEBVIEW2_DOWNLOAD_STATE_IN_PROGRESS`. + HRESULT Resume(); + + /// Returns true if an interrupted download can be resumed. Downloads with + /// the following interrupt reasons may automatically resume without you + /// calling any methods: + /// `COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_SERVER_NO_RANGE`, + /// `COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_FILE_HASH_MISMATCH`, + /// `COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_FILE_TOO_SHORT`. + /// In these cases download progress may be restarted with `BytesReceived` + /// reset to 0. + [propget] HRESULT CanResume([out, retval] BOOL* canResume); +} + +/// A continuation of the `ICoreWebView2ProcessFailedEventArgs` interface. +[uuid(4dab9422-46fa-4c3e-a5d2-41d2071d3680), object, pointer_default(unique)] +interface ICoreWebView2ProcessFailedEventArgs2 : ICoreWebView2ProcessFailedEventArgs { + + /// The reason for the process failure. Some of the reasons are only + /// applicable to specific values of + /// `ICoreWebView2ProcessFailedEventArgs::ProcessFailedKind`, and the + /// following `ProcessFailedKind` values always return the indicated reason + /// value: + /// + /// ProcessFailedKind | Reason + /// ---|--- + /// COREWEBVIEW2_PROCESS_FAILED_KIND_BROWSER_PROCESS_EXITED | COREWEBVIEW2_PROCESS_FAILED_REASON_UNEXPECTED + /// COREWEBVIEW2_PROCESS_FAILED_KIND_RENDER_PROCESS_UNRESPONSIVE | COREWEBVIEW2_PROCESS_FAILED_REASON_UNRESPONSIVE + /// + /// For other `ProcessFailedKind` values, the reason may be any of the reason + /// values. To learn about what these values mean, see + /// `COREWEBVIEW2_PROCESS_FAILED_REASON`. + [propget] HRESULT Reason( + [out, retval] COREWEBVIEW2_PROCESS_FAILED_REASON* reason); + + /// The exit code of the failing process, for telemetry purposes. The exit + /// code is always `STILL_ACTIVE` (`259`) when `ProcessFailedKind` is + /// `COREWEBVIEW2_PROCESS_FAILED_KIND_RENDER_PROCESS_UNRESPONSIVE`. + [propget] HRESULT ExitCode( + [out, retval] int* exitCode); + + /// Description of the process assigned by the WebView2 Runtime. This is a + /// technical English term appropriate for logging or development purposes, + /// and not localized for the end user. It applies to utility processes (for + /// example, "Audio Service", "Video Capture") and plugin processes (for + /// example, "Flash"). The returned `processDescription` is empty if the + /// WebView2 Runtime did not assign a description to the process. + /// + /// The caller must free the returned string with `CoTaskMemFree`. See + /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings). + [propget] HRESULT ProcessDescription( + [out, retval] LPWSTR* processDescription); + + /// The collection of `FrameInfo`s for frames in the `ICoreWebView2` that were + /// being rendered by the failed process. The content in these frames is + /// replaced with an error page. + /// This is only available when `ProcessFailedKind` is + /// `COREWEBVIEW2_PROCESS_FAILED_KIND_FRAME_RENDER_PROCESS_EXITED`; + /// `frames` is `null` for all other process failure kinds, including the case + /// in which the failed process was the renderer for the main frame and + /// subframes within it, for which the failure kind is + /// `COREWEBVIEW2_PROCESS_FAILED_KIND_RENDER_PROCESS_EXITED`. + [propget] HRESULT FrameInfosForFailedProcess( + [out, retval] ICoreWebView2FrameInfoCollection** frames); +} + +/// Collection of `FrameInfo`s (name and source). Used to list the affected +/// frames' info when a frame-only render process failure occurs in the +/// `ICoreWebView2`. +[uuid(8f834154-d38e-4d90-affb-6800a7272839), object, pointer_default(unique)] +interface ICoreWebView2FrameInfoCollection : IUnknown { + + /// Gets an iterator over the collection of `FrameInfo`s. + + HRESULT GetIterator( + [out, retval] ICoreWebView2FrameInfoCollectionIterator** iterator); +} + +/// Iterator for a collection of `FrameInfo`s. For more info, see +/// `ICoreWebView2ProcessFailedEventArgs2` and +/// `ICoreWebView2FrameInfoCollection`. +[uuid(1bf89e2d-1b2b-4629-b28f-05099b41bb03), object, pointer_default(unique)] +interface ICoreWebView2FrameInfoCollectionIterator : IUnknown { + + /// `TRUE` when the iterator has not run out of `FrameInfo`s. If the + /// collection over which the iterator is iterating is empty or if the + /// iterator has gone past the end of the collection, then this is `FALSE`. + + [propget] HRESULT HasCurrent([out, retval] BOOL* hasCurrent); + + /// Get the current `ICoreWebView2FrameInfo` of the iterator. + /// Returns `HRESULT_FROM_WIN32(ERROR_INVALID_INDEX)` if HasCurrent is + /// `FALSE`. + + HRESULT GetCurrent([out, retval] ICoreWebView2FrameInfo** frameInfo); + + /// Move the iterator to the next `FrameInfo` in the collection. + + HRESULT MoveNext([out, retval] BOOL* hasNext); +} + +/// Provides a set of properties for a frame in the `ICoreWebView2`. +[uuid(da86b8a1-bdf3-4f11-9955-528cefa59727), object, pointer_default(unique)] +interface ICoreWebView2FrameInfo : IUnknown { + + /// The name attribute of the frame, as in `