1 /++
2 	A web view wrapper. Uses CEF on Linux and WebView2 on Windows.
3 
4 	Microsoft WebView2 is fairly stable and is unlikely to break, but CEF
5 	is not remotely stable and likely to break every release. You'll have
6 	to get the same version as me to use this unless you want to generate
7 	your own bindings (procedure found in the file comments). Details below.
8 
9 
10 	I currently built against the version listed below and it uses UTF-16 strings.
11 
12 	July 2024-present: 126.2.10+g61241e4+chromium-126.0.6478.127
13 
14 	November 2023: cef_binary_119.3.1+gf768881+chromium-119.0.6045.124_linux64_minimal.tar.bz2
15 
16 	November 2022: cef_binary_107.1.9+g1f0a21a+chromium-107.0.5304.110_linux64_minimal.tar.bz2
17 
18 	November 2021: 95.7.17+g4208276+chromium-95.0.4638.69
19 
20 	Note my ceftranslate.d for instructions to start the update process.
21 
22 	Then to install the cef put in the Resources in the Release directory (*.pak and *.dat
23 	out of Resources, failure to do this will cause an abort on ICU file descriptor things)
24 	and copy the locales to /opt/cef/Resources/Locales
25 
26 	You can download compatible builds from https://cef-builds.spotifycdn.com/index.html
27 	just make sure to put in the version filter and check "all builds" to match it.
28 
29 	You do NOT actually need the cef to build the application, but it must be
30 	on the user's machine to run it. It looks in /opt/cef/ on Linux.
31 
32 	Work in progress. DO NOT USE YET as I am prolly gonna break everything too.
33 
34 	On Windows, you need to distribute the WebView2Loader.dll with your exe. That
35 	is found in the web view 2 sdk. Furthermore, users will have to install the runtime.
36 
37 	Please note; the Microsoft terms and conditions say they may be able to collect
38 	information about your users if you use this on Windows.
39 	see: https://developer.microsoft.com/en-us/microsoft-edge/webview2/
40 
41 
42 +/
43 module arsd.webview;
44 
45 enum WebviewEngine {
46 	none,
47 	cef,
48 	wv2,
49 	webkit_gtk
50 }
51 // see activeEngine which is an enum you can static if on
52 
53 
54 // I might recover this gtk thing but i don't like gtk
55 // dmdi webview -version=linux_gtk -version=Demo
56 
57 // the setup link for Microsoft:
58 // https://go.microsoft.com/fwlink/p/?LinkId=2124703
59 
60 
61 version(Windows) {
62 import arsd.simpledisplay;
63 import arsd.com;
64 import core.atomic;
65 
66 //import std.stdio;
67 
68 private template InvokerArgFor(T, Context) {
69 	alias invoker = typeof(&T.init.Invoke);
70 	static if(is(invoker fntype == delegate)) {
71 		static if(is(fntype Params == __parameters))
72 			alias InvokerArgFor = HRESULT function(Params, Context);
73 		else
74 			static assert(0);
75 	}
76 }
77 
78 T callback(T, Context)(InvokerArgFor!(T, Context) dg, Context ctx) {
79 	return new class(dg, ctx) T {
80 		extern(Windows):
81 
82 		static if(is(typeof(T.init.Invoke) R == return))
83 		static if(is(typeof(T.init.Invoke) P == __parameters))
84   		override R Invoke(P _args_) {
85 			return dgMember(_args_, ctxMember);
86 		}
87 
88 		InvokerArgFor!(T, Context) dgMember;
89 		Context ctxMember;
90 
91 		this(typeof(dgMember) dg_, Context ctx_) {
92 			this.dgMember = dg_;
93 			this.ctxMember = ctx_;
94 			AddRef();
95 		}
96 
97 		override HRESULT QueryInterface(const (IID)*riid, LPVOID *ppv) {
98 			if (IID_IUnknown == *riid) {
99 				*ppv = cast(void*) cast(IUnknown) this;
100 			}
101 			else if (T.iid == *riid) {
102 				*ppv = cast(void*) cast(T) this;
103 			}
104 			else {
105 				*ppv = null;
106 				return E_NOINTERFACE;
107 			}
108 
109 			AddRef();
110 			return NOERROR;
111 		}
112 
113 		shared LONG count = 0;
114 		ULONG AddRef() {
115 			auto cnt = atomicOp!"+="(count, 1);
116 			if(cnt == 1) {
117 				import core.memory;
118 				GC.addRoot(cast(void*) this);
119 			}
120 			return cnt;
121 		}
122 		ULONG Release() {
123 			auto cnt = atomicOp!"-="(count, 1);
124 			if(cnt == 0) {
125 				import core.memory;
126 				GC.removeRoot(cast(void*) this);
127 			}
128 			return cnt;
129 		}
130 	};
131 }
132 
133 enum activeEngine = WebviewEngine.wv2;
134 
135 struct RC(T) {
136 	private T object;
137 	this(T t, bool addRef = true) {
138 		object = t;
139 		if(addRef && object)
140 			object.AddRef();
141 	}
142 	this(this) {
143 		if(object is null) return;
144 		object.AddRef();
145 	}
146 	~this() {
147 		if(object is null) return;
148 		object.Release();
149 		object = null;
150 	}
151 
152 	RC!I queryInterface(I)() {
153 		I i;
154 		auto err = object.QueryInterface(&I.iid, cast(void**) &i);
155 		if(err != S_OK)
156 			return RC!I(null, false);
157 		else
158 			return RC!I(i, false); // QueryInterface already calls AddRef
159 	}
160 
161 	bool opCast(T:bool)() nothrow {
162 		return object !is null;
163 	}
164 
165 	void opAssign(T obj) {
166 		obj.AddRef();
167 		if(object)
168 			object.Release();
169 		this.object = obj;
170 	}
171 
172 	T raw() { return object; }
173 
174 	T returnable() {
175 		if(object is null) return null;
176 		return object;
177 	}
178 
179 	T passable() {
180 		if(object is null) return null;
181 		object.AddRef();
182 		return object;
183 	}
184 
185 	static foreach(memberName; __traits(allMembers /*derivedMembers*/, T)) {
186 		mixin ForwardMethod!(memberName);
187 	}
188 }
189 
190 /+
191 // does NOT add ref, use after you queryInterface
192 RC!T makeRcd(T)(T t) {
193 	return RC!T(t, false);
194 }
195 +/
196 
197 extern(Windows)
198 alias StringMethod = int delegate(wchar**);
199 
200 string toGC(scope StringMethod dg) {
201 	wchar* t;
202 	auto res = dg(&t);
203 	if(res != S_OK)
204 		throw new ComException(res);
205 
206 	auto ot = t;
207 
208 	string s;
209 
210 	while(*t) {
211 		import std.utf;
212 		char[4] buffer;
213 		wchar item = *t;
214 		t++;
215 		if(item >= 0xD800 && item <= 0xDFFF) {
216 			wchar second = *t;
217 			t++;
218 			wchar low, high;
219 			if(item >= 0xD800 && item <= 0xDBFF) {
220 				high = item;
221 				low = second;
222 			} else {
223 				high = second;
224 				low = item;
225 			}
226 
227 			if(
228 				high >= 0xD800 && high <= 0xDBFF
229 				&&
230 				low >= 0xDC00 && low <= 0xDCFF
231 			 ) {
232 				dchar d = (high - 0xD800) * 0x400 + (low - 0xDC00) + 0x10000;
233 
234 				s ~= buffer[0 .. encode(buffer, d)];
235 			} else {
236 				// we could probably throw something tbh
237 			}
238 		} else {
239 			s ~= buffer[0 .. encode(buffer, item)];
240 		}
241 	}
242 
243 	auto ret = s;
244 
245 	CoTaskMemFree(ot);
246 
247 	return ret;
248 }
249 
250 class ComException : Exception {
251 	HRESULT errorCode;
252 	this(HRESULT errorCode) {
253 		import std.format;
254 		super(format("HRESULT: 0x%08x", errorCode));
255 		// FIXME: call FormatMessage
256 	}
257 }
258 
259 mixin template ForwardMethod(string methodName) {
260 	static if(methodName.length > 4 && methodName[0 .. 4] == "put_") {
261 		static if(is(typeof(__traits(getMember, T, memberName)) Params == function))
262 			private alias Type = Params[0];
263 		mixin(q{ @property void } ~ memberName[4 .. $] ~ q{(Type v) {
264 			auto errorCode = __traits(getMember, object, memberName)(v);
265 			if(errorCode)
266 				throw new ComException(errorCode);
267 		}
268 		});
269 	} else
270 	static if(methodName.length > 4 && methodName[0 .. 4] == "get_") {
271 		static if(is(typeof(__traits(getMember, T, memberName)) Params == function))
272 			private alias Type = typeof(*(Params[0].init));
273 		mixin(q{ @property Type } ~ memberName[4 .. $] ~ q{() {
274 			Type response;
275 			auto errorCode = __traits(getMember, object, memberName)(&response);
276 			if(errorCode)
277 				throw new ComException(errorCode);
278 			return response;
279 		}
280 		});
281 	} else
282 	static if(methodName.length > 4 && methodName[0 .. 4] == "add_") {
283 		static if(is(typeof(__traits(getMember, T, memberName)) Params == function))
284 			alias Handler = Params[0];
285 		mixin(q{ EventRegistrationToken } ~ memberName ~ q{ (Context)(InvokerArgFor!(Handler, Context) handler, Context ctx) {
286 			EventRegistrationToken token;
287 			__traits(getMember, object, memberName)(callback!(Handler, Context)(handler, ctx), &token);
288 			return token;
289 		}});
290 	} else
291 	static if(methodName.length > 7 && methodName[0 .. 4] == "remove_") {
292 		mixin(q{ void } ~ memberName ~ q{ (EventRegistrationToken token) {
293 			__traits(getMember, object, memberName)(token);
294 		}});
295 	} else {
296 		// I could do the return value things by looking for these comments:
297 		// /+[out]+/ but be warned it is possible or a thing to have multiple out params (only one such function in here though i think)
298 		// /+[out, retval]+/
299 		// a find/replace could make them a UDA or something.
300 
301 		static if(is(typeof(__traits(getMember, T, memberName)) Params == function))
302 		static if(is(typeof(__traits(getMember, T, memberName)) Return == return))
303 
304 		mixin(q{ Return } ~ memberName ~ q{ (Params p) {
305 			// FIXME: check the return value and throw
306 			return __traits(getMember, object, memberName)(p);
307 		}
308 		});
309 
310 	}
311 }
312 
313 struct Wv2App {
314 	static bool active = false;
315 
316 	static HRESULT code;
317 	static bool initialized = false;
318 	static RC!ICoreWebView2Environment webview_env;
319 
320 	@disable this(this);
321 
322 	static void delegate(RC!ICoreWebView2Environment)[] pending;
323 	this(void delegate(RC!ICoreWebView2Environment) withEnvironment) {
324 		if(withEnvironment)
325 			pending ~= withEnvironment;
326 
327 		import core.sys.windows.com;
328 		CoInitializeEx(null, COINIT_APARTMENTTHREADED);
329 
330 		active = true;
331 
332 		auto lib = LoadLibraryW("WebView2Loader.dll"w.ptr);
333 		typeof(&CreateCoreWebView2EnvironmentWithOptions) func;
334 
335 		if(lib is null)
336 			throw new Exception("WebView2Loader.dll unable to load. The developer should bundle this with the application exe. It is found with the WebView2 SDK from nuget.");
337 		func = cast(typeof(func)) GetProcAddress(lib, CreateCoreWebView2EnvironmentWithOptions.mangleof);
338 		if(func is null)
339 			throw new Exception("CreateCoreWebView2EnvironmentWithOptions failed from WebView2Loader...");
340 
341 		auto result = func(null, null, null,
342 			callback!(ICoreWebView2CreateCoreWebView2EnvironmentCompletedHandler, Wv2App*)(
343 				function(error, env, this_) {
344 					this_.initialized = true;
345 					this_.code = error;
346 
347 					if(error)
348 						return error;
349 
350 					this_.webview_env = env;
351 
352 					auto len = pending.length;
353 					foreach(item; this_.pending) {
354 						item(this_.webview_env);
355 					}
356 
357 					this_.pending = this_.pending[len .. $];
358 
359 					return S_OK;
360 				}
361 			, &this)
362 		);
363 
364 		if(result != S_OK) {
365 			if(MessageBox(null, "The WebView2 runtime is not installed. Would you like to install it now? This will open a browser to download a file. After it installs, you can try running this program again.", "Missing file", MB_YESNO) == IDYES) {
366 				import std.process;
367 				browse("https://go.microsoft.com/fwlink/p/?LinkId=2124703");
368 			}
369 			throw new ComException(result);
370 		}
371 	}
372 
373 	@disable this();
374 
375 	~this() {
376 		active = false;
377 	}
378 
379 	static void useEnvironment(void delegate(RC!ICoreWebView2Environment) withEnvironment) {
380 		assert(active);
381 		assert(withEnvironment !is null);
382 		if(initialized) {
383 			if(code)
384 				throw new ComException(code);
385 			withEnvironment(webview_env);
386 		} else
387 			pending ~= withEnvironment;
388 	}
389 }
390 }
391 
392 
393 
394 /+
395 interface WebView {
396 	void refresh();
397 	void back();
398 	void forward();
399 	void stop();
400 
401 	void navigate(string url);
402 
403 	// the url and line are for error reporting purposes
404 	void executeJavascript(string code, string url = null, int line = 0);
405 
406 	void showDevTools();
407 
408 	// these are get/set properties that you can subscribe to with some system
409 
410 	mixin Observable!(string, "title");
411 	mixin Observable!(string, "url");
412 	mixin Observable!(string, "status");
413 	mixin Observable!(int, "loadingProgress");
414 }
415 +/
416 
417 
418 version(linux) {
419 version(linux_gtk) {} else
420 	version=cef;
421 }
422 
423 
424 version(cef) {
425 import arsd.simpledisplay;
426 
427 //pragma(lib, "cef");
428 
429 class BrowserProcessHandler : CEF!cef_browser_process_handler_t {
430 	this(void delegate(string dir, string[] args) onAlreadyRunningAppRelaunch) {
431 		this.onAlreadyRunningAppRelaunch = onAlreadyRunningAppRelaunch;
432 	}
433 
434 	private void delegate(string dir, string[] args) onAlreadyRunningAppRelaunch;
435 
436 	override void on_context_initialized() { }
437 
438 	override void on_before_child_process_launch(RC!cef_command_line_t) { }
439 	override void on_schedule_message_pump_work(long delayMs) { }
440 	override cef_client_t* get_default_client() { return null; }
441 	override void on_register_custom_preferences(cef_preferences_type_t, cef_preference_registrar_t*) {}
442 
443 	override int on_already_running_app_relaunch(RC!(cef_command_line_t) command_line, const(cef_string_utf16_t)* current_directory) nothrow {
444 		if(onAlreadyRunningAppRelaunch) {
445 
446 			string[] argList;
447 
448 			if(command_line.has_arguments()) {
449 				cef_string_list_t thing = libcef.string_list_alloc();
450 
451 				command_line.get_arguments(thing);
452 
453 				auto count = libcef.string_list_size(thing);
454 				foreach(i; 0 .. count) {
455 					cef_string_utf16_t v;
456 
457 					libcef.string_list_value(thing, i, &v);
458 
459 					argList ~= toGC(&v);
460 				}
461 				libcef.string_list_free(thing);
462 			}
463 
464 			try {
465 				onAlreadyRunningAppRelaunch(
466 					toGC(current_directory),
467 					argList
468 				);
469 			} catch(Exception e) {
470 
471 			}
472 
473 			return 1;
474 		} else {
475 			return 0;
476 		}
477 	}
478 	override cef_request_context_handler_t* get_default_request_context_handler() nothrow {
479 		return null;
480 	}
481 }
482 
483 
484 int cefProcessHelper() {
485 	import core.runtime;
486 	import core.stdc.stdlib;
487 
488 	cef_main_args_t main_args;
489 	version(linux) {
490 		main_args.argc = Runtime.cArgs.argc;
491 		main_args.argv = Runtime.cArgs.argv;
492 	} else version(Windows) {
493 		main_args.instance = GetModuleHandle(null);
494 	}
495 
496 	if(libcef.loadDynamicLibrary()) {
497 		int code = libcef.execute_process(&main_args, null, null);
498 		if(code >= 0)
499 			exit(code);
500 		return code;
501 	}
502 	return -1;
503 }
504 
505 shared static this() {
506 	cefProcessHelper();
507 }
508 
509 public struct CefApp {
510 	static bool active() {
511 		return count > 0;
512 	}
513 
514 	private __gshared int count = 0;
515 
516 	@disable this(this);
517 	@disable new();
518 	this(void delegate(cef_settings_t* settings) setSettings, void delegate(string dir, string[] args) onAlreadyRunningAppRelaunch) {
519 
520 		if(!libcef.loadDynamicLibrary())
521 			throw new Exception("failed to load cef dll");
522 
523 		count++;
524 
525 		import core.runtime;
526 		import core.stdc.stdlib;
527 
528 		cef_main_args_t main_args;
529 		version(linux) {
530 			main_args.argc = Runtime.cArgs.argc;
531 			main_args.argv = Runtime.cArgs.argv;
532 		} else version(Windows) {
533 			main_args.instance = GetModuleHandle(null);
534 		}
535 
536 		cef_settings_t settings;
537 		settings.size = cef_settings_t.sizeof;
538 		//settings.log_severity = cef_log_severity_t.LOGSEVERITY_DISABLE; // Show only warnings/errors
539 		settings.log_severity = cef_log_severity_t.LOGSEVERITY_INFO; // Show only warnings/errors
540 		settings.multi_threaded_message_loop = 1;
541 		settings.no_sandbox = 1;
542 
543 		version(linux)
544 		settings.locales_dir_path = cef_string_t("/opt/cef/Resources/locales");
545 
546 		if(setSettings !is null)
547 			setSettings(&settings);
548 
549 
550 		auto app = new class(onAlreadyRunningAppRelaunch) CEF!cef_app_t {
551 			BrowserProcessHandler bph;
552 			this(void delegate(string dir, string[] args) onAlreadyRunningAppRelaunch) {
553 				bph = new BrowserProcessHandler(onAlreadyRunningAppRelaunch);
554 			}
555 			override void on_before_command_line_processing(const(cef_string_t)*, RC!cef_command_line_t) {}
556 
557 			override cef_resource_bundle_handler_t* get_resource_bundle_handler() {
558 				return null;
559 			}
560 			override cef_browser_process_handler_t* get_browser_process_handler() {
561 				return bph.returnable;
562 			}
563 			override cef_render_process_handler_t* get_render_process_handler() {
564 				return null;
565 			}
566 			override void on_register_custom_schemes(cef_scheme_registrar_t*) {
567 
568 			}
569 		};
570 
571 		if(!libcef.initialize(&main_args, &settings, app.passable, null)) {
572 			throw new Exception("cef_initialize failed");
573 		}
574 	}
575 
576 	~this() {
577 		count--;
578 		// this call hangs and idk why.
579 		// FIXME
580 		//libcef.shutdown();
581 	}
582 }
583 
584 
585 version(Demo)
586 void main() {
587 	auto app = CefApp(null);
588 
589 	auto window = new SimpleWindow(640, 480, "D Browser", Resizability.allowResizing);
590 	flushGui;
591 
592 	cef_window_info_t window_info;
593 	/*
594 	window_info.x = 100;
595 	window_info.y = 100;
596 	window_info.width = 300;
597 	window_info.height = 300;
598 	*/
599 	//window_info.parent_window = window.nativeWindowHandle;
600 
601 	cef_string_t cef_url = cef_string_t("http://dpldocs.info/");//"http://youtube.com/"w);
602 
603 	//string url = "http://arsdnet.net/";
604 	//cef_string_utf8_to_utf16(url.ptr, url.length, &cef_url);
605 
606 	cef_browser_settings_t browser_settings;
607 	browser_settings.size = cef_browser_settings_t.sizeof;
608 
609 	auto client = new MyCefClient();
610 
611 	auto got = libcef.browser_host_create_browser(&window_info, client.passable, &cef_url, &browser_settings, null, null); // or _sync
612 
613 	window.eventLoop(0);
614 }
615 
616 
617 /++
618 	This gives access to the CEF functions. If you get a linker error for using an undefined function,
619 	it is probably because you did NOT go through this when dynamically loading.
620 
621 	(...similarly, if you get a segfault, it is probably because you DID go through this when static binding.)
622 +/
623 struct libcef {
624 	static __gshared:
625 
626 	bool isLoaded;
627 	bool loadAttempted;
628 	void* libHandle;
629 
630 	/// Make sure you call this only from one thread, probably at process startup. It caches internally and returns true if the load was successful.
631 	bool loadDynamicLibrary() {
632 		if(loadAttempted)
633 			return isLoaded;
634 
635 		loadAttempted = true;
636 
637 		version(linux) {
638 			import core.sys.posix.dlfcn;
639 			libHandle = dlopen("libcef.so", RTLD_NOW);
640 
641 			static void* loadsym(const char* name) {
642 				return dlsym(libHandle, name);
643 			}
644 		} else version(Windows) {
645 			import core.sys.windows.windows;
646 			libHandle = LoadLibrary("libcef.dll");
647 
648 			static void* loadsym(const char* name) {
649 				return GetProcAddress(libHandle, name);
650 			}
651 		}
652 
653 		//import std.stdio;
654 		if(libHandle is null) {
655 			// import std.stdio; writeln("libhandle null");
656 			import core.stdc.stdio; printf("%s\n", dlerror());
657 			// import core.stdc.errno; writeln(errno);
658 			return false;
659 		}
660 		foreach(memberName; __traits(allMembers, libcef)[4 .. $]) { // cutting off everything until the actual static foreach below; this trims off isLoaded to loadDynamicLibrary
661 			alias mem = __traits(getMember, libcef, memberName);
662 			mem = cast(typeof(mem)) loadsym("cef_" ~ memberName);
663 			if(mem is null) {
664 				 // import std.stdio; writeln(memberName); throw new Exception("cef_" ~ memberName ~ " failed to load");
665 				return false;
666 			}
667 		}
668 
669 		import core.stdc.string;
670 		if(strcmp(libcef.api_hash(1), CEF_API_HASH_UNIVERSAL) != 0)
671 			throw new Exception("libcef versions not matching bindings");
672 
673 		isLoaded = true;
674 		return true;
675 	}
676 
677 	static foreach(memberName; __traits(allMembers, arsd.webview))
678 	static if(is(typeof(__traits(getMember, arsd.webview, memberName)) == function))
679 	static if(memberName.length > 4 && memberName[0 .. 4] == "cef_") {
680 		mixin(q{ typeof(&__traits(getMember, arsd.webview, memberName)) } ~ memberName[4 .. $] ~ ";"); // = &" ~ memberName ~ ";");
681 	}
682 }
683 
684 }
685 
686 version(linux_gtk)
687 version(Demo)
688 void main() {
689 	auto wv = new WebView(true, null);
690 	wv.navigate("http://dpldocs.info/");
691 	wv.setTitle("omg a D webview");
692 	wv.setSize(500, 500, true);
693 	wv.eval("console.log('just testing');");
694 	wv.run();
695 }
696 
697 version(linux_gtk)
698 enum activeEngine = WebviewEngine.webkit_gtk;
699 
700 /++
701 
702 +/
703 version(linux_gtk)
704 class WebView : browser_engine {
705 
706 	/++
707 		Creates a new webview instance. If dbg is non-zero - developer tools will
708 		be enabled (if the platform supports them). Window parameter can be a
709 		pointer to the native window handle. If it's non-null - then child WebView
710 		is embedded into the given parent window. Otherwise a new window is created.
711 		Depending on the platform, a GtkWindow, NSWindow or HWND pointer can be
712 		passed here.
713 	+/
714 	this(bool dbg, void* window) {
715 		super(&on_message, dbg, window);
716 	}
717 
718 	extern(C)
719 	static void on_message(const char*) {}
720 
721 	/// Destroys a webview and closes the native window.
722 	void destroy() {
723 
724 	}
725 
726 	/// Runs the main loop until it's terminated. After this function exits - you
727 	/// must destroy the webview.
728 	override void run() { super.run(); }
729 
730 	/// Stops the main loop. It is safe to call this function from another other
731 	/// background thread.
732 	override void terminate() { super.terminate(); }
733 
734 	/+
735 	/// Posts a function to be executed on the main thread. You normally do not need
736 	/// to call this function, unless you want to tweak the native window.
737 	void dispatch(void function(WebView w, void *arg) fn, void *arg) {}
738 	+/
739 
740 	/// Returns a native window handle pointer. When using GTK backend the pointer
741 	/// is GtkWindow pointer, when using Cocoa backend the pointer is NSWindow
742 	/// pointer, when using Win32 backend the pointer is HWND pointer.
743 	void* getWindow() { return m_window; }
744 
745 	/// Updates the title of the native window. Must be called from the UI thread.
746 	override void setTitle(const char *title) { super.setTitle(title); }
747 
748 	/// Navigates webview to the given URL. URL may be a data URI.
749 	override void navigate(const char *url) { super.navigate(url); }
750 
751 	/// Injects JavaScript code at the initialization of the new page. Every time
752 	/// the webview will open a the new page - this initialization code will be
753 	/// executed. It is guaranteed that code is executed before window.onload.
754 	override void init(const char *js) { super.init(js); }
755 
756 	/// Evaluates arbitrary JavaScript code. Evaluation happens asynchronously, also
757 	/// the result of the expression is ignored. Use RPC bindings if you want to
758 	/// receive notifications about the results of the evaluation.
759 	override void eval(const char *js) { super.eval(js); }
760 
761 	/// Binds a native C callback so that it will appear under the given name as a
762 	/// global JavaScript function. Internally it uses webview_init(). Callback
763 	/// receives a request string and a user-provided argument pointer. Request
764 	/// string is a JSON array of all the arguments passed to the JavaScript
765 	/// function.
766 	void bind(const char *name, void function(const char *, void *) fn, void *arg) {}
767 
768 	/// Allows to return a value from the native binding. Original request pointer
769 	/// must be provided to help internal RPC engine match requests with responses.
770 	/// If status is zero - result is expected to be a valid JSON result value.
771 	/// If status is not zero - result is an error JSON object.
772 	void webview_return(const char *req, int status, const char *result) {}
773 
774   /*
775   void on_message(const char *msg) {
776     auto seq = json_parse(msg, "seq", 0);
777     auto name = json_parse(msg, "name", 0);
778     auto args = json_parse(msg, "args", 0);
779     auto fn = bindings[name];
780     if (fn == null) {
781       return;
782     }
783     std::async(std::launch::async, [=]() {
784       auto result = (*fn)(args);
785       dispatch([=]() {
786         eval(("var b = window['" + name + "'];b['callbacks'][" + seq + "](" +
787               result + ");b['callbacks'][" + seq +
788               "] = undefined;b['errors'][" + seq + "] = undefined;")
789                  .c_str());
790       });
791     });
792   }
793   std::map<std::string, binding_t *> bindings;
794 
795   alias binding_t = std::function<std::string(std::string)>;
796 
797   void bind(const char *name, binding_t f) {
798     auto js = "(function() { var name = '" + std::string(name) + "';" + R"(
799       window[name] = function() {
800         var me = window[name];
801         var errors = me['errors'];
802         var callbacks = me['callbacks'];
803         if (!callbacks) {
804           callbacks = {};
805           me['callbacks'] = callbacks;
806         }
807         if (!errors) {
808           errors = {};
809           me['errors'] = errors;
810         }
811         var seq = (me['lastSeq'] || 0) + 1;
812         me['lastSeq'] = seq;
813         var promise = new Promise(function(resolve, reject) {
814           callbacks[seq] = resolve;
815           errors[seq] = reject;
816         });
817         window.external.invoke(JSON.stringify({
818           name: name,
819           seq:seq,
820           args: Array.prototype.slice.call(arguments),
821         }));
822         return promise;
823       }
824     })())";
825     init(js.c_str());
826     bindings[name] = new binding_t(f);
827   }
828 
829 */
830 }
831 
832 private extern(C) {
833 	alias dispatch_fn_t = void function();
834 	alias msg_cb_t = void function(const char *msg);
835 }
836 
837 version(linux_gtk) {
838 
839 
840 /* Original https://github.com/zserge/webview notice below:
841  * MIT License
842  *
843  * Copyright (c) 2017 Serge Zaitsev
844  *
845  * Permission is hereby granted, free of charge, to any person obtaining a copy
846  * of this software and associated documentation files (the "Software"), to deal
847  * in the Software without restriction, including without limitation the rights
848  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
849  * copies of the Software, and to permit persons to whom the Software is
850  * furnished to do so, subject to the following conditions:
851  *
852  * The above copyright notice and this permission notice shall be included in
853  * all copies or substantial portions of the Software.
854  *
855  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
856  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
857  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
858  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
859  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
860  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
861  * SOFTWARE.
862  */
863 
864 /*
865 	Port to D by Adam D. Ruppe, November 30, 2019
866 */
867 
868 
869 	pragma(lib, "gtk-3");
870 	pragma(lib, "glib-2.0");
871 	pragma(lib, "gobject-2.0");
872 	pragma(lib, "webkit2gtk-4.0");
873 	pragma(lib, "javascriptcoregtk-4.0");
874 
875 	private extern(C) {
876 		import core.stdc.config;
877 		alias GtkWidget = void;
878 		enum GtkWindowType {
879 			GTK_WINDOW_TOPLEVEL = 0
880 		}
881 		bool gtk_init_check(int*, char***);
882 		GtkWidget* gtk_window_new(GtkWindowType);
883 		c_ulong g_signal_connect_data(void*, const char*, void* /* function pointer!!! */, void*, void*, int);
884 		GtkWidget* webkit_web_view_new();
885 		alias WebKitUserContentManager = void;
886 		WebKitUserContentManager* webkit_web_view_get_user_content_manager(GtkWidget*);
887 
888 		void gtk_container_add(GtkWidget*, GtkWidget*);
889 		void gtk_widget_grab_focus(GtkWidget*);
890 		void gtk_widget_show_all(GtkWidget*);
891 		void gtk_main();
892 		void gtk_main_quit();
893 		void webkit_web_view_load_uri(GtkWidget*, const char*);
894 		alias WebKitSettings = void;
895 		WebKitSettings* webkit_web_view_get_settings(GtkWidget*);
896 		void webkit_settings_set_enable_write_console_messages_to_stdout(WebKitSettings*, bool);
897 		void webkit_settings_set_enable_developer_extras(WebKitSettings*, bool);
898 		void webkit_user_content_manager_register_script_message_handler(WebKitUserContentManager*, const char*);
899 		alias JSCValue = void;
900 		alias WebKitJavascriptResult = void;
901 		JSCValue* webkit_javascript_result_get_js_value(WebKitJavascriptResult*);
902 		char* jsc_value_to_string(JSCValue*);
903 		void g_free(void*);
904 		void webkit_web_view_run_javascript(GtkWidget*, const char*, void*, void*, void*);
905 		alias WebKitUserScript = void;
906 		void webkit_user_content_manager_add_script(WebKitUserContentManager*, WebKitUserScript*);
907 		WebKitUserScript* webkit_user_script_new(const char*, WebKitUserContentInjectedFrames, WebKitUserScriptInjectionTime, const char*, const char*);
908 		enum WebKitUserContentInjectedFrames {
909 			WEBKIT_USER_CONTENT_INJECT_ALL_FRAMES,
910 			WEBKIT_USER_CONTENT_INJECT_TOP_FRAME
911 		}
912 		enum WebKitUserScriptInjectionTime {
913 			WEBKIT_USER_SCRIPT_INJECT_AT_DOCUMENT_START,
914 			WEBKIT_USER_SCRIPT_INJECT_AT_DOCUMENT_END
915 		}
916 		void gtk_window_set_title(GtkWidget*, const char*);
917 
918 		void gtk_window_set_resizable(GtkWidget*, bool);
919 		void gtk_window_set_default_size(GtkWidget*, int, int);
920 		void gtk_widget_set_size_request(GtkWidget*, int, int);
921 	}
922 
923 	private class browser_engine {
924 
925 		static extern(C)
926 		void ondestroy (GtkWidget *w, void* arg) {
927 			(cast(browser_engine) arg).terminate();
928 		}
929 
930 		static extern(C)
931 		void smr(WebKitUserContentManager* m, WebKitJavascriptResult* r, void* arg) {
932 			auto w = cast(browser_engine) arg;
933 			JSCValue *value = webkit_javascript_result_get_js_value(r);
934 			auto s = jsc_value_to_string(value);
935 			w.m_cb(s);
936 			g_free(s);
937 		}
938 
939 		this(msg_cb_t cb, bool dbg, void* window) {
940 			m_cb = cb;
941 
942 			gtk_init_check(null, null);
943 			m_window = cast(GtkWidget*) window;
944 			if (m_window == null)
945 				m_window = gtk_window_new(GtkWindowType.GTK_WINDOW_TOPLEVEL);
946 
947 			g_signal_connect_data(m_window, "destroy", &ondestroy, cast(void*) this, null, 0);
948 
949 			m_webview = webkit_web_view_new();
950 			WebKitUserContentManager* manager = webkit_web_view_get_user_content_manager(m_webview);
951 
952 			g_signal_connect_data(manager, "script-message-received::external", &smr, cast(void*) this, null, 0);
953 			webkit_user_content_manager_register_script_message_handler(manager, "external");
954 			init("window.external={invoke:function(s){window.webkit.messageHandlers.external.postMessage(s);}}");
955 
956 			gtk_container_add(m_window, m_webview);
957 			gtk_widget_grab_focus(m_webview);
958 
959 			if (dbg) {
960 				WebKitSettings *settings = webkit_web_view_get_settings(m_webview);
961 				webkit_settings_set_enable_write_console_messages_to_stdout(settings, true);
962 				webkit_settings_set_enable_developer_extras(settings, true);
963 			}
964 
965 			gtk_widget_show_all(m_window);
966 		}
967 		void run() { gtk_main(); }
968 		void terminate() { gtk_main_quit(); }
969 
970 		void navigate(const char *url) {
971 			webkit_web_view_load_uri(m_webview, url);
972 		}
973 
974 		void setTitle(const char* title) {
975 			gtk_window_set_title(m_window, title);
976 		}
977 
978 		/+
979 			void dispatch(std::function<void()> f) {
980 				g_idle_add_full(G_PRIORITY_HIGH_IDLE, (GSourceFunc)([](void *f) -> int {
981 							(*static_cast<dispatch_fn_t *>(f))();
982 							return G_SOURCE_REMOVE;
983 							}),
984 						new std::function<void()>(f),
985 						[](void *f) { delete static_cast<dispatch_fn_t *>(f); });
986 			}
987 		+/
988 
989 		void setSize(int width, int height, bool resizable) {
990 			gtk_window_set_resizable(m_window, resizable);
991 			if (resizable) {
992 				gtk_window_set_default_size(m_window, width, height);
993 			}
994 			gtk_widget_set_size_request(m_window, width, height);
995 		}
996 
997 		void init(const char *js) {
998 			WebKitUserContentManager *manager = webkit_web_view_get_user_content_manager(m_webview);
999 			webkit_user_content_manager_add_script(
1000 				manager, webkit_user_script_new(
1001 					js, WebKitUserContentInjectedFrames.WEBKIT_USER_CONTENT_INJECT_TOP_FRAME,
1002 					WebKitUserScriptInjectionTime.WEBKIT_USER_SCRIPT_INJECT_AT_DOCUMENT_START, null, null));
1003 			}
1004 
1005 		void eval(const char *js) {
1006 			webkit_web_view_run_javascript(m_webview, js, null, null, null);
1007 		}
1008 
1009 		protected:
1010 		GtkWidget* m_window;
1011 		GtkWidget* m_webview;
1012 		msg_cb_t m_cb;
1013 	}
1014 } else version(WEBVIEW_COCOA) {
1015 /+
1016 
1017 //
1018 // ====================================================================
1019 //
1020 // This implementation uses Cocoa WKWebView backend on macOS. It is
1021 // written using ObjC runtime and uses WKWebView class as a browser runtime.
1022 // You should pass "-framework Webkit" flag to the compiler.
1023 //
1024 // ====================================================================
1025 //
1026 
1027 #define OBJC_OLD_DISPATCH_PROTOTYPES 1
1028 #include <CoreGraphics/CoreGraphics.h>
1029 #include <objc/objc-runtime.h>
1030 
1031 #define NSBackingStoreBuffered 2
1032 
1033 #define NSWindowStyleMaskResizable 8
1034 #define NSWindowStyleMaskMiniaturizable 4
1035 #define NSWindowStyleMaskTitled 1
1036 #define NSWindowStyleMaskClosable 2
1037 
1038 #define NSApplicationActivationPolicyRegular 0
1039 
1040 #define WKUserScriptInjectionTimeAtDocumentStart 0
1041 
1042 id operator"" _cls(const char *s, std::size_t sz) {
1043   return (id)objc_getClass(s);
1044 }
1045 SEL operator"" _sel(const char *s, std::size_t sz) {
1046   return sel_registerName(s);
1047 }
1048 id operator"" _str(const char *s, std::size_t sz) {
1049   return objc_msgSend("NSString"_cls, "stringWithUTF8String:"_sel, s);
1050 }
1051 
1052 class browser_engine {
1053 public:
1054   browser_engine(msg_cb_t cb, bool dbg, void *window) : m_cb(cb) {
1055     // Application
1056     id app = objc_msgSend("NSApplication"_cls, "sharedApplication"_sel);
1057     objc_msgSend(app, "setActivationPolicy:"_sel,
1058                  NSApplicationActivationPolicyRegular);
1059 
1060     // Delegate
1061     auto cls = objc_allocateClassPair((Class) "NSObject"_cls, "AppDelegate", 0);
1062     class_addProtocol(cls, objc_getProtocol("NSApplicationDelegate"));
1063     class_addProtocol(cls, objc_getProtocol("WKScriptMessageHandler"));
1064     class_addMethod(
1065         cls, "applicationShouldTerminateAfterLastWindowClosed:"_sel,
1066         (IMP)(+[](id self, SEL cmd, id notification) -> BOOL { return 1; }),
1067         "c@:@");
1068     class_addMethod(
1069         cls, "userContentController:didReceiveScriptMessage:"_sel,
1070         (IMP)(+[](id self, SEL cmd, id notification, id msg) {
1071           auto w = (browser_engine *)objc_getAssociatedObject(self, "webview");
1072           w->m_cb((const char *)objc_msgSend(objc_msgSend(msg, "body"_sel),
1073                                              "UTF8String"_sel));
1074         }),
1075         "v@:@@");
1076     objc_registerClassPair(cls);
1077 
1078     auto delegate = objc_msgSend((id)cls, "new"_sel);
1079     objc_setAssociatedObject(delegate, "webview", (id)this,
1080                              OBJC_ASSOCIATION_ASSIGN);
1081     objc_msgSend(app, sel_registerName("setDelegate:"), delegate);
1082 
1083     // Main window
1084     if (window is null) {
1085       m_window = objc_msgSend("NSWindow"_cls, "alloc"_sel);
1086       m_window = objc_msgSend(
1087           m_window, "initWithContentRect:styleMask:backing:defer:"_sel,
1088           CGRectMake(0, 0, 0, 0), 0, NSBackingStoreBuffered, 0);
1089       setSize(480, 320, true);
1090     } else {
1091       m_window = (id)window;
1092     }
1093 
1094     // Webview
1095     auto config = objc_msgSend("WKWebViewConfiguration"_cls, "new"_sel);
1096     m_manager = objc_msgSend(config, "userContentController"_sel);
1097     m_webview = objc_msgSend("WKWebView"_cls, "alloc"_sel);
1098     objc_msgSend(m_webview, "initWithFrame:configuration:"_sel,
1099                  CGRectMake(0, 0, 0, 0), config);
1100     objc_msgSend(m_manager, "addScriptMessageHandler:name:"_sel, delegate,
1101                  "external"_str);
1102     init(R"script(
1103                       window.external = {
1104                         invoke: function(s) {
1105                           window.webkit.messageHandlers.external.postMessage(s);
1106                         },
1107                       };
1108                      )script");
1109     if (dbg) {
1110       objc_msgSend(objc_msgSend(config, "preferences"_sel),
1111                    "setValue:forKey:"_sel, 1, "developerExtrasEnabled"_str);
1112     }
1113     objc_msgSend(m_window, "setContentView:"_sel, m_webview);
1114     objc_msgSend(m_window, "makeKeyAndOrderFront:"_sel, null);
1115   }
1116   ~browser_engine() { close(); }
1117   void terminate() { close(); objc_msgSend("NSApp"_cls, "terminate:"_sel, null); }
1118   void run() {
1119     id app = objc_msgSend("NSApplication"_cls, "sharedApplication"_sel);
1120     dispatch([&]() { objc_msgSend(app, "activateIgnoringOtherApps:"_sel, 1); });
1121     objc_msgSend(app, "run"_sel);
1122   }
1123   void dispatch(std::function<void()> f) {
1124     dispatch_async_f(dispatch_get_main_queue(), new dispatch_fn_t(f),
1125                      (dispatch_function_t)([](void *arg) {
1126                        auto f = static_cast<dispatch_fn_t *>(arg);
1127                        (*f)();
1128                        delete f;
1129                      }));
1130   }
1131   void setTitle(const char *title) {
1132     objc_msgSend(
1133         m_window, "setTitle:"_sel,
1134         objc_msgSend("NSString"_cls, "stringWithUTF8String:"_sel, title));
1135   }
1136   void setSize(int width, int height, bool resizable) {
1137     auto style = NSWindowStyleMaskTitled | NSWindowStyleMaskClosable |
1138                  NSWindowStyleMaskMiniaturizable;
1139     if (resizable) {
1140       style = style | NSWindowStyleMaskResizable;
1141     }
1142     objc_msgSend(m_window, "setStyleMask:"_sel, style);
1143     objc_msgSend(m_window, "setFrame:display:animate:"_sel,
1144                  CGRectMake(0, 0, width, height), 1, 0);
1145   }
1146   void navigate(const char *url) {
1147     auto nsurl = objc_msgSend(
1148         "NSURL"_cls, "URLWithString:"_sel,
1149         objc_msgSend("NSString"_cls, "stringWithUTF8String:"_sel, url));
1150     objc_msgSend(
1151         m_webview, "loadRequest:"_sel,
1152         objc_msgSend("NSURLRequest"_cls, "requestWithURL:"_sel, nsurl));
1153   }
1154   void init(const char *js) {
1155     objc_msgSend(
1156         m_manager, "addUserScript:"_sel,
1157         objc_msgSend(
1158             objc_msgSend("WKUserScript"_cls, "alloc"_sel),
1159             "initWithSource:injectionTime:forMainFrameOnly:"_sel,
1160             objc_msgSend("NSString"_cls, "stringWithUTF8String:"_sel, js),
1161             WKUserScriptInjectionTimeAtDocumentStart, 1));
1162   }
1163   void eval(const char *js) {
1164     objc_msgSend(m_webview, "evaluateJavaScript:completionHandler:"_sel,
1165                  objc_msgSend("NSString"_cls, "stringWithUTF8String:"_sel, js),
1166                  null);
1167   }
1168 
1169 protected:
1170   void close() { objc_msgSend(m_window, "close"_sel); }
1171   id m_window;
1172   id m_webview;
1173   id m_manager;
1174   msg_cb_t m_cb;
1175 };
1176 
1177 +/
1178 
1179 }
1180 
1181 version(cef)  {
1182 
1183 /++
1184 	This creates a base class for a thing to help you implement the function pointers.
1185 
1186 	class MyApp : CEF!cef_app_t {
1187 
1188 	}
1189 +/
1190 abstract class CEF(Base) {
1191 	private struct Inner {
1192 		Base c;
1193 		CEF d_object;
1194 	}
1195 	private Inner inner;
1196 
1197 	this() nothrow {
1198 		if(!__ctfe) construct();
1199 	}
1200 
1201 	// ONLY call this if you did a ctfe construction
1202 	void construct() nothrow {
1203 		assert(inner.c.base.size == 0);
1204 
1205 		import core.memory;
1206 		GC.addRoot(cast(void*) this);
1207 		inner.c.base.size = Inner.sizeof;
1208 		inner.c.base.add_ref = &c_add_ref;
1209 		inner.c.base.release = &c_release;
1210 		inner.c.base.has_one_ref = &c_has_one_ref;
1211 		inner.c.base.has_at_least_one_ref = &c_has_at_least_one_ref;
1212 		inner.d_object = this;
1213 
1214 		static foreach(memberName; __traits(allMembers, Base)) {
1215 			static if(is(typeof(__traits(getMember, Base, memberName)) == return)) {
1216 				__traits(getMember, inner.c, memberName) = mixin("&c_" ~ memberName);
1217 			}
1218 		}
1219 	}
1220 
1221 	private static nothrow @nogc extern(System) {
1222 		void c_add_ref(cef_base_ref_counted_t* self) {
1223 			return ((cast(Inner*) self).d_object).add_ref();
1224 		}
1225 		int c_release(cef_base_ref_counted_t* self) {
1226 			return ((cast(Inner*) self).d_object).release();
1227 		}
1228 		int c_has_one_ref(cef_base_ref_counted_t* self) {
1229 			return ((cast(Inner*) self).d_object).has_one_ref();
1230 		}
1231 		int c_has_at_least_one_ref(cef_base_ref_counted_t* self) {
1232 			return ((cast(Inner*) self).d_object).has_at_least_one_ref();
1233 		}
1234 	}
1235 
1236 	private shared(int) refcount = 1;
1237 	final void add_ref() {
1238 		import core.atomic;
1239 		atomicOp!"+="(refcount, 1);
1240 	}
1241 	final int release() {
1242 		import core.atomic;
1243 		auto v = atomicOp!"-="(refcount, 1);
1244 		if(v == 0) {
1245 			import core.memory;
1246 			GC.removeRoot(cast(void*) this);
1247 			return 1;
1248 		}
1249 		return 0;
1250 	}
1251 	final int has_one_ref() {
1252 		return (cast() refcount) == 1;
1253 	}
1254 	final int has_at_least_one_ref() {
1255 		return (cast() refcount) >= 1;
1256 	}
1257 
1258 	/// Call this to pass to CEF. It will add ref for you.
1259 	final Base* passable() {
1260 		assert(inner.c.base.size);
1261 		add_ref();
1262 		return returnable();
1263 	}
1264 
1265 	final Base* returnable() {
1266 		assert(inner.c.base.size);
1267 		return &inner.c;
1268 	}
1269 
1270 	static foreach(memberName; __traits(allMembers, Base)) {
1271 		static if(is(typeof(__traits(getMember, Base, memberName)) == return)) {
1272 			mixin AbstractMethod!(memberName);
1273 		} else {
1274 			mixin(q{final ref @property } ~ memberName ~ q{() { return __traits(getMember, inner.c, memberName); }});
1275 		}
1276 	}
1277 }
1278 
1279 // you implement this in D...
1280 private mixin template AbstractMethod(string name) {
1281 	alias ptr = typeof(__traits(getMember, Base, name));
1282 	static if(is(ptr Return == return))
1283 	static if(is(typeof(*ptr) Params == function))
1284 	{
1285 		mixin(q{abstract nothrow Return } ~ name ~ q{(CefToD!(Params[1 .. $]) p);});
1286 		// mixin(q{abstract nothrow Return } ~ name ~ q{(Params[1 .. $] p);});
1287 
1288 		mixin(q{
1289 		private static nothrow extern(System)
1290 		Return c_}~name~q{(Params p) {
1291 			Base* self = p[0]; // a bit of a type check here...
1292 			auto dobj = (cast(Inner*) self).d_object; // ...before this cast.
1293 
1294 			//return __traits(getMember, dobj, name)(p[1 .. $]);
1295 			mixin(() {
1296 				string code = "return __traits(getMember, dobj, name)(";
1297 
1298 				static foreach(idx; 1 .. p.length) {
1299 					if(idx > 1)
1300 						code ~= ", ";
1301 					code ~= "cefToD(p[" ~ idx.stringof ~ "])";
1302 				}
1303 				code ~= ");";
1304 				return code;
1305 			}());
1306 		}
1307 		});
1308 	}
1309 	else static assert(0, name ~ " params");
1310 	else static assert(0, name ~ " return");
1311 }
1312 
1313 // you call this from D...
1314 private mixin template ForwardMethod(string name) {
1315 	alias ptr = typeof(__traits(getMember, Base, name));
1316 	static if(is(ptr Return == return))
1317 	static if(is(typeof(*ptr) Params == function))
1318 	{
1319 		mixin(q{nothrow auto } ~ name ~ q{(Params[1 .. $] p) {
1320 			Base* self = inner; // a bit of a type check here...
1321 			static if(is(Return == void))
1322 				return __traits(getMember, inner, name)(self, p);
1323 			else
1324 				return cefToD(__traits(getMember, inner, name)(self, p));
1325 		}});
1326 	}
1327 	else static assert(0, name ~ " params");
1328 	else static assert(0, name ~ " return");
1329 }
1330 
1331 
1332 private alias AliasSeq(T...) = T;
1333 
1334 private template CefToD(T...) {
1335 	static if(T.length == 0) {
1336 		alias CefToD = T;
1337 	} else static if(T.length == 1) {
1338 		static if(is(typeof(T[0].base) == cef_base_ref_counted_t)) {
1339 			alias CefToD = RC!(typeof(*T[0]));
1340 			/+
1341 			static if(is(T[0] == I*, I)) {
1342 				alias CefToD = CEF!(I);
1343 			} else static assert(0, T[0]);
1344 			+/
1345 		} else
1346 			alias CefToD = T[0];
1347 	} else {
1348 		alias CefToD = AliasSeq!(CefToD!(T[0]), CefToD!(T[1..$]));
1349 
1350 	}
1351 }
1352 
1353 enum activeEngine = WebviewEngine.cef;
1354 
1355 struct RC(Base) {
1356 	private Base* inner;
1357 
1358 	this(Base* t) nothrow {
1359 		inner = t;
1360 		// assuming the refcount is already set here
1361 	}
1362 	this(this) nothrow {
1363 		if(inner is null) return;
1364 		inner.base.add_ref(&inner.base);
1365 	}
1366 	~this() nothrow {
1367 		if(inner is null) return;
1368 		inner.base.release(&inner.base);
1369 		inner = null;
1370 		//sdpyPrintDebugString("omg release");
1371 	}
1372 	bool opCast(T:bool)() nothrow {
1373 		return inner !is null;
1374 	}
1375 
1376 	Base* getRawPointer() nothrow {
1377 		return inner;
1378 	}
1379 
1380 	Base* passable() nothrow {
1381 		if(inner is null)
1382 			return inner;
1383 
1384 		inner.base.add_ref(&inner.base);
1385 		return inner;
1386 	}
1387 
1388 	static foreach(memberName; __traits(allMembers, Base)) {
1389 		static if(is(typeof(__traits(getMember, Base, memberName)) == return)) {
1390 			mixin ForwardMethod!(memberName);
1391 		} else {
1392 			mixin(q{final ref @property } ~ memberName ~ q{() { return __traits(getMember, inner, memberName); }});
1393 		}
1394 	}
1395 }
1396 
1397 auto cefToD(T)(T t) {
1398 	static if(is(typeof(T.base) == cef_base_ref_counted_t)) {
1399 		return RC!(typeof(*T))(t);
1400 	} else {
1401 		return t;
1402 	}
1403 }
1404 
1405 
1406 string toGC(const cef_string_utf16_t str) nothrow {
1407 	if(str.str is null)
1408 		return null;
1409 
1410 	string s;
1411 	s.reserve(str.length);
1412 
1413 	try
1414 	foreach(char ch; str.str[0 .. str.length])
1415 		s ~= ch;
1416 	catch(Exception e) {}
1417 	return s;
1418 }
1419 
1420 string toGC(const cef_string_utf16_t* str) nothrow {
1421 	if(str is null)
1422 		return null;
1423 	return toGC(*str);
1424 }
1425 
1426 string toGCAndFree(const cef_string_userfree_t str) nothrow {
1427 	if(str is null)
1428 		return null;
1429 
1430 	string s = toGC(str);
1431 	libcef.string_userfree_utf16_free(str);
1432 	//str = null;
1433 	return s;
1434 }
1435 
1436 // bindings follow, first some hand-written ones for Linux, then some machine translated things. More comments about the machine translation when it comes.
1437 
1438 version(linux)
1439 struct cef_main_args_t {
1440 	int argc;
1441 	char** argv;
1442 }
1443 version(Windows)
1444 struct cef_main_args_t {
1445 	HINSTANCE instance;
1446 }
1447 
1448 // 0 - CEF_VERSION_MAJOR
1449 // 1 - CEF_VERSION_MINOR
1450 // 2 - CEF_VERSION_PATCH
1451 // 3 - CEF_COMMIT_NUMBER
1452 // 4 - CHROME_VERSION_MAJOR
1453 // 5 - CHROME_VERSION_MINOR
1454 // 6 - CHROME_VERSION_BUILD
1455 // 7 - CHROME_VERSION_PATCH
1456 
1457 extern(C) nothrow
1458 int cef_string_utf8_to_utf16(const char* src, size_t src_len, cef_string_utf16_t* output);
1459 
1460 struct cef_string_utf8_t {
1461   char* str;
1462   size_t length;
1463   void* dtor;// void (*dtor)(char* str);
1464 }
1465 
1466 struct cef_basetime_t {
1467 	long val;
1468 }
1469 
1470 
1471 struct cef_string_utf16_t {
1472   char16* str;
1473   size_t length;
1474   void* dtor; // voiod (*dtor)(char16* str);
1475 
1476   this(wstring s) nothrow {
1477 	this.str = cast(char16*) s.ptr;
1478 	this.length = s.length;
1479   }
1480 
1481   this(string s) nothrow {
1482 	libcef.string_utf8_to_utf16(s.ptr, s.length, &this);
1483   }
1484 }
1485 
1486 alias cef_string_t = cef_string_utf16_t;
1487 alias cef_window_handle_t = NativeWindowHandle;
1488 version(Windows)
1489 	alias cef_cursor_handle_t = HCURSOR;
1490 else
1491 	alias cef_cursor_handle_t = XID;
1492 
1493 struct cef_time_t {
1494   int year;          // Four or five digit year "2007" (1601 to 30827 on
1495                      //   Windows, 1970 to 2038 on 32-bit POSIX)
1496   int month;         // 1-based month (values 1 = January, etc.)
1497   int day_of_week;   // 0-based day of week (0 = Sunday, etc.)
1498   int day_of_month;  // 1-based day of month (1-31)
1499   int hour;          // Hour within the current day (0-23)
1500   int minute;        // Minute within the current hour (0-59)
1501   int second;        // Second within the current minute (0-59 plus leap
1502                      //   seconds which may take it up to 60).
1503   int millisecond;   // Milliseconds within the current second (0-999)
1504 }
1505 
1506 version(linux)
1507 struct cef_window_info_t {
1508   cef_string_t window_name;
1509 
1510   uint x;
1511   uint y;
1512   uint width;
1513   uint height;
1514 
1515   cef_window_handle_t parent_window;
1516 
1517   int windowless_rendering_enabled;
1518 
1519   int shared_texture_enabled;
1520 
1521   int external_begin_frame_enabled;
1522 
1523   cef_window_handle_t window;
1524 }
1525 
1526 version(Windows)
1527 struct cef_window_info_t {
1528 	DWORD ex_style;
1529 	cef_string_t window_name;
1530 	DWORD style;
1531 	cef_rect_t bounds;
1532 	cef_window_handle_t parent_window;
1533 	HMENU menu;
1534 	int windowless_rendering_enabled;
1535 	int shared_texture_enabled;
1536 	int external_begin_frame_enabled;
1537 	cef_window_handle_t window;
1538 }
1539 
1540 
1541 
1542 import core.stdc.config;
1543 alias int16 = short;
1544 alias uint16 = ushort;
1545 alias int32 = int;
1546 alias uint32 = uint;
1547 alias char16 = wchar;
1548 alias int64 = long;
1549 alias uint64 = ulong;
1550 
1551 // these are supposed to just be opaque pointers but i want some type safety. this same abi wise.......... RIGHT?
1552 struct cef_string_list_t { void* r; }
1553 struct cef_string_multimap_t { void* r; }
1554 struct cef_string_map_t { void* r; }
1555 
1556 
1557 extern(C) nothrow {
1558 	cef_string_list_t cef_string_list_alloc();
1559 	size_t cef_string_list_size(cef_string_list_t list);
1560 	int cef_string_list_value(cef_string_list_t list, size_t index, cef_string_t* value);
1561 	void cef_string_list_append(cef_string_list_t list, const cef_string_t* value);
1562 	void cef_string_list_clear(cef_string_list_t list);
1563 	void cef_string_list_free(cef_string_list_t list);
1564 	cef_string_list_t cef_string_list_copy(cef_string_list_t list);
1565 }
1566 
1567 
1568 version(linux) {
1569 	import core.sys.posix.sys.types;
1570 	alias pid_t cef_platform_thread_id_t;
1571 	alias OS_EVENT = XEvent;
1572 } else {
1573 	import core.sys.windows.windows;
1574 	alias HANDLE cef_platform_thread_id_t;
1575 	alias OS_EVENT = void;
1576 }
1577 
1578 nothrow @nogc extern(C) void cef_string_userfree_utf16_free(const cef_string_userfree_utf16_t str);
1579 struct cef_string_userfree_utf16_t { cef_string_utf16_t* it; alias it this; }
1580 alias cef_string_userfree_t = cef_string_userfree_utf16_t;
1581 
1582 // **************
1583 
1584 // cef/include/capi$ for i in *.h; do dstep -I../.. $i; done
1585 // also dstep include/cef_version.h
1586 // update the CEF_VERSION and the CEF_API_HASH_UNIVERSAL out of cef_version.h and cef_api_hash.h
1587 // then concatenate the bodies of them and delete the translated macros and `struct .*;` stuff
1588 // then I added nothrow to all function pointers with a vim macro (`/function (<ENTER>e%a nothrow<ESC>` then just hold in @ to do the @@ repeat macro command until it was done
1589 // then select all and global replace s/_cef/cef/g
1590 // then delete the pointless aliases find with `/alias \(.*\) = \1;` and delete with 2dd. macros can do the job or just simple global replace to nothing. blank lines don't matter.
1591 
1592 // and make sure version(linux) void cef_register_widevine_cdm ( if it is there.
1593 
1594 // and extern (C) is wrong on the callbacks, they should all be extern(System)
1595 // `/function (<ENTER>Oextern(System)<ESC>`
1596 
1597 
1598 version=embedded_cef_bindings;
1599 
1600 // everything inside these brackets are the bindings you can replace if update needed
1601 
1602 version(embedded_cef_bindings) {
1603 // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
1604 //
1605 // Redistribution and use in source and binary forms, with or without
1606 // modification, are permitted provided that the following conditions are
1607 // met:
1608 //
1609 //    * Redistributions of source code must retain the above copyright
1610 // notice, this list of conditions and the following disclaimer.
1611 //    * Redistributions in binary form must reproduce the above
1612 // copyright notice, this list of conditions and the following disclaimer
1613 // in the documentation and/or other materials provided with the
1614 // distribution.
1615 //    * Neither the name of Google Inc. nor the name Chromium Embedded
1616 // Framework nor the names of its contributors may be used to endorse
1617 // or promote products derived from this software without specific prior
1618 // written permission.
1619 //
1620 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
1621 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
1622 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
1623 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
1624 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
1625 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
1626 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
1627 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
1628 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
1629 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
1630 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
1631 //
1632 // ---------------------------------------------------------------------------
1633 //
1634 // This file was generated by the make_version_header.py tool.
1635 //
1636 
1637 extern (C):
1638 
1639 enum CEF_VERSION = "126.2.10+g61241e4+chromium-126.0.6478.127";
1640 enum CEF_VERSION_MAJOR = 126;
1641 enum CEF_VERSION_MINOR = 2;
1642 enum CEF_VERSION_PATCH = 10;
1643 enum CEF_COMMIT_NUMBER = 3011;
1644 enum CEF_COMMIT_HASH = "61241e448276eee53d2b20ca045f5b5ae53a937a";
1645 enum COPYRIGHT_YEAR = 2024;
1646 
1647 enum CHROME_VERSION_MAJOR = 126;
1648 enum CHROME_VERSION_MINOR = 0;
1649 enum CHROME_VERSION_BUILD = 6478;
1650 enum CHROME_VERSION_PATCH = 127;
1651 
1652 
1653 
1654 // Returns CEF version information for the libcef library. The |entry|
1655 // parameter describes which version component will be returned:
1656 // 0 - CEF_VERSION_MAJOR
1657 // 1 - CEF_VERSION_MINOR
1658 // 2 - CEF_VERSION_PATCH
1659 // 3 - CEF_COMMIT_NUMBER
1660 // 4 - CHROME_VERSION_MAJOR
1661 // 5 - CHROME_VERSION_MINOR
1662 // 6 - CHROME_VERSION_BUILD
1663 // 7 - CHROME_VERSION_PATCH
1664 ///
1665 int cef_version_info (int entry);
1666 
1667 // APSTUDIO_HIDDEN_SYMBOLS
1668 
1669 // CEF_INCLUDE_CEF_VERSION_H_
1670 // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
1671 //
1672 // Redistribution and use in source and binary forms, with or without
1673 // modification, are permitted provided that the following conditions are
1674 // met:
1675 //
1676 //    * Redistributions of source code must retain the above copyright
1677 // notice, this list of conditions and the following disclaimer.
1678 //    * Redistributions in binary form must reproduce the above
1679 // copyright notice, this list of conditions and the following disclaimer
1680 // in the documentation and/or other materials provided with the
1681 // distribution.
1682 //    * Neither the name of Google Inc. nor the name Chromium Embedded
1683 // Framework nor the names of its contributors may be used to endorse
1684 // or promote products derived from this software without specific prior
1685 // written permission.
1686 //
1687 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
1688 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
1689 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
1690 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
1691 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
1692 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
1693 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
1694 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
1695 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
1696 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
1697 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
1698 //
1699 // ---------------------------------------------------------------------------
1700 //
1701 // This file was generated by the make_api_hash_header.py tool.
1702 //
1703 
1704 extern (C):
1705 
1706 // The API hash is created by analyzing CEF header files for C API type
1707 // definitions. The hash value will change when header files are modified in a
1708 // way that may cause binary incompatibility with other builds. The universal
1709 // hash value will change if any platform is affected whereas the platform hash
1710 // values will change only if that particular platform is affected.
1711 enum CEF_API_HASH_UNIVERSAL = "ed1dfa5ff8a041241f8fb72eb7454811f358f0d3";
1712 
1713 enum CEF_API_HASH_PLATFORM = "09d3e280ed38f7a082b794c56ff71c52f86f0ea8";
1714 
1715 ///
1716 // Returns CEF API hashes for the libcef library. The returned string is owned
1717 // by the library and should not be freed. The |entry| parameter describes which
1718 // hash value will be returned:
1719 // 0 - CEF_API_HASH_PLATFORM
1720 // 1 - CEF_API_HASH_UNIVERSAL
1721 // 2 - CEF_COMMIT_HASH (from cef_version.h)
1722 ///
1723 const(char)* cef_api_hash (int entry);
1724 
1725 // CEF_INCLUDE_API_HASH_H_
1726 // Copyright (c) 2014 Marshall A. Greenblatt. All rights reserved.
1727 //
1728 // Redistribution and use in source and binary forms, with or without
1729 // modification, are permitted provided that the following conditions are
1730 // met:
1731 //
1732 //    * Redistributions of source code must retain the above copyright
1733 // notice, this list of conditions and the following disclaimer.
1734 //    * Redistributions in binary form must reproduce the above
1735 // copyright notice, this list of conditions and the following disclaimer
1736 // in the documentation and/or other materials provided with the
1737 // distribution.
1738 //    * Neither the name of Google Inc. nor the name Chromium Embedded
1739 // Framework nor the names of its contributors may be used to endorse
1740 // or promote products derived from this software without specific prior
1741 // written permission.
1742 //
1743 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
1744 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
1745 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
1746 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
1747 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
1748 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
1749 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
1750 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
1751 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
1752 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
1753 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
1754 
1755 extern (C):
1756 
1757 ///
1758 /// Structure representing a point.
1759 ///
1760 struct cef_point_t
1761 {
1762     int x;
1763     int y;
1764 }
1765 
1766 
1767 
1768 ///
1769 /// Structure representing a rectangle.
1770 ///
1771 struct cef_rect_t
1772 {
1773     int x;
1774     int y;
1775     int width;
1776     int height;
1777 }
1778 
1779 
1780 
1781 ///
1782 /// Structure representing a size.
1783 ///
1784 struct cef_size_t
1785 {
1786     int width;
1787     int height;
1788 }
1789 
1790 
1791 
1792 ///
1793 /// Structure representing insets.
1794 ///
1795 struct cef_insets_t
1796 {
1797     int top;
1798     int left;
1799     int bottom;
1800     int right;
1801 }
1802 
1803 
1804 
1805 // CEF_INCLUDE_INTERNAL_CEF_TYPES_GEOMETRY_H_
1806 // Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
1807 //
1808 // Redistribution and use in source and binary forms, with or without
1809 // modification, are permitted provided that the following conditions are
1810 // met:
1811 //
1812 //    * Redistributions of source code must retain the above copyright
1813 // notice, this list of conditions and the following disclaimer.
1814 //    * Redistributions in binary form must reproduce the above
1815 // copyright notice, this list of conditions and the following disclaimer
1816 // in the documentation and/or other materials provided with the
1817 // distribution.
1818 //    * Neither the name of Google Inc. nor the name Chromium Embedded
1819 // Framework nor the names of its contributors may be used to endorse
1820 // or promote products derived from this software without specific prior
1821 // written permission.
1822 //
1823 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
1824 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
1825 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
1826 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
1827 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
1828 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
1829 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
1830 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
1831 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
1832 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
1833 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
1834 
1835 extern (C):
1836 
1837 ///
1838 /// Supported content setting types. Some types are platform-specific or only
1839 /// supported with the Chrome runtime. Should be kept in sync with Chromium's
1840 /// ContentSettingsType type.
1841 ///
1842 enum cef_content_setting_types_t
1843 {
1844     // This setting governs whether cookies are enabled by the user in the
1845     /// provided context. However, it may be overridden by other settings. This
1846     /// enum should NOT be read directly to determine whether cookies are enabled;
1847     /// the client should instead rely on the CookieSettings API.
1848     CEF_CONTENT_SETTING_TYPE_COOKIES = 0,
1849     CEF_CONTENT_SETTING_TYPE_IMAGES = 1,
1850     CEF_CONTENT_SETTING_TYPE_JAVASCRIPT = 2,
1851 
1852     /// This setting governs both popups and unwanted redirects like tab-unders
1853     /// and framebusting.
1854     CEF_CONTENT_SETTING_TYPE_POPUPS = 3,
1855 
1856     CEF_CONTENT_SETTING_TYPE_GEOLOCATION = 4,
1857     CEF_CONTENT_SETTING_TYPE_NOTIFICATIONS = 5,
1858     CEF_CONTENT_SETTING_TYPE_AUTO_SELECT_CERTIFICATE = 6,
1859     CEF_CONTENT_SETTING_TYPE_MIXEDSCRIPT = 7,
1860     CEF_CONTENT_SETTING_TYPE_MEDIASTREAM_MIC = 8,
1861     CEF_CONTENT_SETTING_TYPE_MEDIASTREAM_CAMERA = 9,
1862     CEF_CONTENT_SETTING_TYPE_PROTOCOL_HANDLERS = 10,
1863     CEF_CONTENT_SETTING_TYPE_DEPRECATED_PPAPI_BROKER = 11,
1864     CEF_CONTENT_SETTING_TYPE_AUTOMATIC_DOWNLOADS = 12,
1865 
1866     /// Advanced device-specific functions on MIDI devices. MIDI-SysEx
1867     /// communications can be used for changing the MIDI device's persistent state
1868     /// such as firmware.
1869     CEF_CONTENT_SETTING_TYPE_MIDI_SYSEX = 13,
1870 
1871     CEF_CONTENT_SETTING_TYPE_SSL_CERT_DECISIONS = 14,
1872     CEF_CONTENT_SETTING_TYPE_PROTECTED_MEDIA_IDENTIFIER = 15,
1873     CEF_CONTENT_SETTING_TYPE_APP_BANNER = 16,
1874     CEF_CONTENT_SETTING_TYPE_SITE_ENGAGEMENT = 17,
1875     CEF_CONTENT_SETTING_TYPE_DURABLE_STORAGE = 18,
1876     CEF_CONTENT_SETTING_TYPE_USB_CHOOSER_DATA = 19,
1877     CEF_CONTENT_SETTING_TYPE_BLUETOOTH_GUARD = 20,
1878     CEF_CONTENT_SETTING_TYPE_BACKGROUND_SYNC = 21,
1879     CEF_CONTENT_SETTING_TYPE_AUTOPLAY = 22,
1880     CEF_CONTENT_SETTING_TYPE_IMPORTANT_SITE_INFO = 23,
1881     CEF_CONTENT_SETTING_TYPE_PERMISSION_AUTOBLOCKER_DATA = 24,
1882     CEF_CONTENT_SETTING_TYPE_ADS = 25,
1883 
1884     /// Website setting which stores metadata for the subresource filter to aid in
1885     /// decisions for whether or not to show the UI.
1886     CEF_CONTENT_SETTING_TYPE_ADS_DATA = 26,
1887 
1888     /// MIDI stands for Musical Instrument Digital Interface. It is a standard
1889     /// that allows electronic musical instruments, computers, and other devices
1890     /// to communicate with each other.
1891     CEF_CONTENT_SETTING_TYPE_MIDI = 27,
1892 
1893     /// This content setting type is for caching password protection service's
1894     /// verdicts of each origin.
1895     CEF_CONTENT_SETTING_TYPE_PASSWORD_PROTECTION = 28,
1896 
1897     /// Website setting which stores engagement data for media related to a
1898     /// specific origin.
1899     CEF_CONTENT_SETTING_TYPE_MEDIA_ENGAGEMENT = 29,
1900 
1901     /// Content setting which stores whether or not the site can play audible
1902     /// sound. This will not block playback but instead the user will not hear it.
1903     CEF_CONTENT_SETTING_TYPE_SOUND = 30,
1904 
1905     /// Website setting which stores the list of client hints that the origin
1906     /// requested the browser to remember. The browser is expected to send all
1907     /// client hints in the HTTP request headers for every resource requested
1908     /// from that origin.
1909     CEF_CONTENT_SETTING_TYPE_CLIENT_HINTS = 31,
1910 
1911     /// Generic Sensor API covering ambient-light-sensor, accelerometer, gyroscope
1912     /// and magnetometer are all mapped to a single content_settings_type.
1913     /// Setting for the Generic Sensor API covering ambient-light-sensor,
1914     /// accelerometer, gyroscope and magnetometer. These are all mapped to a
1915     /// single ContentSettingsType.
1916     CEF_CONTENT_SETTING_TYPE_SENSORS = 32,
1917 
1918     /// Content setting which stores whether or not the user has granted the site
1919     /// permission to respond to accessibility events, which can be used to
1920     /// provide a custom accessibility experience. Requires explicit user consent
1921     /// because some users may not want sites to know they're using assistive
1922     /// technology.
1923     CEF_CONTENT_SETTING_TYPE_ACCESSIBILITY_EVENTS = 33,
1924 
1925     /// Used to store whether to allow a website to install a payment handler.
1926     CEF_CONTENT_SETTING_TYPE_PAYMENT_HANDLER = 34,
1927 
1928     /// Content setting which stores whether to allow sites to ask for permission
1929     /// to access USB devices. If this is allowed specific device permissions are
1930     /// stored under USB_CHOOSER_DATA.
1931     CEF_CONTENT_SETTING_TYPE_USB_GUARD = 35,
1932 
1933     /// Nothing is stored in this setting at present. Please refer to
1934     /// BackgroundFetchPermissionContext for details on how this permission
1935     /// is ascertained.
1936     CEF_CONTENT_SETTING_TYPE_BACKGROUND_FETCH = 36,
1937 
1938     /// Website setting which stores the amount of times the user has dismissed
1939     /// intent picker UI without explicitly choosing an option.
1940     CEF_CONTENT_SETTING_TYPE_INTENT_PICKER_DISPLAY = 37,
1941 
1942     /// Used to store whether to allow a website to detect user active/idle state.
1943     CEF_CONTENT_SETTING_TYPE_IDLE_DETECTION = 38,
1944 
1945     /// Content settings for access to serial ports. The "guard" content setting
1946     /// stores whether to allow sites to ask for permission to access a port. The
1947     /// permissions granted to access particular ports are stored in the "chooser
1948     /// data" website setting.
1949     CEF_CONTENT_SETTING_TYPE_SERIAL_GUARD = 39,
1950     CEF_CONTENT_SETTING_TYPE_SERIAL_CHOOSER_DATA = 40,
1951 
1952     /// Nothing is stored in this setting at present. Please refer to
1953     /// PeriodicBackgroundSyncPermissionContext for details on how this permission
1954     /// is ascertained.
1955     /// This content setting is not registered because it does not require access
1956     /// to any existing providers.
1957     CEF_CONTENT_SETTING_TYPE_PERIODIC_BACKGROUND_SYNC = 41,
1958 
1959     /// Content setting which stores whether to allow sites to ask for permission
1960     /// to do Bluetooth scanning.
1961     CEF_CONTENT_SETTING_TYPE_BLUETOOTH_SCANNING = 42,
1962 
1963     /// Content settings for access to HID devices. The "guard" content setting
1964     /// stores whether to allow sites to ask for permission to access a device.
1965     /// The permissions granted to access particular devices are stored in the
1966     /// "chooser data" website setting.
1967     CEF_CONTENT_SETTING_TYPE_HID_GUARD = 43,
1968     CEF_CONTENT_SETTING_TYPE_HID_CHOOSER_DATA = 44,
1969 
1970     /// Wake Lock API, which has two lock types: screen and system locks.
1971     /// Currently, screen locks do not need any additional permission, and system
1972     /// locks are always denied while the right UI is worked out.
1973     CEF_CONTENT_SETTING_TYPE_WAKE_LOCK_SCREEN = 45,
1974     CEF_CONTENT_SETTING_TYPE_WAKE_LOCK_SYSTEM = 46,
1975 
1976     /// Legacy SameSite cookie behavior. This disables SameSite=Lax-by-default,
1977     /// SameSite=None requires Secure, and Schemeful Same-Site, forcing the
1978     /// legacy behavior wherein 1) cookies that don't specify SameSite are treated
1979     /// as SameSite=None, 2) SameSite=None cookies are not required to be Secure,
1980     /// and 3) schemeful same-site is not active.
1981     ///
1982     /// This will also be used to revert to legacy behavior when future changes
1983     /// in cookie handling are introduced.
1984     CEF_CONTENT_SETTING_TYPE_LEGACY_COOKIE_ACCESS = 47,
1985 
1986     /// Content settings which stores whether to allow sites to ask for permission
1987     /// to save changes to an original file selected by the user through the
1988     /// File System Access API.
1989     CEF_CONTENT_SETTING_TYPE_FILE_SYSTEM_WRITE_GUARD = 48,
1990 
1991     /// Used to store whether to allow a website to exchange data with NFC
1992     /// devices.
1993     CEF_CONTENT_SETTING_TYPE_NFC = 49,
1994 
1995     /// Website setting to store permissions granted to access particular
1996     /// Bluetooth devices.
1997     CEF_CONTENT_SETTING_TYPE_BLUETOOTH_CHOOSER_DATA = 50,
1998 
1999     /// Full access to the system clipboard (sanitized read without user gesture,
2000     /// and unsanitized read and write with user gesture).
2001     CEF_CONTENT_SETTING_TYPE_CLIPBOARD_READ_WRITE = 51,
2002 
2003     /// This is special-cased in the permissions layer to always allow, and as
2004     /// such doesn't have associated prefs data.
2005     CEF_CONTENT_SETTING_TYPE_CLIPBOARD_SANITIZED_WRITE = 52,
2006 
2007     /// This content setting type is for caching safe browsing real time url
2008     /// check's verdicts of each origin.
2009     CEF_CONTENT_SETTING_TYPE_SAFE_BROWSING_URL_CHECK_DATA = 53,
2010 
2011     /// Used to store whether a site is allowed to request AR or VR sessions with
2012     /// the WebXr Device API.
2013     CEF_CONTENT_SETTING_TYPE_VR = 54,
2014     CEF_CONTENT_SETTING_TYPE_AR = 55,
2015 
2016     /// Content setting which stores whether to allow site to open and read files
2017     /// and directories selected through the File System Access API.
2018     CEF_CONTENT_SETTING_TYPE_FILE_SYSTEM_READ_GUARD = 56,
2019 
2020     /// Access to first party storage in a third-party context. Exceptions are
2021     /// scoped to the combination of requesting/top-level origin, and are managed
2022     /// through the Storage Access API. For the time being, this content setting
2023     /// exists in parallel to third-party cookie rules stored in COOKIES.
2024     CEF_CONTENT_SETTING_TYPE_STORAGE_ACCESS = 57,
2025 
2026     /// Content setting which stores whether to allow a site to control camera
2027     /// movements. It does not give access to camera.
2028     CEF_CONTENT_SETTING_TYPE_CAMERA_PAN_TILT_ZOOM = 58,
2029 
2030     /// Content setting for Screen Enumeration and Screen Detail functionality.
2031     /// Permits access to detailed multi-screen information, like size and
2032     /// position. Permits placing fullscreen and windowed content on specific
2033     /// screens. See also: https://w3c.github.io/window-placement
2034     CEF_CONTENT_SETTING_TYPE_WINDOW_MANAGEMENT = 59,
2035 
2036     /// Stores whether to allow insecure websites to make private network
2037     /// requests.
2038     /// See also: https://wicg.github.io/cors-rfc1918
2039     /// Set through enterprise policies only.
2040     CEF_CONTENT_SETTING_TYPE_INSECURE_PRIVATE_NETWORK = 60,
2041 
2042     /// Content setting which stores whether or not a site can access low-level
2043     /// locally installed font data using the Local Fonts Access API.
2044     CEF_CONTENT_SETTING_TYPE_LOCAL_FONTS = 61,
2045 
2046     /// Stores per-origin state for permission auto-revocation (for all permission
2047     /// types).
2048     CEF_CONTENT_SETTING_TYPE_PERMISSION_AUTOREVOCATION_DATA = 62,
2049 
2050     /// Stores per-origin state of the most recently selected directory for the
2051     /// use by the File System Access API.
2052     CEF_CONTENT_SETTING_TYPE_FILE_SYSTEM_LAST_PICKED_DIRECTORY = 63,
2053 
2054     /// Controls access to the getDisplayMedia API.
2055     CEF_CONTENT_SETTING_TYPE_DISPLAY_CAPTURE = 64,
2056 
2057     /// Website setting to store permissions metadata granted to paths on the
2058     /// local file system via the File System Access API.
2059     /// |FILE_SYSTEM_WRITE_GUARD| is the corresponding "guard" setting. The stored
2060     /// data represents valid permission only if
2061     /// |FILE_SYSTEM_ACCESS_EXTENDED_PERMISSION| is enabled via user opt-in.
2062     /// Otherwise, they represent "recently granted but revoked permission", which
2063     /// are used to restore the permission.
2064     CEF_CONTENT_SETTING_TYPE_FILE_SYSTEM_ACCESS_CHOOSER_DATA = 65,
2065 
2066     /// Stores a grant that allows a relying party to send a request for identity
2067     /// information to specified identity providers, potentially through any
2068     /// anti-tracking measures that would otherwise prevent it. This setting is
2069     /// associated with the relying party's origin.
2070     CEF_CONTENT_SETTING_TYPE_FEDERATED_IDENTITY_SHARING = 66,
2071 
2072     /// Whether to use the v8 optimized JIT for running JavaScript on the page.
2073     CEF_CONTENT_SETTING_TYPE_JAVASCRIPT_JIT = 67,
2074 
2075     /// Content setting which stores user decisions to allow loading a site over
2076     /// HTTP. Entries are added by hostname when a user bypasses the HTTPS-First
2077     /// Mode interstitial warning when a site does not support HTTPS. Allowed
2078     /// hosts are exact hostname matches -- subdomains of a host on the allowlist
2079     /// must be separately allowlisted.
2080     CEF_CONTENT_SETTING_TYPE_HTTP_ALLOWED = 68,
2081 
2082     /// Stores metadata related to form fill, such as e.g. whether user data was
2083     /// autofilled on a specific website.
2084     CEF_CONTENT_SETTING_TYPE_FORMFILL_METADATA = 69,
2085 
2086     /// Setting to indicate that there is an active federated sign-in session
2087     /// between a specified relying party and a specified identity provider for
2088     /// a specified account. When this is present it allows access to session
2089     /// management capabilities between the sites. This setting is associated
2090     /// with the relying party's origin.
2091     // Obsolete on Nov 2023.
2092     CEF_CONTENT_SETTING_TYPE_DEPRECATED_FEDERATED_IDENTITY_ACTIVE_SESSION = 70,
2093 
2094     /// Setting to indicate whether Chrome should automatically apply darkening to
2095     /// web content.
2096     CEF_CONTENT_SETTING_TYPE_AUTO_DARK_WEB_CONTENT = 71,
2097 
2098     /// Setting to indicate whether Chrome should request the desktop view of a
2099     /// site instead of the mobile one.
2100     CEF_CONTENT_SETTING_TYPE_REQUEST_DESKTOP_SITE = 72,
2101 
2102     /// Setting to indicate whether browser should allow signing into a website
2103     /// via the browser FedCM API.
2104     CEF_CONTENT_SETTING_TYPE_FEDERATED_IDENTITY_API = 73,
2105 
2106     /// Stores notification interactions per origin for the past 90 days.
2107     /// Interactions per origin are pre-aggregated over seven-day windows: A
2108     /// notification interaction or display is assigned to the last Monday
2109     /// midnight in local time.
2110     CEF_CONTENT_SETTING_TYPE_NOTIFICATION_INTERACTIONS = 74,
2111 
2112     /// Website setting which stores the last reduced accept language negotiated
2113     /// for a given origin, to be used on future visits to the origin.
2114     CEF_CONTENT_SETTING_TYPE_REDUCED_ACCEPT_LANGUAGE = 75,
2115 
2116     /// Website setting which is used for NotificationPermissionReviewService to
2117     /// store origin blocklist from review notification permissions feature.
2118     CEF_CONTENT_SETTING_TYPE_NOTIFICATION_PERMISSION_REVIEW = 76,
2119 
2120     /// Website setting to store permissions granted to access particular devices
2121     /// in private network.
2122     CEF_CONTENT_SETTING_TYPE_PRIVATE_NETWORK_GUARD = 77,
2123     CEF_CONTENT_SETTING_TYPE_PRIVATE_NETWORK_CHOOSER_DATA = 78,
2124 
2125     /// Website setting which stores whether the browser has observed the user
2126     /// signing into an identity-provider based on observing the IdP-SignIn-Status
2127     /// HTTP header.
2128     CEF_CONTENT_SETTING_TYPE_FEDERATED_IDENTITY_IDENTITY_PROVIDER_SIGNIN_STATUS = 79,
2129 
2130     /// Website setting which is used for UnusedSitePermissionsService to
2131     /// store revoked permissions of unused sites from unused site permissions
2132     /// feature.
2133     CEF_CONTENT_SETTING_TYPE_REVOKED_UNUSED_SITE_PERMISSIONS = 80,
2134 
2135     /// Similar to STORAGE_ACCESS, but applicable at the page-level rather than
2136     /// being specific to a frame.
2137     CEF_CONTENT_SETTING_TYPE_TOP_LEVEL_STORAGE_ACCESS = 81,
2138 
2139     /// Setting to indicate whether user has opted in to allowing auto re-authn
2140     /// via the FedCM API.
2141     CEF_CONTENT_SETTING_TYPE_FEDERATED_IDENTITY_AUTO_REAUTHN_PERMISSION = 82,
2142 
2143     /// Website setting which stores whether the user has explicitly registered
2144     /// a website as an identity-provider.
2145     CEF_CONTENT_SETTING_TYPE_FEDERATED_IDENTITY_IDENTITY_PROVIDER_REGISTRATION = 83,
2146 
2147     /// Content setting which is used to indicate whether anti-abuse functionality
2148     /// should be enabled.
2149     CEF_CONTENT_SETTING_TYPE_ANTI_ABUSE = 84,
2150 
2151     /// Content setting used to indicate whether third-party storage partitioning
2152     /// should be enabled.
2153     CEF_CONTENT_SETTING_TYPE_THIRD_PARTY_STORAGE_PARTITIONING = 85,
2154 
2155     /// Used to indicate whether HTTPS-First Mode is enabled on the hostname.
2156     CEF_CONTENT_SETTING_TYPE_HTTPS_ENFORCED = 86,
2157 
2158     /// Setting for enabling the `getAllScreensMedia` API. Spec link:
2159     /// https://github.com/screen-share/capture-all-screens
2160     CEF_CONTENT_SETTING_TYPE_ALL_SCREEN_CAPTURE = 87,
2161 
2162     /// Stores per origin metadata for cookie controls.
2163     CEF_CONTENT_SETTING_TYPE_COOKIE_CONTROLS_METADATA = 88,
2164 
2165     /// Content Setting for temporary 3PC accesses granted by user behavior
2166     /// heuristics.
2167     CEF_CONTENT_SETTING_TYPE_TPCD_HEURISTICS_GRANTS = 89,
2168 
2169     /// Content Setting for 3PC accesses granted by metadata delivered via the
2170     /// component updater service. This type will only be used when
2171     /// `net::features::kTpcdMetadataGrants` is enabled.
2172     CEF_CONTENT_SETTING_TYPE_TPCD_METADATA_GRANTS = 90,
2173 
2174     /// Content Setting for 3PC accesses granted via 3PC deprecation trial.
2175     CEF_CONTENT_SETTING_TYPE_TPCD_TRIAL = 91,
2176 
2177     /// Content Setting for 3PC accesses granted via top-level 3PC deprecation
2178     /// trial. Similar to TPCD_TRIAL, but applicable at the page-level for the
2179     /// lifetime of the page that served the token, rather than being specific to
2180     /// a requesting-origin/top-level-site combination and persistent.
2181     CEF_CONTENT_SETTING_TYPE_TOP_LEVEL_TPCD_TRIAL = 92,
2182 
2183     /// Content Setting for a first-party origin trial that allows websites to
2184     /// enable third-party cookie deprecation.
2185     /// ALLOW (default): no effect (e.g. third-party cookies allowed, if not
2186     ///                  blocked otherwise).
2187     /// BLOCK: third-party cookies blocked, but 3PCD mitigations enabled.
2188     CEF_CONTENT_SETTING_TOP_LEVEL_TPCD_ORIGIN_TRIAL = 93,
2189 
2190     /// Content setting used to indicate whether entering picture-in-picture
2191     /// automatically should be enabled.
2192     CEF_CONTENT_SETTING_TYPE_AUTO_PICTURE_IN_PICTURE = 94,
2193 
2194     /// Whether user has opted into keeping file/directory permissions persistent
2195     /// between visits for a given origin. When enabled, permission metadata
2196     /// stored under |FILE_SYSTEM_ACCESS_CHOOSER_DATA| can auto-grant incoming
2197     /// permission request.
2198     CEF_CONTENT_SETTING_TYPE_FILE_SYSTEM_ACCESS_EXTENDED_PERMISSION = 95,
2199 
2200     /// Whether the FSA Persistent Permissions restore prompt is eligible to be
2201     /// shown to the user, for a given origin.
2202     CEF_CONTENT_SETTING_TYPE_FILE_SYSTEM_ACCESS_RESTORE_PERMISSION = 96,
2203 
2204     /// Whether an application capturing another tab, may scroll and zoom
2205     /// the captured tab.
2206     CEF_CONTENT_SETTING_TYPE_CAPTURED_SURFACE_CONTROL = 97,
2207 
2208     /// Content setting for access to smart card readers.
2209     /// The "guard" content setting stores whether to allow sites to access the
2210     /// Smart Card API.
2211     CEF_CONTENT_SETTING_TYPE_SMART_CARD_GUARD = 98,
2212     CEF_CONTENT_SETTING_TYPE_SMART_CARD_DATA = 99,
2213 
2214     /// Content settings for access to printers for the Web Printing API.
2215     CEF_CONTENT_SETTING_TYPE_WEB_PRINTING = 100,
2216 
2217     /// Content setting used to indicate whether entering HTML Fullscreen
2218     /// automatically (i.e. without transient activation) should be enabled.
2219     CEF_CONTENT_SETTING_TYPE_AUTOMATIC_FULLSCREEN = 101,
2220 
2221     /// Content settings used to indicate that a web app is allowed to prompt the
2222     /// user for the installation of sub apps.
2223     CEF_CONTENT_SETTING_TYPE_SUB_APP_INSTALLATION_PROMPTS = 102,
2224 
2225     /// Whether an application can enumerate audio output device.
2226     CEF_CONTENT_SETTING_TYPE_SPEAKER_SELECTION = 103,
2227 
2228     /// Content settings for access to the Direct Sockets API.
2229     CEF_CONTENT_SETTING_TYPE_DIRECT_SOCKETS = 104,
2230 
2231     /// Keyboard Lock API allows a site to capture keyboard inputs that would
2232     /// otherwise be handled by the OS or the browser.
2233     CEF_CONTENT_SETTING_TYPE_KEYBOARD_LOCK = 105,
2234 
2235     /// Pointer Lock API allows a site to hide the cursor and have exclusive
2236     /// access to mouse inputs.
2237     CEF_CONTENT_SETTING_TYPE_POINTER_LOCK = 106,
2238 
2239     /// Website setting which is used for UnusedSitePermissionsService to store
2240     /// auto-revoked notification permissions from abusive sites.
2241     REVOKED_ABUSIVE_NOTIFICATION_PERMISSIONS = 107,
2242 
2243     /// Content setting that controls tracking protection status per site.
2244     /// BLOCK: Protections enabled. This is the default state.
2245     /// ALLOW: Protections disabled.
2246     TRACKING_PROTECTION = 108
2247 }
2248 
2249 alias CEF_CONTENT_SETTING_TYPE_COOKIES = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_COOKIES;
2250 alias CEF_CONTENT_SETTING_TYPE_IMAGES = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_IMAGES;
2251 alias CEF_CONTENT_SETTING_TYPE_JAVASCRIPT = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_JAVASCRIPT;
2252 alias CEF_CONTENT_SETTING_TYPE_POPUPS = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_POPUPS;
2253 alias CEF_CONTENT_SETTING_TYPE_GEOLOCATION = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_GEOLOCATION;
2254 alias CEF_CONTENT_SETTING_TYPE_NOTIFICATIONS = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_NOTIFICATIONS;
2255 alias CEF_CONTENT_SETTING_TYPE_AUTO_SELECT_CERTIFICATE = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_AUTO_SELECT_CERTIFICATE;
2256 alias CEF_CONTENT_SETTING_TYPE_MIXEDSCRIPT = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_MIXEDSCRIPT;
2257 alias CEF_CONTENT_SETTING_TYPE_MEDIASTREAM_MIC = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_MEDIASTREAM_MIC;
2258 alias CEF_CONTENT_SETTING_TYPE_MEDIASTREAM_CAMERA = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_MEDIASTREAM_CAMERA;
2259 alias CEF_CONTENT_SETTING_TYPE_PROTOCOL_HANDLERS = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_PROTOCOL_HANDLERS;
2260 alias CEF_CONTENT_SETTING_TYPE_DEPRECATED_PPAPI_BROKER = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_DEPRECATED_PPAPI_BROKER;
2261 alias CEF_CONTENT_SETTING_TYPE_AUTOMATIC_DOWNLOADS = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_AUTOMATIC_DOWNLOADS;
2262 alias CEF_CONTENT_SETTING_TYPE_MIDI_SYSEX = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_MIDI_SYSEX;
2263 alias CEF_CONTENT_SETTING_TYPE_SSL_CERT_DECISIONS = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_SSL_CERT_DECISIONS;
2264 alias CEF_CONTENT_SETTING_TYPE_PROTECTED_MEDIA_IDENTIFIER = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_PROTECTED_MEDIA_IDENTIFIER;
2265 alias CEF_CONTENT_SETTING_TYPE_APP_BANNER = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_APP_BANNER;
2266 alias CEF_CONTENT_SETTING_TYPE_SITE_ENGAGEMENT = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_SITE_ENGAGEMENT;
2267 alias CEF_CONTENT_SETTING_TYPE_DURABLE_STORAGE = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_DURABLE_STORAGE;
2268 alias CEF_CONTENT_SETTING_TYPE_USB_CHOOSER_DATA = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_USB_CHOOSER_DATA;
2269 alias CEF_CONTENT_SETTING_TYPE_BLUETOOTH_GUARD = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_BLUETOOTH_GUARD;
2270 alias CEF_CONTENT_SETTING_TYPE_BACKGROUND_SYNC = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_BACKGROUND_SYNC;
2271 alias CEF_CONTENT_SETTING_TYPE_AUTOPLAY = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_AUTOPLAY;
2272 alias CEF_CONTENT_SETTING_TYPE_IMPORTANT_SITE_INFO = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_IMPORTANT_SITE_INFO;
2273 alias CEF_CONTENT_SETTING_TYPE_PERMISSION_AUTOBLOCKER_DATA = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_PERMISSION_AUTOBLOCKER_DATA;
2274 alias CEF_CONTENT_SETTING_TYPE_ADS = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_ADS;
2275 alias CEF_CONTENT_SETTING_TYPE_ADS_DATA = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_ADS_DATA;
2276 alias CEF_CONTENT_SETTING_TYPE_MIDI = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_MIDI;
2277 alias CEF_CONTENT_SETTING_TYPE_PASSWORD_PROTECTION = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_PASSWORD_PROTECTION;
2278 alias CEF_CONTENT_SETTING_TYPE_MEDIA_ENGAGEMENT = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_MEDIA_ENGAGEMENT;
2279 alias CEF_CONTENT_SETTING_TYPE_SOUND = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_SOUND;
2280 alias CEF_CONTENT_SETTING_TYPE_CLIENT_HINTS = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_CLIENT_HINTS;
2281 alias CEF_CONTENT_SETTING_TYPE_SENSORS = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_SENSORS;
2282 alias CEF_CONTENT_SETTING_TYPE_ACCESSIBILITY_EVENTS = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_ACCESSIBILITY_EVENTS;
2283 alias CEF_CONTENT_SETTING_TYPE_PAYMENT_HANDLER = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_PAYMENT_HANDLER;
2284 alias CEF_CONTENT_SETTING_TYPE_USB_GUARD = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_USB_GUARD;
2285 alias CEF_CONTENT_SETTING_TYPE_BACKGROUND_FETCH = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_BACKGROUND_FETCH;
2286 alias CEF_CONTENT_SETTING_TYPE_INTENT_PICKER_DISPLAY = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_INTENT_PICKER_DISPLAY;
2287 alias CEF_CONTENT_SETTING_TYPE_IDLE_DETECTION = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_IDLE_DETECTION;
2288 alias CEF_CONTENT_SETTING_TYPE_SERIAL_GUARD = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_SERIAL_GUARD;
2289 alias CEF_CONTENT_SETTING_TYPE_SERIAL_CHOOSER_DATA = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_SERIAL_CHOOSER_DATA;
2290 alias CEF_CONTENT_SETTING_TYPE_PERIODIC_BACKGROUND_SYNC = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_PERIODIC_BACKGROUND_SYNC;
2291 alias CEF_CONTENT_SETTING_TYPE_BLUETOOTH_SCANNING = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_BLUETOOTH_SCANNING;
2292 alias CEF_CONTENT_SETTING_TYPE_HID_GUARD = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_HID_GUARD;
2293 alias CEF_CONTENT_SETTING_TYPE_HID_CHOOSER_DATA = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_HID_CHOOSER_DATA;
2294 alias CEF_CONTENT_SETTING_TYPE_WAKE_LOCK_SCREEN = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_WAKE_LOCK_SCREEN;
2295 alias CEF_CONTENT_SETTING_TYPE_WAKE_LOCK_SYSTEM = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_WAKE_LOCK_SYSTEM;
2296 alias CEF_CONTENT_SETTING_TYPE_LEGACY_COOKIE_ACCESS = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_LEGACY_COOKIE_ACCESS;
2297 alias CEF_CONTENT_SETTING_TYPE_FILE_SYSTEM_WRITE_GUARD = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_FILE_SYSTEM_WRITE_GUARD;
2298 alias CEF_CONTENT_SETTING_TYPE_NFC = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_NFC;
2299 alias CEF_CONTENT_SETTING_TYPE_BLUETOOTH_CHOOSER_DATA = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_BLUETOOTH_CHOOSER_DATA;
2300 alias CEF_CONTENT_SETTING_TYPE_CLIPBOARD_READ_WRITE = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_CLIPBOARD_READ_WRITE;
2301 alias CEF_CONTENT_SETTING_TYPE_CLIPBOARD_SANITIZED_WRITE = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_CLIPBOARD_SANITIZED_WRITE;
2302 alias CEF_CONTENT_SETTING_TYPE_SAFE_BROWSING_URL_CHECK_DATA = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_SAFE_BROWSING_URL_CHECK_DATA;
2303 alias CEF_CONTENT_SETTING_TYPE_VR = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_VR;
2304 alias CEF_CONTENT_SETTING_TYPE_AR = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_AR;
2305 alias CEF_CONTENT_SETTING_TYPE_FILE_SYSTEM_READ_GUARD = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_FILE_SYSTEM_READ_GUARD;
2306 alias CEF_CONTENT_SETTING_TYPE_STORAGE_ACCESS = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_STORAGE_ACCESS;
2307 alias CEF_CONTENT_SETTING_TYPE_CAMERA_PAN_TILT_ZOOM = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_CAMERA_PAN_TILT_ZOOM;
2308 alias CEF_CONTENT_SETTING_TYPE_WINDOW_MANAGEMENT = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_WINDOW_MANAGEMENT;
2309 alias CEF_CONTENT_SETTING_TYPE_INSECURE_PRIVATE_NETWORK = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_INSECURE_PRIVATE_NETWORK;
2310 alias CEF_CONTENT_SETTING_TYPE_LOCAL_FONTS = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_LOCAL_FONTS;
2311 alias CEF_CONTENT_SETTING_TYPE_PERMISSION_AUTOREVOCATION_DATA = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_PERMISSION_AUTOREVOCATION_DATA;
2312 alias CEF_CONTENT_SETTING_TYPE_FILE_SYSTEM_LAST_PICKED_DIRECTORY = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_FILE_SYSTEM_LAST_PICKED_DIRECTORY;
2313 alias CEF_CONTENT_SETTING_TYPE_DISPLAY_CAPTURE = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_DISPLAY_CAPTURE;
2314 alias CEF_CONTENT_SETTING_TYPE_FILE_SYSTEM_ACCESS_CHOOSER_DATA = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_FILE_SYSTEM_ACCESS_CHOOSER_DATA;
2315 alias CEF_CONTENT_SETTING_TYPE_FEDERATED_IDENTITY_SHARING = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_FEDERATED_IDENTITY_SHARING;
2316 alias CEF_CONTENT_SETTING_TYPE_JAVASCRIPT_JIT = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_JAVASCRIPT_JIT;
2317 alias CEF_CONTENT_SETTING_TYPE_HTTP_ALLOWED = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_HTTP_ALLOWED;
2318 alias CEF_CONTENT_SETTING_TYPE_FORMFILL_METADATA = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_FORMFILL_METADATA;
2319 alias CEF_CONTENT_SETTING_TYPE_DEPRECATED_FEDERATED_IDENTITY_ACTIVE_SESSION = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_DEPRECATED_FEDERATED_IDENTITY_ACTIVE_SESSION;
2320 alias CEF_CONTENT_SETTING_TYPE_AUTO_DARK_WEB_CONTENT = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_AUTO_DARK_WEB_CONTENT;
2321 alias CEF_CONTENT_SETTING_TYPE_REQUEST_DESKTOP_SITE = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_REQUEST_DESKTOP_SITE;
2322 alias CEF_CONTENT_SETTING_TYPE_FEDERATED_IDENTITY_API = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_FEDERATED_IDENTITY_API;
2323 alias CEF_CONTENT_SETTING_TYPE_NOTIFICATION_INTERACTIONS = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_NOTIFICATION_INTERACTIONS;
2324 alias CEF_CONTENT_SETTING_TYPE_REDUCED_ACCEPT_LANGUAGE = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_REDUCED_ACCEPT_LANGUAGE;
2325 alias CEF_CONTENT_SETTING_TYPE_NOTIFICATION_PERMISSION_REVIEW = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_NOTIFICATION_PERMISSION_REVIEW;
2326 alias CEF_CONTENT_SETTING_TYPE_PRIVATE_NETWORK_GUARD = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_PRIVATE_NETWORK_GUARD;
2327 alias CEF_CONTENT_SETTING_TYPE_PRIVATE_NETWORK_CHOOSER_DATA = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_PRIVATE_NETWORK_CHOOSER_DATA;
2328 alias CEF_CONTENT_SETTING_TYPE_FEDERATED_IDENTITY_IDENTITY_PROVIDER_SIGNIN_STATUS = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_FEDERATED_IDENTITY_IDENTITY_PROVIDER_SIGNIN_STATUS;
2329 alias CEF_CONTENT_SETTING_TYPE_REVOKED_UNUSED_SITE_PERMISSIONS = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_REVOKED_UNUSED_SITE_PERMISSIONS;
2330 alias CEF_CONTENT_SETTING_TYPE_TOP_LEVEL_STORAGE_ACCESS = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_TOP_LEVEL_STORAGE_ACCESS;
2331 alias CEF_CONTENT_SETTING_TYPE_FEDERATED_IDENTITY_AUTO_REAUTHN_PERMISSION = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_FEDERATED_IDENTITY_AUTO_REAUTHN_PERMISSION;
2332 alias CEF_CONTENT_SETTING_TYPE_FEDERATED_IDENTITY_IDENTITY_PROVIDER_REGISTRATION = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_FEDERATED_IDENTITY_IDENTITY_PROVIDER_REGISTRATION;
2333 alias CEF_CONTENT_SETTING_TYPE_ANTI_ABUSE = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_ANTI_ABUSE;
2334 alias CEF_CONTENT_SETTING_TYPE_THIRD_PARTY_STORAGE_PARTITIONING = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_THIRD_PARTY_STORAGE_PARTITIONING;
2335 alias CEF_CONTENT_SETTING_TYPE_HTTPS_ENFORCED = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_HTTPS_ENFORCED;
2336 alias CEF_CONTENT_SETTING_TYPE_ALL_SCREEN_CAPTURE = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_ALL_SCREEN_CAPTURE;
2337 alias CEF_CONTENT_SETTING_TYPE_COOKIE_CONTROLS_METADATA = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_COOKIE_CONTROLS_METADATA;
2338 alias CEF_CONTENT_SETTING_TYPE_TPCD_HEURISTICS_GRANTS = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_TPCD_HEURISTICS_GRANTS;
2339 alias CEF_CONTENT_SETTING_TYPE_TPCD_METADATA_GRANTS = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_TPCD_METADATA_GRANTS;
2340 alias CEF_CONTENT_SETTING_TYPE_TPCD_TRIAL = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_TPCD_TRIAL;
2341 alias CEF_CONTENT_SETTING_TYPE_TOP_LEVEL_TPCD_TRIAL = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_TOP_LEVEL_TPCD_TRIAL;
2342 alias CEF_CONTENT_SETTING_TOP_LEVEL_TPCD_ORIGIN_TRIAL = cef_content_setting_types_t.CEF_CONTENT_SETTING_TOP_LEVEL_TPCD_ORIGIN_TRIAL;
2343 alias CEF_CONTENT_SETTING_TYPE_AUTO_PICTURE_IN_PICTURE = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_AUTO_PICTURE_IN_PICTURE;
2344 alias CEF_CONTENT_SETTING_TYPE_FILE_SYSTEM_ACCESS_EXTENDED_PERMISSION = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_FILE_SYSTEM_ACCESS_EXTENDED_PERMISSION;
2345 alias CEF_CONTENT_SETTING_TYPE_FILE_SYSTEM_ACCESS_RESTORE_PERMISSION = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_FILE_SYSTEM_ACCESS_RESTORE_PERMISSION;
2346 alias CEF_CONTENT_SETTING_TYPE_CAPTURED_SURFACE_CONTROL = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_CAPTURED_SURFACE_CONTROL;
2347 alias CEF_CONTENT_SETTING_TYPE_SMART_CARD_GUARD = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_SMART_CARD_GUARD;
2348 alias CEF_CONTENT_SETTING_TYPE_SMART_CARD_DATA = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_SMART_CARD_DATA;
2349 alias CEF_CONTENT_SETTING_TYPE_WEB_PRINTING = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_WEB_PRINTING;
2350 alias CEF_CONTENT_SETTING_TYPE_AUTOMATIC_FULLSCREEN = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_AUTOMATIC_FULLSCREEN;
2351 alias CEF_CONTENT_SETTING_TYPE_SUB_APP_INSTALLATION_PROMPTS = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_SUB_APP_INSTALLATION_PROMPTS;
2352 alias CEF_CONTENT_SETTING_TYPE_SPEAKER_SELECTION = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_SPEAKER_SELECTION;
2353 alias CEF_CONTENT_SETTING_TYPE_DIRECT_SOCKETS = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_DIRECT_SOCKETS;
2354 alias CEF_CONTENT_SETTING_TYPE_KEYBOARD_LOCK = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_KEYBOARD_LOCK;
2355 alias CEF_CONTENT_SETTING_TYPE_POINTER_LOCK = cef_content_setting_types_t.CEF_CONTENT_SETTING_TYPE_POINTER_LOCK;
2356 alias REVOKED_ABUSIVE_NOTIFICATION_PERMISSIONS = cef_content_setting_types_t.REVOKED_ABUSIVE_NOTIFICATION_PERMISSIONS;
2357 alias TRACKING_PROTECTION = cef_content_setting_types_t.TRACKING_PROTECTION;
2358 
2359 ///
2360 /// Supported content setting values. Should be kept in sync with Chromium's
2361 /// ContentSetting type.
2362 ///
2363 enum cef_content_setting_values_t
2364 {
2365     CEF_CONTENT_SETTING_VALUE_DEFAULT = 0,
2366     CEF_CONTENT_SETTING_VALUE_ALLOW = 1,
2367     CEF_CONTENT_SETTING_VALUE_BLOCK = 2,
2368     CEF_CONTENT_SETTING_VALUE_ASK = 3,
2369     CEF_CONTENT_SETTING_VALUE_SESSION_ONLY = 4,
2370     CEF_CONTENT_SETTING_VALUE_DETECT_IMPORTANT_CONTENT = 5,
2371 
2372     CEF_CONTENT_SETTING_VALUE_NUM_VALUES = 6
2373 }
2374 
2375 alias CEF_CONTENT_SETTING_VALUE_DEFAULT = cef_content_setting_values_t.CEF_CONTENT_SETTING_VALUE_DEFAULT;
2376 alias CEF_CONTENT_SETTING_VALUE_ALLOW = cef_content_setting_values_t.CEF_CONTENT_SETTING_VALUE_ALLOW;
2377 alias CEF_CONTENT_SETTING_VALUE_BLOCK = cef_content_setting_values_t.CEF_CONTENT_SETTING_VALUE_BLOCK;
2378 alias CEF_CONTENT_SETTING_VALUE_ASK = cef_content_setting_values_t.CEF_CONTENT_SETTING_VALUE_ASK;
2379 alias CEF_CONTENT_SETTING_VALUE_SESSION_ONLY = cef_content_setting_values_t.CEF_CONTENT_SETTING_VALUE_SESSION_ONLY;
2380 alias CEF_CONTENT_SETTING_VALUE_DETECT_IMPORTANT_CONTENT = cef_content_setting_values_t.CEF_CONTENT_SETTING_VALUE_DETECT_IMPORTANT_CONTENT;
2381 alias CEF_CONTENT_SETTING_VALUE_NUM_VALUES = cef_content_setting_values_t.CEF_CONTENT_SETTING_VALUE_NUM_VALUES;
2382 
2383 // CEF_INCLUDE_INTERNAL_CEF_TYPES_CONTENT_SETTINGS_H_
2384 // Copyright (c) 2014 Marshall A. Greenblatt. All rights reserved.
2385 //
2386 // Redistribution and use in source and binary forms, with or without
2387 // modification, are permitted provided that the following conditions are
2388 // met:
2389 //
2390 //    * Redistributions of source code must retain the above copyright
2391 // notice, this list of conditions and the following disclaimer.
2392 //    * Redistributions in binary form must reproduce the above
2393 // copyright notice, this list of conditions and the following disclaimer
2394 // in the documentation and/or other materials provided with the
2395 // distribution.
2396 //    * Neither the name of Google Inc. nor the name Chromium Embedded
2397 // Framework nor the names of its contributors may be used to endorse
2398 // or promote products derived from this software without specific prior
2399 // written permission.
2400 //
2401 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
2402 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
2403 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
2404 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
2405 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
2406 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
2407 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
2408 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
2409 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
2410 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
2411 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2412 
2413 import core.stdc.config;
2414 import core.stdc.limits;
2415 
2416 extern (C):
2417 
2418 // Bring in platform-specific definitions.
2419 
2420 // 32-bit ARGB color value, not premultiplied. The color components are always
2421 // in a known order. Equivalent to the SkColor type.
2422 alias cef_color_t = uint;
2423 
2424 // Return the alpha byte from a cef_color_t value.
2425 
2426 
2427 // Return the red byte from a cef_color_t value.
2428 
2429 
2430 // Return the green byte from a cef_color_t value.
2431 
2432 
2433 // Return the blue byte from a cef_color_t value.
2434 
2435 
2436 // Return an cef_color_t value with the specified byte component values.
2437 
2438 
2439 // Return an int64_t value with the specified low and high int32_t component
2440 // values.
2441 
2442 
2443 // Return the low int32_t value from an int64_t value.
2444 
2445 
2446 // Return the high int32_t value from an int64_t value.
2447 
2448 
2449 ///
2450 /// Log severity levels.
2451 ///
2452 enum cef_log_severity_t
2453 {
2454     ///
2455     /// Default logging (currently INFO logging).
2456     ///
2457     LOGSEVERITY_DEFAULT = 0,
2458 
2459     ///
2460     /// Verbose logging.
2461     ///
2462     LOGSEVERITY_VERBOSE = 1,
2463 
2464     ///
2465     /// DEBUG logging.
2466     ///
2467     LOGSEVERITY_DEBUG = LOGSEVERITY_VERBOSE,
2468 
2469     ///
2470     /// INFO logging.
2471     ///
2472     LOGSEVERITY_INFO = 2,
2473 
2474     ///
2475     /// WARNING logging.
2476     ///
2477     LOGSEVERITY_WARNING = 3,
2478 
2479     ///
2480     /// ERROR logging.
2481     ///
2482     LOGSEVERITY_ERROR = 4,
2483 
2484     ///
2485     /// FATAL logging.
2486     ///
2487     LOGSEVERITY_FATAL = 5,
2488 
2489     ///
2490     /// Disable logging to file for all messages, and to stderr for messages with
2491     /// severity less than FATAL.
2492     ///
2493     LOGSEVERITY_DISABLE = 99
2494 }
2495 
2496 alias LOGSEVERITY_DEFAULT = cef_log_severity_t.LOGSEVERITY_DEFAULT;
2497 alias LOGSEVERITY_VERBOSE = cef_log_severity_t.LOGSEVERITY_VERBOSE;
2498 alias LOGSEVERITY_DEBUG = cef_log_severity_t.LOGSEVERITY_DEBUG;
2499 alias LOGSEVERITY_INFO = cef_log_severity_t.LOGSEVERITY_INFO;
2500 alias LOGSEVERITY_WARNING = cef_log_severity_t.LOGSEVERITY_WARNING;
2501 alias LOGSEVERITY_ERROR = cef_log_severity_t.LOGSEVERITY_ERROR;
2502 alias LOGSEVERITY_FATAL = cef_log_severity_t.LOGSEVERITY_FATAL;
2503 alias LOGSEVERITY_DISABLE = cef_log_severity_t.LOGSEVERITY_DISABLE;
2504 
2505 ///
2506 /// Log items prepended to each log line.
2507 ///
2508 enum cef_log_items_t
2509 {
2510     ///
2511     /// Prepend the default list of items.
2512     ///
2513     LOG_ITEMS_DEFAULT = 0,
2514 
2515     ///
2516     /// Prepend no items.
2517     ///
2518     LOG_ITEMS_NONE = 1,
2519 
2520     ///
2521     /// Prepend the process ID.
2522     ///
2523     LOG_ITEMS_FLAG_PROCESS_ID = 1 << 1,
2524 
2525     ///
2526     /// Prepend the thread ID.
2527     ///
2528     LOG_ITEMS_FLAG_THREAD_ID = 1 << 2,
2529 
2530     ///
2531     /// Prepend the timestamp.
2532     ///
2533     LOG_ITEMS_FLAG_TIME_STAMP = 1 << 3,
2534 
2535     ///
2536     /// Prepend the tickcount.
2537     ///
2538     LOG_ITEMS_FLAG_TICK_COUNT = 1 << 4
2539 }
2540 
2541 alias LOG_ITEMS_DEFAULT = cef_log_items_t.LOG_ITEMS_DEFAULT;
2542 alias LOG_ITEMS_NONE = cef_log_items_t.LOG_ITEMS_NONE;
2543 alias LOG_ITEMS_FLAG_PROCESS_ID = cef_log_items_t.LOG_ITEMS_FLAG_PROCESS_ID;
2544 alias LOG_ITEMS_FLAG_THREAD_ID = cef_log_items_t.LOG_ITEMS_FLAG_THREAD_ID;
2545 alias LOG_ITEMS_FLAG_TIME_STAMP = cef_log_items_t.LOG_ITEMS_FLAG_TIME_STAMP;
2546 alias LOG_ITEMS_FLAG_TICK_COUNT = cef_log_items_t.LOG_ITEMS_FLAG_TICK_COUNT;
2547 
2548 ///
2549 /// Represents the state of a setting.
2550 ///
2551 enum cef_state_t
2552 {
2553     ///
2554     /// Use the default state for the setting.
2555     ///
2556     STATE_DEFAULT = 0,
2557 
2558     ///
2559     /// Enable or allow the setting.
2560     ///
2561     STATE_ENABLED = 1,
2562 
2563     ///
2564     /// Disable or disallow the setting.
2565     ///
2566     STATE_DISABLED = 2
2567 }
2568 
2569 alias STATE_DEFAULT = cef_state_t.STATE_DEFAULT;
2570 alias STATE_ENABLED = cef_state_t.STATE_ENABLED;
2571 alias STATE_DISABLED = cef_state_t.STATE_DISABLED;
2572 
2573 ///
2574 /// Initialization settings. Specify NULL or 0 to get the recommended default
2575 /// values. Many of these and other settings can also configured using command-
2576 /// line switches.
2577 ///
2578 struct cef_settings_t
2579 {
2580     ///
2581     /// Size of this structure.
2582     ///
2583     alias size_t = c_ulong;
2584     size_t size;
2585 
2586     ///
2587     /// Set to true (1) to disable the sandbox for sub-processes. See
2588     /// cef_sandbox_win.h for requirements to enable the sandbox on Windows. Also
2589     /// configurable using the "no-sandbox" command-line switch.
2590     ///
2591     int no_sandbox;
2592 
2593     ///
2594     /// The path to a separate executable that will be launched for sub-processes.
2595     /// If this value is empty on Windows or Linux then the main process
2596     /// executable will be used. If this value is empty on macOS then a helper
2597     /// executable must exist at "Contents/Frameworks/<app>
2598     /// Helper.app/Contents/MacOS/<app> Helper" in the top-level app bundle. See
2599     /// the comments on CefExecuteProcess() for details. If this value is
2600     /// non-empty then it must be an absolute path. Also configurable using the
2601     /// "browser-subprocess-path" command-line switch.
2602     ///
2603     alias cef_string_t = cef_string_utf16_t;
2604     cef_string_t browser_subprocess_path;
2605 
2606     ///
2607     /// The path to the CEF framework directory on macOS. If this value is empty
2608     /// then the framework must exist at "Contents/Frameworks/Chromium Embedded
2609     /// Framework.framework" in the top-level app bundle. If this value is
2610     /// non-empty then it must be an absolute path. Also configurable using the
2611     /// "framework-dir-path" command-line switch.
2612     ///
2613     cef_string_t framework_dir_path;
2614 
2615     ///
2616     /// The path to the main bundle on macOS. If this value is empty then it
2617     /// defaults to the top-level app bundle. If this value is non-empty then it
2618     /// must be an absolute path. Also configurable using the "main-bundle-path"
2619     /// command-line switch.
2620     ///
2621     cef_string_t main_bundle_path;
2622 
2623     ///
2624     /// Set to true (1) to enable use of the Chrome runtime in CEF. This feature
2625     /// is considered experimental and is not recommended for most users at this
2626     /// time. See issue #2969 for details.
2627     ///
2628     int chrome_runtime;
2629 
2630     ///
2631     /// Set to true (1) to have the browser process message loop run in a separate
2632     /// thread. If false (0) then the CefDoMessageLoopWork() function must be
2633     /// called from your application message loop. This option is only supported
2634     /// on Windows and Linux.
2635     ///
2636     int multi_threaded_message_loop;
2637 
2638     ///
2639     /// Set to true (1) to control browser process main (UI) thread message pump
2640     /// scheduling via the CefBrowserProcessHandler::OnScheduleMessagePumpWork()
2641     /// callback. This option is recommended for use in combination with the
2642     /// CefDoMessageLoopWork() function in cases where the CEF message loop must
2643     /// be integrated into an existing application message loop (see additional
2644     /// comments and warnings on CefDoMessageLoopWork). Enabling this option is
2645     /// not recommended for most users; leave this option disabled and use either
2646     /// the CefRunMessageLoop() function or multi_threaded_message_loop if
2647     /// possible.
2648     ///
2649     int external_message_pump;
2650 
2651     ///
2652     /// Set to true (1) to enable windowless (off-screen) rendering support. Do
2653     /// not enable this value if the application does not use windowless rendering
2654     /// as it may reduce rendering performance on some systems.
2655     ///
2656     int windowless_rendering_enabled;
2657 
2658     ///
2659     /// Set to true (1) to disable configuration of browser process features using
2660     /// standard CEF and Chromium command-line arguments. Configuration can still
2661     /// be specified using CEF data structures or via the
2662     /// CefApp::OnBeforeCommandLineProcessing() method.
2663     ///
2664     int command_line_args_disabled;
2665 
2666     ///
2667     /// The directory where data for the global browser cache will be stored on
2668     /// disk. If this value is non-empty then it must be an absolute path that is
2669     /// either equal to or a child directory of CefSettings.root_cache_path. If
2670     /// this value is empty then browsers will be created in "incognito mode"
2671     /// where in-memory caches are used for storage and no profile-specific data
2672     /// is persisted to disk (installation-specific data will still be persisted
2673     /// in root_cache_path). HTML5 databases such as localStorage will only
2674     /// persist across sessions if a cache path is specified. Can be overridden
2675     /// for individual CefRequestContext instances via the
2676     /// CefRequestContextSettings.cache_path value. When using the Chrome runtime
2677     /// any child directory value will be ignored and the "default" profile (also
2678     /// a child directory) will be used instead.
2679     ///
2680     cef_string_t cache_path;
2681 
2682     ///
2683     /// The root directory for installation-specific data and the parent directory
2684     /// for profile-specific data. All CefSettings.cache_path and
2685     /// CefRequestContextSettings.cache_path values must have this parent
2686     /// directory in common. If this value is empty and CefSettings.cache_path is
2687     /// non-empty then it will default to the CefSettings.cache_path value. Any
2688     /// non-empty value must be an absolute path. If both values are empty then
2689     /// the default platform-specific directory will be used
2690     /// ("~/.config/cef_user_data" directory on Linux, "~/Library/Application
2691     /// Support/CEF/User Data" directory on MacOS, "AppData\Local\CEF\User Data"
2692     /// directory under the user profile directory on Windows). Use of the default
2693     /// directory is not recommended in production applications (see below).
2694     ///
2695     /// Multiple application instances writing to the same root_cache_path
2696     /// directory could result in data corruption. A process singleton lock based
2697     /// on the root_cache_path value is therefore used to protect against this.
2698     /// This singleton behavior applies to all CEF-based applications using
2699     /// version 120 or newer. You should customize root_cache_path for your
2700     /// application and implement CefBrowserProcessHandler::
2701     /// OnAlreadyRunningAppRelaunch, which will then be called on any app relaunch
2702     /// with the same root_cache_path value.
2703     ///
2704     /// Failure to set the root_cache_path value correctly may result in startup
2705     /// crashes or other unexpected behaviors (for example, the sandbox blocking
2706     /// read/write access to certain files).
2707     ///
2708     cef_string_t root_cache_path;
2709 
2710     ///
2711     /// To persist session cookies (cookies without an expiry date or validity
2712     /// interval) by default when using the global cookie manager set this value
2713     /// to true (1). Session cookies are generally intended to be transient and
2714     /// most Web browsers do not persist them. A |cache_path| value must also be
2715     /// specified to enable this feature. Also configurable using the
2716     /// "persist-session-cookies" command-line switch. Can be overridden for
2717     /// individual CefRequestContext instances via the
2718     /// CefRequestContextSettings.persist_session_cookies value.
2719     ///
2720     int persist_session_cookies;
2721 
2722     ///
2723     /// To persist user preferences as a JSON file in the cache path directory set
2724     /// this value to true (1). A |cache_path| value must also be specified
2725     /// to enable this feature. Also configurable using the
2726     /// "persist-user-preferences" command-line switch. Can be overridden for
2727     /// individual CefRequestContext instances via the
2728     /// CefRequestContextSettings.persist_user_preferences value.
2729     ///
2730     int persist_user_preferences;
2731 
2732     ///
2733     /// Value that will be returned as the User-Agent HTTP header. If empty the
2734     /// default User-Agent string will be used. Also configurable using the
2735     /// "user-agent" command-line switch.
2736     ///
2737     cef_string_t user_agent;
2738 
2739     ///
2740     /// Value that will be inserted as the product portion of the default
2741     /// User-Agent string. If empty the Chromium product version will be used. If
2742     /// |userAgent| is specified this value will be ignored. Also configurable
2743     /// using the "user-agent-product" command-line switch.
2744     ///
2745     cef_string_t user_agent_product;
2746 
2747     ///
2748     /// The locale string that will be passed to WebKit. If empty the default
2749     /// locale of "en-US" will be used. This value is ignored on Linux where
2750     /// locale is determined using environment variable parsing with the
2751     /// precedence order: LANGUAGE, LC_ALL, LC_MESSAGES and LANG. Also
2752     /// configurable using the "lang" command-line switch.
2753     ///
2754     cef_string_t locale;
2755 
2756     ///
2757     /// The directory and file name to use for the debug log. If empty a default
2758     /// log file name and location will be used. On Windows and Linux a
2759     /// "debug.log" file will be written in the main executable directory. On
2760     /// MacOS a "~/Library/Logs/[app name]_debug.log" file will be written where
2761     /// [app name] is the name of the main app executable. Also configurable using
2762     /// the "log-file" command-line switch.
2763     ///
2764     cef_string_t log_file;
2765 
2766     ///
2767     /// The log severity. Only messages of this severity level or higher will be
2768     /// logged. When set to DISABLE no messages will be written to the log file,
2769     /// but FATAL messages will still be output to stderr. Also configurable using
2770     /// the "log-severity" command-line switch with a value of "verbose", "info",
2771     /// "warning", "error", "fatal" or "disable".
2772     ///
2773     cef_log_severity_t log_severity;
2774 
2775     ///
2776     /// The log items prepended to each log line. If not set the default log items
2777     /// will be used. Also configurable using the "log-items" command-line switch
2778     /// with a value of "none" for no log items, or a comma-delimited list of
2779     /// values "pid", "tid", "timestamp" or "tickcount" for custom log items.
2780     ///
2781     cef_log_items_t log_items;
2782 
2783     ///
2784     /// Custom flags that will be used when initializing the V8 JavaScript engine.
2785     /// The consequences of using custom flags may not be well tested. Also
2786     /// configurable using the "js-flags" command-line switch.
2787     ///
2788     cef_string_t javascript_flags;
2789 
2790     ///
2791     /// The fully qualified path for the resources directory. If this value is
2792     /// empty the *.pak files must be located in the module directory on
2793     /// Windows/Linux or the app bundle Resources directory on MacOS. If this
2794     /// value is non-empty then it must be an absolute path. Also configurable
2795     /// using the "resources-dir-path" command-line switch.
2796     ///
2797     cef_string_t resources_dir_path;
2798 
2799     ///
2800     /// The fully qualified path for the locales directory. If this value is empty
2801     /// the locales directory must be located in the module directory. If this
2802     /// value is non-empty then it must be an absolute path. This value is ignored
2803     /// on MacOS where pack files are always loaded from the app bundle Resources
2804     /// directory. Also configurable using the "locales-dir-path" command-line
2805     /// switch.
2806     ///
2807     cef_string_t locales_dir_path;
2808 
2809     ///
2810     /// Set to true (1) to disable loading of pack files for resources and
2811     /// locales. A resource bundle handler must be provided for the browser and
2812     /// render processes via CefApp::GetResourceBundleHandler() if loading of pack
2813     /// files is disabled. Also configurable using the "disable-pack-loading"
2814     /// command- line switch.
2815     ///
2816     int pack_loading_disabled;
2817 
2818     ///
2819     /// Set to a value between 1024 and 65535 to enable remote debugging on the
2820     /// specified port. Also configurable using the "remote-debugging-port"
2821     /// command-line switch. Specifying 0 via the command-line switch will result
2822     /// in the selection of an ephemeral port and the port number will be printed
2823     /// as part of the WebSocket endpoint URL to stderr. If a cache directory path
2824     /// is provided the port will also be written to the
2825     /// <cache-dir>/DevToolsActivePort file. Remote debugging can be accessed by
2826     /// loading the chrome://inspect page in Google Chrome. Port numbers 9222 and
2827     /// 9229 are discoverable by default. Other port numbers may need to be
2828     /// configured via "Discover network targets" on the Devices tab.
2829     ///
2830     int remote_debugging_port;
2831 
2832     ///
2833     /// The number of stack trace frames to capture for uncaught exceptions.
2834     /// Specify a positive value to enable the
2835     /// CefRenderProcessHandler::OnUncaughtException() callback. Specify 0
2836     /// (default value) and OnUncaughtException() will not be called. Also
2837     /// configurable using the "uncaught-exception-stack-size" command-line
2838     /// switch.
2839     ///
2840     int uncaught_exception_stack_size;
2841 
2842     ///
2843     /// Background color used for the browser before a document is loaded and when
2844     /// no document color is specified. The alpha component must be either fully
2845     /// opaque (0xFF) or fully transparent (0x00). If the alpha component is fully
2846     /// opaque then the RGB components will be used as the background color. If
2847     /// the alpha component is fully transparent for a windowed browser then the
2848     /// default value of opaque white be used. If the alpha component is fully
2849     /// transparent for a windowless (off-screen) browser then transparent
2850     /// painting will be enabled.
2851     ///
2852     cef_color_t background_color;
2853 
2854     ///
2855     /// Comma delimited ordered list of language codes without any whitespace that
2856     /// will be used in the "Accept-Language" HTTP request header and
2857     /// "navigator.language" JS attribute. Can be overridden for individual
2858     /// CefRequestContext instances via the
2859     /// CefRequestContextSettings.accept_language_list value.
2860     ///
2861     cef_string_t accept_language_list;
2862 
2863     ///
2864     /// Comma delimited list of schemes supported by the associated
2865     /// CefCookieManager. If |cookieable_schemes_exclude_defaults| is false (0)
2866     /// the default schemes ("http", "https", "ws" and "wss") will also be
2867     /// supported. Not specifying a |cookieable_schemes_list| value and setting
2868     /// |cookieable_schemes_exclude_defaults| to true (1) will disable all loading
2869     /// and saving of cookies. These settings will only impact the global
2870     /// CefRequestContext. Individual CefRequestContext instances can be
2871     /// configured via the CefRequestContextSettings.cookieable_schemes_list and
2872     /// CefRequestContextSettings.cookieable_schemes_exclude_defaults values.
2873     ///
2874     cef_string_t cookieable_schemes_list;
2875     int cookieable_schemes_exclude_defaults;
2876 
2877     ///
2878     /// Specify an ID to enable Chrome policy management via Platform and OS-user
2879     /// policies. On Windows, this is a registry key like
2880     /// "SOFTWARE\\Policies\\Google\\Chrome". On MacOS, this is a bundle ID like
2881     /// "com.google.Chrome". On Linux, this is an absolute directory path like
2882     /// "/etc/opt/chrome/policies". Only supported with the Chrome runtime. See
2883     /// https://support.google.com/chrome/a/answer/9037717 for details.
2884     ///
2885     /// Chrome Browser Cloud Management integration, when enabled via the
2886     /// "enable-chrome-browser-cloud-management" command-line flag, will also use
2887     /// the specified ID. See https://support.google.com/chrome/a/answer/9116814
2888     /// for details.
2889     ///
2890     cef_string_t chrome_policy_id;
2891 
2892     ///
2893     /// Specify an ID for an ICON resource that can be loaded from the main
2894     /// executable and used when creating default Chrome windows such as DevTools
2895     /// and Task Manager. If unspecified the default Chromium ICON (IDR_MAINFRAME
2896     /// [101]) will be loaded from libcef.dll. Only supported with the Chrome
2897     /// runtime on Windows.
2898     ///
2899     int chrome_app_icon_id;
2900 }
2901 
2902 
2903 
2904 ///
2905 /// Request context initialization settings. Specify NULL or 0 to get the
2906 /// recommended default values.
2907 ///
2908 struct cef_request_context_settings_t
2909 {
2910     ///
2911     /// Size of this structure.
2912     ///
2913     size_t size;
2914 
2915     ///
2916     /// The directory where cache data for this request context will be stored on
2917     /// disk. If this value is non-empty then it must be an absolute path that is
2918     /// either equal to or a child directory of CefSettings.root_cache_path. If
2919     /// this value is empty then browsers will be created in "incognito mode"
2920     /// where in-memory caches are used for storage and no profile-specific data
2921     /// is persisted to disk (installation-specific data will still be persisted
2922     /// in root_cache_path). HTML5 databases such as localStorage will only
2923     /// persist across sessions if a cache path is specified. To share the global
2924     /// browser cache and related configuration set this value to match the
2925     /// CefSettings.cache_path value.
2926     ///
2927     cef_string_t cache_path;
2928 
2929     ///
2930     /// To persist session cookies (cookies without an expiry date or validity
2931     /// interval) by default when using the global cookie manager set this value
2932     /// to true (1). Session cookies are generally intended to be transient and
2933     /// most Web browsers do not persist them. Can be set globally using the
2934     /// CefSettings.persist_session_cookies value. This value will be ignored if
2935     /// |cache_path| is empty or if it matches the CefSettings.cache_path value.
2936     ///
2937     int persist_session_cookies;
2938 
2939     ///
2940     /// To persist user preferences as a JSON file in the cache path directory set
2941     /// this value to true (1). Can be set globally using the
2942     /// CefSettings.persist_user_preferences value. This value will be ignored if
2943     /// |cache_path| is empty or if it matches the CefSettings.cache_path value.
2944     ///
2945     int persist_user_preferences;
2946 
2947     ///
2948     /// Comma delimited ordered list of language codes without any whitespace that
2949     /// will be used in the "Accept-Language" HTTP request header and
2950     /// "navigator.language" JS attribute. Can be set globally using the
2951     /// CefSettings.accept_language_list value. If all values are empty then
2952     /// "en-US,en" will be used. This value will be ignored if |cache_path|
2953     /// matches the CefSettings.cache_path value.
2954     ///
2955     cef_string_t accept_language_list;
2956 
2957     ///
2958     /// Comma delimited list of schemes supported by the associated
2959     /// CefCookieManager. If |cookieable_schemes_exclude_defaults| is false (0)
2960     /// the default schemes ("http", "https", "ws" and "wss") will also be
2961     /// supported. Not specifying a |cookieable_schemes_list| value and setting
2962     /// |cookieable_schemes_exclude_defaults| to true (1) will disable all loading
2963     /// and saving of cookies. These values will be ignored if |cache_path|
2964     /// matches the CefSettings.cache_path value.
2965     ///
2966     cef_string_t cookieable_schemes_list;
2967     int cookieable_schemes_exclude_defaults;
2968 }
2969 
2970 
2971 
2972 ///
2973 /// Browser initialization settings. Specify NULL or 0 to get the recommended
2974 /// default values. The consequences of using custom values may not be well
2975 /// tested. Many of these and other settings can also configured using command-
2976 /// line switches.
2977 ///
2978 struct cef_browser_settings_t
2979 {
2980     ///
2981     /// Size of this structure.
2982     ///
2983     size_t size;
2984 
2985     ///
2986     /// The maximum rate in frames per second (fps) that CefRenderHandler::OnPaint
2987     /// will be called for a windowless browser. The actual fps may be lower if
2988     /// the browser cannot generate frames at the requested rate. The minimum
2989     /// value is 1 and the maximum value is 60 (default 30). This value can also
2990     /// be changed dynamically via CefBrowserHost::SetWindowlessFrameRate.
2991     ///
2992     int windowless_frame_rate;
2993 
2994     /// BEGIN values that map to WebPreferences settings.
2995 
2996     ///
2997     /// Font settings.
2998     ///
2999     cef_string_t standard_font_family;
3000     cef_string_t fixed_font_family;
3001     cef_string_t serif_font_family;
3002     cef_string_t sans_serif_font_family;
3003     cef_string_t cursive_font_family;
3004     cef_string_t fantasy_font_family;
3005     int default_font_size;
3006     int default_fixed_font_size;
3007     int minimum_font_size;
3008     int minimum_logical_font_size;
3009 
3010     ///
3011     /// Default encoding for Web content. If empty "ISO-8859-1" will be used. Also
3012     /// configurable using the "default-encoding" command-line switch.
3013     ///
3014     cef_string_t default_encoding;
3015 
3016     ///
3017     /// Controls the loading of fonts from remote sources. Also configurable using
3018     /// the "disable-remote-fonts" command-line switch.
3019     ///
3020     cef_state_t remote_fonts;
3021 
3022     ///
3023     /// Controls whether JavaScript can be executed. Also configurable using the
3024     /// "disable-javascript" command-line switch.
3025     ///
3026     cef_state_t javascript;
3027 
3028     ///
3029     /// Controls whether JavaScript can be used to close windows that were not
3030     /// opened via JavaScript. JavaScript can still be used to close windows that
3031     /// were opened via JavaScript or that have no back/forward history. Also
3032     /// configurable using the "disable-javascript-close-windows" command-line
3033     /// switch.
3034     ///
3035     cef_state_t javascript_close_windows;
3036 
3037     ///
3038     /// Controls whether JavaScript can access the clipboard. Also configurable
3039     /// using the "disable-javascript-access-clipboard" command-line switch.
3040     ///
3041     cef_state_t javascript_access_clipboard;
3042 
3043     ///
3044     /// Controls whether DOM pasting is supported in the editor via
3045     /// execCommand("paste"). The |javascript_access_clipboard| setting must also
3046     /// be enabled. Also configurable using the "disable-javascript-dom-paste"
3047     /// command-line switch.
3048     ///
3049     cef_state_t javascript_dom_paste;
3050 
3051     ///
3052     /// Controls whether image URLs will be loaded from the network. A cached
3053     /// image will still be rendered if requested. Also configurable using the
3054     /// "disable-image-loading" command-line switch.
3055     ///
3056     cef_state_t image_loading;
3057 
3058     ///
3059     /// Controls whether standalone images will be shrunk to fit the page. Also
3060     /// configurable using the "image-shrink-standalone-to-fit" command-line
3061     /// switch.
3062     ///
3063     cef_state_t image_shrink_standalone_to_fit;
3064 
3065     ///
3066     /// Controls whether text areas can be resized. Also configurable using the
3067     /// "disable-text-area-resize" command-line switch.
3068     ///
3069     cef_state_t text_area_resize;
3070 
3071     ///
3072     /// Controls whether the tab key can advance focus to links. Also configurable
3073     /// using the "disable-tab-to-links" command-line switch.
3074     ///
3075     cef_state_t tab_to_links;
3076 
3077     ///
3078     /// Controls whether local storage can be used. Also configurable using the
3079     /// "disable-local-storage" command-line switch.
3080     ///
3081     cef_state_t local_storage;
3082 
3083     ///
3084     /// Controls whether databases can be used. Also configurable using the
3085     /// "disable-databases" command-line switch.
3086     ///
3087     cef_state_t databases;
3088 
3089     ///
3090     /// Controls whether WebGL can be used. Note that WebGL requires hardware
3091     /// support and may not work on all systems even when enabled. Also
3092     /// configurable using the "disable-webgl" command-line switch.
3093     ///
3094     cef_state_t webgl;
3095 
3096     /// END values that map to WebPreferences settings.
3097 
3098     ///
3099     /// Background color used for the browser before a document is loaded and when
3100     /// no document color is specified. The alpha component must be either fully
3101     /// opaque (0xFF) or fully transparent (0x00). If the alpha component is fully
3102     /// opaque then the RGB components will be used as the background color. If
3103     /// the alpha component is fully transparent for a windowed browser then the
3104     /// CefSettings.background_color value will be used. If the alpha component is
3105     /// fully transparent for a windowless (off-screen) browser then transparent
3106     /// painting will be enabled.
3107     ///
3108     cef_color_t background_color;
3109 
3110     ///
3111     /// Controls whether the Chrome status bubble will be used. Only supported
3112     /// with the Chrome runtime. For details about the status bubble see
3113     /// https://www.chromium.org/user-experience/status-bubble/
3114     ///
3115     cef_state_t chrome_status_bubble;
3116 
3117     ///
3118     /// Controls whether the Chrome zoom bubble will be shown when zooming. Only
3119     /// supported with the Chrome runtime.
3120     ///
3121     cef_state_t chrome_zoom_bubble;
3122 }
3123 
3124 
3125 
3126 ///
3127 /// Return value types.
3128 ///
3129 enum cef_return_value_t
3130 {
3131     ///
3132     /// Cancel immediately.
3133     ///
3134     RV_CANCEL = 0,
3135 
3136     ///
3137     /// Continue immediately.
3138     ///
3139     RV_CONTINUE = 1,
3140 
3141     ///
3142     /// Continue asynchronously (usually via a callback).
3143     ///
3144     RV_CONTINUE_ASYNC = 2
3145 }
3146 
3147 alias RV_CANCEL = cef_return_value_t.RV_CANCEL;
3148 alias RV_CONTINUE = cef_return_value_t.RV_CONTINUE;
3149 alias RV_CONTINUE_ASYNC = cef_return_value_t.RV_CONTINUE_ASYNC;
3150 
3151 ///
3152 /// URL component parts.
3153 ///
3154 struct cef_urlparts_t
3155 {
3156     ///
3157     /// The complete URL specification.
3158     ///
3159     cef_string_t spec;
3160 
3161     ///
3162     /// Scheme component not including the colon (e.g., "http").
3163     ///
3164     cef_string_t scheme;
3165 
3166     ///
3167     /// User name component.
3168     ///
3169     cef_string_t username;
3170 
3171     ///
3172     /// Password component.
3173     ///
3174     cef_string_t password;
3175 
3176     ///
3177     /// Host component. This may be a hostname, an IPv4 address or an IPv6 literal
3178     /// surrounded by square brackets (e.g., "[2001:db8::1]").
3179     ///
3180     cef_string_t host;
3181 
3182     ///
3183     /// Port number component.
3184     ///
3185     cef_string_t port;
3186 
3187     ///
3188     /// Origin contains just the scheme, host, and port from a URL. Equivalent to
3189     /// clearing any username and password, replacing the path with a slash, and
3190     /// clearing everything after that. This value will be empty for non-standard
3191     /// URLs.
3192     ///
3193     cef_string_t origin;
3194 
3195     ///
3196     /// Path component including the first slash following the host.
3197     ///
3198     cef_string_t path;
3199 
3200     ///
3201     /// Query string component (i.e., everything following the '?').
3202     ///
3203     cef_string_t query;
3204 
3205     ///
3206     /// Fragment (hash) identifier component (i.e., the string following the '#').
3207     ///
3208     cef_string_t fragment;
3209 }
3210 
3211 
3212 
3213 ///
3214 /// Cookie priority values.
3215 ///
3216 enum cef_cookie_priority_t
3217 {
3218     CEF_COOKIE_PRIORITY_LOW = -1,
3219     CEF_COOKIE_PRIORITY_MEDIUM = 0,
3220     CEF_COOKIE_PRIORITY_HIGH = 1
3221 }
3222 
3223 alias CEF_COOKIE_PRIORITY_LOW = cef_cookie_priority_t.CEF_COOKIE_PRIORITY_LOW;
3224 alias CEF_COOKIE_PRIORITY_MEDIUM = cef_cookie_priority_t.CEF_COOKIE_PRIORITY_MEDIUM;
3225 alias CEF_COOKIE_PRIORITY_HIGH = cef_cookie_priority_t.CEF_COOKIE_PRIORITY_HIGH;
3226 
3227 ///
3228 /// Cookie same site values.
3229 ///
3230 enum cef_cookie_same_site_t
3231 {
3232     CEF_COOKIE_SAME_SITE_UNSPECIFIED = 0,
3233     CEF_COOKIE_SAME_SITE_NO_RESTRICTION = 1,
3234     CEF_COOKIE_SAME_SITE_LAX_MODE = 2,
3235     CEF_COOKIE_SAME_SITE_STRICT_MODE = 3
3236 }
3237 
3238 alias CEF_COOKIE_SAME_SITE_UNSPECIFIED = cef_cookie_same_site_t.CEF_COOKIE_SAME_SITE_UNSPECIFIED;
3239 alias CEF_COOKIE_SAME_SITE_NO_RESTRICTION = cef_cookie_same_site_t.CEF_COOKIE_SAME_SITE_NO_RESTRICTION;
3240 alias CEF_COOKIE_SAME_SITE_LAX_MODE = cef_cookie_same_site_t.CEF_COOKIE_SAME_SITE_LAX_MODE;
3241 alias CEF_COOKIE_SAME_SITE_STRICT_MODE = cef_cookie_same_site_t.CEF_COOKIE_SAME_SITE_STRICT_MODE;
3242 
3243 ///
3244 /// Cookie information.
3245 ///
3246 struct cef_cookie_t
3247 {
3248     ///
3249     /// The cookie name.
3250     ///
3251     cef_string_t name;
3252 
3253     ///
3254     /// The cookie value.
3255     ///
3256     cef_string_t value;
3257 
3258     ///
3259     /// If |domain| is empty a host cookie will be created instead of a domain
3260     /// cookie. Domain cookies are stored with a leading "." and are visible to
3261     /// sub-domains whereas host cookies are not.
3262     ///
3263     cef_string_t domain;
3264 
3265     ///
3266     /// If |path| is non-empty only URLs at or below the path will get the cookie
3267     /// value.
3268     ///
3269     cef_string_t path;
3270 
3271     ///
3272     /// If |secure| is true the cookie will only be sent for HTTPS requests.
3273     ///
3274     int secure;
3275 
3276     ///
3277     /// If |httponly| is true the cookie will only be sent for HTTP requests.
3278     ///
3279     int httponly;
3280 
3281     ///
3282     /// The cookie creation date. This is automatically populated by the system on
3283     /// cookie creation.
3284     ///
3285 
3286     cef_basetime_t creation;
3287 
3288     ///
3289     /// The cookie last access date. This is automatically populated by the system
3290     /// on access.
3291     ///
3292     cef_basetime_t last_access;
3293 
3294     ///
3295     /// The cookie expiration date is only valid if |has_expires| is true.
3296     ///
3297     int has_expires;
3298     cef_basetime_t expires;
3299 
3300     ///
3301     /// Same site.
3302     ///
3303     cef_cookie_same_site_t same_site;
3304 
3305     ///
3306     /// Priority.
3307     ///
3308     cef_cookie_priority_t priority;
3309 }
3310 
3311 
3312 
3313 ///
3314 /// Process termination status values.
3315 ///
3316 enum cef_termination_status_t
3317 {
3318     ///
3319     /// Non-zero exit status.
3320     ///
3321     TS_ABNORMAL_TERMINATION = 0,
3322 
3323     ///
3324     /// SIGKILL or task manager kill.
3325     ///
3326     TS_PROCESS_WAS_KILLED = 1,
3327 
3328     ///
3329     /// Segmentation fault.
3330     ///
3331     TS_PROCESS_CRASHED = 2,
3332 
3333     ///
3334     /// Out of memory. Some platforms may use TS_PROCESS_CRASHED instead.
3335     ///
3336     TS_PROCESS_OOM = 3,
3337 
3338     ///
3339     /// Child process never launched.
3340     ///
3341     TS_LAUNCH_FAILED = 4,
3342 
3343     ///
3344     /// On Windows, the OS terminated the process due to code integrity failure.
3345     ///
3346     TS_INTEGRITY_FAILURE = 5
3347 }
3348 
3349 alias TS_ABNORMAL_TERMINATION = cef_termination_status_t.TS_ABNORMAL_TERMINATION;
3350 alias TS_PROCESS_WAS_KILLED = cef_termination_status_t.TS_PROCESS_WAS_KILLED;
3351 alias TS_PROCESS_CRASHED = cef_termination_status_t.TS_PROCESS_CRASHED;
3352 alias TS_PROCESS_OOM = cef_termination_status_t.TS_PROCESS_OOM;
3353 alias TS_LAUNCH_FAILED = cef_termination_status_t.TS_LAUNCH_FAILED;
3354 alias TS_INTEGRITY_FAILURE = cef_termination_status_t.TS_INTEGRITY_FAILURE;
3355 
3356 ///
3357 /// Path key values.
3358 ///
3359 enum cef_path_key_t
3360 {
3361     ///
3362     /// Current directory.
3363     ///
3364     PK_DIR_CURRENT = 0,
3365 
3366     ///
3367     /// Directory containing PK_FILE_EXE.
3368     ///
3369     PK_DIR_EXE = 1,
3370 
3371     ///
3372     /// Directory containing PK_FILE_MODULE.
3373     ///
3374     PK_DIR_MODULE = 2,
3375 
3376     ///
3377     /// Temporary directory.
3378     ///
3379     PK_DIR_TEMP = 3,
3380 
3381     ///
3382     /// Path and filename of the current executable.
3383     ///
3384     PK_FILE_EXE = 4,
3385 
3386     ///
3387     /// Path and filename of the module containing the CEF code (usually the
3388     /// libcef module).
3389     ///
3390     PK_FILE_MODULE = 5,
3391 
3392     ///
3393     /// "Local Settings\Application Data" directory under the user profile
3394     /// directory on Windows.
3395     ///
3396     PK_LOCAL_APP_DATA = 6,
3397 
3398     ///
3399     /// "Application Data" directory under the user profile directory on Windows
3400     /// and "~/Library/Application Support" directory on MacOS.
3401     ///
3402     PK_USER_DATA = 7,
3403 
3404     ///
3405     /// Directory containing application resources. Can be configured via
3406     /// CefSettings.resources_dir_path.
3407     ///
3408     PK_DIR_RESOURCES = 8
3409 }
3410 
3411 alias PK_DIR_CURRENT = cef_path_key_t.PK_DIR_CURRENT;
3412 alias PK_DIR_EXE = cef_path_key_t.PK_DIR_EXE;
3413 alias PK_DIR_MODULE = cef_path_key_t.PK_DIR_MODULE;
3414 alias PK_DIR_TEMP = cef_path_key_t.PK_DIR_TEMP;
3415 alias PK_FILE_EXE = cef_path_key_t.PK_FILE_EXE;
3416 alias PK_FILE_MODULE = cef_path_key_t.PK_FILE_MODULE;
3417 alias PK_LOCAL_APP_DATA = cef_path_key_t.PK_LOCAL_APP_DATA;
3418 alias PK_USER_DATA = cef_path_key_t.PK_USER_DATA;
3419 alias PK_DIR_RESOURCES = cef_path_key_t.PK_DIR_RESOURCES;
3420 
3421 ///
3422 /// Storage types.
3423 ///
3424 enum cef_storage_type_t
3425 {
3426     ST_LOCALSTORAGE = 0,
3427     ST_SESSIONSTORAGE = 1
3428 }
3429 
3430 alias ST_LOCALSTORAGE = cef_storage_type_t.ST_LOCALSTORAGE;
3431 alias ST_SESSIONSTORAGE = cef_storage_type_t.ST_SESSIONSTORAGE;
3432 
3433 ///
3434 /// Supported error code values. For the complete list of error values see
3435 /// "include/base/internal/cef_net_error_list.h".
3436 ///
3437 enum cef_errorcode_t
3438 {
3439     // No error.
3440     ERR_NONE = 0,
3441     ERR_IO_PENDING = -1,
3442     ERR_FAILED = -2,
3443     ERR_ABORTED = -3,
3444     ERR_INVALID_ARGUMENT = -4,
3445     ERR_INVALID_HANDLE = -5,
3446     ERR_FILE_NOT_FOUND = -6,
3447     ERR_TIMED_OUT = -7,
3448     ERR_FILE_TOO_BIG = -8,
3449     ERR_UNEXPECTED = -9,
3450     ERR_ACCESS_DENIED = -10,
3451     ERR_NOT_IMPLEMENTED = -11,
3452     ERR_INSUFFICIENT_RESOURCES = -12,
3453     ERR_OUT_OF_MEMORY = -13,
3454     ERR_UPLOAD_FILE_CHANGED = -14,
3455     ERR_SOCKET_NOT_CONNECTED = -15,
3456     ERR_FILE_EXISTS = -16,
3457     ERR_FILE_PATH_TOO_LONG = -17,
3458     ERR_FILE_NO_SPACE = -18,
3459     ERR_FILE_VIRUS_INFECTED = -19,
3460     ERR_BLOCKED_BY_CLIENT = -20,
3461     ERR_NETWORK_CHANGED = -21,
3462     ERR_BLOCKED_BY_ADMINISTRATOR = -22,
3463     ERR_SOCKET_IS_CONNECTED = -23,
3464     ERR_UPLOAD_STREAM_REWIND_NOT_SUPPORTED = -25,
3465     ERR_CONTEXT_SHUT_DOWN = -26,
3466     ERR_BLOCKED_BY_RESPONSE = -27,
3467     ERR_CLEARTEXT_NOT_PERMITTED = -29,
3468     ERR_BLOCKED_BY_CSP = -30,
3469     ERR_H2_OR_QUIC_REQUIRED = -31,
3470     ERR_BLOCKED_BY_ORB = -32,
3471     ERR_NETWORK_ACCESS_REVOKED = -33,
3472     ERR_CONNECTION_CLOSED = -100,
3473     ERR_CONNECTION_RESET = -101,
3474     ERR_CONNECTION_REFUSED = -102,
3475     ERR_CONNECTION_ABORTED = -103,
3476     ERR_CONNECTION_FAILED = -104,
3477     ERR_NAME_NOT_RESOLVED = -105,
3478     ERR_INTERNET_DISCONNECTED = -106,
3479     ERR_SSL_PROTOCOL_ERROR = -107,
3480     ERR_ADDRESS_INVALID = -108,
3481     ERR_ADDRESS_UNREACHABLE = -109,
3482     ERR_SSL_CLIENT_AUTH_CERT_NEEDED = -110,
3483     ERR_TUNNEL_CONNECTION_FAILED = -111,
3484     ERR_NO_SSL_VERSIONS_ENABLED = -112,
3485     ERR_SSL_VERSION_OR_CIPHER_MISMATCH = -113,
3486     ERR_SSL_RENEGOTIATION_REQUESTED = -114,
3487     ERR_PROXY_AUTH_UNSUPPORTED = -115,
3488     ERR_BAD_SSL_CLIENT_AUTH_CERT = -117,
3489     ERR_CONNECTION_TIMED_OUT = -118,
3490     ERR_HOST_RESOLVER_QUEUE_TOO_LARGE = -119,
3491     ERR_SOCKS_CONNECTION_FAILED = -120,
3492     ERR_SOCKS_CONNECTION_HOST_UNREACHABLE = -121,
3493     ERR_ALPN_NEGOTIATION_FAILED = -122,
3494     ERR_SSL_NO_RENEGOTIATION = -123,
3495     ERR_WINSOCK_UNEXPECTED_WRITTEN_BYTES = -124,
3496     ERR_SSL_DECOMPRESSION_FAILURE_ALERT = -125,
3497     ERR_SSL_BAD_RECORD_MAC_ALERT = -126,
3498     ERR_PROXY_AUTH_REQUESTED = -127,
3499     ERR_PROXY_CONNECTION_FAILED = -130,
3500     ERR_MANDATORY_PROXY_CONFIGURATION_FAILED = -131,
3501     ERR_PRECONNECT_MAX_SOCKET_LIMIT = -133,
3502     ERR_SSL_CLIENT_AUTH_PRIVATE_KEY_ACCESS_DENIED = -134,
3503     ERR_SSL_CLIENT_AUTH_CERT_NO_PRIVATE_KEY = -135,
3504     ERR_PROXY_CERTIFICATE_INVALID = -136,
3505     ERR_NAME_RESOLUTION_FAILED = -137,
3506     ERR_NETWORK_ACCESS_DENIED = -138,
3507     ERR_TEMPORARILY_THROTTLED = -139,
3508     ERR_HTTPS_PROXY_TUNNEL_RESPONSE_REDIRECT = -140,
3509     ERR_SSL_CLIENT_AUTH_SIGNATURE_FAILED = -141,
3510     ERR_MSG_TOO_BIG = -142,
3511     ERR_WS_PROTOCOL_ERROR = -145,
3512     ERR_ADDRESS_IN_USE = -147,
3513     ERR_SSL_HANDSHAKE_NOT_COMPLETED = -148,
3514     ERR_SSL_BAD_PEER_PUBLIC_KEY = -149,
3515     ERR_SSL_PINNED_KEY_NOT_IN_CERT_CHAIN = -150,
3516     ERR_CLIENT_AUTH_CERT_TYPE_UNSUPPORTED = -151,
3517     ERR_SSL_DECRYPT_ERROR_ALERT = -153,
3518     ERR_WS_THROTTLE_QUEUE_TOO_LARGE = -154,
3519     ERR_SSL_SERVER_CERT_CHANGED = -156,
3520     ERR_SSL_UNRECOGNIZED_NAME_ALERT = -159,
3521     ERR_SOCKET_SET_RECEIVE_BUFFER_SIZE_ERROR = -160,
3522     ERR_SOCKET_SET_SEND_BUFFER_SIZE_ERROR = -161,
3523     ERR_SOCKET_RECEIVE_BUFFER_SIZE_UNCHANGEABLE = -162,
3524     ERR_SOCKET_SEND_BUFFER_SIZE_UNCHANGEABLE = -163,
3525     ERR_SSL_CLIENT_AUTH_CERT_BAD_FORMAT = -164,
3526     ERR_ICANN_NAME_COLLISION = -166,
3527     ERR_SSL_SERVER_CERT_BAD_FORMAT = -167,
3528     ERR_CT_STH_PARSING_FAILED = -168,
3529     ERR_CT_STH_INCOMPLETE = -169,
3530     ERR_UNABLE_TO_REUSE_CONNECTION_FOR_PROXY_AUTH = -170,
3531     ERR_CT_CONSISTENCY_PROOF_PARSING_FAILED = -171,
3532     ERR_SSL_OBSOLETE_CIPHER = -172,
3533     ERR_WS_UPGRADE = -173,
3534     ERR_READ_IF_READY_NOT_IMPLEMENTED = -174,
3535     ERR_NO_BUFFER_SPACE = -176,
3536     ERR_SSL_CLIENT_AUTH_NO_COMMON_ALGORITHMS = -177,
3537     ERR_EARLY_DATA_REJECTED = -178,
3538     ERR_WRONG_VERSION_ON_EARLY_DATA = -179,
3539     ERR_TLS13_DOWNGRADE_DETECTED = -180,
3540     ERR_SSL_KEY_USAGE_INCOMPATIBLE = -181,
3541     ERR_INVALID_ECH_CONFIG_LIST = -182,
3542     ERR_ECH_NOT_NEGOTIATED = -183,
3543     ERR_ECH_FALLBACK_CERTIFICATE_INVALID = -184,
3544     ERR_CERT_COMMON_NAME_INVALID = -200,
3545     ERR_CERT_DATE_INVALID = -201,
3546     ERR_CERT_AUTHORITY_INVALID = -202,
3547     ERR_CERT_CONTAINS_ERRORS = -203,
3548     ERR_CERT_NO_REVOCATION_MECHANISM = -204,
3549     ERR_CERT_UNABLE_TO_CHECK_REVOCATION = -205,
3550     ERR_CERT_REVOKED = -206,
3551     ERR_CERT_INVALID = -207,
3552     ERR_CERT_WEAK_SIGNATURE_ALGORITHM = -208,
3553     ERR_CERT_NON_UNIQUE_NAME = -210,
3554     ERR_CERT_WEAK_KEY = -211,
3555     ERR_CERT_NAME_CONSTRAINT_VIOLATION = -212,
3556     ERR_CERT_VALIDITY_TOO_LONG = -213,
3557     ERR_CERTIFICATE_TRANSPARENCY_REQUIRED = -214,
3558     ERR_CERT_SYMANTEC_LEGACY = -215,
3559     ERR_CERT_KNOWN_INTERCEPTION_BLOCKED = -217,
3560     ERR_CERT_END = -219,
3561     ERR_INVALID_URL = -300,
3562     ERR_DISALLOWED_URL_SCHEME = -301,
3563     ERR_UNKNOWN_URL_SCHEME = -302,
3564     ERR_INVALID_REDIRECT = -303,
3565     ERR_TOO_MANY_REDIRECTS = -310,
3566     ERR_UNSAFE_REDIRECT = -311,
3567     ERR_UNSAFE_PORT = -312,
3568     ERR_INVALID_RESPONSE = -320,
3569     ERR_INVALID_CHUNKED_ENCODING = -321,
3570     ERR_METHOD_NOT_SUPPORTED = -322,
3571     ERR_UNEXPECTED_PROXY_AUTH = -323,
3572     ERR_EMPTY_RESPONSE = -324,
3573     ERR_RESPONSE_HEADERS_TOO_BIG = -325,
3574     ERR_PAC_SCRIPT_FAILED = -327,
3575     ERR_REQUEST_RANGE_NOT_SATISFIABLE = -328,
3576     ERR_MALFORMED_IDENTITY = -329,
3577     ERR_CONTENT_DECODING_FAILED = -330,
3578     ERR_NETWORK_IO_SUSPENDED = -331,
3579     ERR_SYN_REPLY_NOT_RECEIVED = -332,
3580     ERR_ENCODING_CONVERSION_FAILED = -333,
3581     ERR_UNRECOGNIZED_FTP_DIRECTORY_LISTING_FORMAT = -334,
3582     ERR_NO_SUPPORTED_PROXIES = -336,
3583     ERR_HTTP2_PROTOCOL_ERROR = -337,
3584     ERR_INVALID_AUTH_CREDENTIALS = -338,
3585     ERR_UNSUPPORTED_AUTH_SCHEME = -339,
3586     ERR_ENCODING_DETECTION_FAILED = -340,
3587     ERR_MISSING_AUTH_CREDENTIALS = -341,
3588     ERR_UNEXPECTED_SECURITY_LIBRARY_STATUS = -342,
3589     ERR_MISCONFIGURED_AUTH_ENVIRONMENT = -343,
3590     ERR_UNDOCUMENTED_SECURITY_LIBRARY_STATUS = -344,
3591     ERR_RESPONSE_BODY_TOO_BIG_TO_DRAIN = -345,
3592     ERR_RESPONSE_HEADERS_MULTIPLE_CONTENT_LENGTH = -346,
3593     ERR_INCOMPLETE_HTTP2_HEADERS = -347,
3594     ERR_PAC_NOT_IN_DHCP = -348,
3595     ERR_RESPONSE_HEADERS_MULTIPLE_CONTENT_DISPOSITION = -349,
3596     ERR_RESPONSE_HEADERS_MULTIPLE_LOCATION = -350,
3597     ERR_HTTP2_SERVER_REFUSED_STREAM = -351,
3598     ERR_HTTP2_PING_FAILED = -352,
3599     ERR_CONTENT_LENGTH_MISMATCH = -354,
3600     ERR_INCOMPLETE_CHUNKED_ENCODING = -355,
3601     ERR_QUIC_PROTOCOL_ERROR = -356,
3602     ERR_RESPONSE_HEADERS_TRUNCATED = -357,
3603     ERR_QUIC_HANDSHAKE_FAILED = -358,
3604     ERR_HTTP2_INADEQUATE_TRANSPORT_SECURITY = -360,
3605     ERR_HTTP2_FLOW_CONTROL_ERROR = -361,
3606     ERR_HTTP2_FRAME_SIZE_ERROR = -362,
3607     ERR_HTTP2_COMPRESSION_ERROR = -363,
3608     ERR_PROXY_AUTH_REQUESTED_WITH_NO_CONNECTION = -364,
3609     ERR_HTTP_1_1_REQUIRED = -365,
3610     ERR_PROXY_HTTP_1_1_REQUIRED = -366,
3611     ERR_PAC_SCRIPT_TERMINATED = -367,
3612     ERR_INVALID_HTTP_RESPONSE = -370,
3613     ERR_CONTENT_DECODING_INIT_FAILED = -371,
3614     ERR_HTTP2_RST_STREAM_NO_ERROR_RECEIVED = -372,
3615     ERR_TOO_MANY_RETRIES = -375,
3616     ERR_HTTP2_STREAM_CLOSED = -376,
3617     ERR_HTTP_RESPONSE_CODE_FAILURE = -379,
3618     ERR_QUIC_CERT_ROOT_NOT_KNOWN = -380,
3619     ERR_QUIC_GOAWAY_REQUEST_CAN_BE_RETRIED = -381,
3620     ERR_TOO_MANY_ACCEPT_CH_RESTARTS = -382,
3621     ERR_INCONSISTENT_IP_ADDRESS_SPACE = -383,
3622     ERR_CACHED_IP_ADDRESS_SPACE_BLOCKED_BY_PRIVATE_NETWORK_ACCESS_POLICY = -384,
3623     ERR_BLOCKED_BY_PRIVATE_NETWORK_ACCESS_CHECKS = -385,
3624     ERR_ZSTD_WINDOW_SIZE_TOO_BIG = -386,
3625     ERR_DICTIONARY_LOAD_FAILED = -387,
3626     ERR_UNEXPECTED_CONTENT_DICTIONARY_HEADER = -388,
3627     ERR_CACHE_MISS = -400,
3628     ERR_CACHE_READ_FAILURE = -401,
3629     ERR_CACHE_WRITE_FAILURE = -402,
3630     ERR_CACHE_OPERATION_NOT_SUPPORTED = -403,
3631     ERR_CACHE_OPEN_FAILURE = -404,
3632     ERR_CACHE_CREATE_FAILURE = -405,
3633     ERR_CACHE_RACE = -406,
3634     ERR_CACHE_CHECKSUM_READ_FAILURE = -407,
3635     ERR_CACHE_CHECKSUM_MISMATCH = -408,
3636     ERR_CACHE_LOCK_TIMEOUT = -409,
3637     ERR_CACHE_AUTH_FAILURE_AFTER_READ = -410,
3638     ERR_CACHE_ENTRY_NOT_SUITABLE = -411,
3639     ERR_CACHE_DOOM_FAILURE = -412,
3640     ERR_CACHE_OPEN_OR_CREATE_FAILURE = -413,
3641     ERR_INSECURE_RESPONSE = -501,
3642     ERR_NO_PRIVATE_KEY_FOR_CERT = -502,
3643     ERR_ADD_USER_CERT_FAILED = -503,
3644     ERR_INVALID_SIGNED_EXCHANGE = -504,
3645     ERR_INVALID_WEB_BUNDLE = -505,
3646     ERR_TRUST_TOKEN_OPERATION_FAILED = -506,
3647 
3648     ///
3649     /// Supported certificate status code values. See net\cert\cert_status_flags.h
3650     /// for more information. CERT_STATUS_NONE is new in CEF because we use an
3651     /// enum while cert_status_flags.h uses a typedef and static const variables.
3652     ///
3653     ERR_TRUST_TOKEN_OPERATION_SUCCESS_WITHOUT_SENDING_REQUEST = -507,
3654 
3655     // 1 << 3 is reserved for ERR_CERT_CONTAINS_ERRORS (not useful with WinHTTP).
3656 
3657     // 1 << 9 was used for CERT_STATUS_NOT_IN_DNS
3658 
3659     // 1 << 12 was used for CERT_STATUS_WEAK_DH_KEY
3660     ERR_PKCS12_IMPORT_BAD_PASSWORD = -701,
3661 
3662     // Bits 16 to 31 are for non-error statuses.
3663     ERR_PKCS12_IMPORT_FAILED = -702,
3664 
3665     // Bit 18 was CERT_STATUS_IS_DNSSEC
3666     ERR_IMPORT_CA_CERT_NOT_CA = -703,
3667 
3668     ///
3669     /// Process result codes. This is not a comprehensive list, as result codes
3670     /// might also include platform-specific crash values (Posix signal or Windows
3671     ERR_IMPORT_CERT_ALREADY_EXISTS = -704,
3672     /// hardware exception), or internal-only implementation values.
3673     ERR_IMPORT_CA_CERT_FAILED = -705,
3674     ///
3675 
3676     // The following values should be kept in sync with Chromium's
3677     ERR_IMPORT_SERVER_CERT_FAILED = -706,
3678     // content::ResultCode type.
3679 
3680     /// Process was killed by user or system.
3681     ERR_PKCS12_IMPORT_INVALID_MAC = -707,
3682 
3683     /// Process hung.
3684     ERR_PKCS12_IMPORT_INVALID_FILE = -708,
3685 
3686     /// A bad message caused the process termination.
3687 
3688     /// The GPU process exited because initialization failed.
3689     ERR_PKCS12_IMPORT_UNSUPPORTED = -709,
3690     ERR_KEY_GENERATION_FAILED = -710,
3691 
3692     // The following values should be kept in sync with Chromium's
3693     // chrome::ResultCode type. Unused chrome values are excluded.
3694     ERR_PRIVATE_KEY_EXPORT_FAILED = -712,
3695 
3696     /// A critical chrome file is missing.
3697     ERR_SELF_SIGNED_CERT_GENERATION_FAILED = -713,
3698 
3699     /// Command line parameter is not supported.
3700     ERR_CERT_DATABASE_CHANGED = -714,
3701 
3702     /// The profile was in use on another host.
3703 
3704     /// Failed to pack an extension via the command line.
3705     ERR_CERT_VERIFIER_CHANGED = -716,
3706 
3707     /// The browser process exited early by passing the command line to another
3708     ERR_DNS_MALFORMED_RESPONSE = -800,
3709     /// running browser.
3710     ERR_DNS_SERVER_REQUIRES_TCP = -801,
3711 
3712     /// A browser process was sandboxed. This should never happen.
3713 
3714     /// Cloud policy enrollment failed or was given up by user.
3715 
3716     /// The GPU process was terminated due to context lost.
3717 
3718     /// An early startup command was executed and the browser must exit.
3719 
3720     /// The browser process exited because system resources are exhausted. The
3721     ERR_DNS_SERVER_FAILED = -802,
3722     /// system state can't be recovered and will be unstable.
3723     ERR_DNS_TIMED_OUT = -803,
3724 
3725     // The following values should be kept in sync with Chromium's
3726     // sandbox::TerminationCodes type.
3727     ERR_DNS_CACHE_MISS = -804,
3728 
3729     /// Windows sandbox could not set the integrity level.
3730     ERR_DNS_SEARCH_EMPTY = -805,
3731 
3732     /// Windows sandbox could not lower the token.
3733     ERR_DNS_SORT_ERROR = -806,
3734 
3735     /// Windows sandbox failed to flush registry handles.
3736     ERR_DNS_SECURE_RESOLVER_HOSTNAME_RESOLUTION_FAILED = -808,
3737 
3738     /// Windows sandbox failed to forbid HCKU caching.
3739 
3740     /// Windows sandbox failed to close pending handles.
3741 
3742     /// Windows sandbox could not set the mitigation policy.
3743     ERR_DNS_NAME_HTTPS_ONLY = -809,
3744 
3745     /// Windows sandbox exceeded the job memory limit.
3746     ERR_DNS_REQUEST_CANCELLED = -810,
3747 
3748     /// Windows sandbox failed to warmup.
3749     ERR_DNS_NO_MATCHING_SUPPORTED_ALPN = -811,
3750 
3751     ///
3752     /// The manner in which a link click should be opened. These constants match
3753     /// their equivalents in Chromium's window_open_disposition.h and should not be
3754     /// renumbered.
3755     ///
3756     ERR_DNS_SECURE_PROBE_RECORD_INVALID = -814
3757 }
3758 
3759 alias ERR_NONE = cef_errorcode_t.ERR_NONE;
3760 alias ERR_IO_PENDING = cef_errorcode_t.ERR_IO_PENDING;
3761 alias ERR_FAILED = cef_errorcode_t.ERR_FAILED;
3762 alias ERR_ABORTED = cef_errorcode_t.ERR_ABORTED;
3763 alias ERR_INVALID_ARGUMENT = cef_errorcode_t.ERR_INVALID_ARGUMENT;
3764 alias ERR_INVALID_HANDLE = cef_errorcode_t.ERR_INVALID_HANDLE;
3765 alias ERR_FILE_NOT_FOUND = cef_errorcode_t.ERR_FILE_NOT_FOUND;
3766 alias ERR_TIMED_OUT = cef_errorcode_t.ERR_TIMED_OUT;
3767 alias ERR_FILE_TOO_BIG = cef_errorcode_t.ERR_FILE_TOO_BIG;
3768 alias ERR_UNEXPECTED = cef_errorcode_t.ERR_UNEXPECTED;
3769 alias ERR_ACCESS_DENIED = cef_errorcode_t.ERR_ACCESS_DENIED;
3770 alias ERR_NOT_IMPLEMENTED = cef_errorcode_t.ERR_NOT_IMPLEMENTED;
3771 alias ERR_INSUFFICIENT_RESOURCES = cef_errorcode_t.ERR_INSUFFICIENT_RESOURCES;
3772 alias ERR_OUT_OF_MEMORY = cef_errorcode_t.ERR_OUT_OF_MEMORY;
3773 alias ERR_UPLOAD_FILE_CHANGED = cef_errorcode_t.ERR_UPLOAD_FILE_CHANGED;
3774 alias ERR_SOCKET_NOT_CONNECTED = cef_errorcode_t.ERR_SOCKET_NOT_CONNECTED;
3775 alias ERR_FILE_EXISTS = cef_errorcode_t.ERR_FILE_EXISTS;
3776 alias ERR_FILE_PATH_TOO_LONG = cef_errorcode_t.ERR_FILE_PATH_TOO_LONG;
3777 alias ERR_FILE_NO_SPACE = cef_errorcode_t.ERR_FILE_NO_SPACE;
3778 alias ERR_FILE_VIRUS_INFECTED = cef_errorcode_t.ERR_FILE_VIRUS_INFECTED;
3779 alias ERR_BLOCKED_BY_CLIENT = cef_errorcode_t.ERR_BLOCKED_BY_CLIENT;
3780 alias ERR_NETWORK_CHANGED = cef_errorcode_t.ERR_NETWORK_CHANGED;
3781 alias ERR_BLOCKED_BY_ADMINISTRATOR = cef_errorcode_t.ERR_BLOCKED_BY_ADMINISTRATOR;
3782 alias ERR_SOCKET_IS_CONNECTED = cef_errorcode_t.ERR_SOCKET_IS_CONNECTED;
3783 alias ERR_UPLOAD_STREAM_REWIND_NOT_SUPPORTED = cef_errorcode_t.ERR_UPLOAD_STREAM_REWIND_NOT_SUPPORTED;
3784 alias ERR_CONTEXT_SHUT_DOWN = cef_errorcode_t.ERR_CONTEXT_SHUT_DOWN;
3785 alias ERR_BLOCKED_BY_RESPONSE = cef_errorcode_t.ERR_BLOCKED_BY_RESPONSE;
3786 alias ERR_CLEARTEXT_NOT_PERMITTED = cef_errorcode_t.ERR_CLEARTEXT_NOT_PERMITTED;
3787 alias ERR_BLOCKED_BY_CSP = cef_errorcode_t.ERR_BLOCKED_BY_CSP;
3788 alias ERR_H2_OR_QUIC_REQUIRED = cef_errorcode_t.ERR_H2_OR_QUIC_REQUIRED;
3789 alias ERR_BLOCKED_BY_ORB = cef_errorcode_t.ERR_BLOCKED_BY_ORB;
3790 alias ERR_NETWORK_ACCESS_REVOKED = cef_errorcode_t.ERR_NETWORK_ACCESS_REVOKED;
3791 alias ERR_CONNECTION_CLOSED = cef_errorcode_t.ERR_CONNECTION_CLOSED;
3792 alias ERR_CONNECTION_RESET = cef_errorcode_t.ERR_CONNECTION_RESET;
3793 alias ERR_CONNECTION_REFUSED = cef_errorcode_t.ERR_CONNECTION_REFUSED;
3794 alias ERR_CONNECTION_ABORTED = cef_errorcode_t.ERR_CONNECTION_ABORTED;
3795 alias ERR_CONNECTION_FAILED = cef_errorcode_t.ERR_CONNECTION_FAILED;
3796 alias ERR_NAME_NOT_RESOLVED = cef_errorcode_t.ERR_NAME_NOT_RESOLVED;
3797 alias ERR_INTERNET_DISCONNECTED = cef_errorcode_t.ERR_INTERNET_DISCONNECTED;
3798 alias ERR_SSL_PROTOCOL_ERROR = cef_errorcode_t.ERR_SSL_PROTOCOL_ERROR;
3799 alias ERR_ADDRESS_INVALID = cef_errorcode_t.ERR_ADDRESS_INVALID;
3800 alias ERR_ADDRESS_UNREACHABLE = cef_errorcode_t.ERR_ADDRESS_UNREACHABLE;
3801 alias ERR_SSL_CLIENT_AUTH_CERT_NEEDED = cef_errorcode_t.ERR_SSL_CLIENT_AUTH_CERT_NEEDED;
3802 alias ERR_TUNNEL_CONNECTION_FAILED = cef_errorcode_t.ERR_TUNNEL_CONNECTION_FAILED;
3803 alias ERR_NO_SSL_VERSIONS_ENABLED = cef_errorcode_t.ERR_NO_SSL_VERSIONS_ENABLED;
3804 alias ERR_SSL_VERSION_OR_CIPHER_MISMATCH = cef_errorcode_t.ERR_SSL_VERSION_OR_CIPHER_MISMATCH;
3805 alias ERR_SSL_RENEGOTIATION_REQUESTED = cef_errorcode_t.ERR_SSL_RENEGOTIATION_REQUESTED;
3806 alias ERR_PROXY_AUTH_UNSUPPORTED = cef_errorcode_t.ERR_PROXY_AUTH_UNSUPPORTED;
3807 alias ERR_BAD_SSL_CLIENT_AUTH_CERT = cef_errorcode_t.ERR_BAD_SSL_CLIENT_AUTH_CERT;
3808 alias ERR_CONNECTION_TIMED_OUT = cef_errorcode_t.ERR_CONNECTION_TIMED_OUT;
3809 alias ERR_HOST_RESOLVER_QUEUE_TOO_LARGE = cef_errorcode_t.ERR_HOST_RESOLVER_QUEUE_TOO_LARGE;
3810 alias ERR_SOCKS_CONNECTION_FAILED = cef_errorcode_t.ERR_SOCKS_CONNECTION_FAILED;
3811 alias ERR_SOCKS_CONNECTION_HOST_UNREACHABLE = cef_errorcode_t.ERR_SOCKS_CONNECTION_HOST_UNREACHABLE;
3812 alias ERR_ALPN_NEGOTIATION_FAILED = cef_errorcode_t.ERR_ALPN_NEGOTIATION_FAILED;
3813 alias ERR_SSL_NO_RENEGOTIATION = cef_errorcode_t.ERR_SSL_NO_RENEGOTIATION;
3814 alias ERR_WINSOCK_UNEXPECTED_WRITTEN_BYTES = cef_errorcode_t.ERR_WINSOCK_UNEXPECTED_WRITTEN_BYTES;
3815 alias ERR_SSL_DECOMPRESSION_FAILURE_ALERT = cef_errorcode_t.ERR_SSL_DECOMPRESSION_FAILURE_ALERT;
3816 alias ERR_SSL_BAD_RECORD_MAC_ALERT = cef_errorcode_t.ERR_SSL_BAD_RECORD_MAC_ALERT;
3817 alias ERR_PROXY_AUTH_REQUESTED = cef_errorcode_t.ERR_PROXY_AUTH_REQUESTED;
3818 alias ERR_PROXY_CONNECTION_FAILED = cef_errorcode_t.ERR_PROXY_CONNECTION_FAILED;
3819 alias ERR_MANDATORY_PROXY_CONFIGURATION_FAILED = cef_errorcode_t.ERR_MANDATORY_PROXY_CONFIGURATION_FAILED;
3820 alias ERR_PRECONNECT_MAX_SOCKET_LIMIT = cef_errorcode_t.ERR_PRECONNECT_MAX_SOCKET_LIMIT;
3821 alias ERR_SSL_CLIENT_AUTH_PRIVATE_KEY_ACCESS_DENIED = cef_errorcode_t.ERR_SSL_CLIENT_AUTH_PRIVATE_KEY_ACCESS_DENIED;
3822 alias ERR_SSL_CLIENT_AUTH_CERT_NO_PRIVATE_KEY = cef_errorcode_t.ERR_SSL_CLIENT_AUTH_CERT_NO_PRIVATE_KEY;
3823 alias ERR_PROXY_CERTIFICATE_INVALID = cef_errorcode_t.ERR_PROXY_CERTIFICATE_INVALID;
3824 alias ERR_NAME_RESOLUTION_FAILED = cef_errorcode_t.ERR_NAME_RESOLUTION_FAILED;
3825 alias ERR_NETWORK_ACCESS_DENIED = cef_errorcode_t.ERR_NETWORK_ACCESS_DENIED;
3826 alias ERR_TEMPORARILY_THROTTLED = cef_errorcode_t.ERR_TEMPORARILY_THROTTLED;
3827 alias ERR_HTTPS_PROXY_TUNNEL_RESPONSE_REDIRECT = cef_errorcode_t.ERR_HTTPS_PROXY_TUNNEL_RESPONSE_REDIRECT;
3828 alias ERR_SSL_CLIENT_AUTH_SIGNATURE_FAILED = cef_errorcode_t.ERR_SSL_CLIENT_AUTH_SIGNATURE_FAILED;
3829 alias ERR_MSG_TOO_BIG = cef_errorcode_t.ERR_MSG_TOO_BIG;
3830 alias ERR_WS_PROTOCOL_ERROR = cef_errorcode_t.ERR_WS_PROTOCOL_ERROR;
3831 alias ERR_ADDRESS_IN_USE = cef_errorcode_t.ERR_ADDRESS_IN_USE;
3832 alias ERR_SSL_HANDSHAKE_NOT_COMPLETED = cef_errorcode_t.ERR_SSL_HANDSHAKE_NOT_COMPLETED;
3833 alias ERR_SSL_BAD_PEER_PUBLIC_KEY = cef_errorcode_t.ERR_SSL_BAD_PEER_PUBLIC_KEY;
3834 alias ERR_SSL_PINNED_KEY_NOT_IN_CERT_CHAIN = cef_errorcode_t.ERR_SSL_PINNED_KEY_NOT_IN_CERT_CHAIN;
3835 alias ERR_CLIENT_AUTH_CERT_TYPE_UNSUPPORTED = cef_errorcode_t.ERR_CLIENT_AUTH_CERT_TYPE_UNSUPPORTED;
3836 alias ERR_SSL_DECRYPT_ERROR_ALERT = cef_errorcode_t.ERR_SSL_DECRYPT_ERROR_ALERT;
3837 alias ERR_WS_THROTTLE_QUEUE_TOO_LARGE = cef_errorcode_t.ERR_WS_THROTTLE_QUEUE_TOO_LARGE;
3838 alias ERR_SSL_SERVER_CERT_CHANGED = cef_errorcode_t.ERR_SSL_SERVER_CERT_CHANGED;
3839 alias ERR_SSL_UNRECOGNIZED_NAME_ALERT = cef_errorcode_t.ERR_SSL_UNRECOGNIZED_NAME_ALERT;
3840 alias ERR_SOCKET_SET_RECEIVE_BUFFER_SIZE_ERROR = cef_errorcode_t.ERR_SOCKET_SET_RECEIVE_BUFFER_SIZE_ERROR;
3841 alias ERR_SOCKET_SET_SEND_BUFFER_SIZE_ERROR = cef_errorcode_t.ERR_SOCKET_SET_SEND_BUFFER_SIZE_ERROR;
3842 alias ERR_SOCKET_RECEIVE_BUFFER_SIZE_UNCHANGEABLE = cef_errorcode_t.ERR_SOCKET_RECEIVE_BUFFER_SIZE_UNCHANGEABLE;
3843 alias ERR_SOCKET_SEND_BUFFER_SIZE_UNCHANGEABLE = cef_errorcode_t.ERR_SOCKET_SEND_BUFFER_SIZE_UNCHANGEABLE;
3844 alias ERR_SSL_CLIENT_AUTH_CERT_BAD_FORMAT = cef_errorcode_t.ERR_SSL_CLIENT_AUTH_CERT_BAD_FORMAT;
3845 alias ERR_ICANN_NAME_COLLISION = cef_errorcode_t.ERR_ICANN_NAME_COLLISION;
3846 alias ERR_SSL_SERVER_CERT_BAD_FORMAT = cef_errorcode_t.ERR_SSL_SERVER_CERT_BAD_FORMAT;
3847 alias ERR_CT_STH_PARSING_FAILED = cef_errorcode_t.ERR_CT_STH_PARSING_FAILED;
3848 alias ERR_CT_STH_INCOMPLETE = cef_errorcode_t.ERR_CT_STH_INCOMPLETE;
3849 alias ERR_UNABLE_TO_REUSE_CONNECTION_FOR_PROXY_AUTH = cef_errorcode_t.ERR_UNABLE_TO_REUSE_CONNECTION_FOR_PROXY_AUTH;
3850 alias ERR_CT_CONSISTENCY_PROOF_PARSING_FAILED = cef_errorcode_t.ERR_CT_CONSISTENCY_PROOF_PARSING_FAILED;
3851 alias ERR_SSL_OBSOLETE_CIPHER = cef_errorcode_t.ERR_SSL_OBSOLETE_CIPHER;
3852 alias ERR_WS_UPGRADE = cef_errorcode_t.ERR_WS_UPGRADE;
3853 alias ERR_READ_IF_READY_NOT_IMPLEMENTED = cef_errorcode_t.ERR_READ_IF_READY_NOT_IMPLEMENTED;
3854 alias ERR_NO_BUFFER_SPACE = cef_errorcode_t.ERR_NO_BUFFER_SPACE;
3855 alias ERR_SSL_CLIENT_AUTH_NO_COMMON_ALGORITHMS = cef_errorcode_t.ERR_SSL_CLIENT_AUTH_NO_COMMON_ALGORITHMS;
3856 alias ERR_EARLY_DATA_REJECTED = cef_errorcode_t.ERR_EARLY_DATA_REJECTED;
3857 alias ERR_WRONG_VERSION_ON_EARLY_DATA = cef_errorcode_t.ERR_WRONG_VERSION_ON_EARLY_DATA;
3858 alias ERR_TLS13_DOWNGRADE_DETECTED = cef_errorcode_t.ERR_TLS13_DOWNGRADE_DETECTED;
3859 alias ERR_SSL_KEY_USAGE_INCOMPATIBLE = cef_errorcode_t.ERR_SSL_KEY_USAGE_INCOMPATIBLE;
3860 alias ERR_INVALID_ECH_CONFIG_LIST = cef_errorcode_t.ERR_INVALID_ECH_CONFIG_LIST;
3861 alias ERR_ECH_NOT_NEGOTIATED = cef_errorcode_t.ERR_ECH_NOT_NEGOTIATED;
3862 alias ERR_ECH_FALLBACK_CERTIFICATE_INVALID = cef_errorcode_t.ERR_ECH_FALLBACK_CERTIFICATE_INVALID;
3863 alias ERR_CERT_COMMON_NAME_INVALID = cef_errorcode_t.ERR_CERT_COMMON_NAME_INVALID;
3864 alias ERR_CERT_DATE_INVALID = cef_errorcode_t.ERR_CERT_DATE_INVALID;
3865 alias ERR_CERT_AUTHORITY_INVALID = cef_errorcode_t.ERR_CERT_AUTHORITY_INVALID;
3866 alias ERR_CERT_CONTAINS_ERRORS = cef_errorcode_t.ERR_CERT_CONTAINS_ERRORS;
3867 alias ERR_CERT_NO_REVOCATION_MECHANISM = cef_errorcode_t.ERR_CERT_NO_REVOCATION_MECHANISM;
3868 alias ERR_CERT_UNABLE_TO_CHECK_REVOCATION = cef_errorcode_t.ERR_CERT_UNABLE_TO_CHECK_REVOCATION;
3869 alias ERR_CERT_REVOKED = cef_errorcode_t.ERR_CERT_REVOKED;
3870 alias ERR_CERT_INVALID = cef_errorcode_t.ERR_CERT_INVALID;
3871 alias ERR_CERT_WEAK_SIGNATURE_ALGORITHM = cef_errorcode_t.ERR_CERT_WEAK_SIGNATURE_ALGORITHM;
3872 alias ERR_CERT_NON_UNIQUE_NAME = cef_errorcode_t.ERR_CERT_NON_UNIQUE_NAME;
3873 alias ERR_CERT_WEAK_KEY = cef_errorcode_t.ERR_CERT_WEAK_KEY;
3874 alias ERR_CERT_NAME_CONSTRAINT_VIOLATION = cef_errorcode_t.ERR_CERT_NAME_CONSTRAINT_VIOLATION;
3875 alias ERR_CERT_VALIDITY_TOO_LONG = cef_errorcode_t.ERR_CERT_VALIDITY_TOO_LONG;
3876 alias ERR_CERTIFICATE_TRANSPARENCY_REQUIRED = cef_errorcode_t.ERR_CERTIFICATE_TRANSPARENCY_REQUIRED;
3877 alias ERR_CERT_SYMANTEC_LEGACY = cef_errorcode_t.ERR_CERT_SYMANTEC_LEGACY;
3878 alias ERR_CERT_KNOWN_INTERCEPTION_BLOCKED = cef_errorcode_t.ERR_CERT_KNOWN_INTERCEPTION_BLOCKED;
3879 alias ERR_CERT_END = cef_errorcode_t.ERR_CERT_END;
3880 alias ERR_INVALID_URL = cef_errorcode_t.ERR_INVALID_URL;
3881 alias ERR_DISALLOWED_URL_SCHEME = cef_errorcode_t.ERR_DISALLOWED_URL_SCHEME;
3882 alias ERR_UNKNOWN_URL_SCHEME = cef_errorcode_t.ERR_UNKNOWN_URL_SCHEME;
3883 alias ERR_INVALID_REDIRECT = cef_errorcode_t.ERR_INVALID_REDIRECT;
3884 alias ERR_TOO_MANY_REDIRECTS = cef_errorcode_t.ERR_TOO_MANY_REDIRECTS;
3885 alias ERR_UNSAFE_REDIRECT = cef_errorcode_t.ERR_UNSAFE_REDIRECT;
3886 alias ERR_UNSAFE_PORT = cef_errorcode_t.ERR_UNSAFE_PORT;
3887 alias ERR_INVALID_RESPONSE = cef_errorcode_t.ERR_INVALID_RESPONSE;
3888 alias ERR_INVALID_CHUNKED_ENCODING = cef_errorcode_t.ERR_INVALID_CHUNKED_ENCODING;
3889 alias ERR_METHOD_NOT_SUPPORTED = cef_errorcode_t.ERR_METHOD_NOT_SUPPORTED;
3890 alias ERR_UNEXPECTED_PROXY_AUTH = cef_errorcode_t.ERR_UNEXPECTED_PROXY_AUTH;
3891 alias ERR_EMPTY_RESPONSE = cef_errorcode_t.ERR_EMPTY_RESPONSE;
3892 alias ERR_RESPONSE_HEADERS_TOO_BIG = cef_errorcode_t.ERR_RESPONSE_HEADERS_TOO_BIG;
3893 alias ERR_PAC_SCRIPT_FAILED = cef_errorcode_t.ERR_PAC_SCRIPT_FAILED;
3894 alias ERR_REQUEST_RANGE_NOT_SATISFIABLE = cef_errorcode_t.ERR_REQUEST_RANGE_NOT_SATISFIABLE;
3895 alias ERR_MALFORMED_IDENTITY = cef_errorcode_t.ERR_MALFORMED_IDENTITY;
3896 alias ERR_CONTENT_DECODING_FAILED = cef_errorcode_t.ERR_CONTENT_DECODING_FAILED;
3897 alias ERR_NETWORK_IO_SUSPENDED = cef_errorcode_t.ERR_NETWORK_IO_SUSPENDED;
3898 alias ERR_SYN_REPLY_NOT_RECEIVED = cef_errorcode_t.ERR_SYN_REPLY_NOT_RECEIVED;
3899 alias ERR_ENCODING_CONVERSION_FAILED = cef_errorcode_t.ERR_ENCODING_CONVERSION_FAILED;
3900 alias ERR_UNRECOGNIZED_FTP_DIRECTORY_LISTING_FORMAT = cef_errorcode_t.ERR_UNRECOGNIZED_FTP_DIRECTORY_LISTING_FORMAT;
3901 alias ERR_NO_SUPPORTED_PROXIES = cef_errorcode_t.ERR_NO_SUPPORTED_PROXIES;
3902 alias ERR_HTTP2_PROTOCOL_ERROR = cef_errorcode_t.ERR_HTTP2_PROTOCOL_ERROR;
3903 alias ERR_INVALID_AUTH_CREDENTIALS = cef_errorcode_t.ERR_INVALID_AUTH_CREDENTIALS;
3904 alias ERR_UNSUPPORTED_AUTH_SCHEME = cef_errorcode_t.ERR_UNSUPPORTED_AUTH_SCHEME;
3905 alias ERR_ENCODING_DETECTION_FAILED = cef_errorcode_t.ERR_ENCODING_DETECTION_FAILED;
3906 alias ERR_MISSING_AUTH_CREDENTIALS = cef_errorcode_t.ERR_MISSING_AUTH_CREDENTIALS;
3907 alias ERR_UNEXPECTED_SECURITY_LIBRARY_STATUS = cef_errorcode_t.ERR_UNEXPECTED_SECURITY_LIBRARY_STATUS;
3908 alias ERR_MISCONFIGURED_AUTH_ENVIRONMENT = cef_errorcode_t.ERR_MISCONFIGURED_AUTH_ENVIRONMENT;
3909 alias ERR_UNDOCUMENTED_SECURITY_LIBRARY_STATUS = cef_errorcode_t.ERR_UNDOCUMENTED_SECURITY_LIBRARY_STATUS;
3910 alias ERR_RESPONSE_BODY_TOO_BIG_TO_DRAIN = cef_errorcode_t.ERR_RESPONSE_BODY_TOO_BIG_TO_DRAIN;
3911 alias ERR_RESPONSE_HEADERS_MULTIPLE_CONTENT_LENGTH = cef_errorcode_t.ERR_RESPONSE_HEADERS_MULTIPLE_CONTENT_LENGTH;
3912 alias ERR_INCOMPLETE_HTTP2_HEADERS = cef_errorcode_t.ERR_INCOMPLETE_HTTP2_HEADERS;
3913 alias ERR_PAC_NOT_IN_DHCP = cef_errorcode_t.ERR_PAC_NOT_IN_DHCP;
3914 alias ERR_RESPONSE_HEADERS_MULTIPLE_CONTENT_DISPOSITION = cef_errorcode_t.ERR_RESPONSE_HEADERS_MULTIPLE_CONTENT_DISPOSITION;
3915 alias ERR_RESPONSE_HEADERS_MULTIPLE_LOCATION = cef_errorcode_t.ERR_RESPONSE_HEADERS_MULTIPLE_LOCATION;
3916 alias ERR_HTTP2_SERVER_REFUSED_STREAM = cef_errorcode_t.ERR_HTTP2_SERVER_REFUSED_STREAM;
3917 alias ERR_HTTP2_PING_FAILED = cef_errorcode_t.ERR_HTTP2_PING_FAILED;
3918 alias ERR_CONTENT_LENGTH_MISMATCH = cef_errorcode_t.ERR_CONTENT_LENGTH_MISMATCH;
3919 alias ERR_INCOMPLETE_CHUNKED_ENCODING = cef_errorcode_t.ERR_INCOMPLETE_CHUNKED_ENCODING;
3920 alias ERR_QUIC_PROTOCOL_ERROR = cef_errorcode_t.ERR_QUIC_PROTOCOL_ERROR;
3921 alias ERR_RESPONSE_HEADERS_TRUNCATED = cef_errorcode_t.ERR_RESPONSE_HEADERS_TRUNCATED;
3922 alias ERR_QUIC_HANDSHAKE_FAILED = cef_errorcode_t.ERR_QUIC_HANDSHAKE_FAILED;
3923 alias ERR_HTTP2_INADEQUATE_TRANSPORT_SECURITY = cef_errorcode_t.ERR_HTTP2_INADEQUATE_TRANSPORT_SECURITY;
3924 alias ERR_HTTP2_FLOW_CONTROL_ERROR = cef_errorcode_t.ERR_HTTP2_FLOW_CONTROL_ERROR;
3925 alias ERR_HTTP2_FRAME_SIZE_ERROR = cef_errorcode_t.ERR_HTTP2_FRAME_SIZE_ERROR;
3926 alias ERR_HTTP2_COMPRESSION_ERROR = cef_errorcode_t.ERR_HTTP2_COMPRESSION_ERROR;
3927 alias ERR_PROXY_AUTH_REQUESTED_WITH_NO_CONNECTION = cef_errorcode_t.ERR_PROXY_AUTH_REQUESTED_WITH_NO_CONNECTION;
3928 alias ERR_HTTP_1_1_REQUIRED = cef_errorcode_t.ERR_HTTP_1_1_REQUIRED;
3929 alias ERR_PROXY_HTTP_1_1_REQUIRED = cef_errorcode_t.ERR_PROXY_HTTP_1_1_REQUIRED;
3930 alias ERR_PAC_SCRIPT_TERMINATED = cef_errorcode_t.ERR_PAC_SCRIPT_TERMINATED;
3931 alias ERR_INVALID_HTTP_RESPONSE = cef_errorcode_t.ERR_INVALID_HTTP_RESPONSE;
3932 alias ERR_CONTENT_DECODING_INIT_FAILED = cef_errorcode_t.ERR_CONTENT_DECODING_INIT_FAILED;
3933 alias ERR_HTTP2_RST_STREAM_NO_ERROR_RECEIVED = cef_errorcode_t.ERR_HTTP2_RST_STREAM_NO_ERROR_RECEIVED;
3934 alias ERR_TOO_MANY_RETRIES = cef_errorcode_t.ERR_TOO_MANY_RETRIES;
3935 alias ERR_HTTP2_STREAM_CLOSED = cef_errorcode_t.ERR_HTTP2_STREAM_CLOSED;
3936 alias ERR_HTTP_RESPONSE_CODE_FAILURE = cef_errorcode_t.ERR_HTTP_RESPONSE_CODE_FAILURE;
3937 alias ERR_QUIC_CERT_ROOT_NOT_KNOWN = cef_errorcode_t.ERR_QUIC_CERT_ROOT_NOT_KNOWN;
3938 alias ERR_QUIC_GOAWAY_REQUEST_CAN_BE_RETRIED = cef_errorcode_t.ERR_QUIC_GOAWAY_REQUEST_CAN_BE_RETRIED;
3939 alias ERR_TOO_MANY_ACCEPT_CH_RESTARTS = cef_errorcode_t.ERR_TOO_MANY_ACCEPT_CH_RESTARTS;
3940 alias ERR_INCONSISTENT_IP_ADDRESS_SPACE = cef_errorcode_t.ERR_INCONSISTENT_IP_ADDRESS_SPACE;
3941 alias ERR_CACHED_IP_ADDRESS_SPACE_BLOCKED_BY_PRIVATE_NETWORK_ACCESS_POLICY = cef_errorcode_t.ERR_CACHED_IP_ADDRESS_SPACE_BLOCKED_BY_PRIVATE_NETWORK_ACCESS_POLICY;
3942 alias ERR_BLOCKED_BY_PRIVATE_NETWORK_ACCESS_CHECKS = cef_errorcode_t.ERR_BLOCKED_BY_PRIVATE_NETWORK_ACCESS_CHECKS;
3943 alias ERR_ZSTD_WINDOW_SIZE_TOO_BIG = cef_errorcode_t.ERR_ZSTD_WINDOW_SIZE_TOO_BIG;
3944 alias ERR_DICTIONARY_LOAD_FAILED = cef_errorcode_t.ERR_DICTIONARY_LOAD_FAILED;
3945 alias ERR_UNEXPECTED_CONTENT_DICTIONARY_HEADER = cef_errorcode_t.ERR_UNEXPECTED_CONTENT_DICTIONARY_HEADER;
3946 alias ERR_CACHE_MISS = cef_errorcode_t.ERR_CACHE_MISS;
3947 alias ERR_CACHE_READ_FAILURE = cef_errorcode_t.ERR_CACHE_READ_FAILURE;
3948 alias ERR_CACHE_WRITE_FAILURE = cef_errorcode_t.ERR_CACHE_WRITE_FAILURE;
3949 alias ERR_CACHE_OPERATION_NOT_SUPPORTED = cef_errorcode_t.ERR_CACHE_OPERATION_NOT_SUPPORTED;
3950 alias ERR_CACHE_OPEN_FAILURE = cef_errorcode_t.ERR_CACHE_OPEN_FAILURE;
3951 alias ERR_CACHE_CREATE_FAILURE = cef_errorcode_t.ERR_CACHE_CREATE_FAILURE;
3952 alias ERR_CACHE_RACE = cef_errorcode_t.ERR_CACHE_RACE;
3953 alias ERR_CACHE_CHECKSUM_READ_FAILURE = cef_errorcode_t.ERR_CACHE_CHECKSUM_READ_FAILURE;
3954 alias ERR_CACHE_CHECKSUM_MISMATCH = cef_errorcode_t.ERR_CACHE_CHECKSUM_MISMATCH;
3955 alias ERR_CACHE_LOCK_TIMEOUT = cef_errorcode_t.ERR_CACHE_LOCK_TIMEOUT;
3956 alias ERR_CACHE_AUTH_FAILURE_AFTER_READ = cef_errorcode_t.ERR_CACHE_AUTH_FAILURE_AFTER_READ;
3957 alias ERR_CACHE_ENTRY_NOT_SUITABLE = cef_errorcode_t.ERR_CACHE_ENTRY_NOT_SUITABLE;
3958 alias ERR_CACHE_DOOM_FAILURE = cef_errorcode_t.ERR_CACHE_DOOM_FAILURE;
3959 alias ERR_CACHE_OPEN_OR_CREATE_FAILURE = cef_errorcode_t.ERR_CACHE_OPEN_OR_CREATE_FAILURE;
3960 alias ERR_INSECURE_RESPONSE = cef_errorcode_t.ERR_INSECURE_RESPONSE;
3961 alias ERR_NO_PRIVATE_KEY_FOR_CERT = cef_errorcode_t.ERR_NO_PRIVATE_KEY_FOR_CERT;
3962 alias ERR_ADD_USER_CERT_FAILED = cef_errorcode_t.ERR_ADD_USER_CERT_FAILED;
3963 alias ERR_INVALID_SIGNED_EXCHANGE = cef_errorcode_t.ERR_INVALID_SIGNED_EXCHANGE;
3964 alias ERR_INVALID_WEB_BUNDLE = cef_errorcode_t.ERR_INVALID_WEB_BUNDLE;
3965 alias ERR_TRUST_TOKEN_OPERATION_FAILED = cef_errorcode_t.ERR_TRUST_TOKEN_OPERATION_FAILED;
3966 alias ERR_TRUST_TOKEN_OPERATION_SUCCESS_WITHOUT_SENDING_REQUEST = cef_errorcode_t.ERR_TRUST_TOKEN_OPERATION_SUCCESS_WITHOUT_SENDING_REQUEST;
3967 alias ERR_PKCS12_IMPORT_BAD_PASSWORD = cef_errorcode_t.ERR_PKCS12_IMPORT_BAD_PASSWORD;
3968 alias ERR_PKCS12_IMPORT_FAILED = cef_errorcode_t.ERR_PKCS12_IMPORT_FAILED;
3969 alias ERR_IMPORT_CA_CERT_NOT_CA = cef_errorcode_t.ERR_IMPORT_CA_CERT_NOT_CA;
3970 alias ERR_IMPORT_CERT_ALREADY_EXISTS = cef_errorcode_t.ERR_IMPORT_CERT_ALREADY_EXISTS;
3971 alias ERR_IMPORT_CA_CERT_FAILED = cef_errorcode_t.ERR_IMPORT_CA_CERT_FAILED;
3972 alias ERR_IMPORT_SERVER_CERT_FAILED = cef_errorcode_t.ERR_IMPORT_SERVER_CERT_FAILED;
3973 alias ERR_PKCS12_IMPORT_INVALID_MAC = cef_errorcode_t.ERR_PKCS12_IMPORT_INVALID_MAC;
3974 alias ERR_PKCS12_IMPORT_INVALID_FILE = cef_errorcode_t.ERR_PKCS12_IMPORT_INVALID_FILE;
3975 alias ERR_PKCS12_IMPORT_UNSUPPORTED = cef_errorcode_t.ERR_PKCS12_IMPORT_UNSUPPORTED;
3976 alias ERR_KEY_GENERATION_FAILED = cef_errorcode_t.ERR_KEY_GENERATION_FAILED;
3977 alias ERR_PRIVATE_KEY_EXPORT_FAILED = cef_errorcode_t.ERR_PRIVATE_KEY_EXPORT_FAILED;
3978 alias ERR_SELF_SIGNED_CERT_GENERATION_FAILED = cef_errorcode_t.ERR_SELF_SIGNED_CERT_GENERATION_FAILED;
3979 alias ERR_CERT_DATABASE_CHANGED = cef_errorcode_t.ERR_CERT_DATABASE_CHANGED;
3980 alias ERR_CERT_VERIFIER_CHANGED = cef_errorcode_t.ERR_CERT_VERIFIER_CHANGED;
3981 alias ERR_DNS_MALFORMED_RESPONSE = cef_errorcode_t.ERR_DNS_MALFORMED_RESPONSE;
3982 alias ERR_DNS_SERVER_REQUIRES_TCP = cef_errorcode_t.ERR_DNS_SERVER_REQUIRES_TCP;
3983 alias ERR_DNS_SERVER_FAILED = cef_errorcode_t.ERR_DNS_SERVER_FAILED;
3984 alias ERR_DNS_TIMED_OUT = cef_errorcode_t.ERR_DNS_TIMED_OUT;
3985 alias ERR_DNS_CACHE_MISS = cef_errorcode_t.ERR_DNS_CACHE_MISS;
3986 alias ERR_DNS_SEARCH_EMPTY = cef_errorcode_t.ERR_DNS_SEARCH_EMPTY;
3987 alias ERR_DNS_SORT_ERROR = cef_errorcode_t.ERR_DNS_SORT_ERROR;
3988 alias ERR_DNS_SECURE_RESOLVER_HOSTNAME_RESOLUTION_FAILED = cef_errorcode_t.ERR_DNS_SECURE_RESOLVER_HOSTNAME_RESOLUTION_FAILED;
3989 alias ERR_DNS_NAME_HTTPS_ONLY = cef_errorcode_t.ERR_DNS_NAME_HTTPS_ONLY;
3990 alias ERR_DNS_REQUEST_CANCELLED = cef_errorcode_t.ERR_DNS_REQUEST_CANCELLED;
3991 alias ERR_DNS_NO_MATCHING_SUPPORTED_ALPN = cef_errorcode_t.ERR_DNS_NO_MATCHING_SUPPORTED_ALPN;
3992 alias ERR_DNS_SECURE_PROBE_RECORD_INVALID = cef_errorcode_t.ERR_DNS_SECURE_PROBE_RECORD_INVALID;
3993 
3994 enum cef_cert_status_t
3995 {
3996     CERT_STATUS_NONE = 0,
3997     CERT_STATUS_COMMON_NAME_INVALID = 1 << 0,
3998     CERT_STATUS_DATE_INVALID = 1 << 1,
3999     CERT_STATUS_AUTHORITY_INVALID = 1 << 2,
4000     CERT_STATUS_NO_REVOCATION_MECHANISM = 1 << 4,
4001     CERT_STATUS_UNABLE_TO_CHECK_REVOCATION = 1 << 5,
4002     CERT_STATUS_REVOKED = 1 << 6,
4003     CERT_STATUS_INVALID = 1 << 7,
4004     CERT_STATUS_WEAK_SIGNATURE_ALGORITHM = 1 << 8,
4005     CERT_STATUS_NON_UNIQUE_NAME = 1 << 10,
4006     CERT_STATUS_WEAK_KEY = 1 << 11,
4007     CERT_STATUS_PINNED_KEY_MISSING = 1 << 13,
4008     CERT_STATUS_NAME_CONSTRAINT_VIOLATION = 1 << 14,
4009     CERT_STATUS_VALIDITY_TOO_LONG = 1 << 15,
4010     CERT_STATUS_IS_EV = 1 << 16,
4011     CERT_STATUS_REV_CHECKING_ENABLED = 1 << 17,
4012     CERT_STATUS_SHA1_SIGNATURE_PRESENT = 1 << 19,
4013     CERT_STATUS_CT_COMPLIANCE_FAILED = 1 << 20
4014 }
4015 
4016 alias CERT_STATUS_NONE = cef_cert_status_t.CERT_STATUS_NONE;
4017 alias CERT_STATUS_COMMON_NAME_INVALID = cef_cert_status_t.CERT_STATUS_COMMON_NAME_INVALID;
4018 alias CERT_STATUS_DATE_INVALID = cef_cert_status_t.CERT_STATUS_DATE_INVALID;
4019 alias CERT_STATUS_AUTHORITY_INVALID = cef_cert_status_t.CERT_STATUS_AUTHORITY_INVALID;
4020 alias CERT_STATUS_NO_REVOCATION_MECHANISM = cef_cert_status_t.CERT_STATUS_NO_REVOCATION_MECHANISM;
4021 alias CERT_STATUS_UNABLE_TO_CHECK_REVOCATION = cef_cert_status_t.CERT_STATUS_UNABLE_TO_CHECK_REVOCATION;
4022 alias CERT_STATUS_REVOKED = cef_cert_status_t.CERT_STATUS_REVOKED;
4023 alias CERT_STATUS_INVALID = cef_cert_status_t.CERT_STATUS_INVALID;
4024 alias CERT_STATUS_WEAK_SIGNATURE_ALGORITHM = cef_cert_status_t.CERT_STATUS_WEAK_SIGNATURE_ALGORITHM;
4025 alias CERT_STATUS_NON_UNIQUE_NAME = cef_cert_status_t.CERT_STATUS_NON_UNIQUE_NAME;
4026 alias CERT_STATUS_WEAK_KEY = cef_cert_status_t.CERT_STATUS_WEAK_KEY;
4027 alias CERT_STATUS_PINNED_KEY_MISSING = cef_cert_status_t.CERT_STATUS_PINNED_KEY_MISSING;
4028 alias CERT_STATUS_NAME_CONSTRAINT_VIOLATION = cef_cert_status_t.CERT_STATUS_NAME_CONSTRAINT_VIOLATION;
4029 alias CERT_STATUS_VALIDITY_TOO_LONG = cef_cert_status_t.CERT_STATUS_VALIDITY_TOO_LONG;
4030 alias CERT_STATUS_IS_EV = cef_cert_status_t.CERT_STATUS_IS_EV;
4031 alias CERT_STATUS_REV_CHECKING_ENABLED = cef_cert_status_t.CERT_STATUS_REV_CHECKING_ENABLED;
4032 alias CERT_STATUS_SHA1_SIGNATURE_PRESENT = cef_cert_status_t.CERT_STATUS_SHA1_SIGNATURE_PRESENT;
4033 alias CERT_STATUS_CT_COMPLIANCE_FAILED = cef_cert_status_t.CERT_STATUS_CT_COMPLIANCE_FAILED;
4034 
4035 enum cef_resultcode_t
4036 {
4037     CEF_RESULT_CODE_NORMAL_EXIT = 0,
4038     CEF_RESULT_CODE_KILLED = 1,
4039     CEF_RESULT_CODE_HUNG = 2,
4040     CEF_RESULT_CODE_KILLED_BAD_MESSAGE = 3,
4041     CEF_RESULT_CODE_GPU_DEAD_ON_ARRIVAL = 4,
4042     CEF_RESULT_CODE_CHROME_FIRST = 5,
4043     CEF_RESULT_CODE_MISSING_DATA = 7,
4044     CEF_RESULT_CODE_UNSUPPORTED_PARAM = 13,
4045     CEF_RESULT_CODE_PROFILE_IN_USE = 21,
4046     CEF_RESULT_CODE_PACK_EXTENSION_ERROR = 22,
4047     CEF_RESULT_CODE_NORMAL_EXIT_PROCESS_NOTIFIED = 24,
4048     CEF_RESULT_CODE_INVALID_SANDBOX_STATE = 31,
4049     CEF_RESULT_CODE_CLOUD_POLICY_ENROLLMENT_FAILED = 32,
4050     CEF_RESULT_CODE_GPU_EXIT_ON_CONTEXT_LOST = 34,
4051     CEF_RESULT_CODE_NORMAL_EXIT_PACK_EXTENSION_SUCCESS = 36,
4052     CEF_RESULT_CODE_SYSTEM_RESOURCE_EXHAUSTED = 37,
4053     CEF_RESULT_CODE_CHROME_LAST = 39,
4054     CEF_RESULT_CODE_SANDBOX_FATAL_FIRST = 7006,
4055     CEF_RESULT_CODE_SANDBOX_FATAL_INTEGRITY = CEF_RESULT_CODE_SANDBOX_FATAL_FIRST,
4056     CEF_RESULT_CODE_SANDBOX_FATAL_DROPTOKEN = 7007,
4057     CEF_RESULT_CODE_SANDBOX_FATAL_FLUSHANDLES = 7008,
4058     CEF_RESULT_CODE_SANDBOX_FATAL_CACHEDISABLE = 7009,
4059     CEF_RESULT_CODE_SANDBOX_FATAL_CLOSEHANDLES = 7010,
4060     CEF_RESULT_CODE_SANDBOX_FATAL_MITIGATION = 7011,
4061     CEF_RESULT_CODE_SANDBOX_FATAL_MEMORY_EXCEEDED = 7012,
4062     CEF_RESULT_CODE_SANDBOX_FATAL_WARMUP = 7013,
4063     CEF_RESULT_CODE_SANDBOX_FATAL_LAST = 7014
4064 }
4065 
4066 alias CEF_RESULT_CODE_NORMAL_EXIT = cef_resultcode_t.CEF_RESULT_CODE_NORMAL_EXIT;
4067 alias CEF_RESULT_CODE_KILLED = cef_resultcode_t.CEF_RESULT_CODE_KILLED;
4068 alias CEF_RESULT_CODE_HUNG = cef_resultcode_t.CEF_RESULT_CODE_HUNG;
4069 alias CEF_RESULT_CODE_KILLED_BAD_MESSAGE = cef_resultcode_t.CEF_RESULT_CODE_KILLED_BAD_MESSAGE;
4070 alias CEF_RESULT_CODE_GPU_DEAD_ON_ARRIVAL = cef_resultcode_t.CEF_RESULT_CODE_GPU_DEAD_ON_ARRIVAL;
4071 alias CEF_RESULT_CODE_CHROME_FIRST = cef_resultcode_t.CEF_RESULT_CODE_CHROME_FIRST;
4072 alias CEF_RESULT_CODE_MISSING_DATA = cef_resultcode_t.CEF_RESULT_CODE_MISSING_DATA;
4073 alias CEF_RESULT_CODE_UNSUPPORTED_PARAM = cef_resultcode_t.CEF_RESULT_CODE_UNSUPPORTED_PARAM;
4074 alias CEF_RESULT_CODE_PROFILE_IN_USE = cef_resultcode_t.CEF_RESULT_CODE_PROFILE_IN_USE;
4075 alias CEF_RESULT_CODE_PACK_EXTENSION_ERROR = cef_resultcode_t.CEF_RESULT_CODE_PACK_EXTENSION_ERROR;
4076 alias CEF_RESULT_CODE_NORMAL_EXIT_PROCESS_NOTIFIED = cef_resultcode_t.CEF_RESULT_CODE_NORMAL_EXIT_PROCESS_NOTIFIED;
4077 alias CEF_RESULT_CODE_INVALID_SANDBOX_STATE = cef_resultcode_t.CEF_RESULT_CODE_INVALID_SANDBOX_STATE;
4078 alias CEF_RESULT_CODE_CLOUD_POLICY_ENROLLMENT_FAILED = cef_resultcode_t.CEF_RESULT_CODE_CLOUD_POLICY_ENROLLMENT_FAILED;
4079 alias CEF_RESULT_CODE_GPU_EXIT_ON_CONTEXT_LOST = cef_resultcode_t.CEF_RESULT_CODE_GPU_EXIT_ON_CONTEXT_LOST;
4080 alias CEF_RESULT_CODE_NORMAL_EXIT_PACK_EXTENSION_SUCCESS = cef_resultcode_t.CEF_RESULT_CODE_NORMAL_EXIT_PACK_EXTENSION_SUCCESS;
4081 alias CEF_RESULT_CODE_SYSTEM_RESOURCE_EXHAUSTED = cef_resultcode_t.CEF_RESULT_CODE_SYSTEM_RESOURCE_EXHAUSTED;
4082 alias CEF_RESULT_CODE_CHROME_LAST = cef_resultcode_t.CEF_RESULT_CODE_CHROME_LAST;
4083 alias CEF_RESULT_CODE_SANDBOX_FATAL_FIRST = cef_resultcode_t.CEF_RESULT_CODE_SANDBOX_FATAL_FIRST;
4084 alias CEF_RESULT_CODE_SANDBOX_FATAL_INTEGRITY = cef_resultcode_t.CEF_RESULT_CODE_SANDBOX_FATAL_INTEGRITY;
4085 alias CEF_RESULT_CODE_SANDBOX_FATAL_DROPTOKEN = cef_resultcode_t.CEF_RESULT_CODE_SANDBOX_FATAL_DROPTOKEN;
4086 alias CEF_RESULT_CODE_SANDBOX_FATAL_FLUSHANDLES = cef_resultcode_t.CEF_RESULT_CODE_SANDBOX_FATAL_FLUSHANDLES;
4087 alias CEF_RESULT_CODE_SANDBOX_FATAL_CACHEDISABLE = cef_resultcode_t.CEF_RESULT_CODE_SANDBOX_FATAL_CACHEDISABLE;
4088 alias CEF_RESULT_CODE_SANDBOX_FATAL_CLOSEHANDLES = cef_resultcode_t.CEF_RESULT_CODE_SANDBOX_FATAL_CLOSEHANDLES;
4089 alias CEF_RESULT_CODE_SANDBOX_FATAL_MITIGATION = cef_resultcode_t.CEF_RESULT_CODE_SANDBOX_FATAL_MITIGATION;
4090 alias CEF_RESULT_CODE_SANDBOX_FATAL_MEMORY_EXCEEDED = cef_resultcode_t.CEF_RESULT_CODE_SANDBOX_FATAL_MEMORY_EXCEEDED;
4091 alias CEF_RESULT_CODE_SANDBOX_FATAL_WARMUP = cef_resultcode_t.CEF_RESULT_CODE_SANDBOX_FATAL_WARMUP;
4092 alias CEF_RESULT_CODE_SANDBOX_FATAL_LAST = cef_resultcode_t.CEF_RESULT_CODE_SANDBOX_FATAL_LAST;
4093 
4094 enum cef_window_open_disposition_t
4095 {
4096     CEF_WOD_UNKNOWN = 0,
4097 
4098     ///
4099     /// Current tab. This is the default in most cases.
4100     ///
4101     CEF_WOD_CURRENT_TAB = 1,
4102 
4103     ///
4104     /// Indicates that only one tab with the url should exist in the same window.
4105     ///
4106     CEF_WOD_SINGLETON_TAB = 2,
4107 
4108     ///
4109     /// Shift key + Middle mouse button or meta/ctrl key while clicking.
4110     ///
4111     CEF_WOD_NEW_FOREGROUND_TAB = 3,
4112 
4113     ///
4114     /// Middle mouse button or meta/ctrl key while clicking.
4115     ///
4116     CEF_WOD_NEW_BACKGROUND_TAB = 4,
4117 
4118     ///
4119     /// New popup window.
4120     ///
4121     CEF_WOD_NEW_POPUP = 5,
4122 
4123     ///
4124     /// Shift key while clicking.
4125     ///
4126     CEF_WOD_NEW_WINDOW = 6,
4127 
4128     ///
4129     /// Alt key while clicking.
4130     ///
4131     CEF_WOD_SAVE_TO_DISK = 7,
4132 
4133     ///
4134     /// New off-the-record (incognito) window.
4135     ///
4136     CEF_WOD_OFF_THE_RECORD = 8,
4137 
4138     ///
4139     /// Special case error condition from the renderer.
4140     ///
4141     CEF_WOD_IGNORE_ACTION = 9,
4142 
4143     ///
4144     /// Activates an existing tab containing the url, rather than navigating.
4145     /// This is similar to SINGLETON_TAB, but searches across all windows from
4146     /// the current profile and anonymity (instead of just the current one);
4147     /// closes the current tab on switching if the current tab was the NTP with
4148     /// no session history; and behaves like CURRENT_TAB instead of
4149     /// NEW_FOREGROUND_TAB when no existing tab is found.
4150     ///
4151     CEF_WOD_SWITCH_TO_TAB = 10,
4152 
4153     ///
4154     /// Creates a new document picture-in-picture window showing a child WebView.
4155     ///
4156     CEF_WOD_NEW_PICTURE_IN_PICTURE = 11,
4157 
4158     CEF_WOD_MAX_VALUE = CEF_WOD_NEW_PICTURE_IN_PICTURE
4159 }
4160 
4161 alias CEF_WOD_UNKNOWN = cef_window_open_disposition_t.CEF_WOD_UNKNOWN;
4162 alias CEF_WOD_CURRENT_TAB = cef_window_open_disposition_t.CEF_WOD_CURRENT_TAB;
4163 alias CEF_WOD_SINGLETON_TAB = cef_window_open_disposition_t.CEF_WOD_SINGLETON_TAB;
4164 alias CEF_WOD_NEW_FOREGROUND_TAB = cef_window_open_disposition_t.CEF_WOD_NEW_FOREGROUND_TAB;
4165 alias CEF_WOD_NEW_BACKGROUND_TAB = cef_window_open_disposition_t.CEF_WOD_NEW_BACKGROUND_TAB;
4166 alias CEF_WOD_NEW_POPUP = cef_window_open_disposition_t.CEF_WOD_NEW_POPUP;
4167 alias CEF_WOD_NEW_WINDOW = cef_window_open_disposition_t.CEF_WOD_NEW_WINDOW;
4168 alias CEF_WOD_SAVE_TO_DISK = cef_window_open_disposition_t.CEF_WOD_SAVE_TO_DISK;
4169 alias CEF_WOD_OFF_THE_RECORD = cef_window_open_disposition_t.CEF_WOD_OFF_THE_RECORD;
4170 alias CEF_WOD_IGNORE_ACTION = cef_window_open_disposition_t.CEF_WOD_IGNORE_ACTION;
4171 alias CEF_WOD_SWITCH_TO_TAB = cef_window_open_disposition_t.CEF_WOD_SWITCH_TO_TAB;
4172 alias CEF_WOD_NEW_PICTURE_IN_PICTURE = cef_window_open_disposition_t.CEF_WOD_NEW_PICTURE_IN_PICTURE;
4173 alias CEF_WOD_MAX_VALUE = cef_window_open_disposition_t.CEF_WOD_MAX_VALUE;
4174 
4175 ///
4176 /// "Verb" of a drag-and-drop operation as negotiated between the source and
4177 /// destination. These constants match their equivalents in WebCore's
4178 /// DragActions.h and should not be renumbered.
4179 ///
4180 enum cef_drag_operations_mask_t
4181 {
4182     DRAG_OPERATION_NONE = 0,
4183     DRAG_OPERATION_COPY = 1,
4184     DRAG_OPERATION_LINK = 2,
4185     DRAG_OPERATION_GENERIC = 4,
4186     DRAG_OPERATION_PRIVATE = 8,
4187     DRAG_OPERATION_MOVE = 16,
4188     DRAG_OPERATION_DELETE = 32,
4189     DRAG_OPERATION_EVERY = UINT_MAX
4190 }
4191 
4192 alias DRAG_OPERATION_NONE = cef_drag_operations_mask_t.DRAG_OPERATION_NONE;
4193 alias DRAG_OPERATION_COPY = cef_drag_operations_mask_t.DRAG_OPERATION_COPY;
4194 alias DRAG_OPERATION_LINK = cef_drag_operations_mask_t.DRAG_OPERATION_LINK;
4195 alias DRAG_OPERATION_GENERIC = cef_drag_operations_mask_t.DRAG_OPERATION_GENERIC;
4196 alias DRAG_OPERATION_PRIVATE = cef_drag_operations_mask_t.DRAG_OPERATION_PRIVATE;
4197 alias DRAG_OPERATION_MOVE = cef_drag_operations_mask_t.DRAG_OPERATION_MOVE;
4198 alias DRAG_OPERATION_DELETE = cef_drag_operations_mask_t.DRAG_OPERATION_DELETE;
4199 alias DRAG_OPERATION_EVERY = cef_drag_operations_mask_t.DRAG_OPERATION_EVERY;
4200 
4201 ///
4202 /// Input mode of a virtual keyboard. These constants match their equivalents
4203 /// in Chromium's text_input_mode.h and should not be renumbered.
4204 /// See https://html.spec.whatwg.org/#input-modalities:-the-inputmode-attribute
4205 ///
4206 enum cef_text_input_mode_t
4207 {
4208     CEF_TEXT_INPUT_MODE_DEFAULT = 0,
4209     CEF_TEXT_INPUT_MODE_NONE = 1,
4210     CEF_TEXT_INPUT_MODE_TEXT = 2,
4211     CEF_TEXT_INPUT_MODE_TEL = 3,
4212     CEF_TEXT_INPUT_MODE_URL = 4,
4213     CEF_TEXT_INPUT_MODE_EMAIL = 5,
4214     CEF_TEXT_INPUT_MODE_NUMERIC = 6,
4215     CEF_TEXT_INPUT_MODE_DECIMAL = 7,
4216     CEF_TEXT_INPUT_MODE_SEARCH = 8,
4217 
4218     CEF_TEXT_INPUT_MODE_MAX = CEF_TEXT_INPUT_MODE_SEARCH
4219 }
4220 
4221 alias CEF_TEXT_INPUT_MODE_DEFAULT = cef_text_input_mode_t.CEF_TEXT_INPUT_MODE_DEFAULT;
4222 alias CEF_TEXT_INPUT_MODE_NONE = cef_text_input_mode_t.CEF_TEXT_INPUT_MODE_NONE;
4223 alias CEF_TEXT_INPUT_MODE_TEXT = cef_text_input_mode_t.CEF_TEXT_INPUT_MODE_TEXT;
4224 alias CEF_TEXT_INPUT_MODE_TEL = cef_text_input_mode_t.CEF_TEXT_INPUT_MODE_TEL;
4225 alias CEF_TEXT_INPUT_MODE_URL = cef_text_input_mode_t.CEF_TEXT_INPUT_MODE_URL;
4226 alias CEF_TEXT_INPUT_MODE_EMAIL = cef_text_input_mode_t.CEF_TEXT_INPUT_MODE_EMAIL;
4227 alias CEF_TEXT_INPUT_MODE_NUMERIC = cef_text_input_mode_t.CEF_TEXT_INPUT_MODE_NUMERIC;
4228 alias CEF_TEXT_INPUT_MODE_DECIMAL = cef_text_input_mode_t.CEF_TEXT_INPUT_MODE_DECIMAL;
4229 alias CEF_TEXT_INPUT_MODE_SEARCH = cef_text_input_mode_t.CEF_TEXT_INPUT_MODE_SEARCH;
4230 alias CEF_TEXT_INPUT_MODE_MAX = cef_text_input_mode_t.CEF_TEXT_INPUT_MODE_MAX;
4231 
4232 ///
4233 /// V8 property attribute values.
4234 ///
4235 enum cef_v8_propertyattribute_t
4236 {
4237     ///
4238     /// Writeable, Enumerable, Configurable
4239     ///
4240     V8_PROPERTY_ATTRIBUTE_NONE = 0,
4241 
4242     ///
4243     /// Not writeable
4244     ///
4245     V8_PROPERTY_ATTRIBUTE_READONLY = 1 << 0,
4246 
4247     ///
4248     /// Not enumerable
4249     ///
4250     V8_PROPERTY_ATTRIBUTE_DONTENUM = 1 << 1,
4251 
4252     ///
4253     /// Not configurable
4254     ///
4255     V8_PROPERTY_ATTRIBUTE_DONTDELETE = 1 << 2
4256 }
4257 
4258 alias V8_PROPERTY_ATTRIBUTE_NONE = cef_v8_propertyattribute_t.V8_PROPERTY_ATTRIBUTE_NONE;
4259 alias V8_PROPERTY_ATTRIBUTE_READONLY = cef_v8_propertyattribute_t.V8_PROPERTY_ATTRIBUTE_READONLY;
4260 alias V8_PROPERTY_ATTRIBUTE_DONTENUM = cef_v8_propertyattribute_t.V8_PROPERTY_ATTRIBUTE_DONTENUM;
4261 alias V8_PROPERTY_ATTRIBUTE_DONTDELETE = cef_v8_propertyattribute_t.V8_PROPERTY_ATTRIBUTE_DONTDELETE;
4262 
4263 ///
4264 /// Post data elements may represent either bytes or files.
4265 ///
4266 enum cef_postdataelement_type_t
4267 {
4268     PDE_TYPE_EMPTY = 0,
4269     PDE_TYPE_BYTES = 1,
4270     PDE_TYPE_FILE = 2
4271 }
4272 
4273 alias PDE_TYPE_EMPTY = cef_postdataelement_type_t.PDE_TYPE_EMPTY;
4274 alias PDE_TYPE_BYTES = cef_postdataelement_type_t.PDE_TYPE_BYTES;
4275 alias PDE_TYPE_FILE = cef_postdataelement_type_t.PDE_TYPE_FILE;
4276 
4277 ///
4278 /// Resource type for a request. These constants match their equivalents in
4279 /// Chromium's ResourceType and should not be renumbered.
4280 ///
4281 enum cef_resource_type_t
4282 {
4283     ///
4284     /// Top level page.
4285     ///
4286     RT_MAIN_FRAME = 0,
4287 
4288     ///
4289     /// Frame or iframe.
4290     ///
4291     RT_SUB_FRAME = 1,
4292 
4293     ///
4294     /// CSS stylesheet.
4295     ///
4296     RT_STYLESHEET = 2,
4297 
4298     ///
4299     /// External script.
4300     ///
4301     RT_SCRIPT = 3,
4302 
4303     ///
4304     /// Image (jpg/gif/png/etc).
4305     ///
4306     RT_IMAGE = 4,
4307 
4308     ///
4309     /// Font.
4310     ///
4311     RT_FONT_RESOURCE = 5,
4312 
4313     ///
4314     /// Some other subresource. This is the default type if the actual type is
4315     /// unknown.
4316     ///
4317     RT_SUB_RESOURCE = 6,
4318 
4319     ///
4320     /// Object (or embed) tag for a plugin, or a resource that a plugin requested.
4321     ///
4322     RT_OBJECT = 7,
4323 
4324     ///
4325     /// Media resource.
4326     ///
4327     RT_MEDIA = 8,
4328 
4329     ///
4330     /// Main resource of a dedicated worker.
4331     ///
4332     RT_WORKER = 9,
4333 
4334     ///
4335     /// Main resource of a shared worker.
4336     ///
4337     RT_SHARED_WORKER = 10,
4338 
4339     ///
4340     /// Explicitly requested prefetch.
4341     ///
4342     RT_PREFETCH = 11,
4343 
4344     ///
4345     /// Favicon.
4346     ///
4347     RT_FAVICON = 12,
4348 
4349     ///
4350     /// XMLHttpRequest.
4351     ///
4352     RT_XHR = 13,
4353 
4354     ///
4355     /// A request for a "<ping>".
4356     ///
4357     RT_PING = 14,
4358 
4359     ///
4360     /// Main resource of a service worker.
4361     ///
4362     RT_SERVICE_WORKER = 15,
4363 
4364     ///
4365     /// A report of Content Security Policy violations.
4366     ///
4367     RT_CSP_REPORT = 16,
4368 
4369     ///
4370     /// A resource that a plugin requested.
4371     ///
4372     RT_PLUGIN_RESOURCE = 17,
4373 
4374     ///
4375     /// A main-frame service worker navigation preload request.
4376     ///
4377     RT_NAVIGATION_PRELOAD_MAIN_FRAME = 19,
4378 
4379     ///
4380     /// A sub-frame service worker navigation preload request.
4381     ///
4382     RT_NAVIGATION_PRELOAD_SUB_FRAME = 20
4383 }
4384 
4385 alias RT_MAIN_FRAME = cef_resource_type_t.RT_MAIN_FRAME;
4386 alias RT_SUB_FRAME = cef_resource_type_t.RT_SUB_FRAME;
4387 alias RT_STYLESHEET = cef_resource_type_t.RT_STYLESHEET;
4388 alias RT_SCRIPT = cef_resource_type_t.RT_SCRIPT;
4389 alias RT_IMAGE = cef_resource_type_t.RT_IMAGE;
4390 alias RT_FONT_RESOURCE = cef_resource_type_t.RT_FONT_RESOURCE;
4391 alias RT_SUB_RESOURCE = cef_resource_type_t.RT_SUB_RESOURCE;
4392 alias RT_OBJECT = cef_resource_type_t.RT_OBJECT;
4393 alias RT_MEDIA = cef_resource_type_t.RT_MEDIA;
4394 alias RT_WORKER = cef_resource_type_t.RT_WORKER;
4395 alias RT_SHARED_WORKER = cef_resource_type_t.RT_SHARED_WORKER;
4396 alias RT_PREFETCH = cef_resource_type_t.RT_PREFETCH;
4397 alias RT_FAVICON = cef_resource_type_t.RT_FAVICON;
4398 alias RT_XHR = cef_resource_type_t.RT_XHR;
4399 alias RT_PING = cef_resource_type_t.RT_PING;
4400 alias RT_SERVICE_WORKER = cef_resource_type_t.RT_SERVICE_WORKER;
4401 alias RT_CSP_REPORT = cef_resource_type_t.RT_CSP_REPORT;
4402 alias RT_PLUGIN_RESOURCE = cef_resource_type_t.RT_PLUGIN_RESOURCE;
4403 alias RT_NAVIGATION_PRELOAD_MAIN_FRAME = cef_resource_type_t.RT_NAVIGATION_PRELOAD_MAIN_FRAME;
4404 alias RT_NAVIGATION_PRELOAD_SUB_FRAME = cef_resource_type_t.RT_NAVIGATION_PRELOAD_SUB_FRAME;
4405 
4406 ///
4407 /// Transition type for a request. Made up of one source value and 0 or more
4408 /// qualifiers.
4409 ///
4410 enum cef_transition_type_t
4411 {
4412     ///
4413     /// Source is a link click or the JavaScript window.open function. This is
4414     /// also the default value for requests like sub-resource loads that are not
4415     /// navigations.
4416     ///
4417     TT_LINK = 0,
4418 
4419     ///
4420     /// Source is some other "explicit" navigation. This is the default value for
4421     /// navigations where the actual type is unknown. See also
4422     /// TT_DIRECT_LOAD_FLAG.
4423     ///
4424     TT_EXPLICIT = 1,
4425 
4426     ///
4427     /// User got to this page through a suggestion in the UI (for example, via the
4428     /// destinations page). Chrome runtime only.
4429     ///
4430     TT_AUTO_BOOKMARK = 2,
4431 
4432     ///
4433     /// Source is a subframe navigation. This is any content that is automatically
4434     /// loaded in a non-toplevel frame. For example, if a page consists of several
4435     /// frames containing ads, those ad URLs will have this transition type.
4436     /// The user may not even realize the content in these pages is a separate
4437     /// frame, so may not care about the URL.
4438     ///
4439     TT_AUTO_SUBFRAME = 3,
4440 
4441     ///
4442     /// Source is a subframe navigation explicitly requested by the user that will
4443     /// generate new navigation entries in the back/forward list. These are
4444     /// probably more important than frames that were automatically loaded in
4445     /// the background because the user probably cares about the fact that this
4446     /// link was loaded.
4447     ///
4448     TT_MANUAL_SUBFRAME = 4,
4449 
4450     ///
4451     /// User got to this page by typing in the URL bar and selecting an entry
4452     /// that did not look like a URL.  For example, a match might have the URL
4453     /// of a Google search result page, but appear like "Search Google for ...".
4454     /// These are not quite the same as EXPLICIT navigations because the user
4455     /// didn't type or see the destination URL. Chrome runtime only.
4456     /// See also TT_KEYWORD.
4457     ///
4458     TT_GENERATED = 5,
4459 
4460     ///
4461     /// This is a toplevel navigation. This is any content that is automatically
4462     /// loaded in a toplevel frame.  For example, opening a tab to show the ASH
4463     /// screen saver, opening the devtools window, opening the NTP after the safe
4464     /// browsing warning, opening web-based dialog boxes are examples of
4465     /// AUTO_TOPLEVEL navigations. Chrome runtime only.
4466     ///
4467     TT_AUTO_TOPLEVEL = 6,
4468 
4469     ///
4470     /// Source is a form submission by the user. NOTE: In some situations
4471     /// submitting a form does not result in this transition type. This can happen
4472     /// if the form uses a script to submit the contents.
4473     ///
4474     TT_FORM_SUBMIT = 7,
4475 
4476     ///
4477     /// Source is a "reload" of the page via the Reload function or by re-visiting
4478     /// the same URL. NOTE: This is distinct from the concept of whether a
4479     /// particular load uses "reload semantics" (i.e. bypasses cached data).
4480     ///
4481     TT_RELOAD = 8,
4482 
4483     ///
4484     /// The url was generated from a replaceable keyword other than the default
4485     /// search provider. If the user types a keyword (which also applies to
4486     /// tab-to-search) in the omnibox this qualifier is applied to the transition
4487     /// type of the generated url. TemplateURLModel then may generate an
4488     /// additional visit with a transition type of TT_KEYWORD_GENERATED against
4489     /// the url 'http://' + keyword. For example, if you do a tab-to-search
4490     /// against wikipedia the generated url has a transition qualifer of
4491     /// TT_KEYWORD, and TemplateURLModel generates a visit for 'wikipedia.org'
4492     /// with a transition type of TT_KEYWORD_GENERATED. Chrome runtime only.
4493     ///
4494     TT_KEYWORD = 9,
4495 
4496     ///
4497     /// Corresponds to a visit generated for a keyword. See description of
4498     /// TT_KEYWORD for more details. Chrome runtime only.
4499     ///
4500     TT_KEYWORD_GENERATED = 10,
4501 
4502     ///
4503     /// General mask defining the bits used for the source values.
4504     ///
4505     TT_SOURCE_MASK = 0xFF,
4506 
4507     /// Qualifiers.
4508     /// Any of the core values above can be augmented by one or more qualifiers.
4509     /// These qualifiers further define the transition.
4510 
4511     ///
4512     /// Attempted to visit a URL but was blocked.
4513     ///
4514     TT_BLOCKED_FLAG = 0x00800000,
4515 
4516     ///
4517     /// Used the Forward or Back function to navigate among browsing history.
4518     /// Will be ORed to the transition type for the original load.
4519     ///
4520     TT_FORWARD_BACK_FLAG = 0x01000000,
4521 
4522     ///
4523     /// Loaded a URL directly via CreateBrowser, LoadURL or LoadRequest.
4524     ///
4525     TT_DIRECT_LOAD_FLAG = 0x02000000,
4526 
4527     ///
4528     /// User is navigating to the home page. Chrome runtime only.
4529     ///
4530     TT_HOME_PAGE_FLAG = 0x04000000,
4531 
4532     ///
4533     /// The transition originated from an external application; the exact
4534     /// definition of this is embedder dependent. Chrome runtime and
4535     /// extension system only.
4536     ///
4537     TT_FROM_API_FLAG = 0x08000000,
4538 
4539     ///
4540     /// The beginning of a navigation chain.
4541     ///
4542     TT_CHAIN_START_FLAG = 0x10000000,
4543 
4544     ///
4545     /// The last transition in a redirect chain.
4546     ///
4547     TT_CHAIN_END_FLAG = 0x20000000,
4548 
4549     ///
4550     /// Redirects caused by JavaScript or a meta refresh tag on the page.
4551     ///
4552     TT_CLIENT_REDIRECT_FLAG = 0x40000000,
4553 
4554     ///
4555     /// Redirects sent from the server by HTTP headers.
4556     ///
4557     TT_SERVER_REDIRECT_FLAG = 0x80000000,
4558 
4559     ///
4560     /// Used to test whether a transition involves a redirect.
4561     ///
4562     TT_IS_REDIRECT_MASK = 0xC0000000,
4563 
4564     ///
4565     /// General mask defining the bits used for the qualifiers.
4566     ///
4567     TT_QUALIFIER_MASK = 0xFFFFFF00
4568 }
4569 
4570 alias TT_LINK = cef_transition_type_t.TT_LINK;
4571 alias TT_EXPLICIT = cef_transition_type_t.TT_EXPLICIT;
4572 alias TT_AUTO_BOOKMARK = cef_transition_type_t.TT_AUTO_BOOKMARK;
4573 alias TT_AUTO_SUBFRAME = cef_transition_type_t.TT_AUTO_SUBFRAME;
4574 alias TT_MANUAL_SUBFRAME = cef_transition_type_t.TT_MANUAL_SUBFRAME;
4575 alias TT_GENERATED = cef_transition_type_t.TT_GENERATED;
4576 alias TT_AUTO_TOPLEVEL = cef_transition_type_t.TT_AUTO_TOPLEVEL;
4577 alias TT_FORM_SUBMIT = cef_transition_type_t.TT_FORM_SUBMIT;
4578 alias TT_RELOAD = cef_transition_type_t.TT_RELOAD;
4579 alias TT_KEYWORD = cef_transition_type_t.TT_KEYWORD;
4580 alias TT_KEYWORD_GENERATED = cef_transition_type_t.TT_KEYWORD_GENERATED;
4581 alias TT_SOURCE_MASK = cef_transition_type_t.TT_SOURCE_MASK;
4582 alias TT_BLOCKED_FLAG = cef_transition_type_t.TT_BLOCKED_FLAG;
4583 alias TT_FORWARD_BACK_FLAG = cef_transition_type_t.TT_FORWARD_BACK_FLAG;
4584 alias TT_DIRECT_LOAD_FLAG = cef_transition_type_t.TT_DIRECT_LOAD_FLAG;
4585 alias TT_HOME_PAGE_FLAG = cef_transition_type_t.TT_HOME_PAGE_FLAG;
4586 alias TT_FROM_API_FLAG = cef_transition_type_t.TT_FROM_API_FLAG;
4587 alias TT_CHAIN_START_FLAG = cef_transition_type_t.TT_CHAIN_START_FLAG;
4588 alias TT_CHAIN_END_FLAG = cef_transition_type_t.TT_CHAIN_END_FLAG;
4589 alias TT_CLIENT_REDIRECT_FLAG = cef_transition_type_t.TT_CLIENT_REDIRECT_FLAG;
4590 alias TT_SERVER_REDIRECT_FLAG = cef_transition_type_t.TT_SERVER_REDIRECT_FLAG;
4591 alias TT_IS_REDIRECT_MASK = cef_transition_type_t.TT_IS_REDIRECT_MASK;
4592 alias TT_QUALIFIER_MASK = cef_transition_type_t.TT_QUALIFIER_MASK;
4593 
4594 ///
4595 /// Flags used to customize the behavior of CefURLRequest.
4596 ///
4597 enum cef_urlrequest_flags_t
4598 {
4599     ///
4600     /// Default behavior.
4601     ///
4602     UR_FLAG_NONE = 0,
4603 
4604     ///
4605     /// If set the cache will be skipped when handling the request. Setting this
4606     /// value is equivalent to specifying the "Cache-Control: no-cache" request
4607     /// header. Setting this value in combination with UR_FLAG_ONLY_FROM_CACHE
4608     /// will cause the request to fail.
4609     ///
4610     UR_FLAG_SKIP_CACHE = 1 << 0,
4611 
4612     ///
4613     /// If set the request will fail if it cannot be served from the cache (or
4614     /// some equivalent local store). Setting this value is equivalent to
4615     /// specifying the "Cache-Control: only-if-cached" request header. Setting
4616     /// this value in combination with UR_FLAG_SKIP_CACHE or UR_FLAG_DISABLE_CACHE
4617     /// will cause the request to fail.
4618     ///
4619     UR_FLAG_ONLY_FROM_CACHE = 1 << 1,
4620 
4621     ///
4622     /// If set the cache will not be used at all. Setting this value is equivalent
4623     /// to specifying the "Cache-Control: no-store" request header. Setting this
4624     /// value in combination with UR_FLAG_ONLY_FROM_CACHE will cause the request
4625     /// to fail.
4626     ///
4627     UR_FLAG_DISABLE_CACHE = 1 << 2,
4628 
4629     ///
4630     /// If set user name, password, and cookies may be sent with the request, and
4631     /// cookies may be saved from the response.
4632     ///
4633     UR_FLAG_ALLOW_STORED_CREDENTIALS = 1 << 3,
4634 
4635     ///
4636     /// If set upload progress events will be generated when a request has a body.
4637     ///
4638     UR_FLAG_REPORT_UPLOAD_PROGRESS = 1 << 4,
4639 
4640     ///
4641     /// If set the CefURLRequestClient::OnDownloadData method will not be called.
4642     ///
4643     UR_FLAG_NO_DOWNLOAD_DATA = 1 << 5,
4644 
4645     ///
4646     /// If set 5XX redirect errors will be propagated to the observer instead of
4647     /// automatically re-tried. This currently only applies for requests
4648     /// originated in the browser process.
4649     ///
4650     UR_FLAG_NO_RETRY_ON_5XX = 1 << 6,
4651 
4652     ///
4653     /// If set 3XX responses will cause the fetch to halt immediately rather than
4654     /// continue through the redirect.
4655     ///
4656     UR_FLAG_STOP_ON_REDIRECT = 1 << 7
4657 }
4658 
4659 alias UR_FLAG_NONE = cef_urlrequest_flags_t.UR_FLAG_NONE;
4660 alias UR_FLAG_SKIP_CACHE = cef_urlrequest_flags_t.UR_FLAG_SKIP_CACHE;
4661 alias UR_FLAG_ONLY_FROM_CACHE = cef_urlrequest_flags_t.UR_FLAG_ONLY_FROM_CACHE;
4662 alias UR_FLAG_DISABLE_CACHE = cef_urlrequest_flags_t.UR_FLAG_DISABLE_CACHE;
4663 alias UR_FLAG_ALLOW_STORED_CREDENTIALS = cef_urlrequest_flags_t.UR_FLAG_ALLOW_STORED_CREDENTIALS;
4664 alias UR_FLAG_REPORT_UPLOAD_PROGRESS = cef_urlrequest_flags_t.UR_FLAG_REPORT_UPLOAD_PROGRESS;
4665 alias UR_FLAG_NO_DOWNLOAD_DATA = cef_urlrequest_flags_t.UR_FLAG_NO_DOWNLOAD_DATA;
4666 alias UR_FLAG_NO_RETRY_ON_5XX = cef_urlrequest_flags_t.UR_FLAG_NO_RETRY_ON_5XX;
4667 alias UR_FLAG_STOP_ON_REDIRECT = cef_urlrequest_flags_t.UR_FLAG_STOP_ON_REDIRECT;
4668 
4669 ///
4670 /// Flags that represent CefURLRequest status.
4671 ///
4672 enum cef_urlrequest_status_t
4673 {
4674     ///
4675     /// Unknown status.
4676     ///
4677     UR_UNKNOWN = 0,
4678 
4679     ///
4680     /// Request succeeded.
4681     ///
4682     UR_SUCCESS = 1,
4683 
4684     ///
4685     /// An IO request is pending, and the caller will be informed when it is
4686     /// completed.
4687     ///
4688     UR_IO_PENDING = 2,
4689 
4690     ///
4691     /// Request was canceled programatically.
4692     ///
4693     UR_CANCELED = 3,
4694 
4695     ///
4696     /// Request failed for some reason.
4697     ///
4698     UR_FAILED = 4
4699 }
4700 
4701 alias UR_UNKNOWN = cef_urlrequest_status_t.UR_UNKNOWN;
4702 alias UR_SUCCESS = cef_urlrequest_status_t.UR_SUCCESS;
4703 alias UR_IO_PENDING = cef_urlrequest_status_t.UR_IO_PENDING;
4704 alias UR_CANCELED = cef_urlrequest_status_t.UR_CANCELED;
4705 alias UR_FAILED = cef_urlrequest_status_t.UR_FAILED;
4706 
4707 /// Structure representing a draggable region.
4708 ///
4709 struct cef_draggable_region_t
4710 {
4711     ///
4712     /// Bounds of the region.
4713     ///
4714 
4715     cef_rect_t bounds;
4716 
4717     ///
4718     /// True (1) this this region is draggable and false (0) otherwise.
4719     ///
4720     int draggable;
4721 }
4722 
4723 
4724 
4725 ///
4726 /// Existing process IDs.
4727 ///
4728 enum cef_process_id_t
4729 {
4730     ///
4731     /// Browser process.
4732     ///
4733     PID_BROWSER = 0,
4734     ///
4735     /// Renderer process.
4736     ///
4737     PID_RENDERER = 1
4738 }
4739 
4740 alias PID_BROWSER = cef_process_id_t.PID_BROWSER;
4741 alias PID_RENDERER = cef_process_id_t.PID_RENDERER;
4742 
4743 ///
4744 /// Existing thread IDs.
4745 ///
4746 enum cef_thread_id_t
4747 {
4748     // BROWSER PROCESS THREADS -- Only available in the browser process.
4749 
4750     ///
4751     /// The main thread in the browser. This will be the same as the main
4752     /// application thread if CefInitialize() is called with a
4753     /// CefSettings.multi_threaded_message_loop value of false. Do not perform
4754     /// blocking tasks on this thread. All tasks posted after
4755     /// CefBrowserProcessHandler::OnContextInitialized() and before CefShutdown()
4756     /// are guaranteed to run. This thread will outlive all other CEF threads.
4757     ///
4758     TID_UI = 0,
4759 
4760     ///
4761     /// Used for blocking tasks like file system access where the user won't
4762     /// notice if the task takes an arbitrarily long time to complete. All tasks
4763     /// posted after CefBrowserProcessHandler::OnContextInitialized() and before
4764     /// CefShutdown() are guaranteed to run.
4765     ///
4766     TID_FILE_BACKGROUND = 1,
4767 
4768     ///
4769     /// Used for blocking tasks like file system access that affect UI or
4770     /// responsiveness of future user interactions. Do not use if an immediate
4771     /// response to a user interaction is expected. All tasks posted after
4772     /// CefBrowserProcessHandler::OnContextInitialized() and before CefShutdown()
4773     /// are guaranteed to run.
4774     /// Examples:
4775     /// - Updating the UI to reflect progress on a long task.
4776     /// - Loading data that might be shown in the UI after a future user
4777     ///   interaction.
4778     ///
4779     TID_FILE_USER_VISIBLE = 2,
4780 
4781     ///
4782     /// Used for blocking tasks like file system access that affect UI
4783     /// immediately after a user interaction. All tasks posted after
4784     /// CefBrowserProcessHandler::OnContextInitialized() and before CefShutdown()
4785     /// are guaranteed to run.
4786     /// Example: Generating data shown in the UI immediately after a click.
4787     ///
4788     TID_FILE_USER_BLOCKING = 3,
4789 
4790     ///
4791     /// Used to launch and terminate browser processes.
4792     ///
4793     TID_PROCESS_LAUNCHER = 4,
4794 
4795     ///
4796     /// Used to process IPC and network messages. Do not perform blocking tasks on
4797     /// this thread. All tasks posted after
4798     /// CefBrowserProcessHandler::OnContextInitialized() and before CefShutdown()
4799     /// are guaranteed to run.
4800     ///
4801     TID_IO = 5,
4802 
4803     // RENDER PROCESS THREADS -- Only available in the render process.
4804 
4805     ///
4806     /// The main thread in the renderer. Used for all WebKit and V8 interaction.
4807     /// Tasks may be posted to this thread after
4808     /// CefRenderProcessHandler::OnWebKitInitialized but are not guaranteed to
4809     /// run before sub-process termination (sub-processes may be killed at any
4810     /// time without warning).
4811     ///
4812     TID_RENDERER = 6
4813 }
4814 
4815 alias TID_UI = cef_thread_id_t.TID_UI;
4816 alias TID_FILE_BACKGROUND = cef_thread_id_t.TID_FILE_BACKGROUND;
4817 alias TID_FILE_USER_VISIBLE = cef_thread_id_t.TID_FILE_USER_VISIBLE;
4818 alias TID_FILE_USER_BLOCKING = cef_thread_id_t.TID_FILE_USER_BLOCKING;
4819 alias TID_PROCESS_LAUNCHER = cef_thread_id_t.TID_PROCESS_LAUNCHER;
4820 alias TID_IO = cef_thread_id_t.TID_IO;
4821 alias TID_RENDERER = cef_thread_id_t.TID_RENDERER;
4822 
4823 ///
4824 /// Thread priority values listed in increasing order of importance.
4825 ///
4826 enum cef_thread_priority_t
4827 {
4828     ///
4829     /// Suitable for threads that shouldn't disrupt high priority work.
4830     ///
4831     TP_BACKGROUND = 0,
4832 
4833     ///
4834     /// Default priority level.
4835     ///
4836     TP_NORMAL = 1,
4837 
4838     ///
4839     /// Suitable for threads which generate data for the display (at ~60Hz).
4840     ///
4841     TP_DISPLAY = 2,
4842 
4843     ///
4844     /// Suitable for low-latency, glitch-resistant audio.
4845     ///
4846     TP_REALTIME_AUDIO = 3
4847 }
4848 
4849 alias TP_BACKGROUND = cef_thread_priority_t.TP_BACKGROUND;
4850 alias TP_NORMAL = cef_thread_priority_t.TP_NORMAL;
4851 alias TP_DISPLAY = cef_thread_priority_t.TP_DISPLAY;
4852 alias TP_REALTIME_AUDIO = cef_thread_priority_t.TP_REALTIME_AUDIO;
4853 
4854 ///
4855 /// Message loop types. Indicates the set of asynchronous events that a message
4856 /// loop can process.
4857 ///
4858 enum cef_message_loop_type_t
4859 {
4860     ///
4861     /// Supports tasks and timers.
4862     ///
4863     ML_TYPE_DEFAULT = 0,
4864 
4865     ///
4866     /// Supports tasks, timers and native UI events (e.g. Windows messages).
4867     ///
4868     ML_TYPE_UI = 1,
4869 
4870     ///
4871     /// Supports tasks, timers and asynchronous IO events.
4872     ///
4873     ML_TYPE_IO = 2
4874 }
4875 
4876 alias ML_TYPE_DEFAULT = cef_message_loop_type_t.ML_TYPE_DEFAULT;
4877 alias ML_TYPE_UI = cef_message_loop_type_t.ML_TYPE_UI;
4878 alias ML_TYPE_IO = cef_message_loop_type_t.ML_TYPE_IO;
4879 
4880 ///
4881 /// Windows COM initialization mode. Specifies how COM will be initialized for a
4882 /// new thread.
4883 ///
4884 enum cef_com_init_mode_t
4885 {
4886     ///
4887     /// No COM initialization.
4888     ///
4889     COM_INIT_MODE_NONE = 0,
4890 
4891     ///
4892     /// Initialize COM using single-threaded apartments.
4893     ///
4894     COM_INIT_MODE_STA = 1,
4895 
4896     ///
4897     /// Initialize COM using multi-threaded apartments.
4898     ///
4899     COM_INIT_MODE_MTA = 2
4900 }
4901 
4902 alias COM_INIT_MODE_NONE = cef_com_init_mode_t.COM_INIT_MODE_NONE;
4903 alias COM_INIT_MODE_STA = cef_com_init_mode_t.COM_INIT_MODE_STA;
4904 alias COM_INIT_MODE_MTA = cef_com_init_mode_t.COM_INIT_MODE_MTA;
4905 
4906 ///
4907 /// Supported value types.
4908 ///
4909 enum cef_value_type_t
4910 {
4911     VTYPE_INVALID = 0,
4912     VTYPE_NULL = 1,
4913     VTYPE_BOOL = 2,
4914     VTYPE_INT = 3,
4915     VTYPE_DOUBLE = 4,
4916     VTYPE_STRING = 5,
4917     VTYPE_BINARY = 6,
4918     VTYPE_DICTIONARY = 7,
4919     VTYPE_LIST = 8
4920 }
4921 
4922 alias VTYPE_INVALID = cef_value_type_t.VTYPE_INVALID;
4923 alias VTYPE_NULL = cef_value_type_t.VTYPE_NULL;
4924 alias VTYPE_BOOL = cef_value_type_t.VTYPE_BOOL;
4925 alias VTYPE_INT = cef_value_type_t.VTYPE_INT;
4926 alias VTYPE_DOUBLE = cef_value_type_t.VTYPE_DOUBLE;
4927 alias VTYPE_STRING = cef_value_type_t.VTYPE_STRING;
4928 alias VTYPE_BINARY = cef_value_type_t.VTYPE_BINARY;
4929 alias VTYPE_DICTIONARY = cef_value_type_t.VTYPE_DICTIONARY;
4930 alias VTYPE_LIST = cef_value_type_t.VTYPE_LIST;
4931 
4932 ///
4933 /// Supported JavaScript dialog types.
4934 ///
4935 enum cef_jsdialog_type_t
4936 {
4937     JSDIALOGTYPE_ALERT = 0,
4938     JSDIALOGTYPE_CONFIRM = 1,
4939     JSDIALOGTYPE_PROMPT = 2
4940 }
4941 
4942 alias JSDIALOGTYPE_ALERT = cef_jsdialog_type_t.JSDIALOGTYPE_ALERT;
4943 alias JSDIALOGTYPE_CONFIRM = cef_jsdialog_type_t.JSDIALOGTYPE_CONFIRM;
4944 alias JSDIALOGTYPE_PROMPT = cef_jsdialog_type_t.JSDIALOGTYPE_PROMPT;
4945 
4946 ///
4947 /// Screen information used when window rendering is disabled. This structure is
4948 /// passed as a parameter to CefRenderHandler::GetScreenInfo and should be
4949 /// filled in by the client.
4950 ///
4951 struct cef_screen_info_t
4952 {
4953     ///
4954     /// Device scale factor. Specifies the ratio between physical and logical
4955     /// pixels.
4956     ///
4957     float device_scale_factor;
4958 
4959     ///
4960     /// The screen depth in bits per pixel.
4961     ///
4962     int depth;
4963 
4964     ///
4965     /// The bits per color component. This assumes that the colors are balanced
4966     /// equally.
4967     ///
4968     int depth_per_component;
4969 
4970     ///
4971     /// This can be true for black and white printers.
4972     ///
4973     int is_monochrome;
4974 
4975     ///
4976     /// This is set from the rcMonitor member of MONITORINFOEX, to whit:
4977     ///   "A RECT structure that specifies the display monitor rectangle,
4978     ///   expressed in virtual-screen coordinates. Note that if the monitor
4979     ///   is not the primary display monitor, some of the rectangle's
4980     ///   coordinates may be negative values."
4981     //
4982     /// The |rect| and |available_rect| properties are used to determine the
4983     /// available surface for rendering popup views.
4984     ///
4985     cef_rect_t rect;
4986 
4987     ///
4988     /// This is set from the rcWork member of MONITORINFOEX, to whit:
4989     ///   "A RECT structure that specifies the work area rectangle of the
4990     ///   display monitor that can be used by applications, expressed in
4991     ///   virtual-screen coordinates. Windows uses this rectangle to
4992     ///   maximize an application on the monitor. The rest of the area in
4993     ///   rcMonitor contains system windows such as the task bar and side
4994     ///   bars. Note that if the monitor is not the primary display monitor,
4995     ///   some of the rectangle's coordinates may be negative values".
4996     //
4997     /// The |rect| and |available_rect| properties are used to determine the
4998     /// available surface for rendering popup views.
4999     ///
5000     cef_rect_t available_rect;
5001 }
5002 
5003 
5004 
5005 ///
5006 /// Supported menu IDs. Non-English translations can be provided for the
5007 /// IDS_MENU_* strings in CefResourceBundleHandler::GetLocalizedString().
5008 ///
5009 enum cef_menu_id_t
5010 {
5011     // Navigation.
5012     MENU_ID_BACK = 100,
5013     MENU_ID_FORWARD = 101,
5014     MENU_ID_RELOAD = 102,
5015     MENU_ID_RELOAD_NOCACHE = 103,
5016     MENU_ID_STOPLOAD = 104,
5017 
5018     // Editing.
5019     MENU_ID_UNDO = 110,
5020     MENU_ID_REDO = 111,
5021     MENU_ID_CUT = 112,
5022     MENU_ID_COPY = 113,
5023     MENU_ID_PASTE = 114,
5024     MENU_ID_DELETE = 115,
5025     MENU_ID_SELECT_ALL = 116,
5026 
5027     // Miscellaneous.
5028     MENU_ID_FIND = 130,
5029     MENU_ID_PRINT = 131,
5030     MENU_ID_VIEW_SOURCE = 132,
5031 
5032     // Spell checking word correction suggestions.
5033     MENU_ID_SPELLCHECK_SUGGESTION_0 = 200,
5034     MENU_ID_SPELLCHECK_SUGGESTION_1 = 201,
5035     MENU_ID_SPELLCHECK_SUGGESTION_2 = 202,
5036     MENU_ID_SPELLCHECK_SUGGESTION_3 = 203,
5037     MENU_ID_SPELLCHECK_SUGGESTION_4 = 204,
5038     MENU_ID_SPELLCHECK_SUGGESTION_LAST = 204,
5039     MENU_ID_NO_SPELLING_SUGGESTIONS = 205,
5040     MENU_ID_ADD_TO_DICTIONARY = 206,
5041 
5042     // Custom menu items originating from the renderer process.
5043     MENU_ID_CUSTOM_FIRST = 220,
5044     MENU_ID_CUSTOM_LAST = 250,
5045 
5046     // All user-defined menu IDs should come between MENU_ID_USER_FIRST and
5047     // MENU_ID_USER_LAST to avoid overlapping the Chromium and CEF ID ranges
5048     // defined in the tools/gritsettings/resource_ids file.
5049     MENU_ID_USER_FIRST = 26500,
5050     MENU_ID_USER_LAST = 28500
5051 }
5052 
5053 alias MENU_ID_BACK = cef_menu_id_t.MENU_ID_BACK;
5054 alias MENU_ID_FORWARD = cef_menu_id_t.MENU_ID_FORWARD;
5055 alias MENU_ID_RELOAD = cef_menu_id_t.MENU_ID_RELOAD;
5056 alias MENU_ID_RELOAD_NOCACHE = cef_menu_id_t.MENU_ID_RELOAD_NOCACHE;
5057 alias MENU_ID_STOPLOAD = cef_menu_id_t.MENU_ID_STOPLOAD;
5058 alias MENU_ID_UNDO = cef_menu_id_t.MENU_ID_UNDO;
5059 alias MENU_ID_REDO = cef_menu_id_t.MENU_ID_REDO;
5060 alias MENU_ID_CUT = cef_menu_id_t.MENU_ID_CUT;
5061 alias MENU_ID_COPY = cef_menu_id_t.MENU_ID_COPY;
5062 alias MENU_ID_PASTE = cef_menu_id_t.MENU_ID_PASTE;
5063 alias MENU_ID_DELETE = cef_menu_id_t.MENU_ID_DELETE;
5064 alias MENU_ID_SELECT_ALL = cef_menu_id_t.MENU_ID_SELECT_ALL;
5065 alias MENU_ID_FIND = cef_menu_id_t.MENU_ID_FIND;
5066 alias MENU_ID_PRINT = cef_menu_id_t.MENU_ID_PRINT;
5067 alias MENU_ID_VIEW_SOURCE = cef_menu_id_t.MENU_ID_VIEW_SOURCE;
5068 alias MENU_ID_SPELLCHECK_SUGGESTION_0 = cef_menu_id_t.MENU_ID_SPELLCHECK_SUGGESTION_0;
5069 alias MENU_ID_SPELLCHECK_SUGGESTION_1 = cef_menu_id_t.MENU_ID_SPELLCHECK_SUGGESTION_1;
5070 alias MENU_ID_SPELLCHECK_SUGGESTION_2 = cef_menu_id_t.MENU_ID_SPELLCHECK_SUGGESTION_2;
5071 alias MENU_ID_SPELLCHECK_SUGGESTION_3 = cef_menu_id_t.MENU_ID_SPELLCHECK_SUGGESTION_3;
5072 alias MENU_ID_SPELLCHECK_SUGGESTION_4 = cef_menu_id_t.MENU_ID_SPELLCHECK_SUGGESTION_4;
5073 alias MENU_ID_SPELLCHECK_SUGGESTION_LAST = cef_menu_id_t.MENU_ID_SPELLCHECK_SUGGESTION_LAST;
5074 alias MENU_ID_NO_SPELLING_SUGGESTIONS = cef_menu_id_t.MENU_ID_NO_SPELLING_SUGGESTIONS;
5075 alias MENU_ID_ADD_TO_DICTIONARY = cef_menu_id_t.MENU_ID_ADD_TO_DICTIONARY;
5076 alias MENU_ID_CUSTOM_FIRST = cef_menu_id_t.MENU_ID_CUSTOM_FIRST;
5077 alias MENU_ID_CUSTOM_LAST = cef_menu_id_t.MENU_ID_CUSTOM_LAST;
5078 alias MENU_ID_USER_FIRST = cef_menu_id_t.MENU_ID_USER_FIRST;
5079 alias MENU_ID_USER_LAST = cef_menu_id_t.MENU_ID_USER_LAST;
5080 
5081 ///
5082 /// Mouse button types.
5083 ///
5084 enum cef_mouse_button_type_t
5085 {
5086     MBT_LEFT = 0,
5087     MBT_MIDDLE = 1,
5088     MBT_RIGHT = 2
5089 }
5090 
5091 alias MBT_LEFT = cef_mouse_button_type_t.MBT_LEFT;
5092 alias MBT_MIDDLE = cef_mouse_button_type_t.MBT_MIDDLE;
5093 alias MBT_RIGHT = cef_mouse_button_type_t.MBT_RIGHT;
5094 
5095 ///
5096 /// Structure representing mouse event information.
5097 ///
5098 struct cef_mouse_event_t
5099 {
5100     ///
5101     /// X coordinate relative to the left side of the view.
5102     ///
5103     int x;
5104 
5105     ///
5106     /// Y coordinate relative to the top side of the view.
5107     ///
5108     int y;
5109 
5110     ///
5111     /// Bit flags describing any pressed modifier keys. See
5112     /// cef_event_flags_t for values.
5113     ///
5114     uint modifiers;
5115 }
5116 
5117 
5118 
5119 ///
5120 /// Touch points states types.
5121 ///
5122 enum cef_touch_event_type_t
5123 {
5124     CEF_TET_RELEASED = 0,
5125     CEF_TET_PRESSED = 1,
5126     CEF_TET_MOVED = 2,
5127     CEF_TET_CANCELLED = 3
5128 }
5129 
5130 alias CEF_TET_RELEASED = cef_touch_event_type_t.CEF_TET_RELEASED;
5131 alias CEF_TET_PRESSED = cef_touch_event_type_t.CEF_TET_PRESSED;
5132 alias CEF_TET_MOVED = cef_touch_event_type_t.CEF_TET_MOVED;
5133 alias CEF_TET_CANCELLED = cef_touch_event_type_t.CEF_TET_CANCELLED;
5134 
5135 ///
5136 /// The device type that caused the event.
5137 ///
5138 enum cef_pointer_type_t
5139 {
5140     CEF_POINTER_TYPE_TOUCH = 0,
5141     CEF_POINTER_TYPE_MOUSE = 1,
5142     CEF_POINTER_TYPE_PEN = 2,
5143     CEF_POINTER_TYPE_ERASER = 3,
5144     CEF_POINTER_TYPE_UNKNOWN = 4
5145 }
5146 
5147 alias CEF_POINTER_TYPE_TOUCH = cef_pointer_type_t.CEF_POINTER_TYPE_TOUCH;
5148 alias CEF_POINTER_TYPE_MOUSE = cef_pointer_type_t.CEF_POINTER_TYPE_MOUSE;
5149 alias CEF_POINTER_TYPE_PEN = cef_pointer_type_t.CEF_POINTER_TYPE_PEN;
5150 alias CEF_POINTER_TYPE_ERASER = cef_pointer_type_t.CEF_POINTER_TYPE_ERASER;
5151 alias CEF_POINTER_TYPE_UNKNOWN = cef_pointer_type_t.CEF_POINTER_TYPE_UNKNOWN;
5152 
5153 ///
5154 /// Structure representing touch event information.
5155 ///
5156 struct cef_touch_event_t
5157 {
5158     ///
5159     /// Id of a touch point. Must be unique per touch, can be any number except
5160     /// -1. Note that a maximum of 16 concurrent touches will be tracked; touches
5161     /// beyond that will be ignored.
5162     ///
5163     int id;
5164 
5165     ///
5166     /// X coordinate relative to the left side of the view.
5167     ///
5168     float x;
5169 
5170     ///
5171     /// Y coordinate relative to the top side of the view.
5172     ///
5173     float y;
5174 
5175     ///
5176     /// X radius in pixels. Set to 0 if not applicable.
5177     ///
5178     float radius_x;
5179 
5180     ///
5181     /// Y radius in pixels. Set to 0 if not applicable.
5182     ///
5183     float radius_y;
5184 
5185     ///
5186     /// Rotation angle in radians. Set to 0 if not applicable.
5187     ///
5188     float rotation_angle;
5189 
5190     ///
5191     /// The normalized pressure of the pointer input in the range of [0,1].
5192     /// Set to 0 if not applicable.
5193     ///
5194     float pressure;
5195 
5196     ///
5197     /// The state of the touch point. Touches begin with one CEF_TET_PRESSED event
5198     /// followed by zero or more CEF_TET_MOVED events and finally one
5199     /// CEF_TET_RELEASED or CEF_TET_CANCELLED event. Events not respecting this
5200     /// order will be ignored.
5201     ///
5202     cef_touch_event_type_t type;
5203 
5204     ///
5205     /// Bit flags describing any pressed modifier keys. See
5206     /// cef_event_flags_t for values.
5207     ///
5208     uint modifiers;
5209 
5210     ///
5211     /// The device type that caused the event.
5212     ///
5213     cef_pointer_type_t pointer_type;
5214 }
5215 
5216 
5217 
5218 ///
5219 /// Paint element types.
5220 ///
5221 enum cef_paint_element_type_t
5222 {
5223     PET_VIEW = 0,
5224     PET_POPUP = 1
5225 }
5226 
5227 alias PET_VIEW = cef_paint_element_type_t.PET_VIEW;
5228 alias PET_POPUP = cef_paint_element_type_t.PET_POPUP;
5229 
5230 ///
5231 /// Supported event bit flags.
5232 ///
5233 enum cef_event_flags_t
5234 {
5235     EVENTFLAG_NONE = 0,
5236     EVENTFLAG_CAPS_LOCK_ON = 1 << 0,
5237     EVENTFLAG_SHIFT_DOWN = 1 << 1,
5238     EVENTFLAG_CONTROL_DOWN = 1 << 2,
5239     EVENTFLAG_ALT_DOWN = 1 << 3,
5240     EVENTFLAG_LEFT_MOUSE_BUTTON = 1 << 4,
5241     EVENTFLAG_MIDDLE_MOUSE_BUTTON = 1 << 5,
5242     EVENTFLAG_RIGHT_MOUSE_BUTTON = 1 << 6,
5243     /// Mac OS-X command key.
5244     EVENTFLAG_COMMAND_DOWN = 1 << 7,
5245     EVENTFLAG_NUM_LOCK_ON = 1 << 8,
5246     EVENTFLAG_IS_KEY_PAD = 1 << 9,
5247     EVENTFLAG_IS_LEFT = 1 << 10,
5248     EVENTFLAG_IS_RIGHT = 1 << 11,
5249     EVENTFLAG_ALTGR_DOWN = 1 << 12,
5250     EVENTFLAG_IS_REPEAT = 1 << 13
5251 }
5252 
5253 alias EVENTFLAG_NONE = cef_event_flags_t.EVENTFLAG_NONE;
5254 alias EVENTFLAG_CAPS_LOCK_ON = cef_event_flags_t.EVENTFLAG_CAPS_LOCK_ON;
5255 alias EVENTFLAG_SHIFT_DOWN = cef_event_flags_t.EVENTFLAG_SHIFT_DOWN;
5256 alias EVENTFLAG_CONTROL_DOWN = cef_event_flags_t.EVENTFLAG_CONTROL_DOWN;
5257 alias EVENTFLAG_ALT_DOWN = cef_event_flags_t.EVENTFLAG_ALT_DOWN;
5258 alias EVENTFLAG_LEFT_MOUSE_BUTTON = cef_event_flags_t.EVENTFLAG_LEFT_MOUSE_BUTTON;
5259 alias EVENTFLAG_MIDDLE_MOUSE_BUTTON = cef_event_flags_t.EVENTFLAG_MIDDLE_MOUSE_BUTTON;
5260 alias EVENTFLAG_RIGHT_MOUSE_BUTTON = cef_event_flags_t.EVENTFLAG_RIGHT_MOUSE_BUTTON;
5261 alias EVENTFLAG_COMMAND_DOWN = cef_event_flags_t.EVENTFLAG_COMMAND_DOWN;
5262 alias EVENTFLAG_NUM_LOCK_ON = cef_event_flags_t.EVENTFLAG_NUM_LOCK_ON;
5263 alias EVENTFLAG_IS_KEY_PAD = cef_event_flags_t.EVENTFLAG_IS_KEY_PAD;
5264 alias EVENTFLAG_IS_LEFT = cef_event_flags_t.EVENTFLAG_IS_LEFT;
5265 alias EVENTFLAG_IS_RIGHT = cef_event_flags_t.EVENTFLAG_IS_RIGHT;
5266 alias EVENTFLAG_ALTGR_DOWN = cef_event_flags_t.EVENTFLAG_ALTGR_DOWN;
5267 alias EVENTFLAG_IS_REPEAT = cef_event_flags_t.EVENTFLAG_IS_REPEAT;
5268 
5269 ///
5270 /// Supported menu item types.
5271 ///
5272 enum cef_menu_item_type_t
5273 {
5274     MENUITEMTYPE_NONE = 0,
5275     MENUITEMTYPE_COMMAND = 1,
5276     MENUITEMTYPE_CHECK = 2,
5277     MENUITEMTYPE_RADIO = 3,
5278     MENUITEMTYPE_SEPARATOR = 4,
5279     MENUITEMTYPE_SUBMENU = 5
5280 }
5281 
5282 alias MENUITEMTYPE_NONE = cef_menu_item_type_t.MENUITEMTYPE_NONE;
5283 alias MENUITEMTYPE_COMMAND = cef_menu_item_type_t.MENUITEMTYPE_COMMAND;
5284 alias MENUITEMTYPE_CHECK = cef_menu_item_type_t.MENUITEMTYPE_CHECK;
5285 alias MENUITEMTYPE_RADIO = cef_menu_item_type_t.MENUITEMTYPE_RADIO;
5286 alias MENUITEMTYPE_SEPARATOR = cef_menu_item_type_t.MENUITEMTYPE_SEPARATOR;
5287 alias MENUITEMTYPE_SUBMENU = cef_menu_item_type_t.MENUITEMTYPE_SUBMENU;
5288 
5289 ///
5290 /// Supported context menu type flags.
5291 ///
5292 enum cef_context_menu_type_flags_t
5293 {
5294     ///
5295     /// No node is selected.
5296     ///
5297     CM_TYPEFLAG_NONE = 0,
5298     ///
5299     /// The top page is selected.
5300     ///
5301     CM_TYPEFLAG_PAGE = 1 << 0,
5302     ///
5303     /// A subframe page is selected.
5304     ///
5305     CM_TYPEFLAG_FRAME = 1 << 1,
5306     ///
5307     /// A link is selected.
5308     ///
5309     CM_TYPEFLAG_LINK = 1 << 2,
5310     ///
5311     /// A media node is selected.
5312     ///
5313     CM_TYPEFLAG_MEDIA = 1 << 3,
5314     ///
5315     /// There is a textual or mixed selection that is selected.
5316     ///
5317     CM_TYPEFLAG_SELECTION = 1 << 4,
5318     ///
5319     /// An editable element is selected.
5320     ///
5321     CM_TYPEFLAG_EDITABLE = 1 << 5
5322 }
5323 
5324 alias CM_TYPEFLAG_NONE = cef_context_menu_type_flags_t.CM_TYPEFLAG_NONE;
5325 alias CM_TYPEFLAG_PAGE = cef_context_menu_type_flags_t.CM_TYPEFLAG_PAGE;
5326 alias CM_TYPEFLAG_FRAME = cef_context_menu_type_flags_t.CM_TYPEFLAG_FRAME;
5327 alias CM_TYPEFLAG_LINK = cef_context_menu_type_flags_t.CM_TYPEFLAG_LINK;
5328 alias CM_TYPEFLAG_MEDIA = cef_context_menu_type_flags_t.CM_TYPEFLAG_MEDIA;
5329 alias CM_TYPEFLAG_SELECTION = cef_context_menu_type_flags_t.CM_TYPEFLAG_SELECTION;
5330 alias CM_TYPEFLAG_EDITABLE = cef_context_menu_type_flags_t.CM_TYPEFLAG_EDITABLE;
5331 
5332 ///
5333 /// Supported context menu media types. These constants match their equivalents
5334 /// in Chromium's ContextMenuDataMediaType and should not be renumbered.
5335 ///
5336 enum cef_context_menu_media_type_t
5337 {
5338     ///
5339     /// No special node is in context.
5340     ///
5341     CM_MEDIATYPE_NONE = 0,
5342     ///
5343     /// An image node is selected.
5344     ///
5345     CM_MEDIATYPE_IMAGE = 1,
5346     ///
5347     /// A video node is selected.
5348     ///
5349     CM_MEDIATYPE_VIDEO = 2,
5350     ///
5351     /// An audio node is selected.
5352     ///
5353     CM_MEDIATYPE_AUDIO = 3,
5354     ///
5355     /// An canvas node is selected.
5356     ///
5357     CM_MEDIATYPE_CANVAS = 4,
5358     ///
5359     /// A file node is selected.
5360     ///
5361     CM_MEDIATYPE_FILE = 5,
5362     ///
5363     /// A plugin node is selected.
5364     ///
5365     CM_MEDIATYPE_PLUGIN = 6
5366 }
5367 
5368 alias CM_MEDIATYPE_NONE = cef_context_menu_media_type_t.CM_MEDIATYPE_NONE;
5369 alias CM_MEDIATYPE_IMAGE = cef_context_menu_media_type_t.CM_MEDIATYPE_IMAGE;
5370 alias CM_MEDIATYPE_VIDEO = cef_context_menu_media_type_t.CM_MEDIATYPE_VIDEO;
5371 alias CM_MEDIATYPE_AUDIO = cef_context_menu_media_type_t.CM_MEDIATYPE_AUDIO;
5372 alias CM_MEDIATYPE_CANVAS = cef_context_menu_media_type_t.CM_MEDIATYPE_CANVAS;
5373 alias CM_MEDIATYPE_FILE = cef_context_menu_media_type_t.CM_MEDIATYPE_FILE;
5374 alias CM_MEDIATYPE_PLUGIN = cef_context_menu_media_type_t.CM_MEDIATYPE_PLUGIN;
5375 
5376 ///
5377 /// Supported context menu media state bit flags. These constants match their
5378 /// equivalents in Chromium's ContextMenuData::MediaFlags and should not be
5379 /// renumbered.
5380 ///
5381 enum cef_context_menu_media_state_flags_t
5382 {
5383     CM_MEDIAFLAG_NONE = 0,
5384     CM_MEDIAFLAG_IN_ERROR = 1 << 0,
5385     CM_MEDIAFLAG_PAUSED = 1 << 1,
5386     CM_MEDIAFLAG_MUTED = 1 << 2,
5387     CM_MEDIAFLAG_LOOP = 1 << 3,
5388     CM_MEDIAFLAG_CAN_SAVE = 1 << 4,
5389     CM_MEDIAFLAG_HAS_AUDIO = 1 << 5,
5390     CM_MEDIAFLAG_CAN_TOGGLE_CONTROLS = 1 << 6,
5391     CM_MEDIAFLAG_CONTROLS = 1 << 7,
5392     CM_MEDIAFLAG_CAN_PRINT = 1 << 8,
5393     CM_MEDIAFLAG_CAN_ROTATE = 1 << 9,
5394     CM_MEDIAFLAG_CAN_PICTURE_IN_PICTURE = 1 << 10,
5395     CM_MEDIAFLAG_PICTURE_IN_PICTURE = 1 << 11,
5396     CM_MEDIAFLAG_CAN_LOOP = 1 << 12
5397 }
5398 
5399 alias CM_MEDIAFLAG_NONE = cef_context_menu_media_state_flags_t.CM_MEDIAFLAG_NONE;
5400 alias CM_MEDIAFLAG_IN_ERROR = cef_context_menu_media_state_flags_t.CM_MEDIAFLAG_IN_ERROR;
5401 alias CM_MEDIAFLAG_PAUSED = cef_context_menu_media_state_flags_t.CM_MEDIAFLAG_PAUSED;
5402 alias CM_MEDIAFLAG_MUTED = cef_context_menu_media_state_flags_t.CM_MEDIAFLAG_MUTED;
5403 alias CM_MEDIAFLAG_LOOP = cef_context_menu_media_state_flags_t.CM_MEDIAFLAG_LOOP;
5404 alias CM_MEDIAFLAG_CAN_SAVE = cef_context_menu_media_state_flags_t.CM_MEDIAFLAG_CAN_SAVE;
5405 alias CM_MEDIAFLAG_HAS_AUDIO = cef_context_menu_media_state_flags_t.CM_MEDIAFLAG_HAS_AUDIO;
5406 alias CM_MEDIAFLAG_CAN_TOGGLE_CONTROLS = cef_context_menu_media_state_flags_t.CM_MEDIAFLAG_CAN_TOGGLE_CONTROLS;
5407 alias CM_MEDIAFLAG_CONTROLS = cef_context_menu_media_state_flags_t.CM_MEDIAFLAG_CONTROLS;
5408 alias CM_MEDIAFLAG_CAN_PRINT = cef_context_menu_media_state_flags_t.CM_MEDIAFLAG_CAN_PRINT;
5409 alias CM_MEDIAFLAG_CAN_ROTATE = cef_context_menu_media_state_flags_t.CM_MEDIAFLAG_CAN_ROTATE;
5410 alias CM_MEDIAFLAG_CAN_PICTURE_IN_PICTURE = cef_context_menu_media_state_flags_t.CM_MEDIAFLAG_CAN_PICTURE_IN_PICTURE;
5411 alias CM_MEDIAFLAG_PICTURE_IN_PICTURE = cef_context_menu_media_state_flags_t.CM_MEDIAFLAG_PICTURE_IN_PICTURE;
5412 alias CM_MEDIAFLAG_CAN_LOOP = cef_context_menu_media_state_flags_t.CM_MEDIAFLAG_CAN_LOOP;
5413 
5414 ///
5415 /// Supported context menu edit state bit flags. These constants match their
5416 /// equivalents in Chromium's ContextMenuDataEditFlags and should not be
5417 /// renumbered.
5418 ///
5419 enum cef_context_menu_edit_state_flags_t
5420 {
5421     CM_EDITFLAG_NONE = 0,
5422     CM_EDITFLAG_CAN_UNDO = 1 << 0,
5423     CM_EDITFLAG_CAN_REDO = 1 << 1,
5424     CM_EDITFLAG_CAN_CUT = 1 << 2,
5425     CM_EDITFLAG_CAN_COPY = 1 << 3,
5426     CM_EDITFLAG_CAN_PASTE = 1 << 4,
5427     CM_EDITFLAG_CAN_DELETE = 1 << 5,
5428     CM_EDITFLAG_CAN_SELECT_ALL = 1 << 6,
5429     CM_EDITFLAG_CAN_TRANSLATE = 1 << 7,
5430     CM_EDITFLAG_CAN_EDIT_RICHLY = 1 << 8
5431 }
5432 
5433 alias CM_EDITFLAG_NONE = cef_context_menu_edit_state_flags_t.CM_EDITFLAG_NONE;
5434 alias CM_EDITFLAG_CAN_UNDO = cef_context_menu_edit_state_flags_t.CM_EDITFLAG_CAN_UNDO;
5435 alias CM_EDITFLAG_CAN_REDO = cef_context_menu_edit_state_flags_t.CM_EDITFLAG_CAN_REDO;
5436 alias CM_EDITFLAG_CAN_CUT = cef_context_menu_edit_state_flags_t.CM_EDITFLAG_CAN_CUT;
5437 alias CM_EDITFLAG_CAN_COPY = cef_context_menu_edit_state_flags_t.CM_EDITFLAG_CAN_COPY;
5438 alias CM_EDITFLAG_CAN_PASTE = cef_context_menu_edit_state_flags_t.CM_EDITFLAG_CAN_PASTE;
5439 alias CM_EDITFLAG_CAN_DELETE = cef_context_menu_edit_state_flags_t.CM_EDITFLAG_CAN_DELETE;
5440 alias CM_EDITFLAG_CAN_SELECT_ALL = cef_context_menu_edit_state_flags_t.CM_EDITFLAG_CAN_SELECT_ALL;
5441 alias CM_EDITFLAG_CAN_TRANSLATE = cef_context_menu_edit_state_flags_t.CM_EDITFLAG_CAN_TRANSLATE;
5442 alias CM_EDITFLAG_CAN_EDIT_RICHLY = cef_context_menu_edit_state_flags_t.CM_EDITFLAG_CAN_EDIT_RICHLY;
5443 
5444 ///
5445 /// Supported quick menu state bit flags.
5446 ///
5447 enum cef_quick_menu_edit_state_flags_t
5448 {
5449     QM_EDITFLAG_NONE = 0,
5450     QM_EDITFLAG_CAN_ELLIPSIS = 1 << 0,
5451     QM_EDITFLAG_CAN_CUT = 1 << 1,
5452     QM_EDITFLAG_CAN_COPY = 1 << 2,
5453     QM_EDITFLAG_CAN_PASTE = 1 << 3
5454 }
5455 
5456 alias QM_EDITFLAG_NONE = cef_quick_menu_edit_state_flags_t.QM_EDITFLAG_NONE;
5457 alias QM_EDITFLAG_CAN_ELLIPSIS = cef_quick_menu_edit_state_flags_t.QM_EDITFLAG_CAN_ELLIPSIS;
5458 alias QM_EDITFLAG_CAN_CUT = cef_quick_menu_edit_state_flags_t.QM_EDITFLAG_CAN_CUT;
5459 alias QM_EDITFLAG_CAN_COPY = cef_quick_menu_edit_state_flags_t.QM_EDITFLAG_CAN_COPY;
5460 alias QM_EDITFLAG_CAN_PASTE = cef_quick_menu_edit_state_flags_t.QM_EDITFLAG_CAN_PASTE;
5461 
5462 ///
5463 /// Key event types.
5464 ///
5465 enum cef_key_event_type_t
5466 {
5467     ///
5468     /// Notification that a key transitioned from "up" to "down".
5469     ///
5470     KEYEVENT_RAWKEYDOWN = 0,
5471 
5472     ///
5473     /// Notification that a key was pressed. This does not necessarily correspond
5474     /// to a character depending on the key and language. Use KEYEVENT_CHAR for
5475     /// character input.
5476     ///
5477     KEYEVENT_KEYDOWN = 1,
5478 
5479     ///
5480     /// Notification that a key was released.
5481     ///
5482     KEYEVENT_KEYUP = 2,
5483 
5484     ///
5485     /// Notification that a character was typed. Use this for text input. Key
5486     /// down events may generate 0, 1, or more than one character event depending
5487     /// on the key, locale, and operating system.
5488     ///
5489     KEYEVENT_CHAR = 3
5490 }
5491 
5492 alias KEYEVENT_RAWKEYDOWN = cef_key_event_type_t.KEYEVENT_RAWKEYDOWN;
5493 alias KEYEVENT_KEYDOWN = cef_key_event_type_t.KEYEVENT_KEYDOWN;
5494 alias KEYEVENT_KEYUP = cef_key_event_type_t.KEYEVENT_KEYUP;
5495 alias KEYEVENT_CHAR = cef_key_event_type_t.KEYEVENT_CHAR;
5496 
5497 ///
5498 /// Structure representing keyboard event information.
5499 ///
5500 struct cef_key_event_t
5501 {
5502     ///
5503     /// The type of keyboard event.
5504     ///
5505     cef_key_event_type_t type;
5506 
5507     ///
5508     /// Bit flags describing any pressed modifier keys. See
5509     /// cef_event_flags_t for values.
5510     ///
5511     uint modifiers;
5512 
5513     ///
5514     /// The Windows key code for the key event. This value is used by the DOM
5515     /// specification. Sometimes it comes directly from the event (i.e. on
5516     /// Windows) and sometimes it's determined using a mapping function. See
5517     /// WebCore/platform/chromium/KeyboardCodes.h for the list of values.
5518     ///
5519     int windows_key_code;
5520 
5521     ///
5522     /// The actual key code genenerated by the platform.
5523     ///
5524     int native_key_code;
5525 
5526     ///
5527     /// Indicates whether the event is considered a "system key" event (see
5528     /// http://msdn.microsoft.com/en-us/library/ms646286(VS.85).aspx for details).
5529     /// This value will always be false on non-Windows platforms.
5530     ///
5531     int is_system_key;
5532 
5533     ///
5534     /// The character generated by the keystroke.
5535     ///
5536     alias char16_t = ushort;
5537     char16_t character;
5538 
5539     ///
5540     /// Same as |character| but unmodified by any concurrently-held modifiers
5541     /// (except shift). This is useful for working out shortcut keys.
5542     ///
5543     char16_t unmodified_character;
5544 
5545     ///
5546     /// True if the focus is currently on an editable field on the page. This is
5547     /// useful for determining if standard key events should be intercepted.
5548     ///
5549     int focus_on_editable_field;
5550 }
5551 
5552 
5553 
5554 ///
5555 /// Focus sources.
5556 ///
5557 enum cef_focus_source_t
5558 {
5559     ///
5560     /// The source is explicit navigation via the API (LoadURL(), etc).
5561     ///
5562     FOCUS_SOURCE_NAVIGATION = 0,
5563     ///
5564     /// The source is a system-generated focus event.
5565     ///
5566     FOCUS_SOURCE_SYSTEM = 1
5567 }
5568 
5569 alias FOCUS_SOURCE_NAVIGATION = cef_focus_source_t.FOCUS_SOURCE_NAVIGATION;
5570 alias FOCUS_SOURCE_SYSTEM = cef_focus_source_t.FOCUS_SOURCE_SYSTEM;
5571 
5572 ///
5573 /// Navigation types.
5574 ///
5575 enum cef_navigation_type_t
5576 {
5577     NAVIGATION_LINK_CLICKED = 0,
5578     NAVIGATION_FORM_SUBMITTED = 1,
5579     NAVIGATION_BACK_FORWARD = 2,
5580     NAVIGATION_RELOAD = 3,
5581     NAVIGATION_FORM_RESUBMITTED = 4,
5582     NAVIGATION_OTHER = 5
5583 }
5584 
5585 alias NAVIGATION_LINK_CLICKED = cef_navigation_type_t.NAVIGATION_LINK_CLICKED;
5586 alias NAVIGATION_FORM_SUBMITTED = cef_navigation_type_t.NAVIGATION_FORM_SUBMITTED;
5587 alias NAVIGATION_BACK_FORWARD = cef_navigation_type_t.NAVIGATION_BACK_FORWARD;
5588 alias NAVIGATION_RELOAD = cef_navigation_type_t.NAVIGATION_RELOAD;
5589 alias NAVIGATION_FORM_RESUBMITTED = cef_navigation_type_t.NAVIGATION_FORM_RESUBMITTED;
5590 alias NAVIGATION_OTHER = cef_navigation_type_t.NAVIGATION_OTHER;
5591 
5592 ///
5593 /// Supported XML encoding types. The parser supports ASCII, ISO-8859-1, and
5594 /// UTF16 (LE and BE) by default. All other types must be translated to UTF8
5595 /// before being passed to the parser. If a BOM is detected and the correct
5596 /// decoder is available then that decoder will be used automatically.
5597 ///
5598 enum cef_xml_encoding_type_t
5599 {
5600     XML_ENCODING_NONE = 0,
5601     XML_ENCODING_UTF8 = 1,
5602     XML_ENCODING_UTF16LE = 2,
5603     XML_ENCODING_UTF16BE = 3,
5604     XML_ENCODING_ASCII = 4
5605 }
5606 
5607 alias XML_ENCODING_NONE = cef_xml_encoding_type_t.XML_ENCODING_NONE;
5608 alias XML_ENCODING_UTF8 = cef_xml_encoding_type_t.XML_ENCODING_UTF8;
5609 alias XML_ENCODING_UTF16LE = cef_xml_encoding_type_t.XML_ENCODING_UTF16LE;
5610 alias XML_ENCODING_UTF16BE = cef_xml_encoding_type_t.XML_ENCODING_UTF16BE;
5611 alias XML_ENCODING_ASCII = cef_xml_encoding_type_t.XML_ENCODING_ASCII;
5612 
5613 ///
5614 /// XML node types.
5615 ///
5616 enum cef_xml_node_type_t
5617 {
5618     XML_NODE_UNSUPPORTED = 0,
5619     XML_NODE_PROCESSING_INSTRUCTION = 1,
5620     XML_NODE_DOCUMENT_TYPE = 2,
5621     XML_NODE_ELEMENT_START = 3,
5622     XML_NODE_ELEMENT_END = 4,
5623     XML_NODE_ATTRIBUTE = 5,
5624     XML_NODE_TEXT = 6,
5625     XML_NODE_CDATA = 7,
5626     XML_NODE_ENTITY_REFERENCE = 8,
5627     XML_NODE_WHITESPACE = 9,
5628     XML_NODE_COMMENT = 10
5629 }
5630 
5631 alias XML_NODE_UNSUPPORTED = cef_xml_node_type_t.XML_NODE_UNSUPPORTED;
5632 alias XML_NODE_PROCESSING_INSTRUCTION = cef_xml_node_type_t.XML_NODE_PROCESSING_INSTRUCTION;
5633 alias XML_NODE_DOCUMENT_TYPE = cef_xml_node_type_t.XML_NODE_DOCUMENT_TYPE;
5634 alias XML_NODE_ELEMENT_START = cef_xml_node_type_t.XML_NODE_ELEMENT_START;
5635 alias XML_NODE_ELEMENT_END = cef_xml_node_type_t.XML_NODE_ELEMENT_END;
5636 alias XML_NODE_ATTRIBUTE = cef_xml_node_type_t.XML_NODE_ATTRIBUTE;
5637 alias XML_NODE_TEXT = cef_xml_node_type_t.XML_NODE_TEXT;
5638 alias XML_NODE_CDATA = cef_xml_node_type_t.XML_NODE_CDATA;
5639 alias XML_NODE_ENTITY_REFERENCE = cef_xml_node_type_t.XML_NODE_ENTITY_REFERENCE;
5640 alias XML_NODE_WHITESPACE = cef_xml_node_type_t.XML_NODE_WHITESPACE;
5641 alias XML_NODE_COMMENT = cef_xml_node_type_t.XML_NODE_COMMENT;
5642 
5643 ///
5644 /// Popup window features.
5645 ///
5646 struct cef_popup_features_t
5647 {
5648     int x;
5649     int xSet;
5650     int y;
5651     int ySet;
5652     int width;
5653     int widthSet;
5654     int height;
5655     int heightSet;
5656 
5657     /// True (1) if browser interface elements should be hidden.
5658     int isPopup;
5659 }
5660 
5661 
5662 
5663 ///
5664 /// DOM document types.
5665 ///
5666 enum cef_dom_document_type_t
5667 {
5668     DOM_DOCUMENT_TYPE_UNKNOWN = 0,
5669     DOM_DOCUMENT_TYPE_HTML = 1,
5670     DOM_DOCUMENT_TYPE_XHTML = 2,
5671     DOM_DOCUMENT_TYPE_PLUGIN = 3
5672 }
5673 
5674 alias DOM_DOCUMENT_TYPE_UNKNOWN = cef_dom_document_type_t.DOM_DOCUMENT_TYPE_UNKNOWN;
5675 alias DOM_DOCUMENT_TYPE_HTML = cef_dom_document_type_t.DOM_DOCUMENT_TYPE_HTML;
5676 alias DOM_DOCUMENT_TYPE_XHTML = cef_dom_document_type_t.DOM_DOCUMENT_TYPE_XHTML;
5677 alias DOM_DOCUMENT_TYPE_PLUGIN = cef_dom_document_type_t.DOM_DOCUMENT_TYPE_PLUGIN;
5678 
5679 ///
5680 /// DOM event category flags.
5681 ///
5682 enum cef_dom_event_category_t
5683 {
5684     DOM_EVENT_CATEGORY_UNKNOWN = 0x0,
5685     DOM_EVENT_CATEGORY_UI = 0x1,
5686     DOM_EVENT_CATEGORY_MOUSE = 0x2,
5687     DOM_EVENT_CATEGORY_MUTATION = 0x4,
5688     DOM_EVENT_CATEGORY_KEYBOARD = 0x8,
5689     DOM_EVENT_CATEGORY_TEXT = 0x10,
5690     DOM_EVENT_CATEGORY_COMPOSITION = 0x20,
5691     DOM_EVENT_CATEGORY_DRAG = 0x40,
5692     DOM_EVENT_CATEGORY_CLIPBOARD = 0x80,
5693     DOM_EVENT_CATEGORY_MESSAGE = 0x100,
5694     DOM_EVENT_CATEGORY_WHEEL = 0x200,
5695     DOM_EVENT_CATEGORY_BEFORE_TEXT_INSERTED = 0x400,
5696     DOM_EVENT_CATEGORY_OVERFLOW = 0x800,
5697     DOM_EVENT_CATEGORY_PAGE_TRANSITION = 0x1000,
5698     DOM_EVENT_CATEGORY_POPSTATE = 0x2000,
5699     DOM_EVENT_CATEGORY_PROGRESS = 0x4000,
5700     DOM_EVENT_CATEGORY_XMLHTTPREQUEST_PROGRESS = 0x8000
5701 }
5702 
5703 alias DOM_EVENT_CATEGORY_UNKNOWN = cef_dom_event_category_t.DOM_EVENT_CATEGORY_UNKNOWN;
5704 alias DOM_EVENT_CATEGORY_UI = cef_dom_event_category_t.DOM_EVENT_CATEGORY_UI;
5705 alias DOM_EVENT_CATEGORY_MOUSE = cef_dom_event_category_t.DOM_EVENT_CATEGORY_MOUSE;
5706 alias DOM_EVENT_CATEGORY_MUTATION = cef_dom_event_category_t.DOM_EVENT_CATEGORY_MUTATION;
5707 alias DOM_EVENT_CATEGORY_KEYBOARD = cef_dom_event_category_t.DOM_EVENT_CATEGORY_KEYBOARD;
5708 alias DOM_EVENT_CATEGORY_TEXT = cef_dom_event_category_t.DOM_EVENT_CATEGORY_TEXT;
5709 alias DOM_EVENT_CATEGORY_COMPOSITION = cef_dom_event_category_t.DOM_EVENT_CATEGORY_COMPOSITION;
5710 alias DOM_EVENT_CATEGORY_DRAG = cef_dom_event_category_t.DOM_EVENT_CATEGORY_DRAG;
5711 alias DOM_EVENT_CATEGORY_CLIPBOARD = cef_dom_event_category_t.DOM_EVENT_CATEGORY_CLIPBOARD;
5712 alias DOM_EVENT_CATEGORY_MESSAGE = cef_dom_event_category_t.DOM_EVENT_CATEGORY_MESSAGE;
5713 alias DOM_EVENT_CATEGORY_WHEEL = cef_dom_event_category_t.DOM_EVENT_CATEGORY_WHEEL;
5714 alias DOM_EVENT_CATEGORY_BEFORE_TEXT_INSERTED = cef_dom_event_category_t.DOM_EVENT_CATEGORY_BEFORE_TEXT_INSERTED;
5715 alias DOM_EVENT_CATEGORY_OVERFLOW = cef_dom_event_category_t.DOM_EVENT_CATEGORY_OVERFLOW;
5716 alias DOM_EVENT_CATEGORY_PAGE_TRANSITION = cef_dom_event_category_t.DOM_EVENT_CATEGORY_PAGE_TRANSITION;
5717 alias DOM_EVENT_CATEGORY_POPSTATE = cef_dom_event_category_t.DOM_EVENT_CATEGORY_POPSTATE;
5718 alias DOM_EVENT_CATEGORY_PROGRESS = cef_dom_event_category_t.DOM_EVENT_CATEGORY_PROGRESS;
5719 alias DOM_EVENT_CATEGORY_XMLHTTPREQUEST_PROGRESS = cef_dom_event_category_t.DOM_EVENT_CATEGORY_XMLHTTPREQUEST_PROGRESS;
5720 
5721 ///
5722 /// DOM event processing phases.
5723 ///
5724 enum cef_dom_event_phase_t
5725 {
5726     DOM_EVENT_PHASE_UNKNOWN = 0,
5727     DOM_EVENT_PHASE_CAPTURING = 1,
5728     DOM_EVENT_PHASE_AT_TARGET = 2,
5729     DOM_EVENT_PHASE_BUBBLING = 3
5730 }
5731 
5732 alias DOM_EVENT_PHASE_UNKNOWN = cef_dom_event_phase_t.DOM_EVENT_PHASE_UNKNOWN;
5733 alias DOM_EVENT_PHASE_CAPTURING = cef_dom_event_phase_t.DOM_EVENT_PHASE_CAPTURING;
5734 alias DOM_EVENT_PHASE_AT_TARGET = cef_dom_event_phase_t.DOM_EVENT_PHASE_AT_TARGET;
5735 alias DOM_EVENT_PHASE_BUBBLING = cef_dom_event_phase_t.DOM_EVENT_PHASE_BUBBLING;
5736 
5737 ///
5738 /// DOM node types.
5739 ///
5740 enum cef_dom_node_type_t
5741 {
5742     DOM_NODE_TYPE_UNSUPPORTED = 0,
5743     DOM_NODE_TYPE_ELEMENT = 1,
5744     DOM_NODE_TYPE_ATTRIBUTE = 2,
5745     DOM_NODE_TYPE_TEXT = 3,
5746     DOM_NODE_TYPE_CDATA_SECTION = 4,
5747     DOM_NODE_TYPE_PROCESSING_INSTRUCTIONS = 5,
5748     DOM_NODE_TYPE_COMMENT = 6,
5749     DOM_NODE_TYPE_DOCUMENT = 7,
5750     DOM_NODE_TYPE_DOCUMENT_TYPE = 8,
5751     DOM_NODE_TYPE_DOCUMENT_FRAGMENT = 9
5752 }
5753 
5754 alias DOM_NODE_TYPE_UNSUPPORTED = cef_dom_node_type_t.DOM_NODE_TYPE_UNSUPPORTED;
5755 alias DOM_NODE_TYPE_ELEMENT = cef_dom_node_type_t.DOM_NODE_TYPE_ELEMENT;
5756 alias DOM_NODE_TYPE_ATTRIBUTE = cef_dom_node_type_t.DOM_NODE_TYPE_ATTRIBUTE;
5757 alias DOM_NODE_TYPE_TEXT = cef_dom_node_type_t.DOM_NODE_TYPE_TEXT;
5758 alias DOM_NODE_TYPE_CDATA_SECTION = cef_dom_node_type_t.DOM_NODE_TYPE_CDATA_SECTION;
5759 alias DOM_NODE_TYPE_PROCESSING_INSTRUCTIONS = cef_dom_node_type_t.DOM_NODE_TYPE_PROCESSING_INSTRUCTIONS;
5760 alias DOM_NODE_TYPE_COMMENT = cef_dom_node_type_t.DOM_NODE_TYPE_COMMENT;
5761 alias DOM_NODE_TYPE_DOCUMENT = cef_dom_node_type_t.DOM_NODE_TYPE_DOCUMENT;
5762 alias DOM_NODE_TYPE_DOCUMENT_TYPE = cef_dom_node_type_t.DOM_NODE_TYPE_DOCUMENT_TYPE;
5763 alias DOM_NODE_TYPE_DOCUMENT_FRAGMENT = cef_dom_node_type_t.DOM_NODE_TYPE_DOCUMENT_FRAGMENT;
5764 
5765 ///
5766 /// DOM form control types. Should be kept in sync with Chromium's
5767 /// blink::mojom::FormControlType type.
5768 ///
5769 enum cef_dom_form_control_type_t
5770 {
5771     DOM_FORM_CONTROL_TYPE_UNSUPPORTED = 0,
5772     DOM_FORM_CONTROL_TYPE_BUTTON_BUTTON = 1,
5773     DOM_FORM_CONTROL_TYPE_BUTTON_SUBMIT = 2,
5774     DOM_FORM_CONTROL_TYPE_BUTTON_RESET = 3,
5775     DOM_FORM_CONTROL_TYPE_BUTTON_SELECT_LIST = 4,
5776     DOM_FORM_CONTROL_TYPE_BUTTON_POPOVER = 5,
5777     DOM_FORM_CONTROL_TYPE_FIELDSET = 6,
5778     DOM_FORM_CONTROL_TYPE_INPUT_BUTTON = 7,
5779     DOM_FORM_CONTROL_TYPE_INPUT_CHECKBOX = 8,
5780     DOM_FORM_CONTROL_TYPE_INPUT_COLOR = 9,
5781     DOM_FORM_CONTROL_TYPE_INPUT_DATE = 10,
5782     DOM_FORM_CONTROL_TYPE_INPUT_DATETIME_LOCAL = 11,
5783     DOM_FORM_CONTROL_TYPE_INPUT_EMAIL = 12,
5784     DOM_FORM_CONTROL_TYPE_INPUT_FILE = 13,
5785     DOM_FORM_CONTROL_TYPE_INPUT_HIDDEN = 14,
5786     DOM_FORM_CONTROL_TYPE_INPUT_IMAGE = 15,
5787     DOM_FORM_CONTROL_TYPE_INPUT_MONTH = 16,
5788     DOM_FORM_CONTROL_TYPE_INPUT_NUMBER = 17,
5789     DOM_FORM_CONTROL_TYPE_INPUT_PASSWORD = 18,
5790     DOM_FORM_CONTROL_TYPE_INPUT_RADIO = 19,
5791     DOM_FORM_CONTROL_TYPE_INPUT_RANGE = 20,
5792     DOM_FORM_CONTROL_TYPE_INPUT_RESET = 21,
5793     DOM_FORM_CONTROL_TYPE_INPUT_SEARCH = 22,
5794     DOM_FORM_CONTROL_TYPE_INPUT_SUBMIT = 23,
5795     DOM_FORM_CONTROL_TYPE_INPUT_TELEPHONE = 24,
5796     DOM_FORM_CONTROL_TYPE_INPUT_TEXT = 25,
5797     DOM_FORM_CONTROL_TYPE_INPUT_TIME = 26,
5798     DOM_FORM_CONTROL_TYPE_INPUT_URL = 27,
5799     DOM_FORM_CONTROL_TYPE_INPUT_WEEK = 28,
5800     DOM_FORM_CONTROL_TYPE_OUTPUT = 29,
5801     DOM_FORM_CONTROL_TYPE_SELECT_ONE = 30,
5802     DOM_FORM_CONTROL_TYPE_SELECT_MULTIPLE = 31,
5803     DOM_FORM_CONTROL_TYPE_SELECT_LIST = 32,
5804     DOM_FORM_CONTROL_TYPE_TEXT_AREA = 33
5805 }
5806 
5807 alias DOM_FORM_CONTROL_TYPE_UNSUPPORTED = cef_dom_form_control_type_t.DOM_FORM_CONTROL_TYPE_UNSUPPORTED;
5808 alias DOM_FORM_CONTROL_TYPE_BUTTON_BUTTON = cef_dom_form_control_type_t.DOM_FORM_CONTROL_TYPE_BUTTON_BUTTON;
5809 alias DOM_FORM_CONTROL_TYPE_BUTTON_SUBMIT = cef_dom_form_control_type_t.DOM_FORM_CONTROL_TYPE_BUTTON_SUBMIT;
5810 alias DOM_FORM_CONTROL_TYPE_BUTTON_RESET = cef_dom_form_control_type_t.DOM_FORM_CONTROL_TYPE_BUTTON_RESET;
5811 alias DOM_FORM_CONTROL_TYPE_BUTTON_SELECT_LIST = cef_dom_form_control_type_t.DOM_FORM_CONTROL_TYPE_BUTTON_SELECT_LIST;
5812 alias DOM_FORM_CONTROL_TYPE_BUTTON_POPOVER = cef_dom_form_control_type_t.DOM_FORM_CONTROL_TYPE_BUTTON_POPOVER;
5813 alias DOM_FORM_CONTROL_TYPE_FIELDSET = cef_dom_form_control_type_t.DOM_FORM_CONTROL_TYPE_FIELDSET;
5814 alias DOM_FORM_CONTROL_TYPE_INPUT_BUTTON = cef_dom_form_control_type_t.DOM_FORM_CONTROL_TYPE_INPUT_BUTTON;
5815 alias DOM_FORM_CONTROL_TYPE_INPUT_CHECKBOX = cef_dom_form_control_type_t.DOM_FORM_CONTROL_TYPE_INPUT_CHECKBOX;
5816 alias DOM_FORM_CONTROL_TYPE_INPUT_COLOR = cef_dom_form_control_type_t.DOM_FORM_CONTROL_TYPE_INPUT_COLOR;
5817 alias DOM_FORM_CONTROL_TYPE_INPUT_DATE = cef_dom_form_control_type_t.DOM_FORM_CONTROL_TYPE_INPUT_DATE;
5818 alias DOM_FORM_CONTROL_TYPE_INPUT_DATETIME_LOCAL = cef_dom_form_control_type_t.DOM_FORM_CONTROL_TYPE_INPUT_DATETIME_LOCAL;
5819 alias DOM_FORM_CONTROL_TYPE_INPUT_EMAIL = cef_dom_form_control_type_t.DOM_FORM_CONTROL_TYPE_INPUT_EMAIL;
5820 alias DOM_FORM_CONTROL_TYPE_INPUT_FILE = cef_dom_form_control_type_t.DOM_FORM_CONTROL_TYPE_INPUT_FILE;
5821 alias DOM_FORM_CONTROL_TYPE_INPUT_HIDDEN = cef_dom_form_control_type_t.DOM_FORM_CONTROL_TYPE_INPUT_HIDDEN;
5822 alias DOM_FORM_CONTROL_TYPE_INPUT_IMAGE = cef_dom_form_control_type_t.DOM_FORM_CONTROL_TYPE_INPUT_IMAGE;
5823 alias DOM_FORM_CONTROL_TYPE_INPUT_MONTH = cef_dom_form_control_type_t.DOM_FORM_CONTROL_TYPE_INPUT_MONTH;
5824 alias DOM_FORM_CONTROL_TYPE_INPUT_NUMBER = cef_dom_form_control_type_t.DOM_FORM_CONTROL_TYPE_INPUT_NUMBER;
5825 alias DOM_FORM_CONTROL_TYPE_INPUT_PASSWORD = cef_dom_form_control_type_t.DOM_FORM_CONTROL_TYPE_INPUT_PASSWORD;
5826 alias DOM_FORM_CONTROL_TYPE_INPUT_RADIO = cef_dom_form_control_type_t.DOM_FORM_CONTROL_TYPE_INPUT_RADIO;
5827 alias DOM_FORM_CONTROL_TYPE_INPUT_RANGE = cef_dom_form_control_type_t.DOM_FORM_CONTROL_TYPE_INPUT_RANGE;
5828 alias DOM_FORM_CONTROL_TYPE_INPUT_RESET = cef_dom_form_control_type_t.DOM_FORM_CONTROL_TYPE_INPUT_RESET;
5829 alias DOM_FORM_CONTROL_TYPE_INPUT_SEARCH = cef_dom_form_control_type_t.DOM_FORM_CONTROL_TYPE_INPUT_SEARCH;
5830 alias DOM_FORM_CONTROL_TYPE_INPUT_SUBMIT = cef_dom_form_control_type_t.DOM_FORM_CONTROL_TYPE_INPUT_SUBMIT;
5831 alias DOM_FORM_CONTROL_TYPE_INPUT_TELEPHONE = cef_dom_form_control_type_t.DOM_FORM_CONTROL_TYPE_INPUT_TELEPHONE;
5832 alias DOM_FORM_CONTROL_TYPE_INPUT_TEXT = cef_dom_form_control_type_t.DOM_FORM_CONTROL_TYPE_INPUT_TEXT;
5833 alias DOM_FORM_CONTROL_TYPE_INPUT_TIME = cef_dom_form_control_type_t.DOM_FORM_CONTROL_TYPE_INPUT_TIME;
5834 alias DOM_FORM_CONTROL_TYPE_INPUT_URL = cef_dom_form_control_type_t.DOM_FORM_CONTROL_TYPE_INPUT_URL;
5835 alias DOM_FORM_CONTROL_TYPE_INPUT_WEEK = cef_dom_form_control_type_t.DOM_FORM_CONTROL_TYPE_INPUT_WEEK;
5836 alias DOM_FORM_CONTROL_TYPE_OUTPUT = cef_dom_form_control_type_t.DOM_FORM_CONTROL_TYPE_OUTPUT;
5837 alias DOM_FORM_CONTROL_TYPE_SELECT_ONE = cef_dom_form_control_type_t.DOM_FORM_CONTROL_TYPE_SELECT_ONE;
5838 alias DOM_FORM_CONTROL_TYPE_SELECT_MULTIPLE = cef_dom_form_control_type_t.DOM_FORM_CONTROL_TYPE_SELECT_MULTIPLE;
5839 alias DOM_FORM_CONTROL_TYPE_SELECT_LIST = cef_dom_form_control_type_t.DOM_FORM_CONTROL_TYPE_SELECT_LIST;
5840 alias DOM_FORM_CONTROL_TYPE_TEXT_AREA = cef_dom_form_control_type_t.DOM_FORM_CONTROL_TYPE_TEXT_AREA;
5841 
5842 ///
5843 /// Supported file dialog modes.
5844 ///
5845 enum cef_file_dialog_mode_t
5846 {
5847     ///
5848     /// Requires that the file exists before allowing the user to pick it.
5849     ///
5850     FILE_DIALOG_OPEN = 0,
5851 
5852     ///
5853     /// Like Open, but allows picking multiple files to open.
5854     ///
5855     FILE_DIALOG_OPEN_MULTIPLE = 1,
5856 
5857     ///
5858     /// Like Open, but selects a folder to open.
5859     ///
5860     FILE_DIALOG_OPEN_FOLDER = 2,
5861 
5862     ///
5863     /// Allows picking a nonexistent file, and prompts to overwrite if the file
5864     /// already exists.
5865     ///
5866     FILE_DIALOG_SAVE = 3
5867 }
5868 
5869 alias FILE_DIALOG_OPEN = cef_file_dialog_mode_t.FILE_DIALOG_OPEN;
5870 alias FILE_DIALOG_OPEN_MULTIPLE = cef_file_dialog_mode_t.FILE_DIALOG_OPEN_MULTIPLE;
5871 alias FILE_DIALOG_OPEN_FOLDER = cef_file_dialog_mode_t.FILE_DIALOG_OPEN_FOLDER;
5872 alias FILE_DIALOG_SAVE = cef_file_dialog_mode_t.FILE_DIALOG_SAVE;
5873 
5874 ///
5875 /// Print job color mode values.
5876 ///
5877 enum cef_color_model_t
5878 {
5879     COLOR_MODEL_UNKNOWN = 0,
5880     COLOR_MODEL_GRAY = 1,
5881     COLOR_MODEL_COLOR = 2,
5882     COLOR_MODEL_CMYK = 3,
5883     COLOR_MODEL_CMY = 4,
5884     COLOR_MODEL_KCMY = 5,
5885     COLOR_MODEL_CMY_K = 6, // CMY_K represents CMY+K.
5886     COLOR_MODEL_BLACK = 7,
5887     COLOR_MODEL_GRAYSCALE = 8,
5888     COLOR_MODEL_RGB = 9,
5889     COLOR_MODEL_RGB16 = 10,
5890     COLOR_MODEL_RGBA = 11,
5891     COLOR_MODEL_COLORMODE_COLOR = 12, // Used in samsung printer ppds.
5892     COLOR_MODEL_COLORMODE_MONOCHROME = 13, // Used in samsung printer ppds.
5893     COLOR_MODEL_HP_COLOR_COLOR = 14, // Used in HP color printer ppds.
5894     COLOR_MODEL_HP_COLOR_BLACK = 15, // Used in HP color printer ppds.
5895     COLOR_MODEL_PRINTOUTMODE_NORMAL = 16, // Used in foomatic ppds.
5896     COLOR_MODEL_PRINTOUTMODE_NORMAL_GRAY = 17, // Used in foomatic ppds.
5897     COLOR_MODEL_PROCESSCOLORMODEL_CMYK = 18, // Used in canon printer ppds.
5898     COLOR_MODEL_PROCESSCOLORMODEL_GREYSCALE = 19, // Used in canon printer ppds.
5899     COLOR_MODEL_PROCESSCOLORMODEL_RGB = 20 // Used in canon printer ppds
5900 }
5901 
5902 alias COLOR_MODEL_UNKNOWN = cef_color_model_t.COLOR_MODEL_UNKNOWN;
5903 alias COLOR_MODEL_GRAY = cef_color_model_t.COLOR_MODEL_GRAY;
5904 alias COLOR_MODEL_COLOR = cef_color_model_t.COLOR_MODEL_COLOR;
5905 alias COLOR_MODEL_CMYK = cef_color_model_t.COLOR_MODEL_CMYK;
5906 alias COLOR_MODEL_CMY = cef_color_model_t.COLOR_MODEL_CMY;
5907 alias COLOR_MODEL_KCMY = cef_color_model_t.COLOR_MODEL_KCMY;
5908 alias COLOR_MODEL_CMY_K = cef_color_model_t.COLOR_MODEL_CMY_K;
5909 alias COLOR_MODEL_BLACK = cef_color_model_t.COLOR_MODEL_BLACK;
5910 alias COLOR_MODEL_GRAYSCALE = cef_color_model_t.COLOR_MODEL_GRAYSCALE;
5911 alias COLOR_MODEL_RGB = cef_color_model_t.COLOR_MODEL_RGB;
5912 alias COLOR_MODEL_RGB16 = cef_color_model_t.COLOR_MODEL_RGB16;
5913 alias COLOR_MODEL_RGBA = cef_color_model_t.COLOR_MODEL_RGBA;
5914 alias COLOR_MODEL_COLORMODE_COLOR = cef_color_model_t.COLOR_MODEL_COLORMODE_COLOR;
5915 alias COLOR_MODEL_COLORMODE_MONOCHROME = cef_color_model_t.COLOR_MODEL_COLORMODE_MONOCHROME;
5916 alias COLOR_MODEL_HP_COLOR_COLOR = cef_color_model_t.COLOR_MODEL_HP_COLOR_COLOR;
5917 alias COLOR_MODEL_HP_COLOR_BLACK = cef_color_model_t.COLOR_MODEL_HP_COLOR_BLACK;
5918 alias COLOR_MODEL_PRINTOUTMODE_NORMAL = cef_color_model_t.COLOR_MODEL_PRINTOUTMODE_NORMAL;
5919 alias COLOR_MODEL_PRINTOUTMODE_NORMAL_GRAY = cef_color_model_t.COLOR_MODEL_PRINTOUTMODE_NORMAL_GRAY;
5920 alias COLOR_MODEL_PROCESSCOLORMODEL_CMYK = cef_color_model_t.COLOR_MODEL_PROCESSCOLORMODEL_CMYK;
5921 alias COLOR_MODEL_PROCESSCOLORMODEL_GREYSCALE = cef_color_model_t.COLOR_MODEL_PROCESSCOLORMODEL_GREYSCALE;
5922 alias COLOR_MODEL_PROCESSCOLORMODEL_RGB = cef_color_model_t.COLOR_MODEL_PROCESSCOLORMODEL_RGB;
5923 
5924 ///
5925 /// Print job duplex mode values.
5926 ///
5927 enum cef_duplex_mode_t
5928 {
5929     DUPLEX_MODE_UNKNOWN = -1,
5930     DUPLEX_MODE_SIMPLEX = 0,
5931     DUPLEX_MODE_LONG_EDGE = 1,
5932     DUPLEX_MODE_SHORT_EDGE = 2
5933 }
5934 
5935 alias DUPLEX_MODE_UNKNOWN = cef_duplex_mode_t.DUPLEX_MODE_UNKNOWN;
5936 alias DUPLEX_MODE_SIMPLEX = cef_duplex_mode_t.DUPLEX_MODE_SIMPLEX;
5937 alias DUPLEX_MODE_LONG_EDGE = cef_duplex_mode_t.DUPLEX_MODE_LONG_EDGE;
5938 alias DUPLEX_MODE_SHORT_EDGE = cef_duplex_mode_t.DUPLEX_MODE_SHORT_EDGE;
5939 
5940 ///
5941 /// Cursor type values.
5942 ///
5943 enum cef_cursor_type_t
5944 {
5945     CT_POINTER = 0,
5946     CT_CROSS = 1,
5947     CT_HAND = 2,
5948     CT_IBEAM = 3,
5949     CT_WAIT = 4,
5950     CT_HELP = 5,
5951     CT_EASTRESIZE = 6,
5952     CT_NORTHRESIZE = 7,
5953     CT_NORTHEASTRESIZE = 8,
5954     CT_NORTHWESTRESIZE = 9,
5955     CT_SOUTHRESIZE = 10,
5956     CT_SOUTHEASTRESIZE = 11,
5957     CT_SOUTHWESTRESIZE = 12,
5958     CT_WESTRESIZE = 13,
5959     CT_NORTHSOUTHRESIZE = 14,
5960     CT_EASTWESTRESIZE = 15,
5961     CT_NORTHEASTSOUTHWESTRESIZE = 16,
5962     CT_NORTHWESTSOUTHEASTRESIZE = 17,
5963     CT_COLUMNRESIZE = 18,
5964     CT_ROWRESIZE = 19,
5965     CT_MIDDLEPANNING = 20,
5966     CT_EASTPANNING = 21,
5967     CT_NORTHPANNING = 22,
5968     CT_NORTHEASTPANNING = 23,
5969     CT_NORTHWESTPANNING = 24,
5970     CT_SOUTHPANNING = 25,
5971     CT_SOUTHEASTPANNING = 26,
5972     CT_SOUTHWESTPANNING = 27,
5973     CT_WESTPANNING = 28,
5974     CT_MOVE = 29,
5975     CT_VERTICALTEXT = 30,
5976     CT_CELL = 31,
5977     CT_CONTEXTMENU = 32,
5978     CT_ALIAS = 33,
5979     CT_PROGRESS = 34,
5980     CT_NODROP = 35,
5981     CT_COPY = 36,
5982     CT_NONE = 37,
5983     CT_NOTALLOWED = 38,
5984     CT_ZOOMIN = 39,
5985     CT_ZOOMOUT = 40,
5986     CT_GRAB = 41,
5987     CT_GRABBING = 42,
5988     CT_MIDDLE_PANNING_VERTICAL = 43,
5989     CT_MIDDLE_PANNING_HORIZONTAL = 44,
5990     CT_CUSTOM = 45,
5991     CT_DND_NONE = 46,
5992     CT_DND_MOVE = 47,
5993     CT_DND_COPY = 48,
5994     CT_DND_LINK = 49
5995 }
5996 
5997 alias CT_POINTER = cef_cursor_type_t.CT_POINTER;
5998 alias CT_CROSS = cef_cursor_type_t.CT_CROSS;
5999 alias CT_HAND = cef_cursor_type_t.CT_HAND;
6000 alias CT_IBEAM = cef_cursor_type_t.CT_IBEAM;
6001 alias CT_WAIT = cef_cursor_type_t.CT_WAIT;
6002 alias CT_HELP = cef_cursor_type_t.CT_HELP;
6003 alias CT_EASTRESIZE = cef_cursor_type_t.CT_EASTRESIZE;
6004 alias CT_NORTHRESIZE = cef_cursor_type_t.CT_NORTHRESIZE;
6005 alias CT_NORTHEASTRESIZE = cef_cursor_type_t.CT_NORTHEASTRESIZE;
6006 alias CT_NORTHWESTRESIZE = cef_cursor_type_t.CT_NORTHWESTRESIZE;
6007 alias CT_SOUTHRESIZE = cef_cursor_type_t.CT_SOUTHRESIZE;
6008 alias CT_SOUTHEASTRESIZE = cef_cursor_type_t.CT_SOUTHEASTRESIZE;
6009 alias CT_SOUTHWESTRESIZE = cef_cursor_type_t.CT_SOUTHWESTRESIZE;
6010 alias CT_WESTRESIZE = cef_cursor_type_t.CT_WESTRESIZE;
6011 alias CT_NORTHSOUTHRESIZE = cef_cursor_type_t.CT_NORTHSOUTHRESIZE;
6012 alias CT_EASTWESTRESIZE = cef_cursor_type_t.CT_EASTWESTRESIZE;
6013 alias CT_NORTHEASTSOUTHWESTRESIZE = cef_cursor_type_t.CT_NORTHEASTSOUTHWESTRESIZE;
6014 alias CT_NORTHWESTSOUTHEASTRESIZE = cef_cursor_type_t.CT_NORTHWESTSOUTHEASTRESIZE;
6015 alias CT_COLUMNRESIZE = cef_cursor_type_t.CT_COLUMNRESIZE;
6016 alias CT_ROWRESIZE = cef_cursor_type_t.CT_ROWRESIZE;
6017 alias CT_MIDDLEPANNING = cef_cursor_type_t.CT_MIDDLEPANNING;
6018 alias CT_EASTPANNING = cef_cursor_type_t.CT_EASTPANNING;
6019 alias CT_NORTHPANNING = cef_cursor_type_t.CT_NORTHPANNING;
6020 alias CT_NORTHEASTPANNING = cef_cursor_type_t.CT_NORTHEASTPANNING;
6021 alias CT_NORTHWESTPANNING = cef_cursor_type_t.CT_NORTHWESTPANNING;
6022 alias CT_SOUTHPANNING = cef_cursor_type_t.CT_SOUTHPANNING;
6023 alias CT_SOUTHEASTPANNING = cef_cursor_type_t.CT_SOUTHEASTPANNING;
6024 alias CT_SOUTHWESTPANNING = cef_cursor_type_t.CT_SOUTHWESTPANNING;
6025 alias CT_WESTPANNING = cef_cursor_type_t.CT_WESTPANNING;
6026 alias CT_MOVE = cef_cursor_type_t.CT_MOVE;
6027 alias CT_VERTICALTEXT = cef_cursor_type_t.CT_VERTICALTEXT;
6028 alias CT_CELL = cef_cursor_type_t.CT_CELL;
6029 alias CT_CONTEXTMENU = cef_cursor_type_t.CT_CONTEXTMENU;
6030 alias CT_ALIAS = cef_cursor_type_t.CT_ALIAS;
6031 alias CT_PROGRESS = cef_cursor_type_t.CT_PROGRESS;
6032 alias CT_NODROP = cef_cursor_type_t.CT_NODROP;
6033 alias CT_COPY = cef_cursor_type_t.CT_COPY;
6034 alias CT_NONE = cef_cursor_type_t.CT_NONE;
6035 alias CT_NOTALLOWED = cef_cursor_type_t.CT_NOTALLOWED;
6036 alias CT_ZOOMIN = cef_cursor_type_t.CT_ZOOMIN;
6037 alias CT_ZOOMOUT = cef_cursor_type_t.CT_ZOOMOUT;
6038 alias CT_GRAB = cef_cursor_type_t.CT_GRAB;
6039 alias CT_GRABBING = cef_cursor_type_t.CT_GRABBING;
6040 alias CT_MIDDLE_PANNING_VERTICAL = cef_cursor_type_t.CT_MIDDLE_PANNING_VERTICAL;
6041 alias CT_MIDDLE_PANNING_HORIZONTAL = cef_cursor_type_t.CT_MIDDLE_PANNING_HORIZONTAL;
6042 alias CT_CUSTOM = cef_cursor_type_t.CT_CUSTOM;
6043 alias CT_DND_NONE = cef_cursor_type_t.CT_DND_NONE;
6044 alias CT_DND_MOVE = cef_cursor_type_t.CT_DND_MOVE;
6045 alias CT_DND_COPY = cef_cursor_type_t.CT_DND_COPY;
6046 alias CT_DND_LINK = cef_cursor_type_t.CT_DND_LINK;
6047 
6048 ///
6049 /// Structure representing cursor information. |buffer| will be
6050 /// |size.width|*|size.height|*4 bytes in size and represents a BGRA image with
6051 /// an upper-left origin.
6052 ///
6053 struct cef_cursor_info_t
6054 {
6055 
6056     cef_point_t hotspot;
6057     float image_scale_factor;
6058     void* buffer;
6059 
6060     cef_size_t size;
6061 }
6062 
6063 
6064 
6065 ///
6066 /// URI unescape rules passed to CefURIDecode().
6067 ///
6068 enum cef_uri_unescape_rule_t
6069 {
6070     ///
6071     /// Don't unescape anything at all.
6072     ///
6073     UU_NONE = 0,
6074 
6075     ///
6076     /// Don't unescape anything special, but all normal unescaping will happen.
6077     /// This is a placeholder and can't be combined with other flags (since it's
6078     /// just the absence of them). All other unescape rules imply "normal" in
6079     /// addition to their special meaning. Things like escaped letters, digits,
6080     /// and most symbols will get unescaped with this mode.
6081     ///
6082     UU_NORMAL = 1 << 0,
6083 
6084     ///
6085     /// Convert %20 to spaces. In some places where we're showing URLs, we may
6086     /// want this. In places where the URL may be copied and pasted out, then
6087     /// you wouldn't want this since it might not be interpreted in one piece
6088     /// by other applications.
6089     ///
6090     UU_SPACES = 1 << 1,
6091 
6092     ///
6093     /// Unescapes '/' and '\\'. If these characters were unescaped, the resulting
6094     /// URL won't be the same as the source one. Moreover, they are dangerous to
6095     /// unescape in strings that will be used as file paths or names. This value
6096     /// should only be used when slashes don't have special meaning, like data
6097     /// URLs.
6098     ///
6099     UU_PATH_SEPARATORS = 1 << 2,
6100 
6101     ///
6102     /// Unescapes various characters that will change the meaning of URLs,
6103     /// including '%', '+', '&', '#'. Does not unescape path separators.
6104     /// If these characters were unescaped, the resulting URL won't be the same
6105     /// as the source one. This flag is used when generating final output like
6106     /// filenames for URLs where we won't be interpreting as a URL and want to do
6107     /// as much unescaping as possible.
6108     ///
6109     UU_URL_SPECIAL_CHARS_EXCEPT_PATH_SEPARATORS = 1 << 3,
6110 
6111     ///
6112     /// URL queries use "+" for space. This flag controls that replacement.
6113     ///
6114     UU_REPLACE_PLUS_WITH_SPACE = 1 << 4
6115 }
6116 
6117 alias UU_NONE = cef_uri_unescape_rule_t.UU_NONE;
6118 alias UU_NORMAL = cef_uri_unescape_rule_t.UU_NORMAL;
6119 alias UU_SPACES = cef_uri_unescape_rule_t.UU_SPACES;
6120 alias UU_PATH_SEPARATORS = cef_uri_unescape_rule_t.UU_PATH_SEPARATORS;
6121 alias UU_URL_SPECIAL_CHARS_EXCEPT_PATH_SEPARATORS = cef_uri_unescape_rule_t.UU_URL_SPECIAL_CHARS_EXCEPT_PATH_SEPARATORS;
6122 alias UU_REPLACE_PLUS_WITH_SPACE = cef_uri_unescape_rule_t.UU_REPLACE_PLUS_WITH_SPACE;
6123 
6124 ///
6125 /// Options that can be passed to CefParseJSON.
6126 ///
6127 enum cef_json_parser_options_t
6128 {
6129     ///
6130     /// Parses the input strictly according to RFC 4627. See comments in
6131     /// Chromium's base/json/json_reader.h file for known limitations/
6132     /// deviations from the RFC.
6133     ///
6134     JSON_PARSER_RFC = 0,
6135 
6136     ///
6137     /// Allows commas to exist after the last element in structures.
6138     ///
6139     JSON_PARSER_ALLOW_TRAILING_COMMAS = 1 << 0
6140 }
6141 
6142 alias JSON_PARSER_RFC = cef_json_parser_options_t.JSON_PARSER_RFC;
6143 alias JSON_PARSER_ALLOW_TRAILING_COMMAS = cef_json_parser_options_t.JSON_PARSER_ALLOW_TRAILING_COMMAS;
6144 
6145 ///
6146 /// Options that can be passed to CefWriteJSON.
6147 ///
6148 enum cef_json_writer_options_t
6149 {
6150     ///
6151     /// Default behavior.
6152     ///
6153     JSON_WRITER_DEFAULT = 0,
6154 
6155     ///
6156     /// This option instructs the writer that if a Binary value is encountered,
6157     /// the value (and key if within a dictionary) will be omitted from the
6158     /// output, and success will be returned. Otherwise, if a binary value is
6159     /// encountered, failure will be returned.
6160     ///
6161     JSON_WRITER_OMIT_BINARY_VALUES = 1 << 0,
6162 
6163     ///
6164     /// This option instructs the writer to write doubles that have no fractional
6165     /// part as a normal integer (i.e., without using exponential notation
6166     /// or appending a '.0') as long as the value is within the range of a
6167     /// 64-bit int.
6168     ///
6169     JSON_WRITER_OMIT_DOUBLE_TYPE_PRESERVATION = 1 << 1,
6170 
6171     ///
6172     /// Return a slightly nicer formatted json string (pads with whitespace to
6173     /// help with readability).
6174     ///
6175     JSON_WRITER_PRETTY_PRINT = 1 << 2
6176 }
6177 
6178 alias JSON_WRITER_DEFAULT = cef_json_writer_options_t.JSON_WRITER_DEFAULT;
6179 alias JSON_WRITER_OMIT_BINARY_VALUES = cef_json_writer_options_t.JSON_WRITER_OMIT_BINARY_VALUES;
6180 alias JSON_WRITER_OMIT_DOUBLE_TYPE_PRESERVATION = cef_json_writer_options_t.JSON_WRITER_OMIT_DOUBLE_TYPE_PRESERVATION;
6181 alias JSON_WRITER_PRETTY_PRINT = cef_json_writer_options_t.JSON_WRITER_PRETTY_PRINT;
6182 
6183 ///
6184 /// Margin type for PDF printing.
6185 ///
6186 enum cef_pdf_print_margin_type_t
6187 {
6188     ///
6189     /// Default margins of 1cm (~0.4 inches).
6190     ///
6191     PDF_PRINT_MARGIN_DEFAULT = 0,
6192 
6193     ///
6194     /// No margins.
6195     ///
6196     PDF_PRINT_MARGIN_NONE = 1,
6197 
6198     ///
6199     /// Custom margins using the |margin_*| values from cef_pdf_print_settings_t.
6200     ///
6201     PDF_PRINT_MARGIN_CUSTOM = 2
6202 }
6203 
6204 alias PDF_PRINT_MARGIN_DEFAULT = cef_pdf_print_margin_type_t.PDF_PRINT_MARGIN_DEFAULT;
6205 alias PDF_PRINT_MARGIN_NONE = cef_pdf_print_margin_type_t.PDF_PRINT_MARGIN_NONE;
6206 alias PDF_PRINT_MARGIN_CUSTOM = cef_pdf_print_margin_type_t.PDF_PRINT_MARGIN_CUSTOM;
6207 
6208 ///
6209 /// Structure representing PDF print settings. These values match the parameters
6210 /// supported by the DevTools Page.printToPDF function. See
6211 /// https://chromedevtools.github.io/devtools-protocol/tot/Page/#method-printToPDF
6212 ///
6213 struct cef_pdf_print_settings_t
6214 {
6215     ///
6216     /// Set to true (1) for landscape mode or false (0) for portrait mode.
6217     ///
6218     int landscape;
6219 
6220     ///
6221     /// Set to true (1) to print background graphics.
6222     ///
6223     int print_background;
6224 
6225     ///
6226     /// The percentage to scale the PDF by before printing (e.g. .5 is 50%).
6227     /// If this value is less than or equal to zero the default value of 1.0
6228     /// will be used.
6229     ///
6230     double scale;
6231 
6232     ///
6233     /// Output paper size in inches. If either of these values is less than or
6234     /// equal to zero then the default paper size (letter, 8.5 x 11 inches) will
6235     /// be used.
6236     ///
6237     double paper_width;
6238     double paper_height;
6239 
6240     ///
6241     /// Set to true (1) to prefer page size as defined by css. Defaults to false
6242     /// (0), in which case the content will be scaled to fit the paper size.
6243     ///
6244     int prefer_css_page_size;
6245 
6246     ///
6247     /// Margin type.
6248     ///
6249     cef_pdf_print_margin_type_t margin_type;
6250 
6251     ///
6252     /// Margins in inches. Only used if |margin_type| is set to
6253     /// PDF_PRINT_MARGIN_CUSTOM.
6254     ///
6255     double margin_top;
6256     double margin_right;
6257     double margin_bottom;
6258     double margin_left;
6259 
6260     ///
6261     /// Paper ranges to print, one based, e.g., '1-5, 8, 11-13'. Pages are printed
6262     /// in the document order, not in the order specified, and no more than once.
6263     /// Defaults to empty string, which implies the entire document is printed.
6264     /// The page numbers are quietly capped to actual page count of the document,
6265     /// and ranges beyond the end of the document are ignored. If this results in
6266     /// no pages to print, an error is reported. It is an error to specify a range
6267     /// with start greater than end.
6268     ///
6269     cef_string_t page_ranges;
6270 
6271     ///
6272     /// Set to true (1) to display the header and/or footer. Modify
6273     /// |header_template| and/or |footer_template| to customize the display.
6274     ///
6275     int display_header_footer;
6276 
6277     ///
6278     /// HTML template for the print header. Only displayed if
6279     /// |display_header_footer| is true (1). Should be valid HTML markup with
6280     /// the following classes used to inject printing values into them:
6281     ///
6282     /// - date: formatted print date
6283     /// - title: document title
6284     /// - url: document location
6285     /// - pageNumber: current page number
6286     /// - totalPages: total pages in the document
6287     ///
6288     /// For example, "<span class=title></span>" would generate a span containing
6289     /// the title.
6290     ///
6291     cef_string_t header_template;
6292 
6293     ///
6294     /// HTML template for the print footer. Only displayed if
6295     /// |display_header_footer| is true (1). Uses the same format as
6296     /// |header_template|.
6297     ///
6298     cef_string_t footer_template;
6299 
6300     ///
6301     /// Set to true (1) to generate tagged (accessible) PDF.
6302     ///
6303     int generate_tagged_pdf;
6304 
6305     ///
6306     /// Set to true (1) to generate a document outline.
6307     ///
6308     int generate_document_outline;
6309 }
6310 
6311 
6312 
6313 ///
6314 /// Supported UI scale factors for the platform. SCALE_FACTOR_NONE is used for
6315 /// density independent resources such as string, html/js files or an image that
6316 /// can be used for any scale factors (such as wallpapers).
6317 ///
6318 enum cef_scale_factor_t
6319 {
6320     SCALE_FACTOR_NONE = 0,
6321     SCALE_FACTOR_100P = 1,
6322     SCALE_FACTOR_125P = 2,
6323     SCALE_FACTOR_133P = 3,
6324     SCALE_FACTOR_140P = 4,
6325     SCALE_FACTOR_150P = 5,
6326     SCALE_FACTOR_180P = 6,
6327     SCALE_FACTOR_200P = 7,
6328     SCALE_FACTOR_250P = 8,
6329     SCALE_FACTOR_300P = 9
6330 }
6331 
6332 alias SCALE_FACTOR_NONE = cef_scale_factor_t.SCALE_FACTOR_NONE;
6333 alias SCALE_FACTOR_100P = cef_scale_factor_t.SCALE_FACTOR_100P;
6334 alias SCALE_FACTOR_125P = cef_scale_factor_t.SCALE_FACTOR_125P;
6335 alias SCALE_FACTOR_133P = cef_scale_factor_t.SCALE_FACTOR_133P;
6336 alias SCALE_FACTOR_140P = cef_scale_factor_t.SCALE_FACTOR_140P;
6337 alias SCALE_FACTOR_150P = cef_scale_factor_t.SCALE_FACTOR_150P;
6338 alias SCALE_FACTOR_180P = cef_scale_factor_t.SCALE_FACTOR_180P;
6339 alias SCALE_FACTOR_200P = cef_scale_factor_t.SCALE_FACTOR_200P;
6340 alias SCALE_FACTOR_250P = cef_scale_factor_t.SCALE_FACTOR_250P;
6341 alias SCALE_FACTOR_300P = cef_scale_factor_t.SCALE_FACTOR_300P;
6342 
6343 ///
6344 /// Policy for how the Referrer HTTP header value will be sent during
6345 /// navigation. If the `--no-referrers` command-line flag is specified then the
6346 /// policy value will be ignored and the Referrer value will never be sent. Must
6347 /// be kept synchronized with net::URLRequest::ReferrerPolicy from Chromium.
6348 ///
6349 enum cef_referrer_policy_t
6350 {
6351     ///
6352     /// Clear the referrer header if the header value is HTTPS but the request
6353     /// destination is HTTP. This is the default behavior.
6354     ///
6355     REFERRER_POLICY_CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE = 0,
6356     REFERRER_POLICY_DEFAULT = REFERRER_POLICY_CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE,
6357 
6358     ///
6359     /// A slight variant on CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE:
6360     /// If the request destination is HTTP, an HTTPS referrer will be cleared. If
6361     /// the request's destination is cross-origin with the referrer (but does not
6362     /// downgrade), the referrer's granularity will be stripped down to an origin
6363     /// rather than a full URL. Same-origin requests will send the full referrer.
6364     ///
6365     REFERRER_POLICY_REDUCE_REFERRER_GRANULARITY_ON_TRANSITION_CROSS_ORIGIN = 1,
6366 
6367     ///
6368     /// Strip the referrer down to an origin when the origin of the referrer is
6369     /// different from the destination's origin.
6370     ///
6371     REFERRER_POLICY_ORIGIN_ONLY_ON_TRANSITION_CROSS_ORIGIN = 2,
6372 
6373     ///
6374     /// Never change the referrer.
6375     ///
6376     REFERRER_POLICY_NEVER_CLEAR_REFERRER = 3,
6377 
6378     ///
6379     /// Strip the referrer down to the origin regardless of the redirect location.
6380     ///
6381     REFERRER_POLICY_ORIGIN = 4,
6382 
6383     ///
6384     /// Clear the referrer when the request's referrer is cross-origin with the
6385     /// request's destination.
6386     ///
6387     REFERRER_POLICY_CLEAR_REFERRER_ON_TRANSITION_CROSS_ORIGIN = 5,
6388 
6389     ///
6390     /// Strip the referrer down to the origin, but clear it entirely if the
6391     /// referrer value is HTTPS and the destination is HTTP.
6392     ///
6393     REFERRER_POLICY_ORIGIN_CLEAR_ON_TRANSITION_FROM_SECURE_TO_INSECURE = 6,
6394 
6395     ///
6396     /// Always clear the referrer regardless of the request destination.
6397     ///
6398     REFERRER_POLICY_NO_REFERRER = 7,
6399 
6400     /// Always the last value in this enumeration.
6401     REFERRER_POLICY_LAST_VALUE = REFERRER_POLICY_NO_REFERRER
6402 }
6403 
6404 alias REFERRER_POLICY_CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE = cef_referrer_policy_t.REFERRER_POLICY_CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE;
6405 alias REFERRER_POLICY_DEFAULT = cef_referrer_policy_t.REFERRER_POLICY_DEFAULT;
6406 alias REFERRER_POLICY_REDUCE_REFERRER_GRANULARITY_ON_TRANSITION_CROSS_ORIGIN = cef_referrer_policy_t.REFERRER_POLICY_REDUCE_REFERRER_GRANULARITY_ON_TRANSITION_CROSS_ORIGIN;
6407 alias REFERRER_POLICY_ORIGIN_ONLY_ON_TRANSITION_CROSS_ORIGIN = cef_referrer_policy_t.REFERRER_POLICY_ORIGIN_ONLY_ON_TRANSITION_CROSS_ORIGIN;
6408 alias REFERRER_POLICY_NEVER_CLEAR_REFERRER = cef_referrer_policy_t.REFERRER_POLICY_NEVER_CLEAR_REFERRER;
6409 alias REFERRER_POLICY_ORIGIN = cef_referrer_policy_t.REFERRER_POLICY_ORIGIN;
6410 alias REFERRER_POLICY_CLEAR_REFERRER_ON_TRANSITION_CROSS_ORIGIN = cef_referrer_policy_t.REFERRER_POLICY_CLEAR_REFERRER_ON_TRANSITION_CROSS_ORIGIN;
6411 alias REFERRER_POLICY_ORIGIN_CLEAR_ON_TRANSITION_FROM_SECURE_TO_INSECURE = cef_referrer_policy_t.REFERRER_POLICY_ORIGIN_CLEAR_ON_TRANSITION_FROM_SECURE_TO_INSECURE;
6412 alias REFERRER_POLICY_NO_REFERRER = cef_referrer_policy_t.REFERRER_POLICY_NO_REFERRER;
6413 alias REFERRER_POLICY_LAST_VALUE = cef_referrer_policy_t.REFERRER_POLICY_LAST_VALUE;
6414 
6415 ///
6416 /// Return values for CefResponseFilter::Filter().
6417 ///
6418 enum cef_response_filter_status_t
6419 {
6420     ///
6421     /// Some or all of the pre-filter data was read successfully but more data is
6422     /// needed in order to continue filtering (filtered output is pending).
6423     ///
6424     RESPONSE_FILTER_NEED_MORE_DATA = 0,
6425 
6426     ///
6427     /// Some or all of the pre-filter data was read successfully and all available
6428     /// filtered output has been written.
6429     ///
6430     RESPONSE_FILTER_DONE = 1,
6431 
6432     ///
6433     /// An error occurred during filtering.
6434     ///
6435     RESPONSE_FILTER_ERROR = 2
6436 }
6437 
6438 alias RESPONSE_FILTER_NEED_MORE_DATA = cef_response_filter_status_t.RESPONSE_FILTER_NEED_MORE_DATA;
6439 alias RESPONSE_FILTER_DONE = cef_response_filter_status_t.RESPONSE_FILTER_DONE;
6440 alias RESPONSE_FILTER_ERROR = cef_response_filter_status_t.RESPONSE_FILTER_ERROR;
6441 
6442 ///
6443 /// Describes how to interpret the alpha component of a pixel.
6444 ///
6445 enum cef_alpha_type_t
6446 {
6447     ///
6448     /// No transparency. The alpha component is ignored.
6449     ///
6450     CEF_ALPHA_TYPE_OPAQUE = 0,
6451 
6452     ///
6453     /// Transparency with pre-multiplied alpha component.
6454     ///
6455     CEF_ALPHA_TYPE_PREMULTIPLIED = 1,
6456 
6457     ///
6458     /// Transparency with post-multiplied alpha component.
6459     ///
6460     CEF_ALPHA_TYPE_POSTMULTIPLIED = 2
6461 }
6462 
6463 alias CEF_ALPHA_TYPE_OPAQUE = cef_alpha_type_t.CEF_ALPHA_TYPE_OPAQUE;
6464 alias CEF_ALPHA_TYPE_PREMULTIPLIED = cef_alpha_type_t.CEF_ALPHA_TYPE_PREMULTIPLIED;
6465 alias CEF_ALPHA_TYPE_POSTMULTIPLIED = cef_alpha_type_t.CEF_ALPHA_TYPE_POSTMULTIPLIED;
6466 
6467 ///
6468 /// Text style types. Should be kepy in sync with gfx::TextStyle.
6469 ///
6470 enum cef_text_style_t
6471 {
6472     CEF_TEXT_STYLE_BOLD = 0,
6473     CEF_TEXT_STYLE_ITALIC = 1,
6474     CEF_TEXT_STYLE_STRIKE = 2,
6475     CEF_TEXT_STYLE_DIAGONAL_STRIKE = 3,
6476     CEF_TEXT_STYLE_UNDERLINE = 4
6477 }
6478 
6479 alias CEF_TEXT_STYLE_BOLD = cef_text_style_t.CEF_TEXT_STYLE_BOLD;
6480 alias CEF_TEXT_STYLE_ITALIC = cef_text_style_t.CEF_TEXT_STYLE_ITALIC;
6481 alias CEF_TEXT_STYLE_STRIKE = cef_text_style_t.CEF_TEXT_STYLE_STRIKE;
6482 alias CEF_TEXT_STYLE_DIAGONAL_STRIKE = cef_text_style_t.CEF_TEXT_STYLE_DIAGONAL_STRIKE;
6483 alias CEF_TEXT_STYLE_UNDERLINE = cef_text_style_t.CEF_TEXT_STYLE_UNDERLINE;
6484 
6485 ///
6486 /// Specifies where along the axis the CefBoxLayout child views should be laid
6487 /// out. Should be kept in sync with Chromium's views::LayoutAlignment type.
6488 ///
6489 enum cef_axis_alignment_t
6490 {
6491     /// Child views will be left/top-aligned.
6492     CEF_AXIS_ALIGNMENT_START = 0,
6493 
6494     /// Child views will be center-aligned.
6495     CEF_AXIS_ALIGNMENT_CENTER = 1,
6496 
6497     /// Child views will be right/bottom-aligned.
6498     CEF_AXIS_ALIGNMENT_END = 2,
6499 
6500     /// Child views will be stretched to fit.
6501     CEF_AXIS_ALIGNMENT_STRETCH = 3
6502 }
6503 
6504 alias CEF_AXIS_ALIGNMENT_START = cef_axis_alignment_t.CEF_AXIS_ALIGNMENT_START;
6505 alias CEF_AXIS_ALIGNMENT_CENTER = cef_axis_alignment_t.CEF_AXIS_ALIGNMENT_CENTER;
6506 alias CEF_AXIS_ALIGNMENT_END = cef_axis_alignment_t.CEF_AXIS_ALIGNMENT_END;
6507 alias CEF_AXIS_ALIGNMENT_STRETCH = cef_axis_alignment_t.CEF_AXIS_ALIGNMENT_STRETCH;
6508 
6509 ///
6510 /// Settings used when initializing a CefBoxLayout.
6511 ///
6512 struct cef_box_layout_settings_t
6513 {
6514     ///
6515     /// If true (1) the layout will be horizontal, otherwise the layout will be
6516     /// vertical.
6517     ///
6518     int horizontal;
6519 
6520     ///
6521     /// Adds additional horizontal space between the child view area and the host
6522     /// view border.
6523     ///
6524     int inside_border_horizontal_spacing;
6525 
6526     ///
6527     /// Adds additional vertical space between the child view area and the host
6528     /// view border.
6529     ///
6530     int inside_border_vertical_spacing;
6531 
6532     ///
6533     /// Adds additional space around the child view area.
6534     ///
6535 
6536     cef_insets_t inside_border_insets;
6537 
6538     ///
6539     /// Adds additional space between child views.
6540     ///
6541     int between_child_spacing;
6542 
6543     ///
6544     /// Specifies where along the main axis the child views should be laid out.
6545     ///
6546     cef_axis_alignment_t main_axis_alignment;
6547 
6548     ///
6549     /// Specifies where along the cross axis the child views should be laid out.
6550     ///
6551     cef_axis_alignment_t cross_axis_alignment;
6552 
6553     ///
6554     /// Minimum cross axis size.
6555     ///
6556     int minimum_cross_axis_size;
6557 
6558     ///
6559     /// Default flex for views when none is specified via CefBoxLayout methods.
6560     /// Using the preferred size as the basis, free space along the main axis is
6561     /// distributed to views in the ratio of their flex weights. Similarly, if the
6562     /// views will overflow the parent, space is subtracted in these ratios. A
6563     /// flex of 0 means this view is not resized. Flex values must not be
6564     /// negative.
6565     ///
6566     int default_flex;
6567 }
6568 
6569 
6570 
6571 ///
6572 /// Specifies the button display state.
6573 ///
6574 enum cef_button_state_t
6575 {
6576     CEF_BUTTON_STATE_NORMAL = 0,
6577     CEF_BUTTON_STATE_HOVERED = 1,
6578     CEF_BUTTON_STATE_PRESSED = 2,
6579     CEF_BUTTON_STATE_DISABLED = 3
6580 }
6581 
6582 alias CEF_BUTTON_STATE_NORMAL = cef_button_state_t.CEF_BUTTON_STATE_NORMAL;
6583 alias CEF_BUTTON_STATE_HOVERED = cef_button_state_t.CEF_BUTTON_STATE_HOVERED;
6584 alias CEF_BUTTON_STATE_PRESSED = cef_button_state_t.CEF_BUTTON_STATE_PRESSED;
6585 alias CEF_BUTTON_STATE_DISABLED = cef_button_state_t.CEF_BUTTON_STATE_DISABLED;
6586 
6587 ///
6588 /// Specifies the horizontal text alignment mode.
6589 ///
6590 enum cef_horizontal_alignment_t
6591 {
6592     ///
6593     /// Align the text's left edge with that of its display area.
6594     ///
6595     CEF_HORIZONTAL_ALIGNMENT_LEFT = 0,
6596 
6597     ///
6598     /// Align the text's center with that of its display area.
6599     ///
6600     CEF_HORIZONTAL_ALIGNMENT_CENTER = 1,
6601 
6602     ///
6603     /// Align the text's right edge with that of its display area.
6604     ///
6605     CEF_HORIZONTAL_ALIGNMENT_RIGHT = 2
6606 }
6607 
6608 alias CEF_HORIZONTAL_ALIGNMENT_LEFT = cef_horizontal_alignment_t.CEF_HORIZONTAL_ALIGNMENT_LEFT;
6609 alias CEF_HORIZONTAL_ALIGNMENT_CENTER = cef_horizontal_alignment_t.CEF_HORIZONTAL_ALIGNMENT_CENTER;
6610 alias CEF_HORIZONTAL_ALIGNMENT_RIGHT = cef_horizontal_alignment_t.CEF_HORIZONTAL_ALIGNMENT_RIGHT;
6611 
6612 ///
6613 /// Specifies how a menu will be anchored for non-RTL languages. The opposite
6614 /// position will be used for RTL languages.
6615 ///
6616 enum cef_menu_anchor_position_t
6617 {
6618     CEF_MENU_ANCHOR_TOPLEFT = 0,
6619     CEF_MENU_ANCHOR_TOPRIGHT = 1,
6620     CEF_MENU_ANCHOR_BOTTOMCENTER = 2
6621 }
6622 
6623 alias CEF_MENU_ANCHOR_TOPLEFT = cef_menu_anchor_position_t.CEF_MENU_ANCHOR_TOPLEFT;
6624 alias CEF_MENU_ANCHOR_TOPRIGHT = cef_menu_anchor_position_t.CEF_MENU_ANCHOR_TOPRIGHT;
6625 alias CEF_MENU_ANCHOR_BOTTOMCENTER = cef_menu_anchor_position_t.CEF_MENU_ANCHOR_BOTTOMCENTER;
6626 
6627 ///
6628 /// Supported color types for menu items.
6629 ///
6630 enum cef_menu_color_type_t
6631 {
6632     CEF_MENU_COLOR_TEXT = 0,
6633     CEF_MENU_COLOR_TEXT_HOVERED = 1,
6634     CEF_MENU_COLOR_TEXT_ACCELERATOR = 2,
6635     CEF_MENU_COLOR_TEXT_ACCELERATOR_HOVERED = 3,
6636     CEF_MENU_COLOR_BACKGROUND = 4,
6637     CEF_MENU_COLOR_BACKGROUND_HOVERED = 5,
6638     CEF_MENU_COLOR_COUNT = 6
6639 }
6640 
6641 alias CEF_MENU_COLOR_TEXT = cef_menu_color_type_t.CEF_MENU_COLOR_TEXT;
6642 alias CEF_MENU_COLOR_TEXT_HOVERED = cef_menu_color_type_t.CEF_MENU_COLOR_TEXT_HOVERED;
6643 alias CEF_MENU_COLOR_TEXT_ACCELERATOR = cef_menu_color_type_t.CEF_MENU_COLOR_TEXT_ACCELERATOR;
6644 alias CEF_MENU_COLOR_TEXT_ACCELERATOR_HOVERED = cef_menu_color_type_t.CEF_MENU_COLOR_TEXT_ACCELERATOR_HOVERED;
6645 alias CEF_MENU_COLOR_BACKGROUND = cef_menu_color_type_t.CEF_MENU_COLOR_BACKGROUND;
6646 alias CEF_MENU_COLOR_BACKGROUND_HOVERED = cef_menu_color_type_t.CEF_MENU_COLOR_BACKGROUND_HOVERED;
6647 alias CEF_MENU_COLOR_COUNT = cef_menu_color_type_t.CEF_MENU_COLOR_COUNT;
6648 
6649 /// Supported SSL version values. See net/ssl/ssl_connection_status_flags.h
6650 /// for more information.
6651 enum cef_ssl_version_t
6652 {
6653     SSL_CONNECTION_VERSION_UNKNOWN = 0, // Unknown SSL version.
6654     SSL_CONNECTION_VERSION_SSL2 = 1,
6655     SSL_CONNECTION_VERSION_SSL3 = 2,
6656     SSL_CONNECTION_VERSION_TLS1 = 3,
6657     SSL_CONNECTION_VERSION_TLS1_1 = 4,
6658     SSL_CONNECTION_VERSION_TLS1_2 = 5,
6659     SSL_CONNECTION_VERSION_TLS1_3 = 6,
6660     SSL_CONNECTION_VERSION_QUIC = 7
6661 }
6662 
6663 alias SSL_CONNECTION_VERSION_UNKNOWN = cef_ssl_version_t.SSL_CONNECTION_VERSION_UNKNOWN;
6664 alias SSL_CONNECTION_VERSION_SSL2 = cef_ssl_version_t.SSL_CONNECTION_VERSION_SSL2;
6665 alias SSL_CONNECTION_VERSION_SSL3 = cef_ssl_version_t.SSL_CONNECTION_VERSION_SSL3;
6666 alias SSL_CONNECTION_VERSION_TLS1 = cef_ssl_version_t.SSL_CONNECTION_VERSION_TLS1;
6667 alias SSL_CONNECTION_VERSION_TLS1_1 = cef_ssl_version_t.SSL_CONNECTION_VERSION_TLS1_1;
6668 alias SSL_CONNECTION_VERSION_TLS1_2 = cef_ssl_version_t.SSL_CONNECTION_VERSION_TLS1_2;
6669 alias SSL_CONNECTION_VERSION_TLS1_3 = cef_ssl_version_t.SSL_CONNECTION_VERSION_TLS1_3;
6670 alias SSL_CONNECTION_VERSION_QUIC = cef_ssl_version_t.SSL_CONNECTION_VERSION_QUIC;
6671 
6672 /// Supported SSL content status flags. See content/public/common/ssl_status.h
6673 /// for more information.
6674 enum cef_ssl_content_status_t
6675 {
6676     SSL_CONTENT_NORMAL_CONTENT = 0,
6677     SSL_CONTENT_DISPLAYED_INSECURE_CONTENT = 1 << 0,
6678     SSL_CONTENT_RAN_INSECURE_CONTENT = 1 << 1
6679 }
6680 
6681 alias SSL_CONTENT_NORMAL_CONTENT = cef_ssl_content_status_t.SSL_CONTENT_NORMAL_CONTENT;
6682 alias SSL_CONTENT_DISPLAYED_INSECURE_CONTENT = cef_ssl_content_status_t.SSL_CONTENT_DISPLAYED_INSECURE_CONTENT;
6683 alias SSL_CONTENT_RAN_INSECURE_CONTENT = cef_ssl_content_status_t.SSL_CONTENT_RAN_INSECURE_CONTENT;
6684 
6685 //
6686 /// Configuration options for registering a custom scheme.
6687 /// These values are used when calling AddCustomScheme.
6688 //
6689 enum cef_scheme_options_t
6690 {
6691     CEF_SCHEME_OPTION_NONE = 0,
6692 
6693     ///
6694     /// If CEF_SCHEME_OPTION_STANDARD is set the scheme will be treated as a
6695     /// standard scheme. Standard schemes are subject to URL canonicalization and
6696     /// parsing rules as defined in the Common Internet Scheme Syntax RFC 1738
6697     /// Section 3.1 available at http://www.ietf.org/rfc/rfc1738.txt
6698     //
6699     /// In particular, the syntax for standard scheme URLs must be of the form:
6700     /// <pre>
6701     ///  [scheme]://[username]:[password]@[host]:[port]/[url-path]
6702     /// </pre> Standard scheme URLs must have a host component that is a fully
6703     /// qualified domain name as defined in Section 3.5 of RFC 1034 [13] and
6704     /// Section 2.1 of RFC 1123. These URLs will be canonicalized to
6705     /// "scheme://host/path" in the simplest case and
6706     /// "scheme://username:password@host:port/path" in the most explicit case. For
6707     /// example, "scheme:host/path" and "scheme:///host/path" will both be
6708     /// canonicalized to "scheme://host/path". The origin of a standard scheme URL
6709     /// is the combination of scheme, host and port (i.e., "scheme://host:port" in
6710     /// the most explicit case).
6711     //
6712     /// For non-standard scheme URLs only the "scheme:" component is parsed and
6713     /// canonicalized. The remainder of the URL will be passed to the handler as-
6714     /// is. For example, "scheme:///some%20text" will remain the same.
6715     /// Non-standard scheme URLs cannot be used as a target for form submission.
6716     ///
6717     CEF_SCHEME_OPTION_STANDARD = 1 << 0,
6718 
6719     ///
6720     /// If CEF_SCHEME_OPTION_LOCAL is set the scheme will be treated with the same
6721     /// security rules as those applied to "file" URLs. Normal pages cannot link
6722     /// to or access local URLs. Also, by default, local URLs can only perform
6723     /// XMLHttpRequest calls to the same URL (origin + path) that originated the
6724     /// request. To allow XMLHttpRequest calls from a local URL to other URLs with
6725     /// the same origin set the CefSettings.file_access_from_file_urls_allowed
6726     /// value to true (1). To allow XMLHttpRequest calls from a local URL to all
6727     /// origins set the CefSettings.universal_access_from_file_urls_allowed value
6728     /// to true (1).
6729     ///
6730     CEF_SCHEME_OPTION_LOCAL = 1 << 1,
6731 
6732     ///
6733     /// If CEF_SCHEME_OPTION_DISPLAY_ISOLATED is set the scheme can only be
6734     /// displayed from other content hosted with the same scheme. For example,
6735     /// pages in other origins cannot create iframes or hyperlinks to URLs with
6736     /// the scheme. For schemes that must be accessible from other schemes don't
6737     /// set this, set CEF_SCHEME_OPTION_CORS_ENABLED, and use CORS
6738     /// "Access-Control-Allow-Origin" headers to further restrict access.
6739     ///
6740     CEF_SCHEME_OPTION_DISPLAY_ISOLATED = 1 << 2,
6741 
6742     ///
6743     /// If CEF_SCHEME_OPTION_SECURE is set the scheme will be treated with the
6744     /// same security rules as those applied to "https" URLs. For example, loading
6745     /// this scheme from other secure schemes will not trigger mixed content
6746     /// warnings.
6747     ///
6748     CEF_SCHEME_OPTION_SECURE = 1 << 3,
6749 
6750     ///
6751     /// If CEF_SCHEME_OPTION_CORS_ENABLED is set the scheme can be sent CORS
6752     /// requests. This value should be set in most cases where
6753     /// CEF_SCHEME_OPTION_STANDARD is set.
6754     ///
6755     CEF_SCHEME_OPTION_CORS_ENABLED = 1 << 4,
6756 
6757     ///
6758     /// If CEF_SCHEME_OPTION_CSP_BYPASSING is set the scheme can bypass Content-
6759     /// Security-Policy (CSP) checks. This value should not be set in most cases
6760     /// where CEF_SCHEME_OPTION_STANDARD is set.
6761     ///
6762     CEF_SCHEME_OPTION_CSP_BYPASSING = 1 << 5,
6763 
6764     ///
6765     /// If CEF_SCHEME_OPTION_FETCH_ENABLED is set the scheme can perform Fetch API
6766     /// requests.
6767     ///
6768     CEF_SCHEME_OPTION_FETCH_ENABLED = 1 << 6
6769 }
6770 
6771 alias CEF_SCHEME_OPTION_NONE = cef_scheme_options_t.CEF_SCHEME_OPTION_NONE;
6772 alias CEF_SCHEME_OPTION_STANDARD = cef_scheme_options_t.CEF_SCHEME_OPTION_STANDARD;
6773 alias CEF_SCHEME_OPTION_LOCAL = cef_scheme_options_t.CEF_SCHEME_OPTION_LOCAL;
6774 alias CEF_SCHEME_OPTION_DISPLAY_ISOLATED = cef_scheme_options_t.CEF_SCHEME_OPTION_DISPLAY_ISOLATED;
6775 alias CEF_SCHEME_OPTION_SECURE = cef_scheme_options_t.CEF_SCHEME_OPTION_SECURE;
6776 alias CEF_SCHEME_OPTION_CORS_ENABLED = cef_scheme_options_t.CEF_SCHEME_OPTION_CORS_ENABLED;
6777 alias CEF_SCHEME_OPTION_CSP_BYPASSING = cef_scheme_options_t.CEF_SCHEME_OPTION_CSP_BYPASSING;
6778 alias CEF_SCHEME_OPTION_FETCH_ENABLED = cef_scheme_options_t.CEF_SCHEME_OPTION_FETCH_ENABLED;
6779 
6780 ///
6781 /// Structure representing a range.
6782 ///
6783 struct cef_range_t
6784 {
6785     uint from;
6786     uint to;
6787 }
6788 
6789 
6790 
6791 ///
6792 /// Composition underline style.
6793 ///
6794 enum cef_composition_underline_style_t
6795 {
6796     CEF_CUS_SOLID = 0,
6797     CEF_CUS_DOT = 1,
6798     CEF_CUS_DASH = 2,
6799     CEF_CUS_NONE = 3
6800 }
6801 
6802 alias CEF_CUS_SOLID = cef_composition_underline_style_t.CEF_CUS_SOLID;
6803 alias CEF_CUS_DOT = cef_composition_underline_style_t.CEF_CUS_DOT;
6804 alias CEF_CUS_DASH = cef_composition_underline_style_t.CEF_CUS_DASH;
6805 alias CEF_CUS_NONE = cef_composition_underline_style_t.CEF_CUS_NONE;
6806 
6807 ///
6808 /// Structure representing IME composition underline information. This is a thin
6809 /// wrapper around Blink's WebCompositionUnderline class and should be kept in
6810 /// sync with that.
6811 ///
6812 struct cef_composition_underline_t
6813 {
6814     ///
6815     /// Underline character range.
6816     ///
6817     cef_range_t range;
6818 
6819     ///
6820     /// Text color.
6821     ///
6822     cef_color_t color;
6823 
6824     ///
6825     /// Background color.
6826     ///
6827     cef_color_t background_color;
6828 
6829     ///
6830     /// Set to true (1) for thick underline.
6831     ///
6832     int thick;
6833 
6834     ///
6835     /// Style.
6836     ///
6837     cef_composition_underline_style_t style;
6838 }
6839 
6840 
6841 
6842 ///
6843 /// Enumerates the various representations of the ordering of audio channels.
6844 /// Must be kept synchronized with media::ChannelLayout from Chromium.
6845 /// See media\base\channel_layout.h
6846 ///
6847 enum cef_channel_layout_t
6848 {
6849     CEF_CHANNEL_LAYOUT_NONE = 0,
6850     CEF_CHANNEL_LAYOUT_UNSUPPORTED = 1,
6851 
6852     /// Front C
6853     CEF_CHANNEL_LAYOUT_MONO = 2,
6854 
6855     /// Front L, Front R
6856     CEF_CHANNEL_LAYOUT_STEREO = 3,
6857 
6858     /// Front L, Front R, Back C
6859     CEF_CHANNEL_LAYOUT_2_1 = 4,
6860 
6861     /// Front L, Front R, Front C
6862     CEF_CHANNEL_LAYOUT_SURROUND = 5,
6863 
6864     /// Front L, Front R, Front C, Back C
6865     CEF_CHANNEL_LAYOUT_4_0 = 6,
6866 
6867     /// Front L, Front R, Side L, Side R
6868     CEF_CHANNEL_LAYOUT_2_2 = 7,
6869 
6870     /// Front L, Front R, Back L, Back R
6871     CEF_CHANNEL_LAYOUT_QUAD = 8,
6872 
6873     /// Front L, Front R, Front C, Side L, Side R
6874     CEF_CHANNEL_LAYOUT_5_0 = 9,
6875 
6876     /// Front L, Front R, Front C, LFE, Side L, Side R
6877     CEF_CHANNEL_LAYOUT_5_1 = 10,
6878 
6879     /// Front L, Front R, Front C, Back L, Back R
6880     CEF_CHANNEL_LAYOUT_5_0_BACK = 11,
6881 
6882     /// Front L, Front R, Front C, LFE, Back L, Back R
6883     CEF_CHANNEL_LAYOUT_5_1_BACK = 12,
6884 
6885     /// Front L, Front R, Front C, Back L, Back R, Side L, Side R
6886     CEF_CHANNEL_LAYOUT_7_0 = 13,
6887 
6888     /// Front L, Front R, Front C, LFE, Back L, Back R, Side L, Side R
6889     CEF_CHANNEL_LAYOUT_7_1 = 14,
6890 
6891     /// Front L, Front R, Front C, LFE, Front LofC, Front RofC, Side L, Side R
6892     CEF_CHANNEL_LAYOUT_7_1_WIDE = 15,
6893 
6894     /// Front L, Front R
6895     CEF_CHANNEL_LAYOUT_STEREO_DOWNMIX = 16,
6896 
6897     /// Front L, Front R, LFE
6898     CEF_CHANNEL_LAYOUT_2POINT1 = 17,
6899 
6900     /// Front L, Front R, Front C, LFE
6901     CEF_CHANNEL_LAYOUT_3_1 = 18,
6902 
6903     /// Front L, Front R, Front C, LFE, Back C
6904     CEF_CHANNEL_LAYOUT_4_1 = 19,
6905 
6906     /// Front L, Front R, Front C, Back C, Side L, Side R
6907     CEF_CHANNEL_LAYOUT_6_0 = 20,
6908 
6909     /// Front L, Front R, Front LofC, Front RofC, Side L, Side R
6910     CEF_CHANNEL_LAYOUT_6_0_FRONT = 21,
6911 
6912     /// Front L, Front R, Front C, Back L, Back R, Back C
6913     CEF_CHANNEL_LAYOUT_HEXAGONAL = 22,
6914 
6915     /// Front L, Front R, Front C, LFE, Back C, Side L, Side R
6916     CEF_CHANNEL_LAYOUT_6_1 = 23,
6917 
6918     /// Front L, Front R, Front C, LFE, Back L, Back R, Back C
6919     CEF_CHANNEL_LAYOUT_6_1_BACK = 24,
6920 
6921     /// Front L, Front R, LFE, Front LofC, Front RofC, Side L, Side R
6922     CEF_CHANNEL_LAYOUT_6_1_FRONT = 25,
6923 
6924     /// Front L, Front R, Front C, Front LofC, Front RofC, Side L, Side R
6925     CEF_CHANNEL_LAYOUT_7_0_FRONT = 26,
6926 
6927     /// Front L, Front R, Front C, LFE, Back L, Back R, Front LofC, Front RofC
6928     CEF_CHANNEL_LAYOUT_7_1_WIDE_BACK = 27,
6929 
6930     /// Front L, Front R, Front C, Back L, Back R, Back C, Side L, Side R
6931     CEF_CHANNEL_LAYOUT_OCTAGONAL = 28,
6932 
6933     /// Channels are not explicitly mapped to speakers.
6934     CEF_CHANNEL_LAYOUT_DISCRETE = 29,
6935 
6936     /// Deprecated, but keeping the enum value for UMA consistency.
6937     /// Front L, Front R, Front C. Front C contains the keyboard mic audio. This
6938     /// layout is only intended for input for WebRTC. The Front C channel
6939     /// is stripped away in the WebRTC audio input pipeline and never seen outside
6940     /// of that.
6941     CEF_CHANNEL_LAYOUT_STEREO_AND_KEYBOARD_MIC = 30,
6942 
6943     /// Front L, Front R, LFE, Side L, Side R
6944     CEF_CHANNEL_LAYOUT_4_1_QUAD_SIDE = 31,
6945 
6946     /// Actual channel layout is specified in the bitstream and the actual channel
6947     /// count is unknown at Chromium media pipeline level (useful for audio
6948     /// pass-through mode).
6949     CEF_CHANNEL_LAYOUT_BITSTREAM = 32,
6950 
6951     /// Front L, Front R, Front C, LFE, Side L, Side R,
6952     /// Front Height L, Front Height R, Rear Height L, Rear Height R
6953     /// Will be represented as six channels (5.1) due to eight channel limit
6954     /// kMaxConcurrentChannels
6955     CEF_CHANNEL_LAYOUT_5_1_4_DOWNMIX = 33,
6956 
6957     /// Front C, LFE
6958     CEF_CHANNEL_LAYOUT_1_1 = 34,
6959 
6960     /// Front L, Front R, LFE, Back C
6961     CEF_CHANNEL_LAYOUT_3_1_BACK = 35,
6962 
6963     /// Max value, must always equal the largest entry ever logged.
6964     CEF_CHANNEL_LAYOUT_MAX = CEF_CHANNEL_LAYOUT_3_1_BACK
6965 }
6966 
6967 alias CEF_CHANNEL_LAYOUT_NONE = cef_channel_layout_t.CEF_CHANNEL_LAYOUT_NONE;
6968 alias CEF_CHANNEL_LAYOUT_UNSUPPORTED = cef_channel_layout_t.CEF_CHANNEL_LAYOUT_UNSUPPORTED;
6969 alias CEF_CHANNEL_LAYOUT_MONO = cef_channel_layout_t.CEF_CHANNEL_LAYOUT_MONO;
6970 alias CEF_CHANNEL_LAYOUT_STEREO = cef_channel_layout_t.CEF_CHANNEL_LAYOUT_STEREO;
6971 alias CEF_CHANNEL_LAYOUT_2_1 = cef_channel_layout_t.CEF_CHANNEL_LAYOUT_2_1;
6972 alias CEF_CHANNEL_LAYOUT_SURROUND = cef_channel_layout_t.CEF_CHANNEL_LAYOUT_SURROUND;
6973 alias CEF_CHANNEL_LAYOUT_4_0 = cef_channel_layout_t.CEF_CHANNEL_LAYOUT_4_0;
6974 alias CEF_CHANNEL_LAYOUT_2_2 = cef_channel_layout_t.CEF_CHANNEL_LAYOUT_2_2;
6975 alias CEF_CHANNEL_LAYOUT_QUAD = cef_channel_layout_t.CEF_CHANNEL_LAYOUT_QUAD;
6976 alias CEF_CHANNEL_LAYOUT_5_0 = cef_channel_layout_t.CEF_CHANNEL_LAYOUT_5_0;
6977 alias CEF_CHANNEL_LAYOUT_5_1 = cef_channel_layout_t.CEF_CHANNEL_LAYOUT_5_1;
6978 alias CEF_CHANNEL_LAYOUT_5_0_BACK = cef_channel_layout_t.CEF_CHANNEL_LAYOUT_5_0_BACK;
6979 alias CEF_CHANNEL_LAYOUT_5_1_BACK = cef_channel_layout_t.CEF_CHANNEL_LAYOUT_5_1_BACK;
6980 alias CEF_CHANNEL_LAYOUT_7_0 = cef_channel_layout_t.CEF_CHANNEL_LAYOUT_7_0;
6981 alias CEF_CHANNEL_LAYOUT_7_1 = cef_channel_layout_t.CEF_CHANNEL_LAYOUT_7_1;
6982 alias CEF_CHANNEL_LAYOUT_7_1_WIDE = cef_channel_layout_t.CEF_CHANNEL_LAYOUT_7_1_WIDE;
6983 alias CEF_CHANNEL_LAYOUT_STEREO_DOWNMIX = cef_channel_layout_t.CEF_CHANNEL_LAYOUT_STEREO_DOWNMIX;
6984 alias CEF_CHANNEL_LAYOUT_2POINT1 = cef_channel_layout_t.CEF_CHANNEL_LAYOUT_2POINT1;
6985 alias CEF_CHANNEL_LAYOUT_3_1 = cef_channel_layout_t.CEF_CHANNEL_LAYOUT_3_1;
6986 alias CEF_CHANNEL_LAYOUT_4_1 = cef_channel_layout_t.CEF_CHANNEL_LAYOUT_4_1;
6987 alias CEF_CHANNEL_LAYOUT_6_0 = cef_channel_layout_t.CEF_CHANNEL_LAYOUT_6_0;
6988 alias CEF_CHANNEL_LAYOUT_6_0_FRONT = cef_channel_layout_t.CEF_CHANNEL_LAYOUT_6_0_FRONT;
6989 alias CEF_CHANNEL_LAYOUT_HEXAGONAL = cef_channel_layout_t.CEF_CHANNEL_LAYOUT_HEXAGONAL;
6990 alias CEF_CHANNEL_LAYOUT_6_1 = cef_channel_layout_t.CEF_CHANNEL_LAYOUT_6_1;
6991 alias CEF_CHANNEL_LAYOUT_6_1_BACK = cef_channel_layout_t.CEF_CHANNEL_LAYOUT_6_1_BACK;
6992 alias CEF_CHANNEL_LAYOUT_6_1_FRONT = cef_channel_layout_t.CEF_CHANNEL_LAYOUT_6_1_FRONT;
6993 alias CEF_CHANNEL_LAYOUT_7_0_FRONT = cef_channel_layout_t.CEF_CHANNEL_LAYOUT_7_0_FRONT;
6994 alias CEF_CHANNEL_LAYOUT_7_1_WIDE_BACK = cef_channel_layout_t.CEF_CHANNEL_LAYOUT_7_1_WIDE_BACK;
6995 alias CEF_CHANNEL_LAYOUT_OCTAGONAL = cef_channel_layout_t.CEF_CHANNEL_LAYOUT_OCTAGONAL;
6996 alias CEF_CHANNEL_LAYOUT_DISCRETE = cef_channel_layout_t.CEF_CHANNEL_LAYOUT_DISCRETE;
6997 alias CEF_CHANNEL_LAYOUT_STEREO_AND_KEYBOARD_MIC = cef_channel_layout_t.CEF_CHANNEL_LAYOUT_STEREO_AND_KEYBOARD_MIC;
6998 alias CEF_CHANNEL_LAYOUT_4_1_QUAD_SIDE = cef_channel_layout_t.CEF_CHANNEL_LAYOUT_4_1_QUAD_SIDE;
6999 alias CEF_CHANNEL_LAYOUT_BITSTREAM = cef_channel_layout_t.CEF_CHANNEL_LAYOUT_BITSTREAM;
7000 alias CEF_CHANNEL_LAYOUT_5_1_4_DOWNMIX = cef_channel_layout_t.CEF_CHANNEL_LAYOUT_5_1_4_DOWNMIX;
7001 alias CEF_CHANNEL_LAYOUT_1_1 = cef_channel_layout_t.CEF_CHANNEL_LAYOUT_1_1;
7002 alias CEF_CHANNEL_LAYOUT_3_1_BACK = cef_channel_layout_t.CEF_CHANNEL_LAYOUT_3_1_BACK;
7003 alias CEF_CHANNEL_LAYOUT_MAX = cef_channel_layout_t.CEF_CHANNEL_LAYOUT_MAX;
7004 
7005 ///
7006 /// Structure representing the audio parameters for setting up the audio
7007 /// handler.
7008 ///
7009 struct cef_audio_parameters_t
7010 {
7011     ///
7012     /// Layout of the audio channels
7013     ///
7014     cef_channel_layout_t channel_layout;
7015 
7016     ///
7017     /// Sample rate
7018     //
7019     int sample_rate;
7020 
7021     ///
7022     /// Number of frames per buffer
7023     ///
7024     int frames_per_buffer;
7025 }
7026 
7027 
7028 
7029 ///
7030 /// Result codes for CefMediaRouter::CreateRoute. Should be kept in sync with
7031 /// Chromium's media_router::mojom::RouteRequestResultCode type.
7032 ///
7033 enum cef_media_route_create_result_t
7034 {
7035     CEF_MRCR_UNKNOWN_ERROR = 0,
7036     CEF_MRCR_OK = 1,
7037     CEF_MRCR_TIMED_OUT = 2,
7038     CEF_MRCR_ROUTE_NOT_FOUND = 3,
7039     CEF_MRCR_SINK_NOT_FOUND = 4,
7040     CEF_MRCR_INVALID_ORIGIN = 5,
7041     CEF_MRCR_NO_SUPPORTED_PROVIDER = 7,
7042     CEF_MRCR_CANCELLED = 8,
7043     CEF_MRCR_ROUTE_ALREADY_EXISTS = 9,
7044     CEF_MRCR_ROUTE_ALREADY_TERMINATED = 11
7045 }
7046 
7047 alias CEF_MRCR_UNKNOWN_ERROR = cef_media_route_create_result_t.CEF_MRCR_UNKNOWN_ERROR;
7048 alias CEF_MRCR_OK = cef_media_route_create_result_t.CEF_MRCR_OK;
7049 alias CEF_MRCR_TIMED_OUT = cef_media_route_create_result_t.CEF_MRCR_TIMED_OUT;
7050 alias CEF_MRCR_ROUTE_NOT_FOUND = cef_media_route_create_result_t.CEF_MRCR_ROUTE_NOT_FOUND;
7051 alias CEF_MRCR_SINK_NOT_FOUND = cef_media_route_create_result_t.CEF_MRCR_SINK_NOT_FOUND;
7052 alias CEF_MRCR_INVALID_ORIGIN = cef_media_route_create_result_t.CEF_MRCR_INVALID_ORIGIN;
7053 alias CEF_MRCR_NO_SUPPORTED_PROVIDER = cef_media_route_create_result_t.CEF_MRCR_NO_SUPPORTED_PROVIDER;
7054 alias CEF_MRCR_CANCELLED = cef_media_route_create_result_t.CEF_MRCR_CANCELLED;
7055 alias CEF_MRCR_ROUTE_ALREADY_EXISTS = cef_media_route_create_result_t.CEF_MRCR_ROUTE_ALREADY_EXISTS;
7056 alias CEF_MRCR_ROUTE_ALREADY_TERMINATED = cef_media_route_create_result_t.CEF_MRCR_ROUTE_ALREADY_TERMINATED;
7057 
7058 ///
7059 /// Connection state for a MediaRoute object.
7060 ///
7061 enum cef_media_route_connection_state_t
7062 {
7063     CEF_MRCS_UNKNOWN = 0,
7064     CEF_MRCS_CONNECTING = 1,
7065     CEF_MRCS_CONNECTED = 2,
7066     CEF_MRCS_CLOSED = 3,
7067     CEF_MRCS_TERMINATED = 4
7068 }
7069 
7070 alias CEF_MRCS_UNKNOWN = cef_media_route_connection_state_t.CEF_MRCS_UNKNOWN;
7071 alias CEF_MRCS_CONNECTING = cef_media_route_connection_state_t.CEF_MRCS_CONNECTING;
7072 alias CEF_MRCS_CONNECTED = cef_media_route_connection_state_t.CEF_MRCS_CONNECTED;
7073 alias CEF_MRCS_CLOSED = cef_media_route_connection_state_t.CEF_MRCS_CLOSED;
7074 alias CEF_MRCS_TERMINATED = cef_media_route_connection_state_t.CEF_MRCS_TERMINATED;
7075 
7076 ///
7077 /// Icon types for a MediaSink object. Should be kept in sync with Chromium's
7078 /// media_router::SinkIconType type.
7079 ///
7080 enum cef_media_sink_icon_type_t
7081 {
7082     CEF_MSIT_CAST = 0,
7083     CEF_MSIT_CAST_AUDIO_GROUP = 1,
7084     CEF_MSIT_CAST_AUDIO = 2,
7085     CEF_MSIT_MEETING = 3,
7086     CEF_MSIT_HANGOUT = 4,
7087     CEF_MSIT_EDUCATION = 5,
7088     CEF_MSIT_WIRED_DISPLAY = 6,
7089     CEF_MSIT_GENERIC = 7,
7090 
7091     CEF_MSIT_TOTAL_COUNT = 8 // The total number of values.
7092 }
7093 
7094 alias CEF_MSIT_CAST = cef_media_sink_icon_type_t.CEF_MSIT_CAST;
7095 alias CEF_MSIT_CAST_AUDIO_GROUP = cef_media_sink_icon_type_t.CEF_MSIT_CAST_AUDIO_GROUP;
7096 alias CEF_MSIT_CAST_AUDIO = cef_media_sink_icon_type_t.CEF_MSIT_CAST_AUDIO;
7097 alias CEF_MSIT_MEETING = cef_media_sink_icon_type_t.CEF_MSIT_MEETING;
7098 alias CEF_MSIT_HANGOUT = cef_media_sink_icon_type_t.CEF_MSIT_HANGOUT;
7099 alias CEF_MSIT_EDUCATION = cef_media_sink_icon_type_t.CEF_MSIT_EDUCATION;
7100 alias CEF_MSIT_WIRED_DISPLAY = cef_media_sink_icon_type_t.CEF_MSIT_WIRED_DISPLAY;
7101 alias CEF_MSIT_GENERIC = cef_media_sink_icon_type_t.CEF_MSIT_GENERIC;
7102 alias CEF_MSIT_TOTAL_COUNT = cef_media_sink_icon_type_t.CEF_MSIT_TOTAL_COUNT;
7103 
7104 ///
7105 /// Device information for a MediaSink object.
7106 ///
7107 struct cef_media_sink_device_info_t
7108 {
7109     cef_string_t ip_address;
7110     int port;
7111     cef_string_t model_name;
7112 }
7113 
7114 
7115 
7116 ///
7117 /// Represents commands available to TextField.
7118 ///
7119 enum cef_text_field_commands_t
7120 {
7121     CEF_TFC_CUT = 1,
7122     CEF_TFC_COPY = 2,
7123     CEF_TFC_PASTE = 3,
7124     CEF_TFC_UNDO = 4,
7125     CEF_TFC_DELETE = 5,
7126     CEF_TFC_SELECT_ALL = 6
7127 }
7128 
7129 alias CEF_TFC_CUT = cef_text_field_commands_t.CEF_TFC_CUT;
7130 alias CEF_TFC_COPY = cef_text_field_commands_t.CEF_TFC_COPY;
7131 alias CEF_TFC_PASTE = cef_text_field_commands_t.CEF_TFC_PASTE;
7132 alias CEF_TFC_UNDO = cef_text_field_commands_t.CEF_TFC_UNDO;
7133 alias CEF_TFC_DELETE = cef_text_field_commands_t.CEF_TFC_DELETE;
7134 alias CEF_TFC_SELECT_ALL = cef_text_field_commands_t.CEF_TFC_SELECT_ALL;
7135 
7136 ///
7137 /// Chrome toolbar types.
7138 ///
7139 enum cef_chrome_toolbar_type_t
7140 {
7141     CEF_CTT_NONE = 1,
7142     CEF_CTT_NORMAL = 2,
7143     CEF_CTT_LOCATION = 3
7144 }
7145 
7146 alias CEF_CTT_NONE = cef_chrome_toolbar_type_t.CEF_CTT_NONE;
7147 alias CEF_CTT_NORMAL = cef_chrome_toolbar_type_t.CEF_CTT_NORMAL;
7148 alias CEF_CTT_LOCATION = cef_chrome_toolbar_type_t.CEF_CTT_LOCATION;
7149 
7150 ///
7151 /// Chrome page action icon types. Should be kept in sync with Chromium's
7152 /// PageActionIconType type.
7153 ///
7154 enum cef_chrome_page_action_icon_type_t
7155 {
7156     CEF_CPAIT_BOOKMARK_STAR = 0,
7157     CEF_CPAIT_CLICK_TO_CALL = 1,
7158     CEF_CPAIT_COOKIE_CONTROLS = 2,
7159     CEF_CPAIT_FILE_SYSTEM_ACCESS = 3,
7160     CEF_CPAIT_FIND = 4,
7161     CEF_CPAIT_MEMORY_SAVER = 5,
7162     CEF_CPAIT_INTENT_PICKER = 6,
7163     CEF_CPAIT_LOCAL_CARD_MIGRATION = 7,
7164     CEF_CPAIT_MANAGE_PASSWORDS = 8,
7165     CEF_CPAIT_PAYMENTS_OFFER_NOTIFICATION = 9,
7166     CEF_CPAIT_PRICE_TRACKING = 10,
7167     CEF_CPAIT_PWA_INSTALL = 11,
7168     CEF_CPAIT_QR_CODE_GENERATOR_DEPRECATED = 12,
7169     CEF_CPAIT_READER_MODE_DEPRECATED = 13,
7170     CEF_CPAIT_SAVE_AUTOFILL_ADDRESS = 14,
7171     CEF_CPAIT_SAVE_CARD = 15,
7172     CEF_CPAIT_SEND_TAB_TO_SELF_DEPRECATED = 16,
7173     CEF_CPAIT_SHARING_HUB = 17,
7174     CEF_CPAIT_SIDE_SEARCH = 18,
7175     CEF_CPAIT_SMS_REMOTE_FETCHER = 19,
7176     CEF_CPAIT_TRANSLATE = 20,
7177     CEF_CPAIT_VIRTUAL_CARD_ENROLL = 21,
7178     CEF_CPAIT_VIRTUAL_CARD_MANUAL_FALLBACK = 22,
7179     CEF_CPAIT_ZOOM = 23,
7180     CEF_CPAIT_SAVE_IBAN = 24,
7181     CEF_CPAIT_MANDATORY_REAUTH = 25,
7182     CEF_CPAIT_PRICE_INSIGHTS = 26,
7183     CEF_CPAIT_PRICE_READ_ANYTHING = 27,
7184     CEF_CPAIT_PRODUCT_SPECIFICATIONS = 28,
7185     CEF_CPAIT_LENS_OVERLAY = 29,
7186     CEF_CPAIT_MAX_VALUE = CEF_CPAIT_LENS_OVERLAY
7187 }
7188 
7189 alias CEF_CPAIT_BOOKMARK_STAR = cef_chrome_page_action_icon_type_t.CEF_CPAIT_BOOKMARK_STAR;
7190 alias CEF_CPAIT_CLICK_TO_CALL = cef_chrome_page_action_icon_type_t.CEF_CPAIT_CLICK_TO_CALL;
7191 alias CEF_CPAIT_COOKIE_CONTROLS = cef_chrome_page_action_icon_type_t.CEF_CPAIT_COOKIE_CONTROLS;
7192 alias CEF_CPAIT_FILE_SYSTEM_ACCESS = cef_chrome_page_action_icon_type_t.CEF_CPAIT_FILE_SYSTEM_ACCESS;
7193 alias CEF_CPAIT_FIND = cef_chrome_page_action_icon_type_t.CEF_CPAIT_FIND;
7194 alias CEF_CPAIT_MEMORY_SAVER = cef_chrome_page_action_icon_type_t.CEF_CPAIT_MEMORY_SAVER;
7195 alias CEF_CPAIT_INTENT_PICKER = cef_chrome_page_action_icon_type_t.CEF_CPAIT_INTENT_PICKER;
7196 alias CEF_CPAIT_LOCAL_CARD_MIGRATION = cef_chrome_page_action_icon_type_t.CEF_CPAIT_LOCAL_CARD_MIGRATION;
7197 alias CEF_CPAIT_MANAGE_PASSWORDS = cef_chrome_page_action_icon_type_t.CEF_CPAIT_MANAGE_PASSWORDS;
7198 alias CEF_CPAIT_PAYMENTS_OFFER_NOTIFICATION = cef_chrome_page_action_icon_type_t.CEF_CPAIT_PAYMENTS_OFFER_NOTIFICATION;
7199 alias CEF_CPAIT_PRICE_TRACKING = cef_chrome_page_action_icon_type_t.CEF_CPAIT_PRICE_TRACKING;
7200 alias CEF_CPAIT_PWA_INSTALL = cef_chrome_page_action_icon_type_t.CEF_CPAIT_PWA_INSTALL;
7201 alias CEF_CPAIT_QR_CODE_GENERATOR_DEPRECATED = cef_chrome_page_action_icon_type_t.CEF_CPAIT_QR_CODE_GENERATOR_DEPRECATED;
7202 alias CEF_CPAIT_READER_MODE_DEPRECATED = cef_chrome_page_action_icon_type_t.CEF_CPAIT_READER_MODE_DEPRECATED;
7203 alias CEF_CPAIT_SAVE_AUTOFILL_ADDRESS = cef_chrome_page_action_icon_type_t.CEF_CPAIT_SAVE_AUTOFILL_ADDRESS;
7204 alias CEF_CPAIT_SAVE_CARD = cef_chrome_page_action_icon_type_t.CEF_CPAIT_SAVE_CARD;
7205 alias CEF_CPAIT_SEND_TAB_TO_SELF_DEPRECATED = cef_chrome_page_action_icon_type_t.CEF_CPAIT_SEND_TAB_TO_SELF_DEPRECATED;
7206 alias CEF_CPAIT_SHARING_HUB = cef_chrome_page_action_icon_type_t.CEF_CPAIT_SHARING_HUB;
7207 alias CEF_CPAIT_SIDE_SEARCH = cef_chrome_page_action_icon_type_t.CEF_CPAIT_SIDE_SEARCH;
7208 alias CEF_CPAIT_SMS_REMOTE_FETCHER = cef_chrome_page_action_icon_type_t.CEF_CPAIT_SMS_REMOTE_FETCHER;
7209 alias CEF_CPAIT_TRANSLATE = cef_chrome_page_action_icon_type_t.CEF_CPAIT_TRANSLATE;
7210 alias CEF_CPAIT_VIRTUAL_CARD_ENROLL = cef_chrome_page_action_icon_type_t.CEF_CPAIT_VIRTUAL_CARD_ENROLL;
7211 alias CEF_CPAIT_VIRTUAL_CARD_MANUAL_FALLBACK = cef_chrome_page_action_icon_type_t.CEF_CPAIT_VIRTUAL_CARD_MANUAL_FALLBACK;
7212 alias CEF_CPAIT_ZOOM = cef_chrome_page_action_icon_type_t.CEF_CPAIT_ZOOM;
7213 alias CEF_CPAIT_SAVE_IBAN = cef_chrome_page_action_icon_type_t.CEF_CPAIT_SAVE_IBAN;
7214 alias CEF_CPAIT_MANDATORY_REAUTH = cef_chrome_page_action_icon_type_t.CEF_CPAIT_MANDATORY_REAUTH;
7215 alias CEF_CPAIT_PRICE_INSIGHTS = cef_chrome_page_action_icon_type_t.CEF_CPAIT_PRICE_INSIGHTS;
7216 alias CEF_CPAIT_PRICE_READ_ANYTHING = cef_chrome_page_action_icon_type_t.CEF_CPAIT_PRICE_READ_ANYTHING;
7217 alias CEF_CPAIT_PRODUCT_SPECIFICATIONS = cef_chrome_page_action_icon_type_t.CEF_CPAIT_PRODUCT_SPECIFICATIONS;
7218 alias CEF_CPAIT_LENS_OVERLAY = cef_chrome_page_action_icon_type_t.CEF_CPAIT_LENS_OVERLAY;
7219 alias CEF_CPAIT_MAX_VALUE = cef_chrome_page_action_icon_type_t.CEF_CPAIT_MAX_VALUE;
7220 
7221 ///
7222 /// Chrome toolbar button types. Should be kept in sync with CEF's internal
7223 /// ToolbarButtonType type.
7224 ///
7225 enum cef_chrome_toolbar_button_type_t
7226 {
7227     CEF_CTBT_CAST = 0,
7228     CEF_CTBT_DOWNLOAD = 1,
7229     CEF_CTBT_SEND_TAB_TO_SELF = 2,
7230     CEF_CTBT_SIDE_PANEL = 3,
7231     CEF_CTBT_MAX_VALUE = CEF_CTBT_SIDE_PANEL
7232 }
7233 
7234 alias CEF_CTBT_CAST = cef_chrome_toolbar_button_type_t.CEF_CTBT_CAST;
7235 alias CEF_CTBT_DOWNLOAD = cef_chrome_toolbar_button_type_t.CEF_CTBT_DOWNLOAD;
7236 alias CEF_CTBT_SEND_TAB_TO_SELF = cef_chrome_toolbar_button_type_t.CEF_CTBT_SEND_TAB_TO_SELF;
7237 alias CEF_CTBT_SIDE_PANEL = cef_chrome_toolbar_button_type_t.CEF_CTBT_SIDE_PANEL;
7238 alias CEF_CTBT_MAX_VALUE = cef_chrome_toolbar_button_type_t.CEF_CTBT_MAX_VALUE;
7239 
7240 ///
7241 /// Docking modes supported by CefWindow::AddOverlay.
7242 ///
7243 enum cef_docking_mode_t
7244 {
7245     CEF_DOCKING_MODE_TOP_LEFT = 1,
7246     CEF_DOCKING_MODE_TOP_RIGHT = 2,
7247     CEF_DOCKING_MODE_BOTTOM_LEFT = 3,
7248     CEF_DOCKING_MODE_BOTTOM_RIGHT = 4,
7249     CEF_DOCKING_MODE_CUSTOM = 5
7250 }
7251 
7252 alias CEF_DOCKING_MODE_TOP_LEFT = cef_docking_mode_t.CEF_DOCKING_MODE_TOP_LEFT;
7253 alias CEF_DOCKING_MODE_TOP_RIGHT = cef_docking_mode_t.CEF_DOCKING_MODE_TOP_RIGHT;
7254 alias CEF_DOCKING_MODE_BOTTOM_LEFT = cef_docking_mode_t.CEF_DOCKING_MODE_BOTTOM_LEFT;
7255 alias CEF_DOCKING_MODE_BOTTOM_RIGHT = cef_docking_mode_t.CEF_DOCKING_MODE_BOTTOM_RIGHT;
7256 alias CEF_DOCKING_MODE_CUSTOM = cef_docking_mode_t.CEF_DOCKING_MODE_CUSTOM;
7257 
7258 ///
7259 /// Show states supported by CefWindowDelegate::GetInitialShowState.
7260 ///
7261 enum cef_show_state_t
7262 {
7263     // Show the window as normal.
7264     CEF_SHOW_STATE_NORMAL = 1,
7265 
7266     // Show the window as minimized.
7267     CEF_SHOW_STATE_MINIMIZED = 2,
7268 
7269     // Show the window as maximized.
7270     CEF_SHOW_STATE_MAXIMIZED = 3,
7271 
7272     // Show the window as fullscreen.
7273     CEF_SHOW_STATE_FULLSCREEN = 4,
7274 
7275     // Show the window as hidden (no dock thumbnail).
7276     // Only supported on MacOS.
7277     CEF_SHOW_STATE_HIDDEN = 5
7278 }
7279 
7280 alias CEF_SHOW_STATE_NORMAL = cef_show_state_t.CEF_SHOW_STATE_NORMAL;
7281 alias CEF_SHOW_STATE_MINIMIZED = cef_show_state_t.CEF_SHOW_STATE_MINIMIZED;
7282 alias CEF_SHOW_STATE_MAXIMIZED = cef_show_state_t.CEF_SHOW_STATE_MAXIMIZED;
7283 alias CEF_SHOW_STATE_FULLSCREEN = cef_show_state_t.CEF_SHOW_STATE_FULLSCREEN;
7284 alias CEF_SHOW_STATE_HIDDEN = cef_show_state_t.CEF_SHOW_STATE_HIDDEN;
7285 
7286 ///
7287 /// Values indicating what state of the touch handle is set.
7288 ///
7289 enum cef_touch_handle_state_flags_t
7290 {
7291     CEF_THS_FLAG_NONE = 0,
7292     CEF_THS_FLAG_ENABLED = 1 << 0,
7293     CEF_THS_FLAG_ORIENTATION = 1 << 1,
7294     CEF_THS_FLAG_ORIGIN = 1 << 2,
7295     CEF_THS_FLAG_ALPHA = 1 << 3
7296 }
7297 
7298 alias CEF_THS_FLAG_NONE = cef_touch_handle_state_flags_t.CEF_THS_FLAG_NONE;
7299 alias CEF_THS_FLAG_ENABLED = cef_touch_handle_state_flags_t.CEF_THS_FLAG_ENABLED;
7300 alias CEF_THS_FLAG_ORIENTATION = cef_touch_handle_state_flags_t.CEF_THS_FLAG_ORIENTATION;
7301 alias CEF_THS_FLAG_ORIGIN = cef_touch_handle_state_flags_t.CEF_THS_FLAG_ORIGIN;
7302 alias CEF_THS_FLAG_ALPHA = cef_touch_handle_state_flags_t.CEF_THS_FLAG_ALPHA;
7303 
7304 struct cef_touch_handle_state_t
7305 {
7306     ///
7307     /// Touch handle id. Increments for each new touch handle.
7308     ///
7309     int touch_handle_id;
7310 
7311     ///
7312     /// Combination of cef_touch_handle_state_flags_t values indicating what state
7313     /// is set.
7314     ///
7315     uint flags;
7316 
7317     ///
7318     /// Enabled state. Only set if |flags| contains CEF_THS_FLAG_ENABLED.
7319     ///
7320     int enabled;
7321 
7322     ///
7323     /// Orientation state. Only set if |flags| contains CEF_THS_FLAG_ORIENTATION.
7324     ///
7325     cef_horizontal_alignment_t orientation;
7326     int mirror_vertical;
7327     int mirror_horizontal;
7328 
7329     ///
7330     /// Origin state. Only set if |flags| contains CEF_THS_FLAG_ORIGIN.
7331     ///
7332     cef_point_t origin;
7333 
7334     ///
7335     /// Alpha state. Only set if |flags| contains CEF_THS_FLAG_ALPHA.
7336     ///
7337     float alpha;
7338 }
7339 
7340 
7341 
7342 ///
7343 /// Media access permissions used by OnRequestMediaAccessPermission.
7344 ///
7345 enum cef_media_access_permission_types_t
7346 {
7347     ///
7348     /// No permission.
7349     ///
7350     CEF_MEDIA_PERMISSION_NONE = 0,
7351 
7352     ///
7353     /// Device audio capture permission.
7354     ///
7355     CEF_MEDIA_PERMISSION_DEVICE_AUDIO_CAPTURE = 1 << 0,
7356 
7357     ///
7358     /// Device video capture permission.
7359     ///
7360     CEF_MEDIA_PERMISSION_DEVICE_VIDEO_CAPTURE = 1 << 1,
7361 
7362     ///
7363     /// Desktop audio capture permission.
7364     ///
7365     CEF_MEDIA_PERMISSION_DESKTOP_AUDIO_CAPTURE = 1 << 2,
7366 
7367     ///
7368     /// Desktop video capture permission.
7369     ///
7370     CEF_MEDIA_PERMISSION_DESKTOP_VIDEO_CAPTURE = 1 << 3
7371 }
7372 
7373 alias CEF_MEDIA_PERMISSION_NONE = cef_media_access_permission_types_t.CEF_MEDIA_PERMISSION_NONE;
7374 alias CEF_MEDIA_PERMISSION_DEVICE_AUDIO_CAPTURE = cef_media_access_permission_types_t.CEF_MEDIA_PERMISSION_DEVICE_AUDIO_CAPTURE;
7375 alias CEF_MEDIA_PERMISSION_DEVICE_VIDEO_CAPTURE = cef_media_access_permission_types_t.CEF_MEDIA_PERMISSION_DEVICE_VIDEO_CAPTURE;
7376 alias CEF_MEDIA_PERMISSION_DESKTOP_AUDIO_CAPTURE = cef_media_access_permission_types_t.CEF_MEDIA_PERMISSION_DESKTOP_AUDIO_CAPTURE;
7377 alias CEF_MEDIA_PERMISSION_DESKTOP_VIDEO_CAPTURE = cef_media_access_permission_types_t.CEF_MEDIA_PERMISSION_DESKTOP_VIDEO_CAPTURE;
7378 
7379 ///
7380 /// Permission types used with OnShowPermissionPrompt. Some types are
7381 /// platform-specific or only supported with the Chrome runtime. Should be kept
7382 /// in sync with Chromium's permissions::RequestType type.
7383 ///
7384 enum cef_permission_request_types_t
7385 {
7386     CEF_PERMISSION_TYPE_NONE = 0,
7387     CEF_PERMISSION_TYPE_ACCESSIBILITY_EVENTS = 1 << 0,
7388     CEF_PERMISSION_TYPE_AR_SESSION = 1 << 1,
7389     CEF_PERMISSION_TYPE_CAMERA_PAN_TILT_ZOOM = 1 << 2,
7390     CEF_PERMISSION_TYPE_CAMERA_STREAM = 1 << 3,
7391     CEF_PERMISSION_TYPE_CAPTURED_SURFACE_CONTROL = 1 << 4,
7392     CEF_PERMISSION_TYPE_CLIPBOARD = 1 << 5,
7393     CEF_PERMISSION_TYPE_TOP_LEVEL_STORAGE_ACCESS = 1 << 6,
7394     CEF_PERMISSION_TYPE_DISK_QUOTA = 1 << 7,
7395     CEF_PERMISSION_TYPE_LOCAL_FONTS = 1 << 8,
7396     CEF_PERMISSION_TYPE_GEOLOCATION = 1 << 9,
7397     CEF_PERMISSION_TYPE_IDENTITY_PROVIDER = 1 << 10,
7398     CEF_PERMISSION_TYPE_IDLE_DETECTION = 1 << 11,
7399     CEF_PERMISSION_TYPE_MIC_STREAM = 1 << 12,
7400     CEF_PERMISSION_TYPE_MIDI_SYSEX = 1 << 13,
7401     CEF_PERMISSION_TYPE_MULTIPLE_DOWNLOADS = 1 << 14,
7402     CEF_PERMISSION_TYPE_NOTIFICATIONS = 1 << 15,
7403     CEF_PERMISSION_TYPE_KEYBOARD_LOCK = 1 << 16,
7404     CEF_PERMISSION_TYPE_POINTER_LOCK = 1 << 17,
7405     CEF_PERMISSION_TYPE_PROTECTED_MEDIA_IDENTIFIER = 1 << 18,
7406     CEF_PERMISSION_TYPE_REGISTER_PROTOCOL_HANDLER = 1 << 19,
7407     CEF_PERMISSION_TYPE_STORAGE_ACCESS = 1 << 20,
7408     CEF_PERMISSION_TYPE_VR_SESSION = 1 << 21,
7409     CEF_PERMISSION_TYPE_WINDOW_MANAGEMENT = 1 << 22,
7410     CEF_PERMISSION_TYPE_FILE_SYSTEM_ACCESS = 1 << 23
7411 }
7412 
7413 alias CEF_PERMISSION_TYPE_NONE = cef_permission_request_types_t.CEF_PERMISSION_TYPE_NONE;
7414 alias CEF_PERMISSION_TYPE_ACCESSIBILITY_EVENTS = cef_permission_request_types_t.CEF_PERMISSION_TYPE_ACCESSIBILITY_EVENTS;
7415 alias CEF_PERMISSION_TYPE_AR_SESSION = cef_permission_request_types_t.CEF_PERMISSION_TYPE_AR_SESSION;
7416 alias CEF_PERMISSION_TYPE_CAMERA_PAN_TILT_ZOOM = cef_permission_request_types_t.CEF_PERMISSION_TYPE_CAMERA_PAN_TILT_ZOOM;
7417 alias CEF_PERMISSION_TYPE_CAMERA_STREAM = cef_permission_request_types_t.CEF_PERMISSION_TYPE_CAMERA_STREAM;
7418 alias CEF_PERMISSION_TYPE_CAPTURED_SURFACE_CONTROL = cef_permission_request_types_t.CEF_PERMISSION_TYPE_CAPTURED_SURFACE_CONTROL;
7419 alias CEF_PERMISSION_TYPE_CLIPBOARD = cef_permission_request_types_t.CEF_PERMISSION_TYPE_CLIPBOARD;
7420 alias CEF_PERMISSION_TYPE_TOP_LEVEL_STORAGE_ACCESS = cef_permission_request_types_t.CEF_PERMISSION_TYPE_TOP_LEVEL_STORAGE_ACCESS;
7421 alias CEF_PERMISSION_TYPE_DISK_QUOTA = cef_permission_request_types_t.CEF_PERMISSION_TYPE_DISK_QUOTA;
7422 alias CEF_PERMISSION_TYPE_LOCAL_FONTS = cef_permission_request_types_t.CEF_PERMISSION_TYPE_LOCAL_FONTS;
7423 alias CEF_PERMISSION_TYPE_GEOLOCATION = cef_permission_request_types_t.CEF_PERMISSION_TYPE_GEOLOCATION;
7424 alias CEF_PERMISSION_TYPE_IDENTITY_PROVIDER = cef_permission_request_types_t.CEF_PERMISSION_TYPE_IDENTITY_PROVIDER;
7425 alias CEF_PERMISSION_TYPE_IDLE_DETECTION = cef_permission_request_types_t.CEF_PERMISSION_TYPE_IDLE_DETECTION;
7426 alias CEF_PERMISSION_TYPE_MIC_STREAM = cef_permission_request_types_t.CEF_PERMISSION_TYPE_MIC_STREAM;
7427 alias CEF_PERMISSION_TYPE_MIDI_SYSEX = cef_permission_request_types_t.CEF_PERMISSION_TYPE_MIDI_SYSEX;
7428 alias CEF_PERMISSION_TYPE_MULTIPLE_DOWNLOADS = cef_permission_request_types_t.CEF_PERMISSION_TYPE_MULTIPLE_DOWNLOADS;
7429 alias CEF_PERMISSION_TYPE_NOTIFICATIONS = cef_permission_request_types_t.CEF_PERMISSION_TYPE_NOTIFICATIONS;
7430 alias CEF_PERMISSION_TYPE_KEYBOARD_LOCK = cef_permission_request_types_t.CEF_PERMISSION_TYPE_KEYBOARD_LOCK;
7431 alias CEF_PERMISSION_TYPE_POINTER_LOCK = cef_permission_request_types_t.CEF_PERMISSION_TYPE_POINTER_LOCK;
7432 alias CEF_PERMISSION_TYPE_PROTECTED_MEDIA_IDENTIFIER = cef_permission_request_types_t.CEF_PERMISSION_TYPE_PROTECTED_MEDIA_IDENTIFIER;
7433 alias CEF_PERMISSION_TYPE_REGISTER_PROTOCOL_HANDLER = cef_permission_request_types_t.CEF_PERMISSION_TYPE_REGISTER_PROTOCOL_HANDLER;
7434 alias CEF_PERMISSION_TYPE_STORAGE_ACCESS = cef_permission_request_types_t.CEF_PERMISSION_TYPE_STORAGE_ACCESS;
7435 alias CEF_PERMISSION_TYPE_VR_SESSION = cef_permission_request_types_t.CEF_PERMISSION_TYPE_VR_SESSION;
7436 alias CEF_PERMISSION_TYPE_WINDOW_MANAGEMENT = cef_permission_request_types_t.CEF_PERMISSION_TYPE_WINDOW_MANAGEMENT;
7437 alias CEF_PERMISSION_TYPE_FILE_SYSTEM_ACCESS = cef_permission_request_types_t.CEF_PERMISSION_TYPE_FILE_SYSTEM_ACCESS;
7438 
7439 ///
7440 /// Permission request results.
7441 ///
7442 enum cef_permission_request_result_t
7443 {
7444     ///
7445     /// Accept the permission request as an explicit user action.
7446     ///
7447     CEF_PERMISSION_RESULT_ACCEPT = 0,
7448 
7449     ///
7450     /// Deny the permission request as an explicit user action.
7451     ///
7452     CEF_PERMISSION_RESULT_DENY = 1,
7453 
7454     ///
7455     /// Dismiss the permission request as an explicit user action.
7456     ///
7457     CEF_PERMISSION_RESULT_DISMISS = 2,
7458 
7459     ///
7460     /// Ignore the permission request. If the prompt remains unhandled (e.g.
7461     /// OnShowPermissionPrompt returns false and there is no default permissions
7462     /// UI) then any related promises may remain unresolved.
7463     ///
7464     CEF_PERMISSION_RESULT_IGNORE = 3
7465 }
7466 
7467 alias CEF_PERMISSION_RESULT_ACCEPT = cef_permission_request_result_t.CEF_PERMISSION_RESULT_ACCEPT;
7468 alias CEF_PERMISSION_RESULT_DENY = cef_permission_request_result_t.CEF_PERMISSION_RESULT_DENY;
7469 alias CEF_PERMISSION_RESULT_DISMISS = cef_permission_request_result_t.CEF_PERMISSION_RESULT_DISMISS;
7470 alias CEF_PERMISSION_RESULT_IGNORE = cef_permission_request_result_t.CEF_PERMISSION_RESULT_IGNORE;
7471 
7472 ///
7473 /// Certificate types supported by CefTestServer::CreateAndStart. The matching
7474 /// certificate file must exist in the "net/data/ssl/certificates" directory.
7475 /// See CefSetDataDirectoryForTests() for related configuration.
7476 ///
7477 enum cef_test_cert_type_t
7478 {
7479     /// Valid certificate using the IP (127.0.0.1). Loads the "ok_cert.pem" file.
7480     CEF_TEST_CERT_OK_IP = 0,
7481 
7482     /// Valid certificate using the domain ("localhost"). Loads the
7483     /// "localhost_cert.pem" file.
7484     CEF_TEST_CERT_OK_DOMAIN = 1,
7485 
7486     /// Expired certificate. Loads the "expired_cert.pem" file.
7487     CEF_TEST_CERT_EXPIRED = 2
7488 }
7489 
7490 alias CEF_TEST_CERT_OK_IP = cef_test_cert_type_t.CEF_TEST_CERT_OK_IP;
7491 alias CEF_TEST_CERT_OK_DOMAIN = cef_test_cert_type_t.CEF_TEST_CERT_OK_DOMAIN;
7492 alias CEF_TEST_CERT_EXPIRED = cef_test_cert_type_t.CEF_TEST_CERT_EXPIRED;
7493 
7494 ///
7495 /// Preferences type passed to
7496 /// CefBrowserProcessHandler::OnRegisterCustomPreferences.
7497 ///
7498 enum cef_preferences_type_t
7499 {
7500     /// Global preferences registered a single time at application startup.
7501     CEF_PREFERENCES_TYPE_GLOBAL = 0,
7502 
7503     /// Request context preferences registered each time a new CefRequestContext
7504     /// is created.
7505     CEF_PREFERENCES_TYPE_REQUEST_CONTEXT = 1
7506 }
7507 
7508 alias CEF_PREFERENCES_TYPE_GLOBAL = cef_preferences_type_t.CEF_PREFERENCES_TYPE_GLOBAL;
7509 alias CEF_PREFERENCES_TYPE_REQUEST_CONTEXT = cef_preferences_type_t.CEF_PREFERENCES_TYPE_REQUEST_CONTEXT;
7510 
7511 ///
7512 /// Download interrupt reasons. Should be kept in sync with
7513 /// Chromium's download::DownloadInterruptReason type.
7514 ///
7515 enum cef_download_interrupt_reason_t
7516 {
7517     CEF_DOWNLOAD_INTERRUPT_REASON_NONE = 0,
7518 
7519     /// Generic file operation failure.
7520     CEF_DOWNLOAD_INTERRUPT_REASON_FILE_FAILED = 1,
7521 
7522     /// The file cannot be accessed due to security restrictions.
7523     CEF_DOWNLOAD_INTERRUPT_REASON_FILE_ACCESS_DENIED = 2,
7524 
7525     /// There is not enough room on the drive.
7526     CEF_DOWNLOAD_INTERRUPT_REASON_FILE_NO_SPACE = 3,
7527 
7528     /// The directory or file name is too long.
7529     CEF_DOWNLOAD_INTERRUPT_REASON_FILE_NAME_TOO_LONG = 5,
7530 
7531     /// The file is too large for the file system to handle.
7532     CEF_DOWNLOAD_INTERRUPT_REASON_FILE_TOO_LARGE = 6,
7533 
7534     /// The file contains a virus.
7535     CEF_DOWNLOAD_INTERRUPT_REASON_FILE_VIRUS_INFECTED = 7,
7536 
7537     /// The file was in use. Too many files are opened at once. We have run out of
7538     /// memory.
7539     CEF_DOWNLOAD_INTERRUPT_REASON_FILE_TRANSIENT_ERROR = 10,
7540 
7541     /// The file was blocked due to local policy.
7542     CEF_DOWNLOAD_INTERRUPT_REASON_FILE_BLOCKED = 11,
7543 
7544     /// An attempt to check the safety of the download failed due to unexpected
7545     /// reasons. See http://crbug.com/153212.
7546     CEF_DOWNLOAD_INTERRUPT_REASON_FILE_SECURITY_CHECK_FAILED = 12,
7547 
7548     /// An attempt was made to seek past the end of a file in opening
7549     /// a file (as part of resuming a previously interrupted download).
7550     CEF_DOWNLOAD_INTERRUPT_REASON_FILE_TOO_SHORT = 13,
7551 
7552     /// The partial file didn't match the expected hash.
7553     CEF_DOWNLOAD_INTERRUPT_REASON_FILE_HASH_MISMATCH = 14,
7554 
7555     /// The source and the target of the download were the same.
7556     CEF_DOWNLOAD_INTERRUPT_REASON_FILE_SAME_AS_SOURCE = 15,
7557 
7558     // Network errors.
7559 
7560     /// Generic network failure.
7561     CEF_DOWNLOAD_INTERRUPT_REASON_NETWORK_FAILED = 20,
7562 
7563     /// The network operation timed out.
7564     CEF_DOWNLOAD_INTERRUPT_REASON_NETWORK_TIMEOUT = 21,
7565 
7566     /// The network connection has been lost.
7567     CEF_DOWNLOAD_INTERRUPT_REASON_NETWORK_DISCONNECTED = 22,
7568 
7569     /// The server has gone down.
7570     CEF_DOWNLOAD_INTERRUPT_REASON_NETWORK_SERVER_DOWN = 23,
7571 
7572     /// The network request was invalid. This may be due to the original URL or a
7573     /// redirected URL:
7574     /// - Having an unsupported scheme.
7575     /// - Being an invalid URL.
7576     /// - Being disallowed by policy.
7577     CEF_DOWNLOAD_INTERRUPT_REASON_NETWORK_INVALID_REQUEST = 24,
7578 
7579     // Server responses.
7580 
7581     /// The server indicates that the operation has failed (generic).
7582     CEF_DOWNLOAD_INTERRUPT_REASON_SERVER_FAILED = 30,
7583 
7584     /// The server does not support range requests.
7585     /// Internal use only:  must restart from the beginning.
7586     CEF_DOWNLOAD_INTERRUPT_REASON_SERVER_NO_RANGE = 31,
7587 
7588     /// The server does not have the requested data.
7589     CEF_DOWNLOAD_INTERRUPT_REASON_SERVER_BAD_CONTENT = 33,
7590 
7591     /// Server didn't authorize access to resource.
7592     CEF_DOWNLOAD_INTERRUPT_REASON_SERVER_UNAUTHORIZED = 34,
7593 
7594     /// Server certificate problem.
7595     CEF_DOWNLOAD_INTERRUPT_REASON_SERVER_CERT_PROBLEM = 35,
7596 
7597     /// Server access forbidden.
7598     CEF_DOWNLOAD_INTERRUPT_REASON_SERVER_FORBIDDEN = 36,
7599 
7600     /// Unexpected server response. This might indicate that the responding server
7601     /// may not be the intended server.
7602     CEF_DOWNLOAD_INTERRUPT_REASON_SERVER_UNREACHABLE = 37,
7603 
7604     /// The server sent fewer bytes than the content-length header. It may
7605     /// indicate that the connection was closed prematurely, or the Content-Length
7606     /// header was invalid. The download is only interrupted if strong validators
7607     /// are present. Otherwise, it is treated as finished.
7608     CEF_DOWNLOAD_INTERRUPT_REASON_SERVER_CONTENT_LENGTH_MISMATCH = 38,
7609 
7610     /// An unexpected cross-origin redirect happened.
7611     CEF_DOWNLOAD_INTERRUPT_REASON_SERVER_CROSS_ORIGIN_REDIRECT = 39,
7612 
7613     // User input.
7614 
7615     /// The user canceled the download.
7616     CEF_DOWNLOAD_INTERRUPT_REASON_USER_CANCELED = 40,
7617 
7618     /// The user shut down the browser.
7619     /// Internal use only:  resume pending downloads if possible.
7620     CEF_DOWNLOAD_INTERRUPT_REASON_USER_SHUTDOWN = 41,
7621 
7622     // Crash.
7623 
7624     /// The browser crashed.
7625     /// Internal use only:  resume pending downloads if possible.
7626     CEF_DOWNLOAD_INTERRUPT_REASON_CRASH = 50
7627 }
7628 
7629 alias CEF_DOWNLOAD_INTERRUPT_REASON_NONE = cef_download_interrupt_reason_t.CEF_DOWNLOAD_INTERRUPT_REASON_NONE;
7630 alias CEF_DOWNLOAD_INTERRUPT_REASON_FILE_FAILED = cef_download_interrupt_reason_t.CEF_DOWNLOAD_INTERRUPT_REASON_FILE_FAILED;
7631 alias CEF_DOWNLOAD_INTERRUPT_REASON_FILE_ACCESS_DENIED = cef_download_interrupt_reason_t.CEF_DOWNLOAD_INTERRUPT_REASON_FILE_ACCESS_DENIED;
7632 alias CEF_DOWNLOAD_INTERRUPT_REASON_FILE_NO_SPACE = cef_download_interrupt_reason_t.CEF_DOWNLOAD_INTERRUPT_REASON_FILE_NO_SPACE;
7633 alias CEF_DOWNLOAD_INTERRUPT_REASON_FILE_NAME_TOO_LONG = cef_download_interrupt_reason_t.CEF_DOWNLOAD_INTERRUPT_REASON_FILE_NAME_TOO_LONG;
7634 alias CEF_DOWNLOAD_INTERRUPT_REASON_FILE_TOO_LARGE = cef_download_interrupt_reason_t.CEF_DOWNLOAD_INTERRUPT_REASON_FILE_TOO_LARGE;
7635 alias CEF_DOWNLOAD_INTERRUPT_REASON_FILE_VIRUS_INFECTED = cef_download_interrupt_reason_t.CEF_DOWNLOAD_INTERRUPT_REASON_FILE_VIRUS_INFECTED;
7636 alias CEF_DOWNLOAD_INTERRUPT_REASON_FILE_TRANSIENT_ERROR = cef_download_interrupt_reason_t.CEF_DOWNLOAD_INTERRUPT_REASON_FILE_TRANSIENT_ERROR;
7637 alias CEF_DOWNLOAD_INTERRUPT_REASON_FILE_BLOCKED = cef_download_interrupt_reason_t.CEF_DOWNLOAD_INTERRUPT_REASON_FILE_BLOCKED;
7638 alias CEF_DOWNLOAD_INTERRUPT_REASON_FILE_SECURITY_CHECK_FAILED = cef_download_interrupt_reason_t.CEF_DOWNLOAD_INTERRUPT_REASON_FILE_SECURITY_CHECK_FAILED;
7639 alias CEF_DOWNLOAD_INTERRUPT_REASON_FILE_TOO_SHORT = cef_download_interrupt_reason_t.CEF_DOWNLOAD_INTERRUPT_REASON_FILE_TOO_SHORT;
7640 alias CEF_DOWNLOAD_INTERRUPT_REASON_FILE_HASH_MISMATCH = cef_download_interrupt_reason_t.CEF_DOWNLOAD_INTERRUPT_REASON_FILE_HASH_MISMATCH;
7641 alias CEF_DOWNLOAD_INTERRUPT_REASON_FILE_SAME_AS_SOURCE = cef_download_interrupt_reason_t.CEF_DOWNLOAD_INTERRUPT_REASON_FILE_SAME_AS_SOURCE;
7642 alias CEF_DOWNLOAD_INTERRUPT_REASON_NETWORK_FAILED = cef_download_interrupt_reason_t.CEF_DOWNLOAD_INTERRUPT_REASON_NETWORK_FAILED;
7643 alias CEF_DOWNLOAD_INTERRUPT_REASON_NETWORK_TIMEOUT = cef_download_interrupt_reason_t.CEF_DOWNLOAD_INTERRUPT_REASON_NETWORK_TIMEOUT;
7644 alias CEF_DOWNLOAD_INTERRUPT_REASON_NETWORK_DISCONNECTED = cef_download_interrupt_reason_t.CEF_DOWNLOAD_INTERRUPT_REASON_NETWORK_DISCONNECTED;
7645 alias CEF_DOWNLOAD_INTERRUPT_REASON_NETWORK_SERVER_DOWN = cef_download_interrupt_reason_t.CEF_DOWNLOAD_INTERRUPT_REASON_NETWORK_SERVER_DOWN;
7646 alias CEF_DOWNLOAD_INTERRUPT_REASON_NETWORK_INVALID_REQUEST = cef_download_interrupt_reason_t.CEF_DOWNLOAD_INTERRUPT_REASON_NETWORK_INVALID_REQUEST;
7647 alias CEF_DOWNLOAD_INTERRUPT_REASON_SERVER_FAILED = cef_download_interrupt_reason_t.CEF_DOWNLOAD_INTERRUPT_REASON_SERVER_FAILED;
7648 alias CEF_DOWNLOAD_INTERRUPT_REASON_SERVER_NO_RANGE = cef_download_interrupt_reason_t.CEF_DOWNLOAD_INTERRUPT_REASON_SERVER_NO_RANGE;
7649 alias CEF_DOWNLOAD_INTERRUPT_REASON_SERVER_BAD_CONTENT = cef_download_interrupt_reason_t.CEF_DOWNLOAD_INTERRUPT_REASON_SERVER_BAD_CONTENT;
7650 alias CEF_DOWNLOAD_INTERRUPT_REASON_SERVER_UNAUTHORIZED = cef_download_interrupt_reason_t.CEF_DOWNLOAD_INTERRUPT_REASON_SERVER_UNAUTHORIZED;
7651 alias CEF_DOWNLOAD_INTERRUPT_REASON_SERVER_CERT_PROBLEM = cef_download_interrupt_reason_t.CEF_DOWNLOAD_INTERRUPT_REASON_SERVER_CERT_PROBLEM;
7652 alias CEF_DOWNLOAD_INTERRUPT_REASON_SERVER_FORBIDDEN = cef_download_interrupt_reason_t.CEF_DOWNLOAD_INTERRUPT_REASON_SERVER_FORBIDDEN;
7653 alias CEF_DOWNLOAD_INTERRUPT_REASON_SERVER_UNREACHABLE = cef_download_interrupt_reason_t.CEF_DOWNLOAD_INTERRUPT_REASON_SERVER_UNREACHABLE;
7654 alias CEF_DOWNLOAD_INTERRUPT_REASON_SERVER_CONTENT_LENGTH_MISMATCH = cef_download_interrupt_reason_t.CEF_DOWNLOAD_INTERRUPT_REASON_SERVER_CONTENT_LENGTH_MISMATCH;
7655 alias CEF_DOWNLOAD_INTERRUPT_REASON_SERVER_CROSS_ORIGIN_REDIRECT = cef_download_interrupt_reason_t.CEF_DOWNLOAD_INTERRUPT_REASON_SERVER_CROSS_ORIGIN_REDIRECT;
7656 alias CEF_DOWNLOAD_INTERRUPT_REASON_USER_CANCELED = cef_download_interrupt_reason_t.CEF_DOWNLOAD_INTERRUPT_REASON_USER_CANCELED;
7657 alias CEF_DOWNLOAD_INTERRUPT_REASON_USER_SHUTDOWN = cef_download_interrupt_reason_t.CEF_DOWNLOAD_INTERRUPT_REASON_USER_SHUTDOWN;
7658 alias CEF_DOWNLOAD_INTERRUPT_REASON_CRASH = cef_download_interrupt_reason_t.CEF_DOWNLOAD_INTERRUPT_REASON_CRASH;
7659 
7660 ///
7661 /// Specifies the gesture commands.
7662 ///
7663 enum cef_gesture_command_t
7664 {
7665     CEF_GESTURE_COMMAND_BACK = 0,
7666     CEF_GESTURE_COMMAND_FORWARD = 1
7667 }
7668 
7669 alias CEF_GESTURE_COMMAND_BACK = cef_gesture_command_t.CEF_GESTURE_COMMAND_BACK;
7670 alias CEF_GESTURE_COMMAND_FORWARD = cef_gesture_command_t.CEF_GESTURE_COMMAND_FORWARD;
7671 
7672 ///
7673 /// Specifies the zoom commands supported by CefBrowserHost::Zoom.
7674 ///
7675 enum cef_zoom_command_t
7676 {
7677     CEF_ZOOM_COMMAND_OUT = 0,
7678     CEF_ZOOM_COMMAND_RESET = 1,
7679     CEF_ZOOM_COMMAND_IN = 2
7680 }
7681 
7682 alias CEF_ZOOM_COMMAND_OUT = cef_zoom_command_t.CEF_ZOOM_COMMAND_OUT;
7683 alias CEF_ZOOM_COMMAND_RESET = cef_zoom_command_t.CEF_ZOOM_COMMAND_RESET;
7684 alias CEF_ZOOM_COMMAND_IN = cef_zoom_command_t.CEF_ZOOM_COMMAND_IN;
7685 
7686 ///
7687 /// Specifies the color variants supported by
7688 /// CefRequestContext::SetChromeThemeColor.
7689 ///
7690 enum cef_color_variant_t
7691 {
7692     CEF_COLOR_VARIANT_SYSTEM = 0,
7693     CEF_COLOR_VARIANT_LIGHT = 1,
7694     CEF_COLOR_VARIANT_DARK = 2,
7695     CEF_COLOR_VARIANT_TONAL_SPOT = 3,
7696     CEF_COLOR_VARIANT_NEUTRAL = 4,
7697     CEF_COLOR_VARIANT_VIBRANT = 5,
7698     CEF_COLOR_VARIANT_EXPRESSIVE = 6
7699 }
7700 
7701 alias CEF_COLOR_VARIANT_SYSTEM = cef_color_variant_t.CEF_COLOR_VARIANT_SYSTEM;
7702 alias CEF_COLOR_VARIANT_LIGHT = cef_color_variant_t.CEF_COLOR_VARIANT_LIGHT;
7703 alias CEF_COLOR_VARIANT_DARK = cef_color_variant_t.CEF_COLOR_VARIANT_DARK;
7704 alias CEF_COLOR_VARIANT_TONAL_SPOT = cef_color_variant_t.CEF_COLOR_VARIANT_TONAL_SPOT;
7705 alias CEF_COLOR_VARIANT_NEUTRAL = cef_color_variant_t.CEF_COLOR_VARIANT_NEUTRAL;
7706 alias CEF_COLOR_VARIANT_VIBRANT = cef_color_variant_t.CEF_COLOR_VARIANT_VIBRANT;
7707 alias CEF_COLOR_VARIANT_EXPRESSIVE = cef_color_variant_t.CEF_COLOR_VARIANT_EXPRESSIVE;
7708 
7709 // CEF_INCLUDE_INTERNAL_CEF_TYPES_H_
7710 // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
7711 //
7712 // Redistribution and use in source and binary forms, with or without
7713 // modification, are permitted provided that the following conditions are
7714 // met:
7715 //
7716 //    * Redistributions of source code must retain the above copyright
7717 // notice, this list of conditions and the following disclaimer.
7718 //    * Redistributions in binary form must reproduce the above
7719 // copyright notice, this list of conditions and the following disclaimer
7720 // in the documentation and/or other materials provided with the
7721 // distribution.
7722 //    * Neither the name of Google Inc. nor the name Chromium Embedded
7723 // Framework nor the names of its contributors may be used to endorse
7724 // or promote products derived from this software without specific prior
7725 // written permission.
7726 //
7727 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
7728 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
7729 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
7730 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
7731 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
7732 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
7733 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
7734 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
7735 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
7736 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
7737 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
7738 //
7739 // ---------------------------------------------------------------------------
7740 //
7741 // This file was generated by the CEF translator tool and should not edited
7742 // by hand. See the translator.README.txt file in the tools directory for
7743 // more information.
7744 //
7745 // $hash=6ea5d772fb4961ae4a658b4b730aa608fa93309f$
7746 //
7747 
7748 extern (C):
7749 
7750 ///
7751 /// Implement this structure to receive accessibility notification when
7752 /// accessibility events have been registered. The functions of this structure
7753 /// will be called on the UI thread.
7754 ///
7755 struct cef_accessibility_handler_t
7756 {
7757     ///
7758     /// Base structure.
7759     ///
7760 
7761     ///
7762     /// Called after renderer process sends accessibility tree changes to the
7763     /// browser process.
7764     ///
7765 
7766     ///
7767     /// Called after renderer process sends accessibility location changes to the
7768     /// browser process.
7769     ///
7770 
7771     // CEF_INCLUDE_CAPI_CEF_ACCESSIBILITY_HANDLER_CAPI_H_
7772 
7773     cef_base_ref_counted_t base;
7774     extern(System) void function (
7775         cef_accessibility_handler_t* self,
7776         cef_value_t* value) nothrow on_accessibility_tree_change;
7777     extern(System) void function (
7778         cef_accessibility_handler_t* self,
7779         cef_value_t* value) nothrow on_accessibility_location_change;
7780 }
7781 
7782 
7783 // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
7784 //
7785 // Redistribution and use in source and binary forms, with or without
7786 // modification, are permitted provided that the following conditions are
7787 // met:
7788 //
7789 //    * Redistributions of source code must retain the above copyright
7790 // notice, this list of conditions and the following disclaimer.
7791 //    * Redistributions in binary form must reproduce the above
7792 // copyright notice, this list of conditions and the following disclaimer
7793 // in the documentation and/or other materials provided with the
7794 // distribution.
7795 //    * Neither the name of Google Inc. nor the name Chromium Embedded
7796 // Framework nor the names of its contributors may be used to endorse
7797 // or promote products derived from this software without specific prior
7798 // written permission.
7799 //
7800 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
7801 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
7802 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
7803 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
7804 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
7805 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
7806 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
7807 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
7808 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
7809 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
7810 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
7811 //
7812 // ---------------------------------------------------------------------------
7813 //
7814 // This file was generated by the CEF translator tool and should not edited
7815 // by hand. See the translator.README.txt file in the tools directory for
7816 // more information.
7817 //
7818 // $hash=dfa0d4d2da319b2fd5e92324fd14301b500ceb5c$
7819 //
7820 
7821 extern (C):
7822 
7823 ///
7824 /// Implement this structure to provide handler implementations. Methods will be
7825 /// called by the process and/or thread indicated.
7826 ///
7827 struct cef_app_t
7828 {
7829     ///
7830     /// Base structure.
7831     ///
7832 
7833     ///
7834     /// Provides an opportunity to view and/or modify command-line arguments
7835     /// before processing by CEF and Chromium. The |process_type| value will be
7836     /// NULL for the browser process. Do not keep a reference to the
7837     /// cef_command_line_t object passed to this function. The
7838     /// cef_settings_t.command_line_args_disabled value can be used to start with
7839     /// an NULL command-line object. Any values specified in CefSettings that
7840 
7841     cef_base_ref_counted_t base;
7842     /// equate to command-line arguments will be set before this function is
7843     /// called. Be cautious when using this function to modify command-line
7844     /// arguments for non-browser processes as this may result in undefined
7845     /// behavior including crashes.
7846     ///
7847     extern(System) void function (
7848         cef_app_t* self,
7849         const(cef_string_t)* process_type,
7850         cef_command_line_t* command_line) nothrow on_before_command_line_processing;
7851 
7852     ///
7853     /// Provides an opportunity to register custom schemes. Do not keep a
7854     /// reference to the |registrar| object. This function is called on the main
7855     /// thread for each process and the registered schemes should be the same
7856     /// across all processes.
7857     ///
7858     extern(System) void function (
7859         cef_app_t* self,
7860         cef_scheme_registrar_t* registrar) nothrow on_register_custom_schemes;
7861 
7862     ///
7863     /// Return the handler for resource bundle events. If
7864     /// cef_settings_t.pack_loading_disabled is true (1) a handler must be
7865     /// returned. If no handler is returned resources will be loaded from pack
7866     /// files. This function is called by the browser and render processes on
7867     /// multiple threads.
7868     ///
7869     extern(System) cef_resource_bundle_handler_t* function (
7870         cef_app_t* self) nothrow get_resource_bundle_handler;
7871 
7872     ///
7873     /// Return the handler for functionality specific to the browser process. This
7874     /// function is called on multiple threads in the browser process.
7875     ///
7876     extern(System) cef_browser_process_handler_t* function (
7877         cef_app_t* self) nothrow get_browser_process_handler;
7878 
7879     ///
7880     /// Return the handler for functionality specific to the render process. This
7881     /// function is called on the render process main thread.
7882     ///
7883     extern(System) cef_render_process_handler_t* function (
7884         cef_app_t* self) nothrow get_render_process_handler;
7885 }
7886 
7887 
7888 
7889 ///
7890 /// This function should be called from the application entry point function to
7891 /// execute a secondary process. It can be used to run secondary processes from
7892 /// the browser client executable (default behavior) or from a separate
7893 /// executable specified by the cef_settings_t.browser_subprocess_path value. If
7894 /// called for the browser process (identified by no "type" command-line value)
7895 /// it will return immediately with a value of -1. If called for a recognized
7896 /// secondary process it will block until the process should exit and then
7897 /// return the process exit code. The |application| parameter may be NULL. The
7898 /// |windows_sandbox_info| parameter is only used on Windows and may be NULL
7899 /// (see cef_sandbox_win.h for details).
7900 ///
7901 int cef_execute_process (
7902     const(cef_main_args_t)* args,
7903     cef_app_t* application,
7904     void* windows_sandbox_info);
7905 
7906 ///
7907 /// This function should be called on the main application thread to initialize
7908 /// the CEF browser process. The |application| parameter may be NULL. Returns
7909 /// true (1) if initialization succeeds. Returns false (0) if initialization
7910 /// fails or if early exit is desired (for example, due to process singleton
7911 /// relaunch behavior). If this function returns false (0) then the application
7912 /// should exit immediately without calling any other CEF functions except,
7913 /// optionally, CefGetErrorCode. The |windows_sandbox_info| parameter is only
7914 /// used on Windows and may be NULL (see cef_sandbox_win.h for details).
7915 ///
7916 int cef_initialize (
7917     const(cef_main_args_t)* args,
7918     const(cef_settings_t)* settings,
7919     cef_app_t* application,
7920     void* windows_sandbox_info);
7921 
7922 ///
7923 /// This function can optionally be called on the main application thread after
7924 /// CefInitialize to retrieve the initialization exit code. When CefInitialize
7925 /// returns true (1) the exit code will be 0 (CEF_RESULT_CODE_NORMAL_EXIT).
7926 /// Otherwise, see cef_resultcode_t for possible exit code values including
7927 /// browser process initialization errors and normal early exit conditions (such
7928 /// as CEF_RESULT_CODE_NORMAL_EXIT_PROCESS_NOTIFIED for process singleton
7929 /// relaunch behavior).
7930 ///
7931 int cef_get_exit_code ();
7932 
7933 ///
7934 /// This function should be called on the main application thread to shut down
7935 /// the CEF browser process before the application exits. Do not call any other
7936 /// CEF functions after calling this function.
7937 ///
7938 void cef_shutdown ();
7939 
7940 ///
7941 /// Perform a single iteration of CEF message loop processing. This function is
7942 /// provided for cases where the CEF message loop must be integrated into an
7943 /// existing application message loop. Use of this function is not recommended
7944 /// for most users; use either the cef_run_message_loop() function or
7945 /// cef_settings_t.multi_threaded_message_loop if possible. When using this
7946 /// function care must be taken to balance performance against excessive CPU
7947 /// usage. It is recommended to enable the cef_settings_t.external_message_pump
7948 /// option when using this function so that
7949 /// cef_browser_process_handler_t::on_schedule_message_pump_work() callbacks can
7950 /// facilitate the scheduling process. This function should only be called on
7951 /// the main application thread and only if cef_initialize() is called with a
7952 /// cef_settings_t.multi_threaded_message_loop value of false (0). This function
7953 /// will not block.
7954 ///
7955 void cef_do_message_loop_work ();
7956 
7957 ///
7958 /// Run the CEF message loop. Use this function instead of an application-
7959 /// provided message loop to get the best balance between performance and CPU
7960 /// usage. This function should only be called on the main application thread
7961 /// and only if cef_initialize() is called with a
7962 /// cef_settings_t.multi_threaded_message_loop value of false (0). This function
7963 /// will block until a quit message is received by the system.
7964 ///
7965 void cef_run_message_loop ();
7966 
7967 ///
7968 /// Quit the CEF message loop that was started by calling
7969 /// cef_run_message_loop(). This function should only be called on the main
7970 /// application thread and only if cef_run_message_loop() was used.
7971 ///
7972 void cef_quit_message_loop ();
7973 
7974 // CEF_INCLUDE_CAPI_CEF_APP_CAPI_H_
7975 // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
7976 //
7977 // Redistribution and use in source and binary forms, with or without
7978 // modification, are permitted provided that the following conditions are
7979 // met:
7980 //
7981 //    * Redistributions of source code must retain the above copyright
7982 // notice, this list of conditions and the following disclaimer.
7983 //    * Redistributions in binary form must reproduce the above
7984 // copyright notice, this list of conditions and the following disclaimer
7985 // in the documentation and/or other materials provided with the
7986 // distribution.
7987 //    * Neither the name of Google Inc. nor the name Chromium Embedded
7988 // Framework nor the names of its contributors may be used to endorse
7989 // or promote products derived from this software without specific prior
7990 // written permission.
7991 //
7992 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
7993 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
7994 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
7995 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
7996 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
7997 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
7998 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
7999 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
8000 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
8001 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
8002 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
8003 //
8004 // ---------------------------------------------------------------------------
8005 //
8006 // This file was generated by the CEF translator tool and should not edited
8007 // by hand. See the translator.README.txt file in the tools directory for
8008 // more information.
8009 //
8010 // $hash=d98482eba93dcd8b6a6f69b2732162733c73203d$
8011 //
8012 
8013 extern (C):
8014 
8015 ///
8016 /// Implement this structure to handle audio events.
8017 ///
8018 struct cef_audio_handler_t
8019 {
8020     ///
8021     /// Base structure.
8022     ///
8023 
8024     ///
8025     /// Called on the UI thread to allow configuration of audio stream parameters.
8026     /// Return true (1) to proceed with audio stream capture, or false (0) to
8027     /// cancel it. All members of |params| can optionally be configured here, but
8028     /// they are also pre-filled with some sensible defaults.
8029     ///
8030 
8031     ///
8032     /// Called on a browser audio capture thread when the browser starts streaming
8033     /// audio. OnAudioStreamStopped will always be called after
8034     /// OnAudioStreamStarted; both functions may be called multiple times for the
8035 
8036     cef_base_ref_counted_t base;
8037     extern(System) int function (
8038         cef_audio_handler_t* self,
8039         cef_browser_t* browser,
8040         cef_audio_parameters_t* params) nothrow get_audio_parameters;
8041     /// same browser. |params| contains the audio parameters like sample rate and
8042     /// channel layout. |channels| is the number of channels.
8043     ///
8044     extern(System) void function (
8045         cef_audio_handler_t* self,
8046         cef_browser_t* browser,
8047         const(cef_audio_parameters_t)* params,
8048         int channels) nothrow on_audio_stream_started;
8049 
8050     ///
8051     /// Called on the audio stream thread when a PCM packet is received for the
8052     /// stream. |data| is an array representing the raw PCM data as a floating
8053     /// point type, i.e. 4-byte value(s). |frames| is the number of frames in the
8054     /// PCM packet. |pts| is the presentation timestamp (in milliseconds since the
8055     /// Unix Epoch) and represents the time at which the decompressed packet
8056     /// should be presented to the user. Based on |frames| and the
8057     /// |channel_layout| value passed to OnAudioStreamStarted you can calculate
8058     /// the size of the |data| array in bytes.
8059     ///
8060     extern(System) void function (
8061         cef_audio_handler_t* self,
8062         cef_browser_t* browser,
8063         const(float*)* data,
8064         int frames,
8065         long pts) nothrow on_audio_stream_packet;
8066 
8067     ///
8068     /// Called on the UI thread when the stream has stopped. OnAudioSteamStopped
8069     /// will always be called after OnAudioStreamStarted; both functions may be
8070     /// called multiple times for the same stream.
8071     ///
8072     extern(System) void function (
8073         cef_audio_handler_t* self,
8074         cef_browser_t* browser) nothrow on_audio_stream_stopped;
8075 
8076     ///
8077     /// Called on the UI or audio stream thread when an error occurred. During the
8078     /// stream creation phase this callback will be called on the UI thread while
8079     /// in the capturing phase it will be called on the audio stream thread. The
8080     /// stream will be stopped immediately.
8081     ///
8082     extern(System) void function (
8083         cef_audio_handler_t* self,
8084         cef_browser_t* browser,
8085         const(cef_string_t)* message) nothrow on_audio_stream_error;
8086 }
8087 
8088 
8089 
8090 // CEF_INCLUDE_CAPI_CEF_AUDIO_HANDLER_CAPI_H_
8091 // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
8092 //
8093 // Redistribution and use in source and binary forms, with or without
8094 // modification, are permitted provided that the following conditions are
8095 // met:
8096 //
8097 //    * Redistributions of source code must retain the above copyright
8098 // notice, this list of conditions and the following disclaimer.
8099 //    * Redistributions in binary form must reproduce the above
8100 // copyright notice, this list of conditions and the following disclaimer
8101 // in the documentation and/or other materials provided with the
8102 // distribution.
8103 //    * Neither the name of Google Inc. nor the name Chromium Embedded
8104 // Framework nor the names of its contributors may be used to endorse
8105 // or promote products derived from this software without specific prior
8106 // written permission.
8107 //
8108 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
8109 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
8110 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
8111 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
8112 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
8113 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
8114 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
8115 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
8116 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
8117 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
8118 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
8119 //
8120 // ---------------------------------------------------------------------------
8121 //
8122 // This file was generated by the CEF translator tool and should not edited
8123 // by hand. See the translator.README.txt file in the tools directory for
8124 // more information.
8125 //
8126 // $hash=b63947918eca8c31790cae16b2e8a0be7e9464dd$
8127 //
8128 
8129 extern (C):
8130 
8131 ///
8132 /// Callback structure used for asynchronous continuation of authentication
8133 /// requests.
8134 ///
8135 struct cef_auth_callback_t
8136 {
8137     ///
8138     /// Base structure.
8139     ///
8140 
8141     ///
8142     /// Continue the authentication request.
8143     ///
8144 
8145     ///
8146     /// Cancel the authentication request.
8147     ///
8148 
8149     // CEF_INCLUDE_CAPI_CEF_AUTH_CALLBACK_CAPI_H_
8150 
8151     cef_base_ref_counted_t base;
8152     extern(System) void function (
8153         cef_auth_callback_t* self,
8154         const(cef_string_t)* username,
8155         const(cef_string_t)* password) nothrow cont;
8156     extern(System) void function (cef_auth_callback_t* self) nothrow cancel;
8157 }
8158 
8159 
8160 // Copyright (c) 2014 Marshall A. Greenblatt. All rights reserved.
8161 //
8162 // Redistribution and use in source and binary forms, with or without
8163 // modification, are permitted provided that the following conditions are
8164 // met:
8165 //
8166 //    * Redistributions of source code must retain the above copyright
8167 // notice, this list of conditions and the following disclaimer.
8168 //    * Redistributions in binary form must reproduce the above
8169 // copyright notice, this list of conditions and the following disclaimer
8170 // in the documentation and/or other materials provided with the
8171 // distribution.
8172 //    * Neither the name of Google Inc. nor the name Chromium Embedded
8173 // Framework nor the names of its contributors may be used to endorse
8174 // or promote products derived from this software without specific prior
8175 // written permission.
8176 //
8177 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
8178 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
8179 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
8180 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
8181 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
8182 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
8183 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
8184 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
8185 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
8186 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
8187 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
8188 
8189 import core.stdc.config;
8190 
8191 extern (C):
8192 
8193 ///
8194 // All ref-counted framework structures must include this structure first.
8195 ///
8196 struct cef_base_ref_counted_t
8197 {
8198     ///
8199     // Size of the data structure.
8200     ///
8201 
8202     ///
8203     // Called to increment the reference count for the object. Should be called
8204     // for every new copy of a pointer to a given object.
8205     ///
8206 
8207     ///
8208     // Called to decrement the reference count for the object. If the reference
8209     alias size_t = c_ulong;
8210     size_t size;
8211     extern(System) void function (cef_base_ref_counted_t* self) nothrow add_ref;
8212     // count falls to 0 the object should self-delete. Returns true (1) if the
8213     // resulting reference count is 0.
8214     ///
8215     extern(System) int function (cef_base_ref_counted_t* self) nothrow release;
8216 
8217     ///
8218     // Returns true (1) if the current reference count is 1.
8219     ///
8220     extern(System) int function (cef_base_ref_counted_t* self) nothrow has_one_ref;
8221 
8222     ///
8223     // Returns true (1) if the current reference count is at least 1.
8224     ///
8225     extern(System) int function (cef_base_ref_counted_t* self) nothrow has_at_least_one_ref;
8226 }
8227 
8228 
8229 
8230 ///
8231 // All scoped framework structures must include this structure first.
8232 ///
8233 struct cef_base_scoped_t
8234 {
8235     ///
8236     // Size of the data structure.
8237     ///
8238     size_t size;
8239 
8240     ///
8241     // Called to delete this object. May be NULL if the object is not owned.
8242     ///
8243     extern(System) void function (cef_base_scoped_t* self) nothrow del;
8244 }
8245 
8246 
8247 
8248 // Check that the structure |s|, which is defined with a size_t member at the
8249 // top, is large enough to contain the specified member |f|.
8250 
8251 
8252 
8253 
8254 // CEF_INCLUDE_CAPI_CEF_BASE_CAPI_H_
8255 // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
8256 //
8257 // Redistribution and use in source and binary forms, with or without
8258 // modification, are permitted provided that the following conditions are
8259 // met:
8260 //
8261 //    * Redistributions of source code must retain the above copyright
8262 // notice, this list of conditions and the following disclaimer.
8263 //    * Redistributions in binary form must reproduce the above
8264 // copyright notice, this list of conditions and the following disclaimer
8265 // in the documentation and/or other materials provided with the
8266 // distribution.
8267 //    * Neither the name of Google Inc. nor the name Chromium Embedded
8268 // Framework nor the names of its contributors may be used to endorse
8269 // or promote products derived from this software without specific prior
8270 // written permission.
8271 //
8272 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
8273 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
8274 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
8275 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
8276 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
8277 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
8278 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
8279 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
8280 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
8281 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
8282 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
8283 //
8284 // ---------------------------------------------------------------------------
8285 //
8286 // This file was generated by the CEF translator tool and should not edited
8287 // by hand. See the translator.README.txt file in the tools directory for
8288 // more information.
8289 //
8290 // $hash=6ee74f31d37a1b5ab3c9c5ccbe2dce9841329b38$
8291 //
8292 
8293 import core.stdc.config;
8294 
8295 extern (C):
8296 
8297 
8298 
8299 ///
8300 /// Structure used to represent a browser. When used in the browser process the
8301 /// functions of this structure may be called on any thread unless otherwise
8302 /// indicated in the comments. When used in the render process the functions of
8303 /// this structure may only be called on the main thread.
8304 ///
8305 struct cef_browser_t
8306 {
8307     ///
8308     /// Base structure.
8309     ///
8310 
8311     ///
8312     /// True if this object is currently valid. This will return false (0) after
8313     /// cef_life_span_handler_t::OnBeforeClose is called.
8314 
8315     cef_base_ref_counted_t base;
8316     ///
8317     extern(System) int function (cef_browser_t* self) nothrow is_valid;
8318 
8319     ///
8320     /// Returns the browser host object. This function can only be called in the
8321     /// browser process.
8322     ///
8323     extern(System) cef_browser_host_t* function (cef_browser_t* self) nothrow get_host;
8324 
8325     ///
8326     /// Returns true (1) if the browser can navigate backwards.
8327     ///
8328     extern(System) int function (cef_browser_t* self) nothrow can_go_back;
8329 
8330     ///
8331     /// Navigate backwards.
8332     ///
8333     extern(System) void function (cef_browser_t* self) nothrow go_back;
8334 
8335     ///
8336     /// Returns true (1) if the browser can navigate forwards.
8337     ///
8338     extern(System) int function (cef_browser_t* self) nothrow can_go_forward;
8339 
8340     ///
8341     /// Navigate forwards.
8342     ///
8343     extern(System) void function (cef_browser_t* self) nothrow go_forward;
8344 
8345     ///
8346     /// Returns true (1) if the browser is currently loading.
8347     ///
8348     extern(System) int function (cef_browser_t* self) nothrow is_loading;
8349 
8350     ///
8351     /// Reload the current page.
8352     ///
8353     extern(System) void function (cef_browser_t* self) nothrow reload;
8354 
8355     ///
8356     /// Reload the current page ignoring any cached data.
8357     ///
8358     extern(System) void function (cef_browser_t* self) nothrow reload_ignore_cache;
8359 
8360     ///
8361     /// Stop loading the page.
8362     ///
8363     extern(System) void function (cef_browser_t* self) nothrow stop_load;
8364 
8365     ///
8366     /// Returns the globally unique identifier for this browser. This value is
8367     /// also used as the tabId for extension APIs.
8368     ///
8369     extern(System) int function (cef_browser_t* self) nothrow get_identifier;
8370 
8371     ///
8372     /// Returns true (1) if this object is pointing to the same handle as |that|
8373     /// object.
8374     ///
8375     extern(System) int function (cef_browser_t* self, cef_browser_t* that) nothrow is_same;
8376 
8377     ///
8378     /// Returns true (1) if the browser is a popup.
8379     ///
8380     extern(System) int function (cef_browser_t* self) nothrow is_popup;
8381 
8382     ///
8383     /// Returns true (1) if a document has been loaded in the browser.
8384     ///
8385     extern(System) int function (cef_browser_t* self) nothrow has_document;
8386 
8387     ///
8388     /// Returns the main (top-level) frame for the browser. In the browser process
8389     /// this will return a valid object until after
8390     /// cef_life_span_handler_t::OnBeforeClose is called. In the renderer process
8391     /// this will return NULL if the main frame is hosted in a different renderer
8392     /// process (e.g. for cross-origin sub-frames). The main frame object will
8393     /// change during cross-origin navigation or re-navigation after renderer
8394     /// process termination (due to crashes, etc).
8395     ///
8396     extern(System) cef_frame_t* function (cef_browser_t* self) nothrow get_main_frame;
8397 
8398     ///
8399     /// Returns the focused frame for the browser.
8400     ///
8401     extern(System) cef_frame_t* function (cef_browser_t* self) nothrow get_focused_frame;
8402 
8403     ///
8404     /// Returns the frame with the specified identifier, or NULL if not found.
8405     ///
8406     extern(System) cef_frame_t* function (
8407         cef_browser_t* self,
8408         const(cef_string_t)* identifier) nothrow get_frame_by_identifier;
8409 
8410     ///
8411     /// Returns the frame with the specified name, or NULL if not found.
8412     ///
8413     extern(System) cef_frame_t* function (
8414         cef_browser_t* self,
8415         const(cef_string_t)* name) nothrow get_frame_by_name;
8416 
8417     ///
8418     /// Returns the number of frames that currently exist.
8419     ///
8420     extern(System) size_t function (cef_browser_t* self) nothrow get_frame_count;
8421 
8422     ///
8423     /// Returns the identifiers of all existing frames.
8424     ///
8425     extern(System) void function (
8426         cef_browser_t* self,
8427         cef_string_list_t identifiers) nothrow get_frame_identifiers;
8428 
8429     ///
8430     /// Returns the names of all existing frames.
8431     ///
8432     extern(System) void function (
8433         cef_browser_t* self,
8434         cef_string_list_t names) nothrow get_frame_names;
8435 }
8436 
8437 
8438 
8439 ///
8440 /// Callback structure for cef_browser_host_t::RunFileDialog. The functions of
8441 /// this structure will be called on the browser process UI thread.
8442 ///
8443 struct cef_run_file_dialog_callback_t
8444 {
8445     ///
8446     /// Base structure.
8447     ///
8448     cef_base_ref_counted_t base;
8449 
8450     ///
8451     /// Called asynchronously after the file dialog is dismissed. |file_paths|
8452     /// will be a single value or a list of values depending on the dialog mode.
8453     /// If the selection was cancelled |file_paths| will be NULL.
8454     ///
8455     extern(System) void function (
8456         cef_run_file_dialog_callback_t* self,
8457         cef_string_list_t file_paths) nothrow on_file_dialog_dismissed;
8458 }
8459 
8460 
8461 
8462 ///
8463 /// Callback structure for cef_browser_host_t::GetNavigationEntries. The
8464 /// functions of this structure will be called on the browser process UI thread.
8465 ///
8466 struct cef_navigation_entry_visitor_t
8467 {
8468     ///
8469     /// Base structure.
8470     ///
8471     cef_base_ref_counted_t base;
8472 
8473     ///
8474     /// Method that will be executed. Do not keep a reference to |entry| outside
8475     /// of this callback. Return true (1) to continue visiting entries or false
8476     /// (0) to stop. |current| is true (1) if this entry is the currently loaded
8477     /// navigation entry. |index| is the 0-based index of this entry and |total|
8478     /// is the total number of entries.
8479     ///
8480     extern(System) int function (
8481         cef_navigation_entry_visitor_t* self,
8482         cef_navigation_entry_t* entry,
8483         int current,
8484         int index,
8485         int total) nothrow visit;
8486 }
8487 
8488 
8489 
8490 ///
8491 /// Callback structure for cef_browser_host_t::PrintToPDF. The functions of this
8492 /// structure will be called on the browser process UI thread.
8493 ///
8494 struct cef_pdf_print_callback_t
8495 {
8496     ///
8497     /// Base structure.
8498     ///
8499     cef_base_ref_counted_t base;
8500 
8501     ///
8502     /// Method that will be executed when the PDF printing has completed. |path|
8503     /// is the output path. |ok| will be true (1) if the printing completed
8504     /// successfully or false (0) otherwise.
8505     ///
8506     extern(System) void function (
8507         cef_pdf_print_callback_t* self,
8508         const(cef_string_t)* path,
8509         int ok) nothrow on_pdf_print_finished;
8510 }
8511 
8512 
8513 
8514 ///
8515 /// Callback structure for cef_browser_host_t::DownloadImage. The functions of
8516 /// this structure will be called on the browser process UI thread.
8517 ///
8518 struct cef_download_image_callback_t
8519 {
8520     ///
8521     /// Base structure.
8522     ///
8523     cef_base_ref_counted_t base;
8524 
8525     ///
8526     /// Method that will be executed when the image download has completed.
8527     /// |image_url| is the URL that was downloaded and |http_status_code| is the
8528     /// resulting HTTP status code. |image| is the resulting image, possibly at
8529     /// multiple scale factors, or NULL if the download failed.
8530     ///
8531     extern(System) void function (
8532         cef_download_image_callback_t* self,
8533         const(cef_string_t)* image_url,
8534         int http_status_code,
8535         cef_image_t* image) nothrow on_download_image_finished;
8536 }
8537 
8538 
8539 
8540 ///
8541 /// Structure used to represent the browser process aspects of a browser. The
8542 /// functions of this structure can only be called in the browser process. They
8543 /// may be called on any thread in that process unless otherwise indicated in
8544 /// the comments.
8545 ///
8546 struct cef_browser_host_t
8547 {
8548     ///
8549     /// Base structure.
8550     ///
8551     cef_base_ref_counted_t base;
8552 
8553     ///
8554     /// Returns the hosted browser object.
8555     ///
8556     extern(System) cef_browser_t* function (cef_browser_host_t* self) nothrow get_browser;
8557 
8558     ///
8559     /// Request that the browser close. The JavaScript 'onbeforeunload' event will
8560     /// be fired. If |force_close| is false (0) the event handler, if any, will be
8561     /// allowed to prompt the user and the user can optionally cancel the close.
8562     /// If |force_close| is true (1) the prompt will not be displayed and the
8563     /// close will proceed. Results in a call to
8564     /// cef_life_span_handler_t::do_close() if the event handler allows the close
8565     /// or if |force_close| is true (1). See cef_life_span_handler_t::do_close()
8566     /// documentation for additional usage information.
8567     ///
8568     extern(System) void function (cef_browser_host_t* self, int force_close) nothrow close_browser;
8569 
8570     ///
8571     /// Helper for closing a browser. Call this function from the top-level window
8572     /// close handler (if any). Internally this calls CloseBrowser(false (0)) if
8573     /// the close has not yet been initiated. This function returns false (0)
8574     /// while the close is pending and true (1) after the close has completed. See
8575     /// close_browser() and cef_life_span_handler_t::do_close() documentation for
8576     /// additional usage information. This function must be called on the browser
8577     /// process UI thread.
8578     ///
8579     extern(System) int function (cef_browser_host_t* self) nothrow try_close_browser;
8580 
8581     ///
8582     /// Set whether the browser is focused.
8583     ///
8584     extern(System) void function (cef_browser_host_t* self, int focus) nothrow set_focus;
8585 
8586     ///
8587     /// Retrieve the window handle (if any) for this browser. If this browser is
8588     /// wrapped in a cef_browser_view_t this function should be called on the
8589     /// browser process UI thread and it will return the handle for the top-level
8590     /// native window.
8591     ///
8592     extern(System) c_ulong function (cef_browser_host_t* self) nothrow get_window_handle;
8593 
8594     ///
8595     /// Retrieve the window handle (if any) of the browser that opened this
8596     /// browser. Will return NULL for non-popup browsers or if this browser is
8597     /// wrapped in a cef_browser_view_t. This function can be used in combination
8598     /// with custom handling of modal windows.
8599     ///
8600     extern(System) c_ulong function (cef_browser_host_t* self) nothrow get_opener_window_handle;
8601 
8602     ///
8603     /// Returns true (1) if this browser is wrapped in a cef_browser_view_t.
8604     ///
8605     extern(System) int function (cef_browser_host_t* self) nothrow has_view;
8606 
8607     ///
8608     /// Returns the client for this browser.
8609     ///
8610     extern(System) cef_client_t* function (cef_browser_host_t* self) nothrow get_client;
8611 
8612     ///
8613     /// Returns the request context for this browser.
8614     ///
8615     extern(System) cef_request_context_t* function (
8616         cef_browser_host_t* self) nothrow get_request_context;
8617 
8618     ///
8619     /// Returns true (1) if this browser can execute the specified zoom command.
8620     /// This function can only be called on the UI thread.
8621     ///
8622     extern(System) int function (
8623         cef_browser_host_t* self,
8624         cef_zoom_command_t command) nothrow can_zoom;
8625 
8626     ///
8627     /// Execute a zoom command in this browser. If called on the UI thread the
8628     /// change will be applied immediately. Otherwise, the change will be applied
8629     /// asynchronously on the UI thread.
8630     ///
8631     extern(System) void function (cef_browser_host_t* self, cef_zoom_command_t command) nothrow zoom;
8632 
8633     ///
8634     /// Get the default zoom level. This value will be 0.0 by default but can be
8635     /// configured with the Chrome runtime. This function can only be called on
8636     /// the UI thread.
8637     ///
8638     extern(System) double function (cef_browser_host_t* self) nothrow get_default_zoom_level;
8639 
8640     ///
8641     /// Get the current zoom level. This function can only be called on the UI
8642     /// thread.
8643     ///
8644     extern(System) double function (cef_browser_host_t* self) nothrow get_zoom_level;
8645 
8646     ///
8647     /// Change the zoom level to the specified value. Specify 0.0 to reset the
8648     /// zoom level to the default. If called on the UI thread the change will be
8649     /// applied immediately. Otherwise, the change will be applied asynchronously
8650     /// on the UI thread.
8651     ///
8652     extern(System) void function (cef_browser_host_t* self, double zoomLevel) nothrow set_zoom_level;
8653 
8654     ///
8655     /// Call to run a file chooser dialog. Only a single file chooser dialog may
8656     /// be pending at any given time. |mode| represents the type of dialog to
8657     /// display. |title| to the title to be used for the dialog and may be NULL to
8658     /// show the default title ("Open" or "Save" depending on the mode).
8659     /// |default_file_path| is the path with optional directory and/or file name
8660     /// component that will be initially selected in the dialog. |accept_filters|
8661     /// are used to restrict the selectable file types and may any combination of
8662     /// (a) valid lower-cased MIME types (e.g. "text/*" or "image/*"), (b)
8663     /// individual file extensions (e.g. ".txt" or ".png"), or (c) combined
8664     /// description and file extension delimited using "|" and ";" (e.g. "Image
8665     /// Types|.png;.gif;.jpg"). |callback| will be executed after the dialog is
8666     /// dismissed or immediately if another dialog is already pending. The dialog
8667     /// will be initiated asynchronously on the UI thread.
8668     ///
8669     extern(System) void function (
8670         cef_browser_host_t* self,
8671         cef_file_dialog_mode_t mode,
8672         const(cef_string_t)* title,
8673         const(cef_string_t)* default_file_path,
8674         cef_string_list_t accept_filters,
8675         cef_run_file_dialog_callback_t* callback) nothrow run_file_dialog;
8676 
8677     ///
8678     /// Download the file at |url| using cef_download_handler_t.
8679     ///
8680     extern(System) void function (
8681         cef_browser_host_t* self,
8682         const(cef_string_t)* url) nothrow start_download;
8683 
8684     ///
8685     /// Download |image_url| and execute |callback| on completion with the images
8686     /// received from the renderer. If |is_favicon| is true (1) then cookies are
8687     /// not sent and not accepted during download. Images with density independent
8688     /// pixel (DIP) sizes larger than |max_image_size| are filtered out from the
8689     /// image results. Versions of the image at different scale factors may be
8690     /// downloaded up to the maximum scale factor supported by the system. If
8691     /// there are no image results <= |max_image_size| then the smallest image is
8692     /// resized to |max_image_size| and is the only result. A |max_image_size| of
8693     /// 0 means unlimited. If |bypass_cache| is true (1) then |image_url| is
8694     /// requested from the server even if it is present in the browser cache.
8695     ///
8696     extern(System) void function (
8697         cef_browser_host_t* self,
8698         const(cef_string_t)* image_url,
8699         int is_favicon,
8700         uint max_image_size,
8701         int bypass_cache,
8702         cef_download_image_callback_t* callback) nothrow download_image;
8703 
8704     ///
8705     /// Print the current browser contents.
8706     ///
8707     extern(System) void function (cef_browser_host_t* self) nothrow print;
8708 
8709     ///
8710     /// Print the current browser contents to the PDF file specified by |path| and
8711     /// execute |callback| on completion. The caller is responsible for deleting
8712     /// |path| when done. For PDF printing to work on Linux you must implement the
8713     /// cef_print_handler_t::GetPdfPaperSize function.
8714     ///
8715     extern(System) void function (
8716         cef_browser_host_t* self,
8717         const(cef_string_t)* path,
8718         const(cef_pdf_print_settings_t)* settings,
8719         cef_pdf_print_callback_t* callback) nothrow print_to_pdf;
8720 
8721     ///
8722     /// Search for |searchText|. |forward| indicates whether to search forward or
8723     /// backward within the page. |matchCase| indicates whether the search should
8724     /// be case-sensitive. |findNext| indicates whether this is the first request
8725     /// or a follow-up. The search will be restarted if |searchText| or
8726     /// |matchCase| change. The search will be stopped if |searchText| is NULL.
8727     /// The cef_find_handler_t instance, if any, returned via
8728     /// cef_client_t::GetFindHandler will be called to report find results.
8729     ///
8730     extern(System) void function (
8731         cef_browser_host_t* self,
8732         const(cef_string_t)* searchText,
8733         int forward,
8734         int matchCase,
8735         int findNext) nothrow find;
8736 
8737     ///
8738     /// Cancel all searches that are currently going on.
8739     ///
8740     extern(System) void function (cef_browser_host_t* self, int clearSelection) nothrow stop_finding;
8741 
8742     ///
8743     /// Open developer tools (DevTools) in its own browser. The DevTools browser
8744     /// will remain associated with this browser. If the DevTools browser is
8745     /// already open then it will be focused, in which case the |windowInfo|,
8746     /// |client| and |settings| parameters will be ignored. If
8747     /// |inspect_element_at| is non-NULL then the element at the specified (x,y)
8748     /// location will be inspected. The |windowInfo| parameter will be ignored if
8749     /// this browser is wrapped in a cef_browser_view_t.
8750     ///
8751     extern(System) void function (
8752         cef_browser_host_t* self,
8753         const(cef_window_info_t)* windowInfo,
8754         cef_client_t* client,
8755         const(cef_browser_settings_t)* settings,
8756         const(cef_point_t)* inspect_element_at) nothrow show_dev_tools;
8757 
8758     ///
8759     /// Explicitly close the associated DevTools browser, if any.
8760     ///
8761     extern(System) void function (cef_browser_host_t* self) nothrow close_dev_tools;
8762 
8763     ///
8764     /// Returns true (1) if this browser currently has an associated DevTools
8765     /// browser. Must be called on the browser process UI thread.
8766     ///
8767     extern(System) int function (cef_browser_host_t* self) nothrow has_dev_tools;
8768 
8769     ///
8770     /// Send a function call message over the DevTools protocol. |message| must be
8771     /// a UTF8-encoded JSON dictionary that contains "id" (int), "function"
8772     /// (string) and "params" (dictionary, optional) values. See the DevTools
8773     /// protocol documentation at https://chromedevtools.github.io/devtools-
8774     /// protocol/ for details of supported functions and the expected "params"
8775     /// dictionary contents. |message| will be copied if necessary. This function
8776     /// will return true (1) if called on the UI thread and the message was
8777     /// successfully submitted for validation, otherwise false (0). Validation
8778     /// will be applied asynchronously and any messages that fail due to
8779     /// formatting errors or missing parameters may be discarded without
8780     /// notification. Prefer ExecuteDevToolsMethod if a more structured approach
8781     /// to message formatting is desired.
8782     ///
8783     /// Every valid function call will result in an asynchronous function result
8784     /// or error message that references the sent message "id". Event messages are
8785     /// received while notifications are enabled (for example, between function
8786     /// calls for "Page.enable" and "Page.disable"). All received messages will be
8787     /// delivered to the observer(s) registered with AddDevToolsMessageObserver.
8788     /// See cef_dev_tools_message_observer_t::OnDevToolsMessage documentation for
8789     /// details of received message contents.
8790     ///
8791     /// Usage of the SendDevToolsMessage, ExecuteDevToolsMethod and
8792     /// AddDevToolsMessageObserver functions does not require an active DevTools
8793     /// front-end or remote-debugging session. Other active DevTools sessions will
8794     /// continue to function independently. However, any modification of global
8795     /// browser state by one session may not be reflected in the UI of other
8796     /// sessions.
8797     ///
8798     /// Communication with the DevTools front-end (when displayed) can be logged
8799     /// for development purposes by passing the `--devtools-protocol-log-
8800     /// file=<path>` command-line flag.
8801     ///
8802     extern(System) int function (
8803         cef_browser_host_t* self,
8804         const(void)* message,
8805         size_t message_size) nothrow send_dev_tools_message;
8806 
8807     ///
8808     /// Execute a function call over the DevTools protocol. This is a more
8809     /// structured version of SendDevToolsMessage. |message_id| is an incremental
8810     /// number that uniquely identifies the message (pass 0 to have the next
8811     /// number assigned automatically based on previous values). |function| is the
8812     /// function name. |params| are the function parameters, which may be NULL.
8813     /// See the DevTools protocol documentation (linked above) for details of
8814     /// supported functions and the expected |params| dictionary contents. This
8815     /// function will return the assigned message ID if called on the UI thread
8816     /// and the message was successfully submitted for validation, otherwise 0.
8817     /// See the SendDevToolsMessage documentation for additional usage
8818     /// information.
8819     ///
8820     extern(System) int function (
8821         cef_browser_host_t* self,
8822         int message_id,
8823         const(cef_string_t)* method,
8824         cef_dictionary_value_t* params) nothrow execute_dev_tools_method;
8825 
8826     ///
8827     /// Add an observer for DevTools protocol messages (function results and
8828     /// events). The observer will remain registered until the returned
8829     /// Registration object is destroyed. See the SendDevToolsMessage
8830     /// documentation for additional usage information.
8831     ///
8832     extern(System) cef_registration_t* function (
8833         cef_browser_host_t* self,
8834         cef_dev_tools_message_observer_t* observer) nothrow add_dev_tools_message_observer;
8835 
8836     ///
8837     /// Retrieve a snapshot of current navigation entries as values sent to the
8838     /// specified visitor. If |current_only| is true (1) only the current
8839     /// navigation entry will be sent, otherwise all navigation entries will be
8840     /// sent.
8841     ///
8842     extern(System) void function (
8843         cef_browser_host_t* self,
8844         cef_navigation_entry_visitor_t* visitor,
8845         int current_only) nothrow get_navigation_entries;
8846 
8847     ///
8848     /// If a misspelled word is currently selected in an editable node calling
8849     /// this function will replace it with the specified |word|.
8850     ///
8851     extern(System) void function (
8852         cef_browser_host_t* self,
8853         const(cef_string_t)* word) nothrow replace_misspelling;
8854 
8855     ///
8856     /// Add the specified |word| to the spelling dictionary.
8857     ///
8858     extern(System) void function (
8859         cef_browser_host_t* self,
8860         const(cef_string_t)* word) nothrow add_word_to_dictionary;
8861 
8862     ///
8863     /// Returns true (1) if window rendering is disabled.
8864     ///
8865     extern(System) int function (cef_browser_host_t* self) nothrow is_window_rendering_disabled;
8866 
8867     ///
8868     /// Notify the browser that the widget has been resized. The browser will
8869     /// first call cef_render_handler_t::GetViewRect to get the new size and then
8870     /// call cef_render_handler_t::OnPaint asynchronously with the updated
8871     /// regions. This function is only used when window rendering is disabled.
8872     ///
8873     extern(System) void function (cef_browser_host_t* self) nothrow was_resized;
8874 
8875     ///
8876     /// Notify the browser that it has been hidden or shown. Layouting and
8877     /// cef_render_handler_t::OnPaint notification will stop when the browser is
8878     /// hidden. This function is only used when window rendering is disabled.
8879     ///
8880     extern(System) void function (cef_browser_host_t* self, int hidden) nothrow was_hidden;
8881 
8882     ///
8883     /// Send a notification to the browser that the screen info has changed. The
8884     /// browser will then call cef_render_handler_t::GetScreenInfo to update the
8885     /// screen information with the new values. This simulates moving the webview
8886     /// window from one display to another, or changing the properties of the
8887     /// current display. This function is only used when window rendering is
8888     /// disabled.
8889     ///
8890     extern(System) void function (cef_browser_host_t* self) nothrow notify_screen_info_changed;
8891 
8892     ///
8893     /// Invalidate the view. The browser will call cef_render_handler_t::OnPaint
8894     /// asynchronously. This function is only used when window rendering is
8895     /// disabled.
8896     ///
8897     extern(System) void function (
8898         cef_browser_host_t* self,
8899         cef_paint_element_type_t type) nothrow invalidate;
8900 
8901     ///
8902     /// Issue a BeginFrame request to Chromium.  Only valid when
8903     /// cef_window_tInfo::external_begin_frame_enabled is set to true (1).
8904     ///
8905     extern(System) void function (cef_browser_host_t* self) nothrow send_external_begin_frame;
8906 
8907     ///
8908     /// Send a key event to the browser.
8909     ///
8910     extern(System) void function (
8911         cef_browser_host_t* self,
8912         const(cef_key_event_t)* event) nothrow send_key_event;
8913 
8914     ///
8915     /// Send a mouse click event to the browser. The |x| and |y| coordinates are
8916     /// relative to the upper-left corner of the view.
8917     ///
8918     extern(System) void function (
8919         cef_browser_host_t* self,
8920         const(cef_mouse_event_t)* event,
8921         cef_mouse_button_type_t type,
8922         int mouseUp,
8923         int clickCount) nothrow send_mouse_click_event;
8924 
8925     ///
8926     /// Send a mouse move event to the browser. The |x| and |y| coordinates are
8927     /// relative to the upper-left corner of the view.
8928     ///
8929     extern(System) void function (
8930         cef_browser_host_t* self,
8931         const(cef_mouse_event_t)* event,
8932         int mouseLeave) nothrow send_mouse_move_event;
8933 
8934     ///
8935     /// Send a mouse wheel event to the browser. The |x| and |y| coordinates are
8936     /// relative to the upper-left corner of the view. The |deltaX| and |deltaY|
8937     /// values represent the movement delta in the X and Y directions
8938     /// respectively. In order to scroll inside select popups with window
8939     /// rendering disabled cef_render_handler_t::GetScreenPoint should be
8940     /// implemented properly.
8941     ///
8942     extern(System) void function (
8943         cef_browser_host_t* self,
8944         const(cef_mouse_event_t)* event,
8945         int deltaX,
8946         int deltaY) nothrow send_mouse_wheel_event;
8947 
8948     ///
8949     /// Send a touch event to the browser for a windowless browser.
8950     ///
8951     extern(System) void function (
8952         cef_browser_host_t* self,
8953         const(cef_touch_event_t)* event) nothrow send_touch_event;
8954 
8955     ///
8956     /// Send a capture lost event to the browser.
8957     ///
8958     extern(System) void function (cef_browser_host_t* self) nothrow send_capture_lost_event;
8959 
8960     ///
8961     /// Notify the browser that the window hosting it is about to be moved or
8962     /// resized. This function is only used on Windows and Linux.
8963     ///
8964     extern(System) void function (cef_browser_host_t* self) nothrow notify_move_or_resize_started;
8965 
8966     ///
8967     /// Returns the maximum rate in frames per second (fps) that
8968     /// cef_render_handler_t::OnPaint will be called for a windowless browser. The
8969     /// actual fps may be lower if the browser cannot generate frames at the
8970     /// requested rate. The minimum value is 1 and the maximum value is 60
8971     /// (default 30). This function can only be called on the UI thread.
8972     ///
8973     extern(System) int function (cef_browser_host_t* self) nothrow get_windowless_frame_rate;
8974 
8975     ///
8976     /// Set the maximum rate in frames per second (fps) that
8977     /// cef_render_handler_t:: OnPaint will be called for a windowless browser.
8978     /// The actual fps may be lower if the browser cannot generate frames at the
8979     /// requested rate. The minimum value is 1 and the maximum value is 60
8980     /// (default 30). Can also be set at browser creation via
8981     /// cef_browser_tSettings.windowless_frame_rate.
8982     ///
8983     extern(System) void function (
8984         cef_browser_host_t* self,
8985         int frame_rate) nothrow set_windowless_frame_rate;
8986 
8987     ///
8988     /// Begins a new composition or updates the existing composition. Blink has a
8989     /// special node (a composition node) that allows the input function to change
8990     /// text without affecting other DOM nodes. |text| is the optional text that
8991     /// will be inserted into the composition node. |underlines| is an optional
8992     /// set of ranges that will be underlined in the resulting text.
8993     /// |replacement_range| is an optional range of the existing text that will be
8994     /// replaced. |selection_range| is an optional range of the resulting text
8995     /// that will be selected after insertion or replacement. The
8996     /// |replacement_range| value is only used on OS X.
8997     ///
8998     /// This function may be called multiple times as the composition changes.
8999     /// When the client is done making changes the composition should either be
9000     /// canceled or completed. To cancel the composition call
9001     /// ImeCancelComposition. To complete the composition call either
9002     /// ImeCommitText or ImeFinishComposingText. Completion is usually signaled
9003     /// when:
9004     ///
9005     /// 1. The client receives a WM_IME_COMPOSITION message with a GCS_RESULTSTR
9006     ///    flag (on Windows), or;
9007     /// 2. The client receives a "commit" signal of GtkIMContext (on Linux), or;
9008     /// 3. insertText of NSTextInput is called (on Mac).
9009     ///
9010     /// This function is only used when window rendering is disabled.
9011     ///
9012     extern(System) void function (
9013         cef_browser_host_t* self,
9014         const(cef_string_t)* text,
9015         size_t underlinesCount,
9016         const(cef_composition_underline_t)* underlines,
9017         const(cef_range_t)* replacement_range,
9018         const(cef_range_t)* selection_range) nothrow ime_set_composition;
9019 
9020     ///
9021     /// Completes the existing composition by optionally inserting the specified
9022     /// |text| into the composition node. |replacement_range| is an optional range
9023     /// of the existing text that will be replaced. |relative_cursor_pos| is where
9024     /// the cursor will be positioned relative to the current cursor position. See
9025     /// comments on ImeSetComposition for usage. The |replacement_range| and
9026     /// |relative_cursor_pos| values are only used on OS X. This function is only
9027     /// used when window rendering is disabled.
9028     ///
9029     extern(System) void function (
9030         cef_browser_host_t* self,
9031         const(cef_string_t)* text,
9032         const(cef_range_t)* replacement_range,
9033         int relative_cursor_pos) nothrow ime_commit_text;
9034 
9035     ///
9036     /// Completes the existing composition by applying the current composition
9037     /// node contents. If |keep_selection| is false (0) the current selection, if
9038     /// any, will be discarded. See comments on ImeSetComposition for usage. This
9039     /// function is only used when window rendering is disabled.
9040     ///
9041     extern(System) void function (
9042         cef_browser_host_t* self,
9043         int keep_selection) nothrow ime_finish_composing_text;
9044 
9045     ///
9046     /// Cancels the existing composition and discards the composition node
9047     /// contents without applying them. See comments on ImeSetComposition for
9048     /// usage. This function is only used when window rendering is disabled.
9049     ///
9050     extern(System) void function (cef_browser_host_t* self) nothrow ime_cancel_composition;
9051 
9052     ///
9053     /// Call this function when the user drags the mouse into the web view (before
9054     /// calling DragTargetDragOver/DragTargetLeave/DragTargetDrop). |drag_data|
9055     /// should not contain file contents as this type of data is not allowed to be
9056     /// dragged into the web view. File contents can be removed using
9057     /// cef_drag_data_t::ResetFileContents (for example, if |drag_data| comes from
9058     /// cef_render_handler_t::StartDragging). This function is only used when
9059     /// window rendering is disabled.
9060     ///
9061     extern(System) void function (
9062         cef_browser_host_t* self,
9063         cef_drag_data_t* drag_data,
9064         const(cef_mouse_event_t)* event,
9065         cef_drag_operations_mask_t allowed_ops) nothrow drag_target_drag_enter;
9066 
9067     ///
9068     /// Call this function each time the mouse is moved across the web view during
9069     /// a drag operation (after calling DragTargetDragEnter and before calling
9070     /// DragTargetDragLeave/DragTargetDrop). This function is only used when
9071     /// window rendering is disabled.
9072     ///
9073     extern(System) void function (
9074         cef_browser_host_t* self,
9075         const(cef_mouse_event_t)* event,
9076         cef_drag_operations_mask_t allowed_ops) nothrow drag_target_drag_over;
9077 
9078     ///
9079     /// Call this function when the user drags the mouse out of the web view
9080     /// (after calling DragTargetDragEnter). This function is only used when
9081     /// window rendering is disabled.
9082     ///
9083     extern(System) void function (cef_browser_host_t* self) nothrow drag_target_drag_leave;
9084 
9085     ///
9086     /// Call this function when the user completes the drag operation by dropping
9087     /// the object onto the web view (after calling DragTargetDragEnter). The
9088     /// object being dropped is |drag_data|, given as an argument to the previous
9089     /// DragTargetDragEnter call. This function is only used when window rendering
9090     /// is disabled.
9091     ///
9092     extern(System) void function (
9093         cef_browser_host_t* self,
9094         const(cef_mouse_event_t)* event) nothrow drag_target_drop;
9095 
9096     ///
9097     /// Call this function when the drag operation started by a
9098     /// cef_render_handler_t::StartDragging call has ended either in a drop or by
9099     /// being cancelled. |x| and |y| are mouse coordinates relative to the upper-
9100     /// left corner of the view. If the web view is both the drag source and the
9101     /// drag target then all DragTarget* functions should be called before
9102     /// DragSource* mthods. This function is only used when window rendering is
9103     /// disabled.
9104     ///
9105     extern(System) void function (
9106         cef_browser_host_t* self,
9107         int x,
9108         int y,
9109         cef_drag_operations_mask_t op) nothrow drag_source_ended_at;
9110 
9111     ///
9112     /// Call this function when the drag operation started by a
9113     /// cef_render_handler_t::StartDragging call has completed. This function may
9114     /// be called immediately without first calling DragSourceEndedAt to cancel a
9115     /// drag operation. If the web view is both the drag source and the drag
9116     /// target then all DragTarget* functions should be called before DragSource*
9117     /// mthods. This function is only used when window rendering is disabled.
9118     ///
9119     extern(System) void function (cef_browser_host_t* self) nothrow drag_source_system_drag_ended;
9120 
9121     ///
9122     /// Returns the current visible navigation entry for this browser. This
9123     /// function can only be called on the UI thread.
9124     ///
9125     extern(System) cef_navigation_entry_t* function (
9126         cef_browser_host_t* self) nothrow get_visible_navigation_entry;
9127 
9128     ///
9129     /// Set accessibility state for all frames. |accessibility_state| may be
9130     /// default, enabled or disabled. If |accessibility_state| is STATE_DEFAULT
9131     /// then accessibility will be disabled by default and the state may be
9132     /// further controlled with the "force-renderer-accessibility" and "disable-
9133     /// renderer-accessibility" command-line switches. If |accessibility_state| is
9134     /// STATE_ENABLED then accessibility will be enabled. If |accessibility_state|
9135     /// is STATE_DISABLED then accessibility will be completely disabled.
9136     ///
9137     /// For windowed browsers accessibility will be enabled in Complete mode
9138     /// (which corresponds to kAccessibilityModeComplete in Chromium). In this
9139     /// mode all platform accessibility objects will be created and managed by
9140     /// Chromium's internal implementation. The client needs only to detect the
9141     /// screen reader and call this function appropriately. For example, on macOS
9142     /// the client can handle the @"AXEnhancedUserStructure" accessibility
9143     /// attribute to detect VoiceOver state changes and on Windows the client can
9144     /// handle WM_GETOBJECT with OBJID_CLIENT to detect accessibility readers.
9145     ///
9146     /// For windowless browsers accessibility will be enabled in TreeOnly mode
9147     /// (which corresponds to kAccessibilityModeWebContentsOnly in Chromium). In
9148     /// this mode renderer accessibility is enabled, the full tree is computed,
9149     /// and events are passed to CefAccessibiltyHandler, but platform
9150     /// accessibility objects are not created. The client may implement platform
9151     /// accessibility objects using CefAccessibiltyHandler callbacks if desired.
9152     ///
9153     extern(System) void function (
9154         cef_browser_host_t* self,
9155         cef_state_t accessibility_state) nothrow set_accessibility_state;
9156 
9157     ///
9158     /// Enable notifications of auto resize via
9159     /// cef_display_handler_t::OnAutoResize. Notifications are disabled by
9160     /// default. |min_size| and |max_size| define the range of allowed sizes.
9161     ///
9162     extern(System) void function (
9163         cef_browser_host_t* self,
9164         int enabled,
9165         const(cef_size_t)* min_size,
9166         const(cef_size_t)* max_size) nothrow set_auto_resize_enabled;
9167 
9168     ///
9169     /// Returns the extension hosted in this browser or NULL if no extension is
9170     /// hosted. See cef_request_context_t::LoadExtension for details.
9171     ///
9172     /// WARNING: This function is deprecated and will be removed in ~M127.
9173     ///
9174     extern(System) cef_extension_t* function (cef_browser_host_t* self) nothrow get_extension;
9175 
9176     ///
9177     /// Returns true (1) if this browser is hosting an extension background
9178     /// script. Background hosts do not have a window and are not displayable. See
9179     /// cef_request_context_t::LoadExtension for details.
9180     ///
9181     /// WARNING: This function is deprecated and will be removed in ~M127.
9182     ///
9183     extern(System) int function (cef_browser_host_t* self) nothrow is_background_host;
9184 
9185     ///
9186     /// Set whether the browser's audio is muted.
9187     ///
9188     extern(System) void function (cef_browser_host_t* self, int mute) nothrow set_audio_muted;
9189 
9190     ///
9191     /// Returns true (1) if the browser's audio is muted.  This function can only
9192     /// be called on the UI thread.
9193     ///
9194     extern(System) int function (cef_browser_host_t* self) nothrow is_audio_muted;
9195 
9196     ///
9197     /// Returns true (1) if the renderer is currently in browser fullscreen. This
9198     /// differs from window fullscreen in that browser fullscreen is entered using
9199     /// the JavaScript Fullscreen API and modifies CSS attributes such as the
9200     /// ::backdrop pseudo-element and :fullscreen pseudo-structure. This function
9201     /// can only be called on the UI thread.
9202     ///
9203     extern(System) int function (cef_browser_host_t* self) nothrow is_fullscreen;
9204 
9205     ///
9206     /// Requests the renderer to exit browser fullscreen. In most cases exiting
9207     /// window fullscreen should also exit browser fullscreen. With the Alloy
9208     /// runtime this function should be called in response to a user action such
9209     /// as clicking the green traffic light button on MacOS
9210     /// (cef_window_delegate_t::OnWindowFullscreenTransition callback) or pressing
9211     /// the "ESC" key (cef_keyboard_handler_t::OnPreKeyEvent callback). With the
9212     /// Chrome runtime these standard exit actions are handled internally but
9213     /// new/additional user actions can use this function. Set |will_cause_resize|
9214     /// to true (1) if exiting browser fullscreen will cause a view resize.
9215     ///
9216     extern(System) void function (
9217         cef_browser_host_t* self,
9218         int will_cause_resize) nothrow exit_fullscreen;
9219 
9220     ///
9221     /// Returns true (1) if a Chrome command is supported and enabled. Values for
9222     /// |command_id| can be found in the cef_command_ids.h file. This function can
9223     /// only be called on the UI thread. Only used with the Chrome runtime.
9224     ///
9225     extern(System) int function (
9226         cef_browser_host_t* self,
9227         int command_id) nothrow can_execute_chrome_command;
9228 
9229     ///
9230     /// Execute a Chrome command. Values for |command_id| can be found in the
9231     /// cef_command_ids.h file. |disposition| provides information about the
9232     /// intended command target. Only used with the Chrome runtime.
9233     ///
9234     extern(System) void function (
9235         cef_browser_host_t* self,
9236         int command_id,
9237         cef_window_open_disposition_t disposition) nothrow execute_chrome_command;
9238 
9239     ///
9240     /// Returns true (1) if the render process associated with this browser is
9241     /// currently unresponsive as indicated by a lack of input event processing
9242     /// for at least 15 seconds. To receive associated state change notifications
9243     /// and optionally handle an unresponsive render process implement
9244     /// cef_request_handler_t::OnRenderProcessUnresponsive. This function can only
9245     /// be called on the UI thread.
9246     ///
9247     extern(System) int function (cef_browser_host_t* self) nothrow is_render_process_unresponsive;
9248 
9249     ///
9250     /// Returns the runtime style for this browser (ALLOY or CHROME). See
9251     /// cef_runtime_style_t documentation for details.
9252     ///
9253     extern(System) cef_runtime_style_t function (cef_browser_host_t* self) nothrow get_runtime_style;
9254 }
9255 
9256 struct cef_accelerated_paint_info_t;
9257 
9258 ///
9259 /// Describes how to interpret the components of a pixel.
9260 ///
9261 enum cef_color_type_t
9262 {
9263     ///
9264     /// RGBA with 8 bits per pixel (32bits total).
9265     ///
9266     CEF_COLOR_TYPE_RGBA_8888 = 0,
9267 
9268     ///
9269     /// BGRA with 8 bits per pixel (32bits total).
9270     ///
9271     CEF_COLOR_TYPE_BGRA_8888 = 1
9272 }
9273 
9274 enum cef_runtime_style_t
9275 {
9276     ///
9277     /// Use the default runtime style. The default style will match the
9278     /// CefSettings.chrome_runtime value in most cases. See above documentation
9279     /// for exceptions.
9280     ///
9281     CEF_RUNTIME_STYLE_DEFAULT = 0,
9282 
9283     ///
9284     /// Use the Chrome runtime style. Only supported with the Chrome runtime.
9285     ///
9286     CEF_RUNTIME_STYLE_CHROME = 1,
9287 
9288     ///
9289     /// Use the Alloy runtime style. Supported with both the Alloy and Chrome
9290     /// runtime.
9291     ///
9292     CEF_RUNTIME_STYLE_ALLOY = 2
9293 }
9294 
9295 
9296 ///
9297 /// Create a new browser using the window parameters specified by |windowInfo|.
9298 /// All values will be copied internally and the actual window (if any) will be
9299 /// created on the UI thread. If |request_context| is NULL the global request
9300 /// context will be used. This function can be called on any browser process
9301 /// thread and will not block. The optional |extra_info| parameter provides an
9302 /// opportunity to specify extra information specific to the created browser
9303 /// that will be passed to cef_render_process_handler_t::on_browser_created() in
9304 /// the render process.
9305 ///
9306 int cef_browser_host_create_browser (
9307     const(cef_window_info_t)* windowInfo,
9308     cef_client_t* client,
9309     const(cef_string_t)* url,
9310     const(cef_browser_settings_t)* settings,
9311     cef_dictionary_value_t* extra_info,
9312     cef_request_context_t* request_context);
9313 
9314 ///
9315 /// Create a new browser using the window parameters specified by |windowInfo|.
9316 /// If |request_context| is NULL the global request context will be used. This
9317 /// function can only be called on the browser process UI thread. The optional
9318 /// |extra_info| parameter provides an opportunity to specify extra information
9319 /// specific to the created browser that will be passed to
9320 /// cef_render_process_handler_t::on_browser_created() in the render process.
9321 ///
9322 cef_browser_t* cef_browser_host_create_browser_sync (
9323     const(cef_window_info_t)* windowInfo,
9324     cef_client_t* client,
9325     const(cef_string_t)* url,
9326     const(cef_browser_settings_t)* settings,
9327     cef_dictionary_value_t* extra_info,
9328     cef_request_context_t* request_context);
9329 
9330 // CEF_INCLUDE_CAPI_CEF_BROWSER_CAPI_H_
9331 // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
9332 //
9333 // Redistribution and use in source and binary forms, with or without
9334 // modification, are permitted provided that the following conditions are
9335 // met:
9336 //
9337 //    * Redistributions of source code must retain the above copyright
9338 // notice, this list of conditions and the following disclaimer.
9339 //    * Redistributions in binary form must reproduce the above
9340 // copyright notice, this list of conditions and the following disclaimer
9341 // in the documentation and/or other materials provided with the
9342 // distribution.
9343 //    * Neither the name of Google Inc. nor the name Chromium Embedded
9344 // Framework nor the names of its contributors may be used to endorse
9345 // or promote products derived from this software without specific prior
9346 // written permission.
9347 //
9348 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
9349 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
9350 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
9351 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
9352 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
9353 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
9354 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
9355 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
9356 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
9357 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
9358 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
9359 //
9360 // ---------------------------------------------------------------------------
9361 //
9362 // This file was generated by the CEF translator tool and should not edited
9363 // by hand. See the translator.README.txt file in the tools directory for
9364 // more information.
9365 //
9366 // $hash=d958d5bed7f909f6313facef3440fb8ba07a5c01$
9367 //
9368 
9369 extern (C):
9370 
9371 ///
9372 /// Structure used to implement browser process callbacks. The functions of this
9373 /// structure will be called on the browser process main thread unless otherwise
9374 /// indicated.
9375 ///
9376 struct cef_browser_process_handler_t
9377 {
9378     ///
9379     /// Base structure.
9380     ///
9381 
9382     ///
9383     /// Provides an opportunity to register custom preferences prior to global and
9384     /// request context initialization.
9385     ///
9386     /// If |type| is CEF_PREFERENCES_TYPE_GLOBAL the registered preferences can be
9387     /// accessed via cef_preference_manager_t::GetGlobalPreferences after
9388     /// OnContextInitialized is called. Global preferences are registered a single
9389 
9390     cef_base_ref_counted_t base;
9391     /// time at application startup. See related cef_settings_t.cache_path and
9392     /// cef_settings_t.persist_user_preferences configuration.
9393     ///
9394     /// If |type| is CEF_PREFERENCES_TYPE_REQUEST_CONTEXT the preferences can be
9395     /// accessed via the cef_request_context_t after
9396     /// cef_request_context_handler_t::OnRequestContextInitialized is called.
9397     /// Request context preferences are registered each time a new
9398     /// cef_request_context_t is created. It is intended but not required that all
9399     /// request contexts have the same registered preferences. See related
9400     /// cef_request_context_settings_t.cache_path and
9401     /// cef_request_context_settings_t.persist_user_preferences configuration.
9402     ///
9403     /// Do not keep a reference to the |registrar| object. This function is called
9404     /// on the browser process UI thread.
9405     ///
9406     extern(System) void function (
9407         cef_browser_process_handler_t* self,
9408         cef_preferences_type_t type,
9409         cef_preference_registrar_t* registrar) nothrow on_register_custom_preferences;
9410 
9411     ///
9412     /// Called on the browser process UI thread immediately after the CEF context
9413     /// has been initialized.
9414     ///
9415     extern(System) void function (
9416         cef_browser_process_handler_t* self) nothrow on_context_initialized;
9417 
9418     ///
9419     /// Called before a child process is launched. Will be called on the browser
9420     /// process UI thread when launching a render process and on the browser
9421     /// process IO thread when launching a GPU process. Provides an opportunity to
9422     /// modify the child process command line. Do not keep a reference to
9423     /// |command_line| outside of this function.
9424     ///
9425     extern(System) void function (
9426         cef_browser_process_handler_t* self,
9427         cef_command_line_t* command_line) nothrow on_before_child_process_launch;
9428 
9429     ///
9430     /// Implement this function to provide app-specific behavior when an already
9431     /// running app is relaunched with the same CefSettings.root_cache_path value.
9432     /// For example, activate an existing app window or create a new app window.
9433     /// |command_line| will be read-only. Do not keep a reference to
9434     /// |command_line| outside of this function. Return true (1) if the relaunch
9435     /// is handled or false (0) for default relaunch behavior. Default behavior
9436     /// will create a new default styled Chrome window.
9437     ///
9438     /// To avoid cache corruption only a single app instance is allowed to run for
9439     /// a given CefSettings.root_cache_path value. On relaunch the app checks a
9440     /// process singleton lock and then forwards the new launch arguments to the
9441     /// already running app process before exiting early. Client apps should
9442     /// therefore check the cef_initialize() return value for early exit before
9443     /// proceeding.
9444     ///
9445     /// This function will be called on the browser process UI thread.
9446     ///
9447     extern(System) int function (
9448         cef_browser_process_handler_t* self,
9449         cef_command_line_t* command_line,
9450         const(cef_string_t)* current_directory) nothrow on_already_running_app_relaunch;
9451 
9452     ///
9453     /// Called from any thread when work has been scheduled for the browser
9454     /// process main (UI) thread. This callback is used in combination with
9455     /// cef_settings_t.external_message_pump and cef_do_message_loop_work() in
9456     /// cases where the CEF message loop must be integrated into an existing
9457     /// application message loop (see additional comments and warnings on
9458     /// CefDoMessageLoopWork). This callback should schedule a
9459     /// cef_do_message_loop_work() call to happen on the main (UI) thread.
9460     /// |delay_ms| is the requested delay in milliseconds. If |delay_ms| is <= 0
9461     /// then the call should happen reasonably soon. If |delay_ms| is > 0 then the
9462     /// call should be scheduled to happen after the specified delay and any
9463     /// currently pending scheduled call should be cancelled.
9464     ///
9465     extern(System) void function (
9466         cef_browser_process_handler_t* self,
9467         long delay_ms) nothrow on_schedule_message_pump_work;
9468 
9469     ///
9470     /// Return the default client for use with a newly created browser window
9471     /// (cef_browser_t object). If null is returned the cef_browser_t will be
9472     /// unmanaged (no callbacks will be executed for that cef_browser_t) and
9473     /// application shutdown will be blocked until the browser window is closed
9474     /// manually. This function is currently only used with the Chrome runtime
9475     /// when creating new browser windows via Chrome UI.
9476     ///
9477     extern(System) cef_client_t* function (
9478         cef_browser_process_handler_t* self) nothrow get_default_client;
9479 
9480     ///
9481     /// Return the default handler for use with a new user or incognito profile
9482     /// (cef_request_context_t object). If null is returned the
9483     /// cef_request_context_t will be unmanaged (no callbacks will be executed for
9484     /// that cef_request_context_t). This function is currently only used with the
9485     /// Chrome runtime when creating new browser windows via Chrome UI.
9486     ///
9487     extern(System) cef_request_context_handler_t* function (
9488         cef_browser_process_handler_t* self) nothrow get_default_request_context_handler;
9489 }
9490 
9491 
9492 
9493 // CEF_INCLUDE_CAPI_CEF_BROWSER_PROCESS_HANDLER_CAPI_H_
9494 // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
9495 //
9496 // Redistribution and use in source and binary forms, with or without
9497 // modification, are permitted provided that the following conditions are
9498 // met:
9499 //
9500 //    * Redistributions of source code must retain the above copyright
9501 // notice, this list of conditions and the following disclaimer.
9502 //    * Redistributions in binary form must reproduce the above
9503 // copyright notice, this list of conditions and the following disclaimer
9504 // in the documentation and/or other materials provided with the
9505 // distribution.
9506 //    * Neither the name of Google Inc. nor the name Chromium Embedded
9507 // Framework nor the names of its contributors may be used to endorse
9508 // or promote products derived from this software without specific prior
9509 // written permission.
9510 //
9511 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
9512 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
9513 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
9514 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
9515 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
9516 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
9517 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
9518 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
9519 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
9520 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
9521 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
9522 //
9523 // ---------------------------------------------------------------------------
9524 //
9525 // This file was generated by the CEF translator tool and should not edited
9526 // by hand. See the translator.README.txt file in the tools directory for
9527 // more information.
9528 //
9529 // $hash=46bc048bec64590735298a95633167d66e445844$
9530 //
9531 
9532 extern (C):
9533 
9534 ///
9535 /// Generic callback structure used for asynchronous continuation.
9536 ///
9537 struct cef_callback_t
9538 {
9539     ///
9540     /// Base structure.
9541     ///
9542 
9543     ///
9544     /// Continue processing.
9545     ///
9546 
9547     ///
9548     /// Cancel processing.
9549     ///
9550 
9551     ///
9552     /// Generic callback structure used for asynchronous completion.
9553     ///
9554 
9555     ///
9556     /// Base structure.
9557     ///
9558 
9559     ///
9560     /// Method that will be called once the task is complete.
9561     ///
9562 
9563     // CEF_INCLUDE_CAPI_CEF_CALLBACK_CAPI_H_
9564 
9565     cef_base_ref_counted_t base;
9566     extern(System) void function (cef_callback_t* self) nothrow cont;
9567     extern(System) void function (cef_callback_t* self) nothrow cancel;
9568 }
9569 
9570 
9571 
9572 struct cef_completion_callback_t
9573 {
9574     cef_base_ref_counted_t base;
9575     extern(System) void function (cef_completion_callback_t* self) nothrow on_complete;
9576 }
9577 
9578 
9579 // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
9580 //
9581 // Redistribution and use in source and binary forms, with or without
9582 // modification, are permitted provided that the following conditions are
9583 // met:
9584 //
9585 //    * Redistributions of source code must retain the above copyright
9586 // notice, this list of conditions and the following disclaimer.
9587 //    * Redistributions in binary form must reproduce the above
9588 // copyright notice, this list of conditions and the following disclaimer
9589 // in the documentation and/or other materials provided with the
9590 // distribution.
9591 //    * Neither the name of Google Inc. nor the name Chromium Embedded
9592 // Framework nor the names of its contributors may be used to endorse
9593 // or promote products derived from this software without specific prior
9594 // written permission.
9595 //
9596 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
9597 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
9598 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
9599 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
9600 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
9601 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
9602 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
9603 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
9604 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
9605 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
9606 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
9607 //
9608 // ---------------------------------------------------------------------------
9609 //
9610 // This file was generated by the CEF translator tool and should not edited
9611 // by hand. See the translator.README.txt file in the tools directory for
9612 // more information.
9613 //
9614 // $hash=09bd4140605645c9dfbd81e7e22d029d0bb50129$
9615 //
9616 
9617 extern (C):
9618 
9619 ///
9620 /// Implement this structure to provide handler implementations.
9621 ///
9622 struct cef_client_t
9623 {
9624     ///
9625     /// Base structure.
9626     ///
9627 
9628     cef_base_ref_counted_t base; ///
9629     /// Return the handler for audio rendering events.
9630     ///
9631     extern(System) cef_audio_handler_t* function (cef_client_t* self) nothrow get_audio_handler;
9632 
9633     ///
9634     /// Return the handler for commands. If no handler is provided the default
9635     /// implementation will be used.
9636     ///
9637     extern(System) cef_command_handler_t* function (cef_client_t* self) nothrow get_command_handler;
9638 
9639     ///
9640     /// Return the handler for context menus. If no handler is provided the
9641     /// default implementation will be used.
9642     ///
9643     extern(System) cef_context_menu_handler_t* function (
9644         cef_client_t* self) nothrow get_context_menu_handler;
9645 
9646     ///
9647     /// Return the handler for dialogs. If no handler is provided the default
9648     /// implementation will be used.
9649     ///
9650     extern(System) cef_dialog_handler_t* function (cef_client_t* self) nothrow get_dialog_handler;
9651 
9652     ///
9653     /// Return the handler for browser display state events.
9654     ///
9655     extern(System) cef_display_handler_t* function (cef_client_t* self) nothrow get_display_handler;
9656 
9657     ///
9658     /// Return the handler for download events. If no handler is returned
9659     /// downloads will not be allowed.
9660     ///
9661     extern(System) cef_download_handler_t* function (
9662         cef_client_t* self) nothrow get_download_handler;
9663 
9664     ///
9665     /// Return the handler for drag events.
9666     ///
9667     extern(System) cef_drag_handler_t* function (cef_client_t* self) nothrow get_drag_handler;
9668 
9669     ///
9670     /// Return the handler for find result events.
9671     ///
9672     extern(System) cef_find_handler_t* function (cef_client_t* self) nothrow get_find_handler;
9673 
9674     ///
9675     /// Return the handler for focus events.
9676     ///
9677     extern(System) cef_focus_handler_t* function (cef_client_t* self) nothrow get_focus_handler;
9678 
9679     ///
9680     /// Return the handler for events related to cef_frame_t lifespan. This
9681     /// function will be called once during cef_browser_t creation and the result
9682     /// will be cached for performance reasons.
9683     ///
9684     extern(System) cef_frame_handler_t* function (cef_client_t* self) nothrow get_frame_handler;
9685 
9686     ///
9687     /// Return the handler for permission requests.
9688     ///
9689     extern(System) cef_permission_handler_t* function (
9690         cef_client_t* self) nothrow get_permission_handler;
9691 
9692     ///
9693     /// Return the handler for JavaScript dialogs. If no handler is provided the
9694     /// default implementation will be used.
9695     ///
9696     extern(System) cef_jsdialog_handler_t* function (
9697         cef_client_t* self) nothrow get_jsdialog_handler;
9698 
9699     ///
9700     /// Return the handler for keyboard events.
9701     ///
9702     extern(System) cef_keyboard_handler_t* function (
9703         cef_client_t* self) nothrow get_keyboard_handler;
9704 
9705     ///
9706     /// Return the handler for browser life span events.
9707     ///
9708     extern(System) cef_life_span_handler_t* function (
9709         cef_client_t* self) nothrow get_life_span_handler;
9710 
9711     ///
9712     /// Return the handler for browser load status events.
9713     ///
9714     extern(System) cef_load_handler_t* function (cef_client_t* self) nothrow get_load_handler;
9715 
9716     ///
9717     /// Return the handler for printing on Linux. If a print handler is not
9718     /// provided then printing will not be supported on the Linux platform.
9719     ///
9720     extern(System) cef_print_handler_t* function (cef_client_t* self) nothrow get_print_handler;
9721 
9722     ///
9723     /// Return the handler for off-screen rendering events.
9724     ///
9725     extern(System) cef_render_handler_t* function (cef_client_t* self) nothrow get_render_handler;
9726 
9727     ///
9728     /// Return the handler for browser request events.
9729     ///
9730     extern(System) cef_request_handler_t* function (cef_client_t* self) nothrow get_request_handler;
9731 
9732     ///
9733     /// Called when a new message is received from a different process. Return
9734     /// true (1) if the message was handled or false (0) otherwise.  It is safe to
9735     /// keep a reference to |message| outside of this callback.
9736     ///
9737     extern(System) int function (
9738         cef_client_t* self,
9739         cef_browser_t* browser,
9740         cef_frame_t* frame,
9741         cef_process_id_t source_process,
9742         cef_process_message_t* message) nothrow on_process_message_received;
9743 }
9744 
9745 
9746 
9747 // CEF_INCLUDE_CAPI_CEF_CLIENT_CAPI_H_
9748 // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
9749 //
9750 // Redistribution and use in source and binary forms, with or without
9751 // modification, are permitted provided that the following conditions are
9752 // met:
9753 //
9754 //    * Redistributions of source code must retain the above copyright
9755 // notice, this list of conditions and the following disclaimer.
9756 //    * Redistributions in binary form must reproduce the above
9757 // copyright notice, this list of conditions and the following disclaimer
9758 // in the documentation and/or other materials provided with the
9759 // distribution.
9760 //    * Neither the name of Google Inc. nor the name Chromium Embedded
9761 // Framework nor the names of its contributors may be used to endorse
9762 // or promote products derived from this software without specific prior
9763 // written permission.
9764 //
9765 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
9766 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
9767 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
9768 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
9769 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
9770 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
9771 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
9772 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
9773 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
9774 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
9775 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
9776 //
9777 // ---------------------------------------------------------------------------
9778 //
9779 // This file was generated by the CEF translator tool and should not edited
9780 // by hand. See the translator.README.txt file in the tools directory for
9781 // more information.
9782 //
9783 // $hash=dd183a473b1e8c5ee8bdcf99949fc5274c4cc892$
9784 //
9785 
9786 extern (C):
9787 
9788 ///
9789 /// Implement this structure to handle events related to commands. The functions
9790 /// of this structure will be called on the UI thread.
9791 ///
9792 struct cef_command_handler_t
9793 {
9794     ///
9795     /// Base structure.
9796     ///
9797 
9798     ///
9799     /// Called to execute a Chrome command triggered via menu selection or
9800     /// keyboard shortcut. Values for |command_id| can be found in the
9801     /// cef_command_ids.h file. |disposition| provides information about the
9802     /// intended command target. Return true (1) if the command was handled or
9803     /// false (0) for the default implementation. For context menu commands this
9804     /// will be called after cef_context_menu_handler_t::OnContextMenuCommand.
9805     /// Only used with the Chrome runtime.
9806     ///
9807 
9808     cef_base_ref_counted_t base;
9809     extern(System) int function (
9810         cef_command_handler_t* self,
9811         cef_browser_t* browser,
9812         int command_id,
9813         cef_window_open_disposition_t disposition) nothrow on_chrome_command;
9814     ///
9815     /// Called to check if a Chrome app menu item should be visible. Values for
9816     /// |command_id| can be found in the cef_command_ids.h file. Only called for
9817     /// menu items that would be visible by default. Only used with the Chrome
9818     /// runtime.
9819     ///
9820     extern(System) int function (
9821         cef_command_handler_t* self,
9822         cef_browser_t* browser,
9823         int command_id) nothrow is_chrome_app_menu_item_visible;
9824 
9825     ///
9826     /// Called to check if a Chrome app menu item should be enabled. Values for
9827     /// |command_id| can be found in the cef_command_ids.h file. Only called for
9828     /// menu items that would be enabled by default. Only used with the Chrome
9829     /// runtime.
9830     ///
9831     extern(System) int function (
9832         cef_command_handler_t* self,
9833         cef_browser_t* browser,
9834         int command_id) nothrow is_chrome_app_menu_item_enabled;
9835 
9836     ///
9837     /// Called during browser creation to check if a Chrome page action icon
9838     /// should be visible. Only called for icons that would be visible by default.
9839     /// Only used with the Chrome runtime.
9840     ///
9841     extern(System) int function (
9842         cef_command_handler_t* self,
9843         cef_chrome_page_action_icon_type_t icon_type) nothrow is_chrome_page_action_icon_visible;
9844 
9845     ///
9846     /// Called during browser creation to check if a Chrome toolbar button should
9847     /// be visible. Only called for buttons that would be visible by default. Only
9848     /// used with the Chrome runtime.
9849     ///
9850     extern(System) int function (
9851         cef_command_handler_t* self,
9852         cef_chrome_toolbar_button_type_t button_type) nothrow is_chrome_toolbar_button_visible;
9853 }
9854 
9855 
9856 
9857 // CEF_INCLUDE_CAPI_CEF_COMMAND_HANDLER_CAPI_H_
9858 // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
9859 //
9860 // Redistribution and use in source and binary forms, with or without
9861 // modification, are permitted provided that the following conditions are
9862 // met:
9863 //
9864 //    * Redistributions of source code must retain the above copyright
9865 // notice, this list of conditions and the following disclaimer.
9866 //    * Redistributions in binary form must reproduce the above
9867 // copyright notice, this list of conditions and the following disclaimer
9868 // in the documentation and/or other materials provided with the
9869 // distribution.
9870 //    * Neither the name of Google Inc. nor the name Chromium Embedded
9871 // Framework nor the names of its contributors may be used to endorse
9872 // or promote products derived from this software without specific prior
9873 // written permission.
9874 //
9875 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
9876 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
9877 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
9878 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
9879 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
9880 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
9881 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
9882 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
9883 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
9884 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
9885 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
9886 //
9887 // ---------------------------------------------------------------------------
9888 //
9889 // This file was generated by the CEF translator tool and should not edited
9890 // by hand. See the translator.README.txt file in the tools directory for
9891 // more information.
9892 //
9893 // $hash=fce786b3f054d6581438e2906b77e573c797372a$
9894 //
9895 
9896 extern (C):
9897 
9898 ///
9899 /// Structure used to create and/or parse command line arguments. Arguments with
9900 /// "--", "-" and, on Windows, "/" prefixes are considered switches. Switches
9901 /// will always precede any arguments without switch prefixes. Switches can
9902 /// optionally have a value specified using the "=" delimiter (e.g.
9903 /// "-switch=value"). An argument of "--" will terminate switch parsing with all
9904 /// subsequent tokens, regardless of prefix, being interpreted as non-switch
9905 /// arguments. Switch names should be lowercase ASCII and will be converted to
9906 /// such if necessary. Switch values will retain the original case and UTF8
9907 /// encoding. This structure can be used before cef_initialize() is called.
9908 ///
9909 struct cef_command_line_t
9910 {
9911     ///
9912     /// Base structure.
9913     ///
9914 
9915     ///
9916     /// Returns true (1) if this object is valid. Do not call any other functions
9917     /// if this function returns false (0).
9918 
9919     cef_base_ref_counted_t base;
9920     ///
9921     extern(System) int function (cef_command_line_t* self) nothrow is_valid;
9922 
9923     ///
9924     /// Returns true (1) if the values of this object are read-only. Some APIs may
9925     /// expose read-only objects.
9926     ///
9927     extern(System) int function (cef_command_line_t* self) nothrow is_read_only;
9928 
9929     ///
9930     /// Returns a writable copy of this object.
9931     ///
9932     extern(System) cef_command_line_t* function (cef_command_line_t* self) nothrow copy;
9933 
9934     ///
9935     /// Initialize the command line with the specified |argc| and |argv| values.
9936     /// The first argument must be the name of the program. This function is only
9937     /// supported on non-Windows platforms.
9938     ///
9939     extern(System) void function (
9940         cef_command_line_t* self,
9941         int argc,
9942         const(char*)* argv) nothrow init_from_argv;
9943 
9944     ///
9945     /// Initialize the command line with the string returned by calling
9946     /// GetCommandLineW(). This function is only supported on Windows.
9947     ///
9948     extern(System) void function (
9949         cef_command_line_t* self,
9950         const(cef_string_t)* command_line) nothrow init_from_string;
9951 
9952     ///
9953     /// Reset the command-line switches and arguments but leave the program
9954     /// component unchanged.
9955     ///
9956     extern(System) void function (cef_command_line_t* self) nothrow reset;
9957 
9958     ///
9959     /// Retrieve the original command line string as a vector of strings. The argv
9960     /// array: `{ program, [(--|-|/)switch[=value]]*, [--], [argument]* }`
9961     ///
9962     extern(System) void function (cef_command_line_t* self, cef_string_list_t argv) nothrow get_argv;
9963 
9964     ///
9965     /// Constructs and returns the represented command line string. Use this
9966     /// function cautiously because quoting behavior is unclear.
9967     ///
9968     // The resulting string must be freed by calling cef_string_userfree_free().
9969     extern(System) cef_string_userfree_t function (
9970         cef_command_line_t* self) nothrow get_command_line_string;
9971 
9972     ///
9973     /// Get the program part of the command line string (the first item).
9974     ///
9975     // The resulting string must be freed by calling cef_string_userfree_free().
9976     extern(System) cef_string_userfree_t function (cef_command_line_t* self) nothrow get_program;
9977 
9978     ///
9979     /// Set the program part of the command line string (the first item).
9980     ///
9981     extern(System) void function (
9982         cef_command_line_t* self,
9983         const(cef_string_t)* program) nothrow set_program;
9984 
9985     ///
9986     /// Returns true (1) if the command line has switches.
9987     ///
9988     extern(System) int function (cef_command_line_t* self) nothrow has_switches;
9989 
9990     ///
9991     /// Returns true (1) if the command line contains the given switch.
9992     ///
9993     extern(System) int function (
9994         cef_command_line_t* self,
9995         const(cef_string_t)* name) nothrow has_switch;
9996 
9997     ///
9998     /// Returns the value associated with the given switch. If the switch has no
9999     /// value or isn't present this function returns the NULL string.
10000     ///
10001     // The resulting string must be freed by calling cef_string_userfree_free().
10002     extern(System) cef_string_userfree_t function (
10003         cef_command_line_t* self,
10004         const(cef_string_t)* name) nothrow get_switch_value;
10005 
10006     ///
10007     /// Returns the map of switch names and values. If a switch has no value an
10008     /// NULL string is returned.
10009     ///
10010     extern(System) void function (
10011         cef_command_line_t* self,
10012         cef_string_map_t switches) nothrow get_switches;
10013 
10014     ///
10015     /// Add a switch to the end of the command line.
10016     ///
10017     extern(System) void function (
10018         cef_command_line_t* self,
10019         const(cef_string_t)* name) nothrow append_switch;
10020 
10021     ///
10022     /// Add a switch with the specified value to the end of the command line. If
10023     /// the switch has no value pass an NULL value string.
10024     ///
10025     extern(System) void function (
10026         cef_command_line_t* self,
10027         const(cef_string_t)* name,
10028         const(cef_string_t)* value) nothrow append_switch_with_value;
10029 
10030     ///
10031     /// True if there are remaining command line arguments.
10032     ///
10033     extern(System) int function (cef_command_line_t* self) nothrow has_arguments;
10034 
10035     ///
10036     /// Get the remaining command line arguments.
10037     ///
10038     extern(System) void function (
10039         cef_command_line_t* self,
10040         cef_string_list_t arguments) nothrow get_arguments;
10041 
10042     ///
10043     /// Add an argument to the end of the command line.
10044     ///
10045     extern(System) void function (
10046         cef_command_line_t* self,
10047         const(cef_string_t)* argument) nothrow append_argument;
10048 
10049     ///
10050     /// Insert a command before the current command. Common for debuggers, like
10051     /// "valgrind" or "gdb --args".
10052     ///
10053     extern(System) void function (
10054         cef_command_line_t* self,
10055         const(cef_string_t)* wrapper) nothrow prepend_wrapper;
10056 }
10057 
10058 
10059 
10060 ///
10061 /// Create a new cef_command_line_t instance.
10062 ///
10063 cef_command_line_t* cef_command_line_create ();
10064 
10065 ///
10066 /// Returns the singleton global cef_command_line_t object. The returned object
10067 /// will be read-only.
10068 ///
10069 cef_command_line_t* cef_command_line_get_global ();
10070 
10071 // CEF_INCLUDE_CAPI_CEF_COMMAND_LINE_CAPI_H_
10072 // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
10073 //
10074 // Redistribution and use in source and binary forms, with or without
10075 // modification, are permitted provided that the following conditions are
10076 // met:
10077 //
10078 //    * Redistributions of source code must retain the above copyright
10079 // notice, this list of conditions and the following disclaimer.
10080 //    * Redistributions in binary form must reproduce the above
10081 // copyright notice, this list of conditions and the following disclaimer
10082 // in the documentation and/or other materials provided with the
10083 // distribution.
10084 //    * Neither the name of Google Inc. nor the name Chromium Embedded
10085 // Framework nor the names of its contributors may be used to endorse
10086 // or promote products derived from this software without specific prior
10087 // written permission.
10088 //
10089 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
10090 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
10091 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
10092 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
10093 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
10094 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
10095 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
10096 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
10097 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
10098 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
10099 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
10100 //
10101 // ---------------------------------------------------------------------------
10102 //
10103 // This file was generated by the CEF translator tool and should not edited
10104 // by hand. See the translator.README.txt file in the tools directory for
10105 // more information.
10106 //
10107 // $hash=3ae7dbb24ec7a95a2f4d4e390c9b6622221c2f42$
10108 //
10109 
10110 extern (C):
10111 
10112 ///
10113 /// Callback structure used for continuation of custom context menu display.
10114 ///
10115 struct cef_run_context_menu_callback_t
10116 {
10117     ///
10118     /// Base structure.
10119     ///
10120 
10121     ///
10122     /// Complete context menu display by selecting the specified |command_id| and
10123     /// |event_flags|.
10124     ///
10125 
10126     ///
10127     /// Cancel context menu display.
10128     ///
10129 
10130     ///
10131     /// Callback structure used for continuation of custom quick menu display.
10132 
10133     cef_base_ref_counted_t base;
10134     extern(System) void function (
10135         cef_run_context_menu_callback_t* self,
10136         int command_id,
10137         cef_event_flags_t event_flags) nothrow cont;
10138     extern(System) void function (cef_run_context_menu_callback_t* self) nothrow cancel;
10139 }
10140 
10141 
10142 ///
10143 struct cef_run_quick_menu_callback_t
10144 {
10145     ///
10146     /// Base structure.
10147     ///
10148     cef_base_ref_counted_t base;
10149 
10150     ///
10151     /// Complete quick menu display by selecting the specified |command_id| and
10152     /// |event_flags|.
10153     ///
10154     extern(System) void function (
10155         cef_run_quick_menu_callback_t* self,
10156         int command_id,
10157         cef_event_flags_t event_flags) nothrow cont;
10158 
10159     ///
10160     /// Cancel quick menu display.
10161     ///
10162     extern(System) void function (cef_run_quick_menu_callback_t* self) nothrow cancel;
10163 }
10164 
10165 
10166 
10167 ///
10168 /// Implement this structure to handle context menu events. The functions of
10169 /// this structure will be called on the UI thread.
10170 ///
10171 struct cef_context_menu_handler_t
10172 {
10173     ///
10174     /// Base structure.
10175     ///
10176     cef_base_ref_counted_t base;
10177 
10178     ///
10179     /// Called before a context menu is displayed. |params| provides information
10180     /// about the context menu state. |model| initially contains the default
10181     /// context menu. The |model| can be cleared to show no context menu or
10182     /// modified to show a custom menu. Do not keep references to |params| or
10183     /// |model| outside of this callback.
10184     ///
10185     extern(System) void function (
10186         cef_context_menu_handler_t* self,
10187         cef_browser_t* browser,
10188         cef_frame_t* frame,
10189         cef_context_menu_params_t* params,
10190         cef_menu_model_t* model) nothrow on_before_context_menu;
10191 
10192     ///
10193     /// Called to allow custom display of the context menu. |params| provides
10194     /// information about the context menu state. |model| contains the context
10195     /// menu model resulting from OnBeforeContextMenu. For custom display return
10196     /// true (1) and execute |callback| either synchronously or asynchronously
10197     /// with the selected command ID. For default display return false (0). Do not
10198     /// keep references to |params| or |model| outside of this callback.
10199     ///
10200     extern(System) int function (
10201         cef_context_menu_handler_t* self,
10202         cef_browser_t* browser,
10203         cef_frame_t* frame,
10204         cef_context_menu_params_t* params,
10205         cef_menu_model_t* model,
10206         cef_run_context_menu_callback_t* callback) nothrow run_context_menu;
10207 
10208     ///
10209     /// Called to execute a command selected from the context menu. Return true
10210     /// (1) if the command was handled or false (0) for the default
10211     /// implementation. See cef_menu_id_t for the command ids that have default
10212     /// implementations. All user-defined command ids should be between
10213     /// MENU_ID_USER_FIRST and MENU_ID_USER_LAST. |params| will have the same
10214     /// values as what was passed to on_before_context_menu(). Do not keep a
10215     /// reference to |params| outside of this callback.
10216     ///
10217     extern(System) int function (
10218         cef_context_menu_handler_t* self,
10219         cef_browser_t* browser,
10220         cef_frame_t* frame,
10221         cef_context_menu_params_t* params,
10222         int command_id,
10223         cef_event_flags_t event_flags) nothrow on_context_menu_command;
10224 
10225     ///
10226     /// Called when the context menu is dismissed irregardless of whether the menu
10227     /// was canceled or a command was selected.
10228     ///
10229     extern(System) void function (
10230         cef_context_menu_handler_t* self,
10231         cef_browser_t* browser,
10232         cef_frame_t* frame) nothrow on_context_menu_dismissed;
10233 
10234     ///
10235     /// Called to allow custom display of the quick menu for a windowless browser.
10236     /// |location| is the top left corner of the selected region. |size| is the
10237     /// size of the selected region. |edit_state_flags| is a combination of flags
10238     /// that represent the state of the quick menu. Return true (1) if the menu
10239     /// will be handled and execute |callback| either synchronously or
10240     /// asynchronously with the selected command ID. Return false (0) to cancel
10241     /// the menu.
10242     ///
10243     extern(System) int function (
10244         cef_context_menu_handler_t* self,
10245         cef_browser_t* browser,
10246         cef_frame_t* frame,
10247         const(cef_point_t)* location,
10248         const(cef_size_t)* size,
10249         cef_quick_menu_edit_state_flags_t edit_state_flags,
10250         cef_run_quick_menu_callback_t* callback) nothrow run_quick_menu;
10251 
10252     ///
10253     /// Called to execute a command selected from the quick menu for a windowless
10254     /// browser. Return true (1) if the command was handled or false (0) for the
10255     /// default implementation. See cef_menu_id_t for command IDs that have
10256     /// default implementations.
10257     ///
10258     extern(System) int function (
10259         cef_context_menu_handler_t* self,
10260         cef_browser_t* browser,
10261         cef_frame_t* frame,
10262         int command_id,
10263         cef_event_flags_t event_flags) nothrow on_quick_menu_command;
10264 
10265     ///
10266     /// Called when the quick menu for a windowless browser is dismissed
10267     /// irregardless of whether the menu was canceled or a command was selected.
10268     ///
10269     extern(System) void function (
10270         cef_context_menu_handler_t* self,
10271         cef_browser_t* browser,
10272         cef_frame_t* frame) nothrow on_quick_menu_dismissed;
10273 }
10274 
10275 
10276 
10277 ///
10278 /// Provides information about the context menu state. The functions of this
10279 /// structure can only be accessed on browser process the UI thread.
10280 ///
10281 struct cef_context_menu_params_t
10282 {
10283     ///
10284     /// Base structure.
10285     ///
10286     cef_base_ref_counted_t base;
10287 
10288     ///
10289     /// Returns the X coordinate of the mouse where the context menu was invoked.
10290     /// Coords are relative to the associated RenderView's origin.
10291     ///
10292     extern(System) int function (cef_context_menu_params_t* self) nothrow get_xcoord;
10293 
10294     ///
10295     /// Returns the Y coordinate of the mouse where the context menu was invoked.
10296     /// Coords are relative to the associated RenderView's origin.
10297     ///
10298     extern(System) int function (cef_context_menu_params_t* self) nothrow get_ycoord;
10299 
10300     ///
10301     /// Returns flags representing the type of node that the context menu was
10302     /// invoked on.
10303     ///
10304     extern(System) cef_context_menu_type_flags_t function (
10305         cef_context_menu_params_t* self) nothrow get_type_flags;
10306 
10307     ///
10308     /// Returns the URL of the link, if any, that encloses the node that the
10309     /// context menu was invoked on.
10310     ///
10311     // The resulting string must be freed by calling cef_string_userfree_free().
10312     extern(System) cef_string_userfree_t function (
10313         cef_context_menu_params_t* self) nothrow get_link_url;
10314 
10315     ///
10316     /// Returns the link URL, if any, to be used ONLY for "copy link address". We
10317     /// don't validate this field in the frontend process.
10318     ///
10319     // The resulting string must be freed by calling cef_string_userfree_free().
10320     extern(System) cef_string_userfree_t function (
10321         cef_context_menu_params_t* self) nothrow get_unfiltered_link_url;
10322 
10323     ///
10324     /// Returns the source URL, if any, for the element that the context menu was
10325     /// invoked on. Example of elements with source URLs are img, audio, and
10326     /// video.
10327     ///
10328     // The resulting string must be freed by calling cef_string_userfree_free().
10329     extern(System) cef_string_userfree_t function (
10330         cef_context_menu_params_t* self) nothrow get_source_url;
10331 
10332     ///
10333     /// Returns true (1) if the context menu was invoked on an image which has
10334     /// non-NULL contents.
10335     ///
10336     extern(System) int function (cef_context_menu_params_t* self) nothrow has_image_contents;
10337 
10338     ///
10339     /// Returns the title text or the alt text if the context menu was invoked on
10340     /// an image.
10341     ///
10342     // The resulting string must be freed by calling cef_string_userfree_free().
10343     extern(System) cef_string_userfree_t function (
10344         cef_context_menu_params_t* self) nothrow get_title_text;
10345 
10346     ///
10347     /// Returns the URL of the top level page that the context menu was invoked
10348     /// on.
10349     ///
10350     // The resulting string must be freed by calling cef_string_userfree_free().
10351     extern(System) cef_string_userfree_t function (
10352         cef_context_menu_params_t* self) nothrow get_page_url;
10353 
10354     ///
10355     /// Returns the URL of the subframe that the context menu was invoked on.
10356     ///
10357     // The resulting string must be freed by calling cef_string_userfree_free().
10358     extern(System) cef_string_userfree_t function (
10359         cef_context_menu_params_t* self) nothrow get_frame_url;
10360 
10361     ///
10362     /// Returns the character encoding of the subframe that the context menu was
10363     /// invoked on.
10364     ///
10365     // The resulting string must be freed by calling cef_string_userfree_free().
10366     extern(System) cef_string_userfree_t function (
10367         cef_context_menu_params_t* self) nothrow get_frame_charset;
10368 
10369     ///
10370     /// Returns the type of context node that the context menu was invoked on.
10371     ///
10372     extern(System) cef_context_menu_media_type_t function (
10373         cef_context_menu_params_t* self) nothrow get_media_type;
10374 
10375     ///
10376     /// Returns flags representing the actions supported by the media element, if
10377     /// any, that the context menu was invoked on.
10378     ///
10379     extern(System) cef_context_menu_media_state_flags_t function (
10380         cef_context_menu_params_t* self) nothrow get_media_state_flags;
10381 
10382     ///
10383     /// Returns the text of the selection, if any, that the context menu was
10384     /// invoked on.
10385     ///
10386     // The resulting string must be freed by calling cef_string_userfree_free().
10387     extern(System) cef_string_userfree_t function (
10388         cef_context_menu_params_t* self) nothrow get_selection_text;
10389 
10390     ///
10391     /// Returns the text of the misspelled word, if any, that the context menu was
10392     /// invoked on.
10393     ///
10394     // The resulting string must be freed by calling cef_string_userfree_free().
10395     extern(System) cef_string_userfree_t function (
10396         cef_context_menu_params_t* self) nothrow get_misspelled_word;
10397 
10398     ///
10399     /// Returns true (1) if suggestions exist, false (0) otherwise. Fills in
10400     /// |suggestions| from the spell check service for the misspelled word if
10401     /// there is one.
10402     ///
10403     extern(System) int function (
10404         cef_context_menu_params_t* self,
10405         cef_string_list_t suggestions) nothrow get_dictionary_suggestions;
10406 
10407     ///
10408     /// Returns true (1) if the context menu was invoked on an editable node.
10409     ///
10410     extern(System) int function (cef_context_menu_params_t* self) nothrow is_editable;
10411 
10412     ///
10413     /// Returns true (1) if the context menu was invoked on an editable node where
10414     /// spell-check is enabled.
10415     ///
10416     extern(System) int function (cef_context_menu_params_t* self) nothrow is_spell_check_enabled;
10417 
10418     ///
10419     /// Returns flags representing the actions supported by the editable node, if
10420     /// any, that the context menu was invoked on.
10421     ///
10422     extern(System) cef_context_menu_edit_state_flags_t function (
10423         cef_context_menu_params_t* self) nothrow get_edit_state_flags;
10424 
10425     ///
10426     /// Returns true (1) if the context menu contains items specified by the
10427     /// renderer process.
10428     ///
10429     extern(System) int function (cef_context_menu_params_t* self) nothrow is_custom_menu;
10430 }
10431 
10432 
10433 
10434 // CEF_INCLUDE_CAPI_CEF_CONTEXT_MENU_HANDLER_CAPI_H_
10435 // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
10436 //
10437 // Redistribution and use in source and binary forms, with or without
10438 // modification, are permitted provided that the following conditions are
10439 // met:
10440 //
10441 //    * Redistributions of source code must retain the above copyright
10442 // notice, this list of conditions and the following disclaimer.
10443 //    * Redistributions in binary form must reproduce the above
10444 // copyright notice, this list of conditions and the following disclaimer
10445 // in the documentation and/or other materials provided with the
10446 // distribution.
10447 //    * Neither the name of Google Inc. nor the name Chromium Embedded
10448 // Framework nor the names of its contributors may be used to endorse
10449 // or promote products derived from this software without specific prior
10450 // written permission.
10451 //
10452 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
10453 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
10454 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
10455 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
10456 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
10457 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
10458 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
10459 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
10460 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
10461 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
10462 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
10463 //
10464 // ---------------------------------------------------------------------------
10465 //
10466 // This file was generated by the CEF translator tool and should not edited
10467 // by hand. See the translator.README.txt file in the tools directory for
10468 // more information.
10469 //
10470 // $hash=76ba2e59636aa71c8c6286093198a1e64d012c62$
10471 //
10472 
10473 extern (C):
10474 
10475 ///
10476 /// Structure used for managing cookies. The functions of this structure may be
10477 /// called on any thread unless otherwise indicated.
10478 ///
10479 struct cef_cookie_manager_t
10480 {
10481     ///
10482     /// Base structure.
10483     ///
10484 
10485     ///
10486     /// Visit all cookies on the UI thread. The returned cookies are ordered by
10487     /// longest path, then by earliest creation date. Returns false (0) if cookies
10488     /// cannot be accessed.
10489     ///
10490 
10491     ///
10492     /// Visit a subset of cookies on the UI thread. The results are filtered by
10493     /// the given url scheme, host, domain and path. If |includeHttpOnly| is true
10494     /// (1) HTTP-only cookies will also be included in the results. The returned
10495 
10496     cef_base_ref_counted_t base;
10497     extern(System) int function (
10498         cef_cookie_manager_t* self,
10499         cef_cookie_visitor_t* visitor) nothrow visit_all_cookies;
10500     /// cookies are ordered by longest path, then by earliest creation date.
10501     /// Returns false (0) if cookies cannot be accessed.
10502     ///
10503     extern(System) int function (
10504         cef_cookie_manager_t* self,
10505         const(cef_string_t)* url,
10506         int includeHttpOnly,
10507         cef_cookie_visitor_t* visitor) nothrow visit_url_cookies;
10508 
10509     ///
10510     /// Sets a cookie given a valid URL and explicit user-provided cookie
10511     /// attributes. This function expects each attribute to be well-formed. It
10512     /// will check for disallowed characters (e.g. the ';' character is disallowed
10513     /// within the cookie value attribute) and fail without setting the cookie if
10514     /// such characters are found. If |callback| is non-NULL it will be executed
10515     /// asnychronously on the UI thread after the cookie has been set. Returns
10516     /// false (0) if an invalid URL is specified or if cookies cannot be accessed.
10517     ///
10518     extern(System) int function (
10519         cef_cookie_manager_t* self,
10520         const(cef_string_t)* url,
10521         const(cef_cookie_t)* cookie,
10522         cef_set_cookie_callback_t* callback) nothrow set_cookie;
10523 
10524     ///
10525     /// Delete all cookies that match the specified parameters. If both |url| and
10526     /// |cookie_name| values are specified all host and domain cookies matching
10527     /// both will be deleted. If only |url| is specified all host cookies (but not
10528     /// domain cookies) irrespective of path will be deleted. If |url| is NULL all
10529     /// cookies for all hosts and domains will be deleted. If |callback| is non-
10530     /// NULL it will be executed asnychronously on the UI thread after the cookies
10531     /// have been deleted. Returns false (0) if a non-NULL invalid URL is
10532     /// specified or if cookies cannot be accessed. Cookies can alternately be
10533     /// deleted using the Visit*Cookies() functions.
10534     ///
10535     extern(System) int function (
10536         cef_cookie_manager_t* self,
10537         const(cef_string_t)* url,
10538         const(cef_string_t)* cookie_name,
10539         cef_delete_cookies_callback_t* callback) nothrow delete_cookies;
10540 
10541     ///
10542     /// Flush the backing store (if any) to disk. If |callback| is non-NULL it
10543     /// will be executed asnychronously on the UI thread after the flush is
10544     /// complete. Returns false (0) if cookies cannot be accessed.
10545     ///
10546     extern(System) int function (
10547         cef_cookie_manager_t* self,
10548         cef_completion_callback_t* callback) nothrow flush_store;
10549 }
10550 
10551 
10552 
10553 ///
10554 /// Returns the global cookie manager. By default data will be stored at
10555 /// cef_settings_t.cache_path if specified or in memory otherwise. If |callback|
10556 /// is non-NULL it will be executed asnychronously on the UI thread after the
10557 /// manager's storage has been initialized. Using this function is equivalent to
10558 /// calling cef_request_context_t::cef_request_context_get_global_context()-
10559 /// >GetDefaultCookieManager().
10560 ///
10561 cef_cookie_manager_t* cef_cookie_manager_get_global_manager (
10562     cef_completion_callback_t* callback);
10563 
10564 ///
10565 /// Structure to implement for visiting cookie values. The functions of this
10566 /// structure will always be called on the UI thread.
10567 ///
10568 struct cef_cookie_visitor_t
10569 {
10570     ///
10571     /// Base structure.
10572     ///
10573     cef_base_ref_counted_t base;
10574 
10575     ///
10576     /// Method that will be called once for each cookie. |count| is the 0-based
10577     /// index for the current cookie. |total| is the total number of cookies. Set
10578     /// |deleteCookie| to true (1) to delete the cookie currently being visited.
10579     /// Return false (0) to stop visiting cookies. This function may never be
10580     /// called if no cookies are found.
10581     ///
10582     extern(System) int function (
10583         cef_cookie_visitor_t* self,
10584         const(cef_cookie_t)* cookie,
10585         int count,
10586         int total,
10587         int* deleteCookie) nothrow visit;
10588 }
10589 
10590 
10591 
10592 ///
10593 /// Structure to implement to be notified of asynchronous completion via
10594 /// cef_cookie_manager_t::set_cookie().
10595 ///
10596 struct cef_set_cookie_callback_t
10597 {
10598     ///
10599     /// Base structure.
10600     ///
10601     cef_base_ref_counted_t base;
10602 
10603     ///
10604     /// Method that will be called upon completion. |success| will be true (1) if
10605     /// the cookie was set successfully.
10606     ///
10607     extern(System) void function (cef_set_cookie_callback_t* self, int success) nothrow on_complete;
10608 }
10609 
10610 
10611 
10612 ///
10613 /// Structure to implement to be notified of asynchronous completion via
10614 /// cef_cookie_manager_t::delete_cookies().
10615 ///
10616 struct cef_delete_cookies_callback_t
10617 {
10618     ///
10619     /// Base structure.
10620     ///
10621     cef_base_ref_counted_t base;
10622 
10623     ///
10624     /// Method that will be called upon completion. |num_deleted| will be the
10625     /// number of cookies that were deleted.
10626     ///
10627     extern(System) void function (
10628         cef_delete_cookies_callback_t* self,
10629         int num_deleted) nothrow on_complete;
10630 }
10631 
10632 
10633 
10634 // CEF_INCLUDE_CAPI_CEF_COOKIE_CAPI_H_
10635 // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
10636 //
10637 // Redistribution and use in source and binary forms, with or without
10638 // modification, are permitted provided that the following conditions are
10639 // met:
10640 //
10641 //    * Redistributions of source code must retain the above copyright
10642 // notice, this list of conditions and the following disclaimer.
10643 //    * Redistributions in binary form must reproduce the above
10644 // copyright notice, this list of conditions and the following disclaimer
10645 // in the documentation and/or other materials provided with the
10646 // distribution.
10647 //    * Neither the name of Google Inc. nor the name Chromium Embedded
10648 // Framework nor the names of its contributors may be used to endorse
10649 // or promote products derived from this software without specific prior
10650 // written permission.
10651 //
10652 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
10653 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
10654 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
10655 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
10656 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
10657 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
10658 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
10659 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
10660 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
10661 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
10662 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
10663 //
10664 // ---------------------------------------------------------------------------
10665 //
10666 // This file was generated by the CEF translator tool and should not edited
10667 // by hand. See the translator.README.txt file in the tools directory for
10668 // more information.
10669 //
10670 // $hash=46a6432f66cce88d8597c3d070681b09a712dc54$
10671 //
10672 
10673 extern (C):
10674 
10675 ///
10676 /// Crash reporting is configured using an INI-style config file named
10677 /// "crash_reporter.cfg". On Windows and Linux this file must be placed next to
10678 /// the main application executable. On macOS this file must be placed in the
10679 /// top-level app bundle Resources directory (e.g.
10680 /// "<appname>.app/Contents/Resources"). File contents are as follows:
10681 ///
10682 /// <pre>
10683 ///  # Comments start with a hash character and must be on their own line.
10684 ///
10685 ///  [Config]
10686 ///  ProductName=<Value of the "prod" crash key; defaults to "cef">
10687 ///  ProductVersion=<Value of the "ver" crash key; defaults to the CEF version>
10688 ///  AppName=<Windows only; App-specific folder name component for storing crash
10689 ///           information; default to "CEF">
10690 ///  ExternalHandler=<Windows only; Name of the external handler exe to use
10691 ///                   instead of re-launching the main exe; default to empty>
10692 ///  BrowserCrashForwardingEnabled=<macOS only; True if browser process crashes
10693 ///                                 should be forwarded to the system crash
10694 ///                                 reporter; default to false>
10695 ///  ServerURL=<crash server URL; default to empty>
10696 ///  RateLimitEnabled=<True if uploads should be rate limited; default to true>
10697 ///  MaxUploadsPerDay=<Max uploads per 24 hours, used if rate limit is enabled;
10698 ///                    default to 5>
10699 ///  MaxDatabaseSizeInMb=<Total crash report disk usage greater than this value
10700 ///                       will cause older reports to be deleted; default to 20>
10701 ///  MaxDatabaseAgeInDays=<Crash reports older than this value will be deleted;
10702 ///                        default to 5>
10703 ///
10704 ///  [CrashKeys]
10705 ///  my_key1=<small|medium|large>
10706 ///  my_key2=<small|medium|large>
10707 /// </pre>
10708 ///
10709 /// <b>Config section:</b>
10710 ///
10711 /// If "ProductName" and/or "ProductVersion" are set then the specified values
10712 /// will be included in the crash dump metadata. On macOS if these values are
10713 /// set to NULL then they will be retrieved from the Info.plist file using the
10714 /// "CFBundleName" and "CFBundleShortVersionString" keys respectively.
10715 ///
10716 /// If "AppName" is set on Windows then crash report information (metrics,
10717 /// database and dumps) will be stored locally on disk under the
10718 /// "C:\Users\[CurrentUser]\AppData\Local\[AppName]\User Data" folder. On other
10719 /// platforms the cef_settings_t.root_cache_path value will be used.
10720 ///
10721 /// If "ExternalHandler" is set on Windows then the specified exe will be
10722 /// launched as the crashpad-handler instead of re-launching the main process
10723 /// exe. The value can be an absolute path or a path relative to the main exe
10724 /// directory. On Linux the cef_settings_t.browser_subprocess_path value will be
10725 /// used. On macOS the existing subprocess app bundle will be used.
10726 ///
10727 /// If "BrowserCrashForwardingEnabled" is set to true (1) on macOS then browser
10728 /// process crashes will be forwarded to the system crash reporter. This results
10729 /// in the crash UI dialog being displayed to the user and crash reports being
10730 /// logged under "~/Library/Logs/DiagnosticReports". Forwarding of crash reports
10731 /// from non-browser processes and Debug builds is always disabled.
10732 ///
10733 /// If "ServerURL" is set then crashes will be uploaded as a multi-part POST
10734 /// request to the specified URL. Otherwise, reports will only be stored locally
10735 /// on disk.
10736 ///
10737 /// If "RateLimitEnabled" is set to true (1) then crash report uploads will be
10738 /// rate limited as follows:
10739 ///  1. If "MaxUploadsPerDay" is set to a positive value then at most the
10740 ///     specified number of crashes will be uploaded in each 24 hour period.
10741 ///  2. If crash upload fails due to a network or server error then an
10742 ///     incremental backoff delay up to a maximum of 24 hours will be applied
10743 ///     for retries.
10744 ///  3. If a backoff delay is applied and "MaxUploadsPerDay" is > 1 then the
10745 ///     "MaxUploadsPerDay" value will be reduced to 1 until the client is
10746 ///     restarted. This helps to avoid an upload flood when the network or
10747 ///     server error is resolved.
10748 /// Rate limiting is not supported on Linux.
10749 ///
10750 /// If "MaxDatabaseSizeInMb" is set to a positive value then crash report
10751 /// storage on disk will be limited to that size in megabytes. For example, on
10752 /// Windows each dump is about 600KB so a "MaxDatabaseSizeInMb" value of 20
10753 /// equates to about 34 crash reports stored on disk. Not supported on Linux.
10754 ///
10755 /// If "MaxDatabaseAgeInDays" is set to a positive value then crash reports
10756 /// older than the specified age in days will be deleted. Not supported on
10757 /// Linux.
10758 ///
10759 /// <b>CrashKeys section:</b>
10760 ///
10761 /// A maximum of 26 crash keys of each size can be specified for use by the
10762 /// application. Crash key values will be truncated based on the specified size
10763 /// (small = 64 bytes, medium = 256 bytes, large = 1024 bytes). The value of
10764 /// crash keys can be set from any thread or process using the
10765 /// CefSetCrashKeyValue function. These key/value pairs will be sent to the
10766 /// crash server along with the crash dump file.
10767 ///
10768 int cef_crash_reporting_enabled ();
10769 
10770 ///
10771 /// Sets or clears a specific key-value pair from the crash metadata.
10772 ///
10773 void cef_set_crash_key_value (
10774     const(cef_string_t)* key,
10775     const(cef_string_t)* value);
10776 
10777 // CEF_INCLUDE_CAPI_CEF_CRASH_UTIL_CAPI_H_
10778 // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
10779 //
10780 // Redistribution and use in source and binary forms, with or without
10781 // modification, are permitted provided that the following conditions are
10782 // met:
10783 //
10784 //    * Redistributions of source code must retain the above copyright
10785 // notice, this list of conditions and the following disclaimer.
10786 //    * Redistributions in binary form must reproduce the above
10787 // copyright notice, this list of conditions and the following disclaimer
10788 // in the documentation and/or other materials provided with the
10789 // distribution.
10790 //    * Neither the name of Google Inc. nor the name Chromium Embedded
10791 // Framework nor the names of its contributors may be used to endorse
10792 // or promote products derived from this software without specific prior
10793 // written permission.
10794 //
10795 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
10796 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
10797 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
10798 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
10799 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
10800 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
10801 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
10802 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
10803 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
10804 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
10805 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
10806 //
10807 // ---------------------------------------------------------------------------
10808 //
10809 // This file was generated by the CEF translator tool and should not edited
10810 // by hand. See the translator.README.txt file in the tools directory for
10811 // more information.
10812 //
10813 // $hash=dd94c50619e92bf5bed4fe61479813ee559f779d$
10814 //
10815 
10816 extern (C):
10817 
10818 
10819 
10820 ///
10821 /// Callback structure for cef_browser_host_t::AddDevToolsMessageObserver. The
10822 /// functions of this structure will be called on the browser process UI thread.
10823 ///
10824 struct cef_dev_tools_message_observer_t
10825 {
10826     ///
10827     /// Base structure.
10828     ///
10829 
10830     ///
10831     /// Method that will be called on receipt of a DevTools protocol message.
10832     /// |browser| is the originating browser instance. |message| is a UTF8-encoded
10833     /// JSON dictionary representing either a function result or an event.
10834     /// |message| is only valid for the scope of this callback and should be
10835     /// copied if necessary. Return true (1) if the message was handled or false
10836     /// (0) if the message should be further processed and passed to the
10837     /// OnDevToolsMethodResult or OnDevToolsEvent functions as appropriate.
10838     ///
10839     /// Method result dictionaries include an "id" (int) value that identifies the
10840 
10841     cef_base_ref_counted_t base;
10842     /// orginating function call sent from
10843     /// cef_browser_host_t::SendDevToolsMessage, and optionally either a "result"
10844     /// (dictionary) or "error" (dictionary) value. The "error" dictionary will
10845     /// contain "code" (int) and "message" (string) values. Event dictionaries
10846     /// include a "function" (string) value and optionally a "params" (dictionary)
10847     /// value. See the DevTools protocol documentation at
10848     /// https://chromedevtools.github.io/devtools-protocol/ for details of
10849     /// supported function calls and the expected "result" or "params" dictionary
10850     /// contents. JSON dictionaries can be parsed using the CefParseJSON function
10851     /// if desired, however be aware of performance considerations when parsing
10852     /// large messages (some of which may exceed 1MB in size).
10853     ///
10854     extern(System) int function (
10855         cef_dev_tools_message_observer_t* self,
10856         cef_browser_t* browser,
10857         const(void)* message,
10858         size_t message_size) nothrow on_dev_tools_message;
10859 
10860     ///
10861     /// Method that will be called after attempted execution of a DevTools
10862     /// protocol function. |browser| is the originating browser instance.
10863     /// |message_id| is the "id" value that identifies the originating function
10864     /// call message. If the function succeeded |success| will be true (1) and
10865     /// |result| will be the UTF8-encoded JSON "result" dictionary value (which
10866     /// may be NULL). If the function failed |success| will be false (0) and
10867     /// |result| will be the UTF8-encoded JSON "error" dictionary value. |result|
10868     /// is only valid for the scope of this callback and should be copied if
10869     /// necessary. See the OnDevToolsMessage documentation for additional details
10870     /// on |result| contents.
10871     ///
10872     extern(System) void function (
10873         cef_dev_tools_message_observer_t* self,
10874         cef_browser_t* browser,
10875         int message_id,
10876         int success,
10877         const(void)* result,
10878         size_t result_size) nothrow on_dev_tools_method_result;
10879 
10880     ///
10881     /// Method that will be called on receipt of a DevTools protocol event.
10882     /// |browser| is the originating browser instance. |function| is the
10883     /// "function" value. |params| is the UTF8-encoded JSON "params" dictionary
10884     /// value (which may be NULL). |params| is only valid for the scope of this
10885     /// callback and should be copied if necessary. See the OnDevToolsMessage
10886     /// documentation for additional details on |params| contents.
10887     ///
10888     extern(System) void function (
10889         cef_dev_tools_message_observer_t* self,
10890         cef_browser_t* browser,
10891         const(cef_string_t)* method,
10892         const(void)* params,
10893         size_t params_size) nothrow on_dev_tools_event;
10894 
10895     ///
10896     /// Method that will be called when the DevTools agent has attached. |browser|
10897     /// is the originating browser instance. This will generally occur in response
10898     /// to the first message sent while the agent is detached.
10899     ///
10900     extern(System) void function (
10901         cef_dev_tools_message_observer_t* self,
10902         cef_browser_t* browser) nothrow on_dev_tools_agent_attached;
10903 
10904     ///
10905     /// Method that will be called when the DevTools agent has detached. |browser|
10906     /// is the originating browser instance. Any function results that were
10907     /// pending before the agent became detached will not be delivered, and any
10908     /// active event subscriptions will be canceled.
10909     ///
10910     extern(System) void function (
10911         cef_dev_tools_message_observer_t* self,
10912         cef_browser_t* browser) nothrow on_dev_tools_agent_detached;
10913 }
10914 
10915 
10916 
10917 // CEF_INCLUDE_CAPI_CEF_DEVTOOLS_MESSAGE_OBSERVER_CAPI_H_
10918 // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
10919 //
10920 // Redistribution and use in source and binary forms, with or without
10921 // modification, are permitted provided that the following conditions are
10922 // met:
10923 //
10924 //    * Redistributions of source code must retain the above copyright
10925 // notice, this list of conditions and the following disclaimer.
10926 //    * Redistributions in binary form must reproduce the above
10927 // copyright notice, this list of conditions and the following disclaimer
10928 // in the documentation and/or other materials provided with the
10929 // distribution.
10930 //    * Neither the name of Google Inc. nor the name Chromium Embedded
10931 // Framework nor the names of its contributors may be used to endorse
10932 // or promote products derived from this software without specific prior
10933 // written permission.
10934 //
10935 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
10936 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
10937 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
10938 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
10939 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
10940 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
10941 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
10942 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
10943 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
10944 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
10945 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
10946 //
10947 // ---------------------------------------------------------------------------
10948 //
10949 // This file was generated by the CEF translator tool and should not edited
10950 // by hand. See the translator.README.txt file in the tools directory for
10951 // more information.
10952 //
10953 // $hash=bf7208a86ee17f63fd7163cef8c3a13373a1f1c8$
10954 //
10955 
10956 extern (C):
10957 
10958 ///
10959 /// Callback structure for asynchronous continuation of file dialog requests.
10960 ///
10961 struct cef_file_dialog_callback_t
10962 {
10963     ///
10964     /// Base structure.
10965     ///
10966 
10967     ///
10968     /// Continue the file selection. |file_paths| should be a single value or a
10969     /// list of values depending on the dialog mode. An NULL |file_paths| value is
10970     /// treated the same as calling cancel().
10971     ///
10972 
10973     ///
10974     /// Cancel the file selection.
10975     ///
10976 
10977     ///
10978     /// Implement this structure to handle dialog events. The functions of this
10979     /// structure will be called on the browser process UI thread.
10980     ///
10981 
10982     cef_base_ref_counted_t base;
10983     extern(System) void function (
10984         cef_file_dialog_callback_t* self,
10985         cef_string_list_t file_paths) nothrow cont;
10986     extern(System) void function (cef_file_dialog_callback_t* self) nothrow cancel;
10987 }
10988 
10989 
10990 
10991 struct cef_dialog_handler_t
10992 {
10993     ///
10994     /// Base structure.
10995     ///
10996     cef_base_ref_counted_t base;
10997 
10998     ///
10999     /// Called to run a file chooser dialog. |mode| represents the type of dialog
11000     /// to display. |title| to the title to be used for the dialog and may be NULL
11001     /// to show the default title ("Open" or "Save" depending on the mode).
11002     /// |default_file_path| is the path with optional directory and/or file name
11003     /// component that should be initially selected in the dialog.
11004     /// |accept_filters| are used to restrict the selectable file types and may be
11005     /// any combination of valid lower-cased MIME types (e.g. "text/*" or
11006     /// "image/*") and individual file extensions (e.g. ".txt" or ".png").
11007     /// |accept_extensions| provides the semicolon-delimited expansion of MIME
11008     /// types to file extensions (if known, or NULL string otherwise).
11009     /// |accept_descriptions| provides the descriptions for MIME types (if known,
11010     /// or NULL string otherwise). For example, the "image/*" mime type might have
11011     /// extensions ".png;.jpg;.bmp;..." and description "Image Files".
11012     /// |accept_filters|, |accept_extensions| and |accept_descriptions| will all
11013     /// be the same size. To display a custom dialog return true (1) and execute
11014     /// |callback| either inline or at a later time. To display the default dialog
11015     /// return false (0). If this function returns false (0) it may be called an
11016     /// additional time for the same dialog (both before and after MIME type
11017     /// expansion).
11018     ///
11019     extern(System) int function (
11020         cef_dialog_handler_t* self,
11021         cef_browser_t* browser,
11022         cef_file_dialog_mode_t mode,
11023         const(cef_string_t)* title,
11024         const(cef_string_t)* default_file_path,
11025         cef_string_list_t accept_filters,
11026         cef_string_list_t accept_extensions,
11027         cef_string_list_t accept_descriptions,
11028         cef_file_dialog_callback_t* callback) nothrow on_file_dialog;
11029 }
11030 
11031 
11032 
11033 // CEF_INCLUDE_CAPI_CEF_DIALOG_HANDLER_CAPI_H_
11034 // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
11035 //
11036 // Redistribution and use in source and binary forms, with or without
11037 // modification, are permitted provided that the following conditions are
11038 // met:
11039 //
11040 //    * Redistributions of source code must retain the above copyright
11041 // notice, this list of conditions and the following disclaimer.
11042 //    * Redistributions in binary form must reproduce the above
11043 // copyright notice, this list of conditions and the following disclaimer
11044 // in the documentation and/or other materials provided with the
11045 // distribution.
11046 //    * Neither the name of Google Inc. nor the name Chromium Embedded
11047 // Framework nor the names of its contributors may be used to endorse
11048 // or promote products derived from this software without specific prior
11049 // written permission.
11050 //
11051 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
11052 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
11053 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
11054 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
11055 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
11056 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
11057 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
11058 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
11059 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
11060 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
11061 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
11062 //
11063 // ---------------------------------------------------------------------------
11064 //
11065 // This file was generated by the CEF translator tool and should not edited
11066 // by hand. See the translator.README.txt file in the tools directory for
11067 // more information.
11068 //
11069 // $hash=5a99c5e88ea0e123087234b2795fa625fed183f2$
11070 //
11071 
11072 import core.stdc.config;
11073 
11074 extern (C):
11075 
11076 ///
11077 /// Implement this structure to handle events related to browser display state.
11078 /// The functions of this structure will be called on the UI thread.
11079 ///
11080 struct cef_display_handler_t
11081 {
11082     ///
11083     /// Base structure.
11084     ///
11085 
11086     ///
11087     /// Called when a frame's address has changed.
11088     ///
11089 
11090     ///
11091     /// Called when the page title changes.
11092     ///
11093 
11094     cef_base_ref_counted_t base;
11095     extern(System) void function (
11096         cef_display_handler_t* self,
11097         cef_browser_t* browser,
11098         cef_frame_t* frame,
11099         const(cef_string_t)* url) nothrow on_address_change;
11100     extern(System) void function (
11101         cef_display_handler_t* self,
11102         cef_browser_t* browser,
11103         const(cef_string_t)* title) nothrow on_title_change;
11104     ///
11105     /// Called when the page icon changes.
11106     ///
11107     extern(System) void function (
11108         cef_display_handler_t* self,
11109         cef_browser_t* browser,
11110         cef_string_list_t icon_urls) nothrow on_favicon_urlchange;
11111 
11112     ///
11113     /// Called when web content in the page has toggled fullscreen mode. If
11114     /// |fullscreen| is true (1) the content will automatically be sized to fill
11115     /// the browser content area. If |fullscreen| is false (0) the content will
11116     /// automatically return to its original size and position. With the Alloy
11117     /// runtime the client is responsible for triggering the fullscreen transition
11118     /// (for example, by calling cef_window_t::SetFullscreen when using Views).
11119     /// With the Chrome runtime the fullscreen transition will be triggered
11120     /// automatically. The cef_window_delegate_t::OnWindowFullscreenTransition
11121     /// function will be called during the fullscreen transition for notification
11122     /// purposes.
11123     ///
11124     extern(System) void function (
11125         cef_display_handler_t* self,
11126         cef_browser_t* browser,
11127         int fullscreen) nothrow on_fullscreen_mode_change;
11128 
11129     ///
11130     /// Called when the browser is about to display a tooltip. |text| contains the
11131     /// text that will be displayed in the tooltip. To handle the display of the
11132     /// tooltip yourself return true (1). Otherwise, you can optionally modify
11133     /// |text| and then return false (0) to allow the browser to display the
11134     /// tooltip. When window rendering is disabled the application is responsible
11135     /// for drawing tooltips and the return value is ignored.
11136     ///
11137     extern(System) int function (
11138         cef_display_handler_t* self,
11139         cef_browser_t* browser,
11140         cef_string_t* text) nothrow on_tooltip;
11141 
11142     ///
11143     /// Called when the browser receives a status message. |value| contains the
11144     /// text that will be displayed in the status message.
11145     ///
11146     extern(System) void function (
11147         cef_display_handler_t* self,
11148         cef_browser_t* browser,
11149         const(cef_string_t)* value) nothrow on_status_message;
11150 
11151     ///
11152     /// Called to display a console message. Return true (1) to stop the message
11153     /// from being output to the console.
11154     ///
11155     extern(System) int function (
11156         cef_display_handler_t* self,
11157         cef_browser_t* browser,
11158         cef_log_severity_t level,
11159         const(cef_string_t)* message,
11160         const(cef_string_t)* source,
11161         int line) nothrow on_console_message;
11162 
11163     ///
11164     /// Called when auto-resize is enabled via
11165     /// cef_browser_host_t::SetAutoResizeEnabled and the contents have auto-
11166     /// resized. |new_size| will be the desired size in view coordinates. Return
11167     /// true (1) if the resize was handled or false (0) for default handling.
11168     ///
11169     extern(System) int function (
11170         cef_display_handler_t* self,
11171         cef_browser_t* browser,
11172         const(cef_size_t)* new_size) nothrow on_auto_resize;
11173 
11174     ///
11175     /// Called when the overall page loading progress has changed. |progress|
11176     /// ranges from 0.0 to 1.0.
11177     ///
11178     extern(System) void function (
11179         cef_display_handler_t* self,
11180         cef_browser_t* browser,
11181         double progress) nothrow on_loading_progress_change;
11182 
11183     ///
11184     /// Called when the browser's cursor has changed. If |type| is CT_CUSTOM then
11185     /// |custom_cursor_info| will be populated with the custom cursor information.
11186     /// Return true (1) if the cursor change was handled or false (0) for default
11187     /// handling.
11188     ///
11189     extern(System) int function (
11190         cef_display_handler_t* self,
11191         cef_browser_t* browser,
11192         c_ulong cursor,
11193         cef_cursor_type_t type,
11194         const(cef_cursor_info_t)* custom_cursor_info) nothrow on_cursor_change;
11195 
11196     ///
11197     /// Called when the browser's access to an audio and/or video source has
11198     /// changed.
11199     ///
11200     extern(System) void function (
11201         cef_display_handler_t* self,
11202         cef_browser_t* browser,
11203         int has_video_access,
11204         int has_audio_access) nothrow on_media_access_change;
11205 }
11206 
11207 
11208 
11209 // CEF_INCLUDE_CAPI_CEF_DISPLAY_HANDLER_CAPI_H_
11210 // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
11211 //
11212 // Redistribution and use in source and binary forms, with or without
11213 // modification, are permitted provided that the following conditions are
11214 // met:
11215 //
11216 //    * Redistributions of source code must retain the above copyright
11217 // notice, this list of conditions and the following disclaimer.
11218 //    * Redistributions in binary form must reproduce the above
11219 // copyright notice, this list of conditions and the following disclaimer
11220 // in the documentation and/or other materials provided with the
11221 // distribution.
11222 //    * Neither the name of Google Inc. nor the name Chromium Embedded
11223 // Framework nor the names of its contributors may be used to endorse
11224 // or promote products derived from this software without specific prior
11225 // written permission.
11226 //
11227 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
11228 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
11229 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
11230 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
11231 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
11232 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
11233 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
11234 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
11235 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
11236 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
11237 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
11238 //
11239 // ---------------------------------------------------------------------------
11240 //
11241 // This file was generated by the CEF translator tool and should not edited
11242 // by hand. See the translator.README.txt file in the tools directory for
11243 // more information.
11244 //
11245 // $hash=a4d2f79163205ed4367916546240a6aedc2165f9$
11246 //
11247 
11248 extern (C):
11249 
11250 ///
11251 /// Structure to implement for visiting the DOM. The functions of this structure
11252 /// will be called on the render process main thread.
11253 ///
11254 struct cef_domvisitor_t
11255 {
11256     ///
11257     /// Base structure.
11258     ///
11259 
11260     ///
11261     /// Method executed for visiting the DOM. The document object passed to this
11262     /// function represents a snapshot of the DOM at the time this function is
11263     /// executed. DOM objects are only valid for the scope of this function. Do
11264     /// not keep references to or attempt to access any DOM objects outside the
11265     /// scope of this function.
11266     ///
11267 
11268     ///
11269     /// Structure used to represent a DOM document. The functions of this structure
11270     /// should only be called on the render process main thread thread.
11271 
11272     cef_base_ref_counted_t base;
11273     extern(System) void function (
11274         cef_domvisitor_t* self,
11275         cef_domdocument_t* document) nothrow visit;
11276 }
11277 
11278 
11279 ///
11280 struct cef_domdocument_t
11281 {
11282     ///
11283     /// Base structure.
11284     ///
11285     cef_base_ref_counted_t base;
11286 
11287     ///
11288     /// Returns the document type.
11289     ///
11290     extern(System) cef_dom_document_type_t function (cef_domdocument_t* self) nothrow get_type;
11291 
11292     ///
11293     /// Returns the root document node.
11294     ///
11295     extern(System) cef_domnode_t* function (cef_domdocument_t* self) nothrow get_document;
11296 
11297     ///
11298     /// Returns the BODY node of an HTML document.
11299     ///
11300     extern(System) cef_domnode_t* function (cef_domdocument_t* self) nothrow get_body;
11301 
11302     ///
11303     /// Returns the HEAD node of an HTML document.
11304     ///
11305     extern(System) cef_domnode_t* function (cef_domdocument_t* self) nothrow get_head;
11306 
11307     ///
11308     /// Returns the title of an HTML document.
11309     ///
11310     // The resulting string must be freed by calling cef_string_userfree_free().
11311     extern(System) cef_string_userfree_t function (cef_domdocument_t* self) nothrow get_title;
11312 
11313     ///
11314     /// Returns the document element with the specified ID value.
11315     ///
11316     extern(System) cef_domnode_t* function (
11317         cef_domdocument_t* self,
11318         const(cef_string_t)* id) nothrow get_element_by_id;
11319 
11320     ///
11321     /// Returns the node that currently has keyboard focus.
11322     ///
11323     extern(System) cef_domnode_t* function (cef_domdocument_t* self) nothrow get_focused_node;
11324 
11325     ///
11326     /// Returns true (1) if a portion of the document is selected.
11327     ///
11328     extern(System) int function (cef_domdocument_t* self) nothrow has_selection;
11329 
11330     ///
11331     /// Returns the selection offset within the start node.
11332     ///
11333     extern(System) int function (cef_domdocument_t* self) nothrow get_selection_start_offset;
11334 
11335     ///
11336     /// Returns the selection offset within the end node.
11337     ///
11338     extern(System) int function (cef_domdocument_t* self) nothrow get_selection_end_offset;
11339 
11340     ///
11341     /// Returns the contents of this selection as markup.
11342     ///
11343     // The resulting string must be freed by calling cef_string_userfree_free().
11344     extern(System) cef_string_userfree_t function (
11345         cef_domdocument_t* self) nothrow get_selection_as_markup;
11346 
11347     ///
11348     /// Returns the contents of this selection as text.
11349     ///
11350     // The resulting string must be freed by calling cef_string_userfree_free().
11351     extern(System) cef_string_userfree_t function (
11352         cef_domdocument_t* self) nothrow get_selection_as_text;
11353 
11354     ///
11355     /// Returns the base URL for the document.
11356     ///
11357     // The resulting string must be freed by calling cef_string_userfree_free().
11358     extern(System) cef_string_userfree_t function (cef_domdocument_t* self) nothrow get_base_url;
11359 
11360     ///
11361     /// Returns a complete URL based on the document base URL and the specified
11362     /// partial URL.
11363     ///
11364     // The resulting string must be freed by calling cef_string_userfree_free().
11365     extern(System) cef_string_userfree_t function (
11366         cef_domdocument_t* self,
11367         const(cef_string_t)* partialURL) nothrow get_complete_url;
11368 }
11369 
11370 
11371 
11372 ///
11373 /// Structure used to represent a DOM node. The functions of this structure
11374 /// should only be called on the render process main thread.
11375 ///
11376 struct cef_domnode_t
11377 {
11378     ///
11379     /// Base structure.
11380     ///
11381     cef_base_ref_counted_t base;
11382 
11383     ///
11384     /// Returns the type for this node.
11385     ///
11386     extern(System) cef_dom_node_type_t function (cef_domnode_t* self) nothrow get_type;
11387 
11388     ///
11389     /// Returns true (1) if this is a text node.
11390     ///
11391     extern(System) int function (cef_domnode_t* self) nothrow is_text;
11392 
11393     ///
11394     /// Returns true (1) if this is an element node.
11395     ///
11396     extern(System) int function (cef_domnode_t* self) nothrow is_element;
11397 
11398     ///
11399     /// Returns true (1) if this is an editable node.
11400     ///
11401     extern(System) int function (cef_domnode_t* self) nothrow is_editable;
11402 
11403     ///
11404     /// Returns true (1) if this is a form control element node.
11405     ///
11406     extern(System) int function (cef_domnode_t* self) nothrow is_form_control_element;
11407 
11408     ///
11409     /// Returns the type of this form control element node.
11410     ///
11411     extern(System) cef_dom_form_control_type_t function (
11412         cef_domnode_t* self) nothrow get_form_control_element_type;
11413 
11414     ///
11415     /// Returns true (1) if this object is pointing to the same handle as |that|
11416     /// object.
11417     ///
11418     extern(System) int function (cef_domnode_t* self, cef_domnode_t* that) nothrow is_same;
11419 
11420     ///
11421     /// Returns the name of this node.
11422     ///
11423     // The resulting string must be freed by calling cef_string_userfree_free().
11424     extern(System) cef_string_userfree_t function (cef_domnode_t* self) nothrow get_name;
11425 
11426     ///
11427     /// Returns the value of this node.
11428     ///
11429     // The resulting string must be freed by calling cef_string_userfree_free().
11430     extern(System) cef_string_userfree_t function (cef_domnode_t* self) nothrow get_value;
11431 
11432     ///
11433     /// Set the value of this node. Returns true (1) on success.
11434     ///
11435     extern(System) int function (cef_domnode_t* self, const(cef_string_t)* value) nothrow set_value;
11436 
11437     ///
11438     /// Returns the contents of this node as markup.
11439     ///
11440     // The resulting string must be freed by calling cef_string_userfree_free().
11441     extern(System) cef_string_userfree_t function (cef_domnode_t* self) nothrow get_as_markup;
11442 
11443     ///
11444     /// Returns the document associated with this node.
11445     ///
11446     extern(System) cef_domdocument_t* function (cef_domnode_t* self) nothrow get_document;
11447 
11448     ///
11449     /// Returns the parent node.
11450     ///
11451     extern(System) cef_domnode_t* function (cef_domnode_t* self) nothrow get_parent;
11452 
11453     ///
11454     /// Returns the previous sibling node.
11455     ///
11456     extern(System) cef_domnode_t* function (cef_domnode_t* self) nothrow get_previous_sibling;
11457 
11458     ///
11459     /// Returns the next sibling node.
11460     ///
11461     extern(System) cef_domnode_t* function (cef_domnode_t* self) nothrow get_next_sibling;
11462 
11463     ///
11464     /// Returns true (1) if this node has child nodes.
11465     ///
11466     extern(System) int function (cef_domnode_t* self) nothrow has_children;
11467 
11468     ///
11469     /// Return the first child node.
11470     ///
11471     extern(System) cef_domnode_t* function (cef_domnode_t* self) nothrow get_first_child;
11472 
11473     ///
11474     /// Returns the last child node.
11475     ///
11476     extern(System) cef_domnode_t* function (cef_domnode_t* self) nothrow get_last_child;
11477 
11478     ///
11479     /// Returns the tag name of this element.
11480     ///
11481     // The resulting string must be freed by calling cef_string_userfree_free().
11482     extern(System) cef_string_userfree_t function (cef_domnode_t* self) nothrow get_element_tag_name;
11483 
11484     ///
11485     /// Returns true (1) if this element has attributes.
11486     ///
11487     extern(System) int function (cef_domnode_t* self) nothrow has_element_attributes;
11488 
11489     ///
11490     /// Returns true (1) if this element has an attribute named |attrName|.
11491     ///
11492     extern(System) int function (
11493         cef_domnode_t* self,
11494         const(cef_string_t)* attrName) nothrow has_element_attribute;
11495 
11496     ///
11497     /// Returns the element attribute named |attrName|.
11498     ///
11499     // The resulting string must be freed by calling cef_string_userfree_free().
11500     extern(System) cef_string_userfree_t function (
11501         cef_domnode_t* self,
11502         const(cef_string_t)* attrName) nothrow get_element_attribute;
11503 
11504     ///
11505     /// Returns a map of all element attributes.
11506     ///
11507     extern(System) void function (
11508         cef_domnode_t* self,
11509         cef_string_map_t attrMap) nothrow get_element_attributes;
11510 
11511     ///
11512     /// Set the value for the element attribute named |attrName|. Returns true (1)
11513     /// on success.
11514     ///
11515     extern(System) int function (
11516         cef_domnode_t* self,
11517         const(cef_string_t)* attrName,
11518         const(cef_string_t)* value) nothrow set_element_attribute;
11519 
11520     ///
11521     /// Returns the inner text of the element.
11522     ///
11523     // The resulting string must be freed by calling cef_string_userfree_free().
11524     extern(System) cef_string_userfree_t function (
11525         cef_domnode_t* self) nothrow get_element_inner_text;
11526 
11527     ///
11528     /// Returns the bounds of the element in device pixels. Use
11529     /// "window.devicePixelRatio" to convert to/from CSS pixels.
11530     ///
11531     extern(System) cef_rect_t function (cef_domnode_t* self) nothrow get_element_bounds;
11532 }
11533 
11534 
11535 
11536 // CEF_INCLUDE_CAPI_CEF_DOM_CAPI_H_
11537 // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
11538 //
11539 // Redistribution and use in source and binary forms, with or without
11540 // modification, are permitted provided that the following conditions are
11541 // met:
11542 //
11543 //    * Redistributions of source code must retain the above copyright
11544 // notice, this list of conditions and the following disclaimer.
11545 //    * Redistributions in binary form must reproduce the above
11546 // copyright notice, this list of conditions and the following disclaimer
11547 // in the documentation and/or other materials provided with the
11548 // distribution.
11549 //    * Neither the name of Google Inc. nor the name Chromium Embedded
11550 // Framework nor the names of its contributors may be used to endorse
11551 // or promote products derived from this software without specific prior
11552 // written permission.
11553 //
11554 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
11555 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
11556 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
11557 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
11558 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
11559 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
11560 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
11561 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
11562 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
11563 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
11564 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
11565 //
11566 // ---------------------------------------------------------------------------
11567 //
11568 // This file was generated by the CEF translator tool and should not edited
11569 // by hand. See the translator.README.txt file in the tools directory for
11570 // more information.
11571 //
11572 // $hash=7ecfb07a95315ff81937e9f68d419122fc88f1b7$
11573 //
11574 
11575 extern (C):
11576 
11577 ///
11578 /// Callback structure used to asynchronously continue a download.
11579 ///
11580 struct cef_before_download_callback_t
11581 {
11582     ///
11583     /// Base structure.
11584     ///
11585 
11586     ///
11587     /// Call to continue the download. Set |download_path| to the full file path
11588     /// for the download including the file name or leave blank to use the
11589     /// suggested name and the default temp directory. Set |show_dialog| to true
11590     /// (1) if you do wish to show the default "Save As" dialog.
11591     ///
11592 
11593     ///
11594     /// Callback structure used to asynchronously cancel a download.
11595     ///
11596 
11597     cef_base_ref_counted_t base;
11598     extern(System) void function (
11599         cef_before_download_callback_t* self,
11600         const(cef_string_t)* download_path,
11601         int show_dialog) nothrow cont;
11602 }
11603 
11604 
11605 
11606 struct cef_download_item_callback_t
11607 {
11608     ///
11609     /// Base structure.
11610     ///
11611     cef_base_ref_counted_t base;
11612 
11613     ///
11614     /// Call to cancel the download.
11615     ///
11616     extern(System) void function (cef_download_item_callback_t* self) nothrow cancel;
11617 
11618     ///
11619     /// Call to pause the download.
11620     ///
11621     extern(System) void function (cef_download_item_callback_t* self) nothrow pause;
11622 
11623     ///
11624     /// Call to resume the download.
11625     ///
11626     extern(System) void function (cef_download_item_callback_t* self) nothrow resume;
11627 }
11628 
11629 
11630 
11631 ///
11632 /// Structure used to handle file downloads. The functions of this structure
11633 /// will called on the browser process UI thread.
11634 ///
11635 struct cef_download_handler_t
11636 {
11637     ///
11638     /// Base structure.
11639     ///
11640     cef_base_ref_counted_t base;
11641 
11642     ///
11643     /// Called before a download begins in response to a user-initiated action
11644     /// (e.g. alt + link click or link click that returns a `Content-Disposition:
11645     /// attachment` response from the server). |url| is the target download URL
11646     /// and |request_function| is the target function (GET, POST, etc) nothrow. Return
11647     /// true (1) to proceed with the download or false (0) to cancel the download.
11648     ///
11649     extern(System) int function (
11650         cef_download_handler_t* self,
11651         cef_browser_t* browser,
11652         const(cef_string_t)* url,
11653         const(cef_string_t)* request_method) nothrow can_download;
11654 
11655     ///
11656     /// Called before a download begins. |suggested_name| is the suggested name
11657     /// for the download file. Return true (1) and execute |callback| either
11658     /// asynchronously or in this function to continue or cancel the download.
11659     /// Return false (0) to proceed with default handling (cancel with Alloy
11660     /// style, download shelf with Chrome style). Do not keep a reference to
11661     /// |download_item| outside of this function.
11662     ///
11663     extern(System) int function (
11664         cef_download_handler_t* self,
11665         cef_browser_t* browser,
11666         cef_download_item_t* download_item,
11667         const(cef_string_t)* suggested_name,
11668         cef_before_download_callback_t* callback) nothrow on_before_download;
11669 
11670     ///
11671     /// Called when a download's status or progress information has been updated.
11672     /// This may be called multiple times before and after on_before_download().
11673     /// Execute |callback| either asynchronously or in this function to cancel the
11674     /// download if desired. Do not keep a reference to |download_item| outside of
11675     /// this function.
11676     ///
11677     extern(System) void function (
11678         cef_download_handler_t* self,
11679         cef_browser_t* browser,
11680         cef_download_item_t* download_item,
11681         cef_download_item_callback_t* callback) nothrow on_download_updated;
11682 }
11683 
11684 
11685 
11686 // CEF_INCLUDE_CAPI_CEF_DOWNLOAD_HANDLER_CAPI_H_
11687 // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
11688 //
11689 // Redistribution and use in source and binary forms, with or without
11690 // modification, are permitted provided that the following conditions are
11691 // met:
11692 //
11693 //    * Redistributions of source code must retain the above copyright
11694 // notice, this list of conditions and the following disclaimer.
11695 //    * Redistributions in binary form must reproduce the above
11696 // copyright notice, this list of conditions and the following disclaimer
11697 // in the documentation and/or other materials provided with the
11698 // distribution.
11699 //    * Neither the name of Google Inc. nor the name Chromium Embedded
11700 // Framework nor the names of its contributors may be used to endorse
11701 // or promote products derived from this software without specific prior
11702 // written permission.
11703 //
11704 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
11705 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
11706 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
11707 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
11708 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
11709 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
11710 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
11711 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
11712 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
11713 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
11714 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
11715 //
11716 // ---------------------------------------------------------------------------
11717 //
11718 // This file was generated by the CEF translator tool and should not edited
11719 // by hand. See the translator.README.txt file in the tools directory for
11720 // more information.
11721 //
11722 // $hash=9af8ade3addfd112db41792c4e80682a8143e8c4$
11723 //
11724 
11725 extern (C):
11726 
11727 ///
11728 /// Structure used to represent a download item.
11729 ///
11730 struct cef_download_item_t
11731 {
11732     ///
11733     /// Base structure.
11734     ///
11735 
11736     ///
11737     /// Returns true (1) if this object is valid. Do not call any other functions
11738     /// if this function returns false (0).
11739     ///
11740 
11741     ///
11742     /// Returns true (1) if the download is in progress.
11743     ///
11744 
11745     ///
11746     /// Returns true (1) if the download is complete.
11747     ///
11748 
11749     ///
11750     /// Returns true (1) if the download has been canceled.
11751     ///
11752 
11753     ///
11754     /// Returns true (1) if the download has been interrupted.
11755     ///
11756 
11757     cef_base_ref_counted_t base;
11758     extern(System) int function (cef_download_item_t* self) nothrow is_valid;
11759     extern(System) int function (cef_download_item_t* self) nothrow is_in_progress;
11760     extern(System) int function (cef_download_item_t* self) nothrow is_complete;
11761     extern(System) int function (cef_download_item_t* self) nothrow is_canceled;
11762     extern(System) int function (cef_download_item_t* self) nothrow is_interrupted;
11763 
11764     ///
11765     /// Returns the most recent interrupt reason.
11766     ///
11767     extern(System) cef_download_interrupt_reason_t function (
11768         cef_download_item_t* self) nothrow get_interrupt_reason;
11769 
11770     ///
11771     /// Returns a simple speed estimate in bytes/s.
11772     ///
11773     extern(System) long function (cef_download_item_t* self) nothrow get_current_speed;
11774 
11775     ///
11776     /// Returns the rough percent complete or -1 if the receive total size is
11777     /// unknown.
11778     ///
11779     extern(System) int function (cef_download_item_t* self) nothrow get_percent_complete;
11780 
11781     ///
11782     /// Returns the total number of bytes.
11783     ///
11784     extern(System) long function (cef_download_item_t* self) nothrow get_total_bytes;
11785 
11786     ///
11787     /// Returns the number of received bytes.
11788     ///
11789     extern(System) long function (cef_download_item_t* self) nothrow get_received_bytes;
11790 
11791     ///
11792     /// Returns the time that the download started.
11793     ///
11794     extern(System) cef_basetime_t function (cef_download_item_t* self) nothrow get_start_time;
11795 
11796     ///
11797     /// Returns the time that the download ended.
11798     ///
11799     extern(System) cef_basetime_t function (cef_download_item_t* self) nothrow get_end_time;
11800 
11801     ///
11802     /// Returns the full path to the downloaded or downloading file.
11803     ///
11804     // The resulting string must be freed by calling cef_string_userfree_free().
11805     extern(System) cef_string_userfree_t function (cef_download_item_t* self) nothrow get_full_path;
11806 
11807     ///
11808     /// Returns the unique identifier for this download.
11809     ///
11810     extern(System) uint function (cef_download_item_t* self) nothrow get_id;
11811 
11812     ///
11813     /// Returns the URL.
11814     ///
11815     // The resulting string must be freed by calling cef_string_userfree_free().
11816     extern(System) cef_string_userfree_t function (cef_download_item_t* self) nothrow get_url;
11817 
11818     ///
11819     /// Returns the original URL before any redirections.
11820     ///
11821     // The resulting string must be freed by calling cef_string_userfree_free().
11822     extern(System) cef_string_userfree_t function (
11823         cef_download_item_t* self) nothrow get_original_url;
11824 
11825     ///
11826     /// Returns the suggested file name.
11827     ///
11828     // The resulting string must be freed by calling cef_string_userfree_free().
11829     extern(System) cef_string_userfree_t function (
11830         cef_download_item_t* self) nothrow get_suggested_file_name;
11831 
11832     ///
11833     /// Returns the content disposition.
11834     ///
11835     // The resulting string must be freed by calling cef_string_userfree_free().
11836     extern(System) cef_string_userfree_t function (
11837         cef_download_item_t* self) nothrow get_content_disposition;
11838 
11839     ///
11840     /// Returns the mime type.
11841     ///
11842     // The resulting string must be freed by calling cef_string_userfree_free().
11843     extern(System) cef_string_userfree_t function (cef_download_item_t* self) nothrow get_mime_type;
11844 }
11845 
11846 
11847 
11848 // CEF_INCLUDE_CAPI_CEF_DOWNLOAD_ITEM_CAPI_H_
11849 // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
11850 //
11851 // Redistribution and use in source and binary forms, with or without
11852 // modification, are permitted provided that the following conditions are
11853 // met:
11854 //
11855 //    * Redistributions of source code must retain the above copyright
11856 // notice, this list of conditions and the following disclaimer.
11857 //    * Redistributions in binary form must reproduce the above
11858 // copyright notice, this list of conditions and the following disclaimer
11859 // in the documentation and/or other materials provided with the
11860 // distribution.
11861 //    * Neither the name of Google Inc. nor the name Chromium Embedded
11862 // Framework nor the names of its contributors may be used to endorse
11863 // or promote products derived from this software without specific prior
11864 // written permission.
11865 //
11866 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
11867 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
11868 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
11869 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
11870 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
11871 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
11872 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
11873 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
11874 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
11875 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
11876 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
11877 //
11878 // ---------------------------------------------------------------------------
11879 //
11880 // This file was generated by the CEF translator tool and should not edited
11881 // by hand. See the translator.README.txt file in the tools directory for
11882 // more information.
11883 //
11884 // $hash=a096775255ddc4d7616095e48e7370bd87bf4bb5$
11885 //
11886 
11887 extern (C):
11888 
11889 ///
11890 /// Structure used to represent drag data. The functions of this structure may
11891 /// be called on any thread.
11892 ///
11893 struct cef_drag_data_t
11894 {
11895     ///
11896     /// Base structure.
11897     ///
11898 
11899     ///
11900     /// Returns a copy of the current object.
11901     ///
11902 
11903     ///
11904     /// Returns true (1) if this object is read-only.
11905     ///
11906 
11907     ///
11908     /// Returns true (1) if the drag data is a link.
11909     ///
11910 
11911     ///
11912     /// Returns true (1) if the drag data is a text or html fragment.
11913     ///
11914 
11915     ///
11916     /// Returns true (1) if the drag data is a file.
11917     ///
11918 
11919     cef_base_ref_counted_t base;
11920     extern(System) cef_drag_data_t* function (cef_drag_data_t* self) nothrow clone;
11921     extern(System) int function (cef_drag_data_t* self) nothrow is_read_only;
11922     extern(System) int function (cef_drag_data_t* self) nothrow is_link;
11923     extern(System) int function (cef_drag_data_t* self) nothrow is_fragment;
11924     extern(System) int function (cef_drag_data_t* self) nothrow is_file;
11925 
11926     ///
11927     /// Return the link URL that is being dragged.
11928     ///
11929     // The resulting string must be freed by calling cef_string_userfree_free().
11930     extern(System) cef_string_userfree_t function (cef_drag_data_t* self) nothrow get_link_url;
11931 
11932     ///
11933     /// Return the title associated with the link being dragged.
11934     ///
11935     // The resulting string must be freed by calling cef_string_userfree_free().
11936     extern(System) cef_string_userfree_t function (cef_drag_data_t* self) nothrow get_link_title;
11937 
11938     ///
11939     /// Return the metadata, if any, associated with the link being dragged.
11940     ///
11941     // The resulting string must be freed by calling cef_string_userfree_free().
11942     extern(System) cef_string_userfree_t function (cef_drag_data_t* self) nothrow get_link_metadata;
11943 
11944     ///
11945     /// Return the plain text fragment that is being dragged.
11946     ///
11947     // The resulting string must be freed by calling cef_string_userfree_free().
11948     extern(System) cef_string_userfree_t function (cef_drag_data_t* self) nothrow get_fragment_text;
11949 
11950     ///
11951     /// Return the text/html fragment that is being dragged.
11952     ///
11953     // The resulting string must be freed by calling cef_string_userfree_free().
11954     extern(System) cef_string_userfree_t function (cef_drag_data_t* self) nothrow get_fragment_html;
11955 
11956     ///
11957     /// Return the base URL that the fragment came from. This value is used for
11958     /// resolving relative URLs and may be NULL.
11959     ///
11960     // The resulting string must be freed by calling cef_string_userfree_free().
11961     extern(System) cef_string_userfree_t function (
11962         cef_drag_data_t* self) nothrow get_fragment_base_url;
11963 
11964     ///
11965     /// Return the name of the file being dragged out of the browser window.
11966     ///
11967     // The resulting string must be freed by calling cef_string_userfree_free().
11968     extern(System) cef_string_userfree_t function (cef_drag_data_t* self) nothrow get_file_name;
11969 
11970     ///
11971     /// Write the contents of the file being dragged out of the web view into
11972     /// |writer|. Returns the number of bytes sent to |writer|. If |writer| is
11973     /// NULL this function will return the size of the file contents in bytes.
11974     /// Call get_file_name() to get a suggested name for the file.
11975     ///
11976     extern(System) size_t function (
11977         cef_drag_data_t* self,
11978         cef_stream_writer_t* writer) nothrow get_file_contents;
11979 
11980     ///
11981     /// Retrieve the list of file names that are being dragged into the browser
11982     /// window.
11983     ///
11984     extern(System) int function (
11985         cef_drag_data_t* self,
11986         cef_string_list_t names) nothrow get_file_names;
11987 
11988     ///
11989     /// Retrieve the list of file paths that are being dragged into the browser
11990     /// window.
11991     ///
11992     extern(System) int function (
11993         cef_drag_data_t* self,
11994         cef_string_list_t paths) nothrow get_file_paths;
11995 
11996     ///
11997     /// Set the link URL that is being dragged.
11998     ///
11999     extern(System) void function (
12000         cef_drag_data_t* self,
12001         const(cef_string_t)* url) nothrow set_link_url;
12002 
12003     ///
12004     /// Set the title associated with the link being dragged.
12005     ///
12006     extern(System) void function (
12007         cef_drag_data_t* self,
12008         const(cef_string_t)* title) nothrow set_link_title;
12009 
12010     ///
12011     /// Set the metadata associated with the link being dragged.
12012     ///
12013     extern(System) void function (
12014         cef_drag_data_t* self,
12015         const(cef_string_t)* data) nothrow set_link_metadata;
12016 
12017     ///
12018     /// Set the plain text fragment that is being dragged.
12019     ///
12020     extern(System) void function (
12021         cef_drag_data_t* self,
12022         const(cef_string_t)* text) nothrow set_fragment_text;
12023 
12024     ///
12025     /// Set the text/html fragment that is being dragged.
12026     ///
12027     extern(System) void function (
12028         cef_drag_data_t* self,
12029         const(cef_string_t)* html) nothrow set_fragment_html;
12030 
12031     ///
12032     /// Set the base URL that the fragment came from.
12033     ///
12034     extern(System) void function (
12035         cef_drag_data_t* self,
12036         const(cef_string_t)* base_url) nothrow set_fragment_base_url;
12037 
12038     ///
12039     /// Reset the file contents. You should do this before calling
12040     /// cef_browser_host_t::DragTargetDragEnter as the web view does not allow us
12041     /// to drag in this kind of data.
12042     ///
12043     extern(System) void function (cef_drag_data_t* self) nothrow reset_file_contents;
12044 
12045     ///
12046     /// Add a file that is being dragged into the webview.
12047     ///
12048     extern(System) void function (
12049         cef_drag_data_t* self,
12050         const(cef_string_t)* path,
12051         const(cef_string_t)* display_name) nothrow add_file;
12052 
12053     ///
12054     /// Clear list of filenames.
12055     ///
12056     extern(System) void function (cef_drag_data_t* self) nothrow clear_filenames;
12057 
12058     ///
12059     /// Get the image representation of drag data. May return NULL if no image
12060     /// representation is available.
12061     ///
12062     extern(System) cef_image_t* function (cef_drag_data_t* self) nothrow get_image;
12063 
12064     ///
12065     /// Get the image hotspot (drag start location relative to image dimensions).
12066     ///
12067     extern(System) cef_point_t function (cef_drag_data_t* self) nothrow get_image_hotspot;
12068 
12069     ///
12070     /// Returns true (1) if an image representation of drag data is available.
12071     ///
12072     extern(System) int function (cef_drag_data_t* self) nothrow has_image;
12073 }
12074 
12075 
12076 
12077 ///
12078 /// Create a new cef_drag_data_t object.
12079 ///
12080 cef_drag_data_t* cef_drag_data_create ();
12081 
12082 // CEF_INCLUDE_CAPI_CEF_DRAG_DATA_CAPI_H_
12083 // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
12084 //
12085 // Redistribution and use in source and binary forms, with or without
12086 // modification, are permitted provided that the following conditions are
12087 // met:
12088 //
12089 //    * Redistributions of source code must retain the above copyright
12090 // notice, this list of conditions and the following disclaimer.
12091 //    * Redistributions in binary form must reproduce the above
12092 // copyright notice, this list of conditions and the following disclaimer
12093 // in the documentation and/or other materials provided with the
12094 // distribution.
12095 //    * Neither the name of Google Inc. nor the name Chromium Embedded
12096 // Framework nor the names of its contributors may be used to endorse
12097 // or promote products derived from this software without specific prior
12098 // written permission.
12099 //
12100 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
12101 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
12102 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
12103 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
12104 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
12105 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
12106 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
12107 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
12108 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
12109 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
12110 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
12111 //
12112 // ---------------------------------------------------------------------------
12113 //
12114 // This file was generated by the CEF translator tool and should not edited
12115 // by hand. See the translator.README.txt file in the tools directory for
12116 // more information.
12117 //
12118 // $hash=0723a2a59d46e465ac94f198351dc871f0b35b96$
12119 //
12120 
12121 extern (C):
12122 
12123 ///
12124 /// Implement this structure to handle events related to dragging. The functions
12125 /// of this structure will be called on the UI thread.
12126 ///
12127 struct cef_drag_handler_t
12128 {
12129     ///
12130     /// Base structure.
12131     ///
12132 
12133     ///
12134     /// Called when an external drag event enters the browser window. |dragData|
12135     /// contains the drag event data and |mask| represents the type of drag
12136     /// operation. Return false (0) for default drag handling behavior or true (1)
12137     /// to cancel the drag event.
12138     ///
12139 
12140     cef_base_ref_counted_t base;
12141     extern(System) int function (
12142         cef_drag_handler_t* self,
12143         cef_browser_t* browser,
12144         cef_drag_data_t* dragData,
12145         cef_drag_operations_mask_t mask) nothrow on_drag_enter;
12146     ///
12147     /// Called whenever draggable regions for the browser window change. These can
12148     /// be specified using the '-webkit-app-region: drag/no-drag' CSS-property. If
12149     /// draggable regions are never defined in a document this function will also
12150     /// never be called. If the last draggable region is removed from a document
12151     /// this function will be called with an NULL vector.
12152     ///
12153     extern(System) void function (
12154         cef_drag_handler_t* self,
12155         cef_browser_t* browser,
12156         cef_frame_t* frame,
12157         size_t regionsCount,
12158         const(cef_draggable_region_t)* regions) nothrow on_draggable_regions_changed;
12159 }
12160 
12161 
12162 
12163 // CEF_INCLUDE_CAPI_CEF_DRAG_HANDLER_CAPI_H_
12164 // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
12165 //
12166 // Redistribution and use in source and binary forms, with or without
12167 // modification, are permitted provided that the following conditions are
12168 // met:
12169 //
12170 //    * Redistributions of source code must retain the above copyright
12171 // notice, this list of conditions and the following disclaimer.
12172 //    * Redistributions in binary form must reproduce the above
12173 // copyright notice, this list of conditions and the following disclaimer
12174 // in the documentation and/or other materials provided with the
12175 // distribution.
12176 //    * Neither the name of Google Inc. nor the name Chromium Embedded
12177 // Framework nor the names of its contributors may be used to endorse
12178 // or promote products derived from this software without specific prior
12179 // written permission.
12180 //
12181 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
12182 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
12183 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
12184 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
12185 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
12186 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
12187 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
12188 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
12189 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
12190 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
12191 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
12192 //
12193 // ---------------------------------------------------------------------------
12194 //
12195 // This file was generated by the CEF translator tool and should not edited
12196 // by hand. See the translator.README.txt file in the tools directory for
12197 // more information.
12198 //
12199 // $hash=634054ad25154c30fb4ec630fe7fb79b0cf1f9b3$
12200 //
12201 
12202 extern (C):
12203 
12204 
12205 
12206 
12207 ///
12208 /// Object representing an extension. Methods may be called on any thread unless
12209 /// otherwise indicated.
12210 ///
12211 /// WARNING: This API is deprecated and will be removed in ~M127.
12212 ///
12213 struct cef_extension_t
12214 {
12215     ///
12216     /// Base structure.
12217     ///
12218 
12219     ///
12220     /// Returns the unique extension identifier. This is calculated based on the
12221     /// extension public key, if available, or on the extension path. See
12222     /// https://developer.chrome.com/extensions/manifest/key for details.
12223     ///
12224     // The resulting string must be freed by calling cef_string_userfree_free().
12225 
12226     ///
12227     /// Returns the absolute path to the extension directory on disk. This value
12228     /// will be prefixed with PK_DIR_RESOURCES if a relative path was passed to
12229 
12230     cef_base_ref_counted_t base;
12231     extern(System) cef_string_userfree_t function (cef_extension_t* self) nothrow get_identifier; /// cef_request_context_t::LoadExtension.
12232     ///
12233     // The resulting string must be freed by calling cef_string_userfree_free().
12234     extern(System) cef_string_userfree_t function (cef_extension_t* self) nothrow get_path;
12235 
12236     ///
12237     /// Returns the extension manifest contents as a cef_dictionary_value_t
12238     /// object. See https://developer.chrome.com/extensions/manifest for details.
12239     ///
12240     extern(System) cef_dictionary_value_t* function (cef_extension_t* self) nothrow get_manifest;
12241 
12242     ///
12243     /// Returns true (1) if this object is the same extension as |that| object.
12244     /// Extensions are considered the same if identifier, path and loader context
12245     /// match.
12246     ///
12247     extern(System) int function (cef_extension_t* self, cef_extension_t* that) nothrow is_same;
12248 
12249     ///
12250     /// Returns the handler for this extension. Will return NULL for internal
12251     /// extensions or if no handler was passed to
12252     /// cef_request_context_t::LoadExtension.
12253     ///
12254     extern(System) cef_extension_handler_t* function (cef_extension_t* self) nothrow get_handler;
12255 
12256     ///
12257     /// Returns the request context that loaded this extension. Will return NULL
12258     /// for internal extensions or if the extension has been unloaded. See the
12259     /// cef_request_context_t::LoadExtension documentation for more information
12260     /// about loader contexts. Must be called on the browser process UI thread.
12261     ///
12262     extern(System) cef_request_context_t* function (
12263         cef_extension_t* self) nothrow get_loader_context;
12264 
12265     ///
12266     /// Returns true (1) if this extension is currently loaded. Must be called on
12267     /// the browser process UI thread.
12268     ///
12269     extern(System) int function (cef_extension_t* self) nothrow is_loaded;
12270 
12271     ///
12272     /// Unload this extension if it is not an internal extension and is currently
12273     /// loaded. Will result in a call to
12274     /// cef_extension_handler_t::OnExtensionUnloaded on success.
12275     ///
12276     extern(System) void function (cef_extension_t* self) nothrow unload;
12277 }
12278 
12279 
12280 
12281 // CEF_INCLUDE_CAPI_CEF_EXTENSION_CAPI_H_
12282 // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
12283 //
12284 // Redistribution and use in source and binary forms, with or without
12285 // modification, are permitted provided that the following conditions are
12286 // met:
12287 //
12288 //    * Redistributions of source code must retain the above copyright
12289 // notice, this list of conditions and the following disclaimer.
12290 //    * Redistributions in binary form must reproduce the above
12291 // copyright notice, this list of conditions and the following disclaimer
12292 // in the documentation and/or other materials provided with the
12293 // distribution.
12294 //    * Neither the name of Google Inc. nor the name Chromium Embedded
12295 // Framework nor the names of its contributors may be used to endorse
12296 // or promote products derived from this software without specific prior
12297 // written permission.
12298 //
12299 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
12300 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
12301 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
12302 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
12303 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
12304 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
12305 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
12306 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
12307 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
12308 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
12309 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
12310 //
12311 // ---------------------------------------------------------------------------
12312 //
12313 // This file was generated by the CEF translator tool and should not edited
12314 // by hand. See the translator.README.txt file in the tools directory for
12315 // more information.
12316 //
12317 // $hash=ebac34c9b85de780ce7524211c5dd61a80d4576c$
12318 //
12319 
12320 extern (C):
12321 
12322 
12323 
12324 ///
12325 /// Callback structure used for asynchronous continuation of
12326 /// cef_extension_handler_t::GetExtensionResource.
12327 ///
12328 struct cef_get_extension_resource_callback_t
12329 {
12330     ///
12331     /// Base structure.
12332     ///
12333 
12334     ///
12335     /// Continue the request. Read the resource contents from |stream|.
12336     ///
12337 
12338     ///
12339     /// Cancel the request.
12340     ///
12341 
12342     ///
12343     /// Implement this structure to handle events related to browser extensions. The
12344     /// functions of this structure will be called on the UI thread. See
12345 
12346     cef_base_ref_counted_t base;
12347     extern(System) void function (
12348         cef_get_extension_resource_callback_t* self,
12349         cef_stream_reader_t* stream) nothrow cont;
12350     extern(System) void function (cef_get_extension_resource_callback_t* self) nothrow cancel;
12351 }
12352 
12353 
12354 /// cef_request_context_t::LoadExtension for information about extension
12355 /// loading.
12356 ///
12357 /// WARNING: This API is deprecated and will be removed in ~M127.
12358 ///
12359 struct cef_extension_handler_t
12360 {
12361     ///
12362     /// Base structure.
12363     ///
12364     cef_base_ref_counted_t base;
12365 
12366     ///
12367     /// Called if the cef_request_context_t::LoadExtension request fails. |result|
12368     /// will be the error code.
12369     ///
12370     extern(System) void function (
12371         cef_extension_handler_t* self,
12372         cef_errorcode_t result) nothrow on_extension_load_failed;
12373 
12374     ///
12375     /// Called if the cef_request_context_t::LoadExtension request succeeds.
12376     /// |extension| is the loaded extension.
12377     ///
12378     extern(System) void function (
12379         cef_extension_handler_t* self,
12380         cef_extension_t* extension) nothrow on_extension_loaded;
12381 
12382     ///
12383     /// Called after the cef_extension_t::Unload request has completed.
12384     ///
12385     extern(System) void function (
12386         cef_extension_handler_t* self,
12387         cef_extension_t* extension) nothrow on_extension_unloaded;
12388 
12389     ///
12390     /// Called when an extension needs a browser to host a background script
12391     /// specified via the "background" manifest key. The browser will have no
12392     /// visible window and cannot be displayed. |extension| is the extension that
12393     /// is loading the background script. |url| is an internally generated
12394     /// reference to an HTML page that will be used to load the background script
12395     /// via a "<script>" src attribute. To allow creation of the browser
12396     /// optionally modify |client| and |settings| and return false (0). To cancel
12397     /// creation of the browser (and consequently cancel load of the background
12398     /// script) return true (1). Successful creation will be indicated by a call
12399     /// to cef_life_span_handler_t::OnAfterCreated, and
12400     /// cef_browser_host_t::IsBackgroundHost will return true (1) for the
12401     /// resulting browser. See https://developer.chrome.com/extensions/event_pages
12402     /// for more information about extension background script usage.
12403     ///
12404     extern(System) int function (
12405         cef_extension_handler_t* self,
12406         cef_extension_t* extension,
12407         const(cef_string_t)* url,
12408         cef_client_t** client,
12409         cef_browser_settings_t* settings) nothrow on_before_background_browser;
12410 
12411     ///
12412     /// Called when an extension API (e.g. chrome.tabs.create) requests creation
12413     /// of a new browser. |extension| and |browser| are the source of the API
12414     /// call. |active_browser| may optionally be specified via the windowId
12415     /// property or returned via the get_active_browser() callback and provides
12416     /// the default |client| and |settings| values for the new browser. |index| is
12417     /// the position value optionally specified via the index property. |url| is
12418     /// the URL that will be loaded in the browser. |active| is true (1) if the
12419     /// new browser should be active when opened.  To allow creation of the
12420     /// browser optionally modify |windowInfo|, |client| and |settings| and return
12421     /// false (0). To cancel creation of the browser return true (1). Successful
12422     /// creation will be indicated by a call to
12423     /// cef_life_span_handler_t::OnAfterCreated. Any modifications to |windowInfo|
12424     /// will be ignored if |active_browser| is wrapped in a cef_browser_view_t.
12425     ///
12426     extern(System) int function (
12427         cef_extension_handler_t* self,
12428         cef_extension_t* extension,
12429         cef_browser_t* browser,
12430         cef_browser_t* active_browser,
12431         int index,
12432         const(cef_string_t)* url,
12433         int active,
12434         cef_window_info_t* windowInfo,
12435         cef_client_t** client,
12436         cef_browser_settings_t* settings) nothrow on_before_browser;
12437 
12438     ///
12439     /// Called when no tabId is specified to an extension API call that accepts a
12440     /// tabId parameter (e.g. chrome.tabs.*). |extension| and |browser| are the
12441     /// source of the API call. Return the browser that will be acted on by the
12442     /// API call or return NULL to act on |browser|. The returned browser must
12443     /// share the same cef_request_context_t as |browser|. Incognito browsers
12444     /// should not be considered unless the source extension has incognito access
12445     /// enabled, in which case |include_incognito| will be true (1).
12446     ///
12447     extern(System) cef_browser_t* function (
12448         cef_extension_handler_t* self,
12449         cef_extension_t* extension,
12450         cef_browser_t* browser,
12451         int include_incognito) nothrow get_active_browser;
12452 
12453     ///
12454     /// Called when the tabId associated with |target_browser| is specified to an
12455     /// extension API call that accepts a tabId parameter (e.g. chrome.tabs.*).
12456     /// |extension| and |browser| are the source of the API call. Return true (1)
12457     /// to allow access of false (0) to deny access. Access to incognito browsers
12458     /// should not be allowed unless the source extension has incognito access
12459     /// enabled, in which case |include_incognito| will be true (1).
12460     ///
12461     extern(System) int function (
12462         cef_extension_handler_t* self,
12463         cef_extension_t* extension,
12464         cef_browser_t* browser,
12465         int include_incognito,
12466         cef_browser_t* target_browser) nothrow can_access_browser;
12467 
12468     ///
12469     /// Called to retrieve an extension resource that would normally be loaded
12470     /// from disk (e.g. if a file parameter is specified to
12471     /// chrome.tabs.executeScript). |extension| and |browser| are the source of
12472     /// the resource request. |file| is the requested relative file path. To
12473     /// handle the resource request return true (1) and execute |callback| either
12474     /// synchronously or asynchronously. For the default behavior which reads the
12475     /// resource from the extension directory on disk return false (0).
12476     /// Localization substitutions will not be applied to resources handled via
12477     /// this function.
12478     ///
12479     extern(System) int function (
12480         cef_extension_handler_t* self,
12481         cef_extension_t* extension,
12482         cef_browser_t* browser,
12483         const(cef_string_t)* file,
12484         cef_get_extension_resource_callback_t* callback) nothrow get_extension_resource;
12485 }
12486 
12487 
12488 
12489 // CEF_INCLUDE_CAPI_CEF_EXTENSION_HANDLER_CAPI_H_
12490 // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
12491 //
12492 // Redistribution and use in source and binary forms, with or without
12493 // modification, are permitted provided that the following conditions are
12494 // met:
12495 //
12496 //    * Redistributions of source code must retain the above copyright
12497 // notice, this list of conditions and the following disclaimer.
12498 //    * Redistributions in binary form must reproduce the above
12499 // copyright notice, this list of conditions and the following disclaimer
12500 // in the documentation and/or other materials provided with the
12501 // distribution.
12502 //    * Neither the name of Google Inc. nor the name Chromium Embedded
12503 // Framework nor the names of its contributors may be used to endorse
12504 // or promote products derived from this software without specific prior
12505 // written permission.
12506 //
12507 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
12508 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
12509 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
12510 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
12511 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
12512 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
12513 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
12514 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
12515 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
12516 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
12517 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
12518 //
12519 // ---------------------------------------------------------------------------
12520 //
12521 // This file was generated by the CEF translator tool and should not edited
12522 // by hand. See the translator.README.txt file in the tools directory for
12523 // more information.
12524 //
12525 // $hash=e10581d1f6aeb104646ae106aaa5fb36016643dd$
12526 //
12527 
12528 extern (C):
12529 
12530 ///
12531 /// Creates a directory and all parent directories if they don't already exist.
12532 /// Returns true (1) on successful creation or if the directory already exists.
12533 /// The directory is only readable by the current user. Calling this function on
12534 /// the browser process UI or IO threads is not allowed.
12535 ///
12536 int cef_create_directory (const(cef_string_t)* full_path);
12537 
12538 ///
12539 /// Get the temporary directory provided by the system.
12540 ///
12541 /// WARNING: In general, you should use the temp directory variants below
12542 /// instead of this function. Those variants will ensure that the proper
12543 /// permissions are set so that other users on the system can't edit them while
12544 /// they're open (which could lead to security issues).
12545 ///
12546 int cef_get_temp_directory (cef_string_t* temp_dir);
12547 
12548 ///
12549 /// Creates a new directory. On Windows if |prefix| is provided the new
12550 /// directory name is in the format of "prefixyyyy". Returns true (1) on success
12551 /// and sets |new_temp_path| to the full path of the directory that was created.
12552 /// The directory is only readable by the current user. Calling this function on
12553 /// the browser process UI or IO threads is not allowed.
12554 ///
12555 int cef_create_new_temp_directory (
12556     const(cef_string_t)* prefix,
12557     cef_string_t* new_temp_path);
12558 
12559 ///
12560 /// Creates a directory within another directory. Extra characters will be
12561 /// appended to |prefix| to ensure that the new directory does not have the same
12562 /// name as an existing directory. Returns true (1) on success and sets
12563 /// |new_dir| to the full path of the directory that was created. The directory
12564 /// is only readable by the current user. Calling this function on the browser
12565 /// process UI or IO threads is not allowed.
12566 ///
12567 int cef_create_temp_directory_in_directory (
12568     const(cef_string_t)* base_dir,
12569     const(cef_string_t)* prefix,
12570     cef_string_t* new_dir);
12571 
12572 ///
12573 /// Returns true (1) if the given path exists and is a directory. Calling this
12574 /// function on the browser process UI or IO threads is not allowed.
12575 ///
12576 int cef_directory_exists (const(cef_string_t)* path);
12577 
12578 ///
12579 /// Deletes the given path whether it's a file or a directory. If |path| is a
12580 /// directory all contents will be deleted.  If |recursive| is true (1) any sub-
12581 /// directories and their contents will also be deleted (equivalent to executing
12582 /// "rm -rf", so use with caution). On POSIX environments if |path| is a
12583 /// symbolic link then only the symlink will be deleted. Returns true (1) on
12584 /// successful deletion or if |path| does not exist. Calling this function on
12585 /// the browser process UI or IO threads is not allowed.
12586 ///
12587 int cef_delete_file (const(cef_string_t)* path, int recursive);
12588 
12589 ///
12590 /// Writes the contents of |src_dir| into a zip archive at |dest_file|. If
12591 /// |include_hidden_files| is true (1) files starting with "." will be included.
12592 /// Returns true (1) on success.  Calling this function on the browser process
12593 /// UI or IO threads is not allowed.
12594 ///
12595 int cef_zip_directory (
12596     const(cef_string_t)* src_dir,
12597     const(cef_string_t)* dest_file,
12598     int include_hidden_files);
12599 
12600 ///
12601 /// Loads the existing "Certificate Revocation Lists" file that is managed by
12602 /// Google Chrome. This file can generally be found in Chrome's User Data
12603 /// directory (e.g. "C:\Users\[User]\AppData\Local\Google\Chrome\User Data\" on
12604 /// Windows) and is updated periodically by Chrome's component updater service.
12605 /// Must be called in the browser process after the context has been
12606 /// initialized. See https://dev.chromium.org/Home/chromium-security/crlsets for
12607 /// background.
12608 ///
12609 void cef_load_crlsets_file (const(cef_string_t)* path);
12610 
12611 // CEF_INCLUDE_CAPI_CEF_FILE_UTIL_CAPI_H_
12612 // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
12613 //
12614 // Redistribution and use in source and binary forms, with or without
12615 // modification, are permitted provided that the following conditions are
12616 // met:
12617 //
12618 //    * Redistributions of source code must retain the above copyright
12619 // notice, this list of conditions and the following disclaimer.
12620 //    * Redistributions in binary form must reproduce the above
12621 // copyright notice, this list of conditions and the following disclaimer
12622 // in the documentation and/or other materials provided with the
12623 // distribution.
12624 //    * Neither the name of Google Inc. nor the name Chromium Embedded
12625 // Framework nor the names of its contributors may be used to endorse
12626 // or promote products derived from this software without specific prior
12627 // written permission.
12628 //
12629 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
12630 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
12631 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
12632 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
12633 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
12634 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
12635 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
12636 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
12637 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
12638 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
12639 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
12640 //
12641 // ---------------------------------------------------------------------------
12642 //
12643 // This file was generated by the CEF translator tool and should not edited
12644 // by hand. See the translator.README.txt file in the tools directory for
12645 // more information.
12646 //
12647 // $hash=da0a9242b309fbd70d19949fb1c5b4ec4475ef94$
12648 //
12649 
12650 extern (C):
12651 
12652 ///
12653 /// Implement this structure to handle events related to find results. The
12654 /// functions of this structure will be called on the UI thread.
12655 ///
12656 struct cef_find_handler_t
12657 {
12658     ///
12659     /// Base structure.
12660     ///
12661 
12662     ///
12663     /// Called to report find results returned by cef_browser_host_t::find().
12664     /// |identifer| is a unique incremental identifier for the currently active
12665     /// search, |count| is the number of matches currently identified,
12666     /// |selectionRect| is the location of where the match was found (in window
12667     /// coordinates), |activeMatchOrdinal| is the current position in the search
12668     /// results, and |finalUpdate| is true (1) if this is the last find
12669     /// notification.
12670     ///
12671 
12672     cef_base_ref_counted_t base;
12673     extern(System) void function (
12674         cef_find_handler_t* self,
12675         cef_browser_t* browser,
12676         int identifier,
12677         int count,
12678         const(cef_rect_t)* selectionRect,
12679         int activeMatchOrdinal,
12680         int finalUpdate) nothrow on_find_result;
12681 }
12682 
12683 
12684 
12685 // CEF_INCLUDE_CAPI_CEF_FIND_HANDLER_CAPI_H_
12686 // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
12687 //
12688 // Redistribution and use in source and binary forms, with or without
12689 // modification, are permitted provided that the following conditions are
12690 // met:
12691 //
12692 //    * Redistributions of source code must retain the above copyright
12693 // notice, this list of conditions and the following disclaimer.
12694 //    * Redistributions in binary form must reproduce the above
12695 // copyright notice, this list of conditions and the following disclaimer
12696 // in the documentation and/or other materials provided with the
12697 // distribution.
12698 //    * Neither the name of Google Inc. nor the name Chromium Embedded
12699 // Framework nor the names of its contributors may be used to endorse
12700 // or promote products derived from this software without specific prior
12701 // written permission.
12702 //
12703 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
12704 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
12705 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
12706 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
12707 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
12708 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
12709 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
12710 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
12711 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
12712 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
12713 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
12714 //
12715 // ---------------------------------------------------------------------------
12716 //
12717 // This file was generated by the CEF translator tool and should not edited
12718 // by hand. See the translator.README.txt file in the tools directory for
12719 // more information.
12720 //
12721 // $hash=6eefc2c650908461fb7536dd3314c77a3f89dceb$
12722 //
12723 
12724 extern (C):
12725 
12726 ///
12727 /// Implement this structure to handle events related to focus. The functions of
12728 /// this structure will be called on the UI thread.
12729 ///
12730 struct cef_focus_handler_t
12731 {
12732     ///
12733     /// Base structure.
12734     ///
12735 
12736     ///
12737     /// Called when the browser component is about to loose focus. For instance,
12738     /// if focus was on the last HTML element and the user pressed the TAB key.
12739     /// |next| will be true (1) if the browser is giving focus to the next
12740     /// component and false (0) if the browser is giving focus to the previous
12741     /// component.
12742     ///
12743 
12744     ///
12745     /// Called when the browser component is requesting focus. |source| indicates
12746 
12747     cef_base_ref_counted_t base;
12748     extern(System) void function (
12749         cef_focus_handler_t* self,
12750         cef_browser_t* browser,
12751         int next) nothrow on_take_focus;
12752     /// where the focus request is originating from. Return false (0) to allow the
12753     /// focus to be set or true (1) to cancel setting the focus.
12754     ///
12755     extern(System) int function (
12756         cef_focus_handler_t* self,
12757         cef_browser_t* browser,
12758         cef_focus_source_t source) nothrow on_set_focus;
12759 
12760     ///
12761     /// Called when the browser component has received focus.
12762     ///
12763     extern(System) void function (
12764         cef_focus_handler_t* self,
12765         cef_browser_t* browser) nothrow on_got_focus;
12766 }
12767 
12768 
12769 
12770 // CEF_INCLUDE_CAPI_CEF_FOCUS_HANDLER_CAPI_H_
12771 // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
12772 //
12773 // Redistribution and use in source and binary forms, with or without
12774 // modification, are permitted provided that the following conditions are
12775 // met:
12776 //
12777 //    * Redistributions of source code must retain the above copyright
12778 // notice, this list of conditions and the following disclaimer.
12779 //    * Redistributions in binary form must reproduce the above
12780 // copyright notice, this list of conditions and the following disclaimer
12781 // in the documentation and/or other materials provided with the
12782 // distribution.
12783 //    * Neither the name of Google Inc. nor the name Chromium Embedded
12784 // Framework nor the names of its contributors may be used to endorse
12785 // or promote products derived from this software without specific prior
12786 // written permission.
12787 //
12788 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
12789 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
12790 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
12791 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
12792 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
12793 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
12794 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
12795 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
12796 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
12797 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
12798 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
12799 //
12800 // ---------------------------------------------------------------------------
12801 //
12802 // This file was generated by the CEF translator tool and should not edited
12803 // by hand. See the translator.README.txt file in the tools directory for
12804 // more information.
12805 //
12806 // $hash=8f347a95168778ec0e686cdef93be3bc517e2f68$
12807 //
12808 
12809 extern (C):
12810 
12811 
12812 
12813 
12814 
12815 
12816 ///
12817 /// Structure used to represent a frame in the browser window. When used in the
12818 /// browser process the functions of this structure may be called on any thread
12819 /// unless otherwise indicated in the comments. When used in the render process
12820 /// the functions of this structure may only be called on the main thread.
12821 ///
12822 struct cef_frame_t
12823 {
12824     ///
12825     /// Base structure.
12826     ///
12827 
12828     ///
12829     /// True if this object is currently attached to a valid frame.
12830     ///
12831 
12832     ///
12833     /// Execute undo in this frame.
12834 
12835     cef_base_ref_counted_t base;
12836     extern(System) int function (cef_frame_t* self) nothrow is_valid;
12837     ///
12838     extern(System) void function (cef_frame_t* self) nothrow undo;
12839 
12840     ///
12841     /// Execute redo in this frame.
12842     ///
12843     extern(System) void function (cef_frame_t* self) nothrow redo;
12844 
12845     ///
12846     /// Execute cut in this frame.
12847     ///
12848     extern(System) void function (cef_frame_t* self) nothrow cut;
12849 
12850     ///
12851     /// Execute copy in this frame.
12852     ///
12853     extern(System) void function (cef_frame_t* self) nothrow copy;
12854 
12855     ///
12856     /// Execute paste in this frame.
12857     ///
12858     extern(System) void function (cef_frame_t* self) nothrow paste;
12859 
12860     ///
12861     /// Execute delete in this frame.
12862     ///
12863     extern(System) void function (cef_frame_t* self) nothrow del;
12864 
12865     ///
12866     /// Execute select all in this frame.
12867     ///
12868     extern(System) void function (cef_frame_t* self) nothrow select_all;
12869 
12870     ///
12871     /// Save this frame's HTML source to a temporary file and open it in the
12872     /// default text viewing application. This function can only be called from
12873     /// the browser process.
12874     ///
12875     extern(System) void function (cef_frame_t* self) nothrow view_source;
12876 
12877     ///
12878     /// Retrieve this frame's HTML source as a string sent to the specified
12879     /// visitor.
12880     ///
12881     extern(System) void function (
12882         cef_frame_t* self,
12883         cef_string_visitor_t* visitor) nothrow get_source;
12884 
12885     ///
12886     /// Retrieve this frame's display text as a string sent to the specified
12887     /// visitor.
12888     ///
12889     extern(System) void function (
12890         cef_frame_t* self,
12891         cef_string_visitor_t* visitor) nothrow get_text;
12892 
12893     ///
12894     /// Load the request represented by the |request| object.
12895     ///
12896     /// WARNING: This function will fail with "bad IPC message" reason
12897     /// INVALID_INITIATOR_ORIGIN (213) unless you first navigate to the request
12898     /// origin using some other mechanism (LoadURL, link click, etc).
12899     ///
12900     extern(System) void function (cef_frame_t* self, cef_request_t* request) nothrow load_request;
12901 
12902     ///
12903     /// Load the specified |url|.
12904     ///
12905     extern(System) void function (cef_frame_t* self, const(cef_string_t)* url) nothrow load_url;
12906 
12907     ///
12908     /// Execute a string of JavaScript code in this frame. The |script_url|
12909     /// parameter is the URL where the script in question can be found, if any.
12910     /// The renderer may request this URL to show the developer the source of the
12911     /// error.  The |start_line| parameter is the base line number to use for
12912     /// error reporting.
12913     ///
12914     extern(System) void function (
12915         cef_frame_t* self,
12916         const(cef_string_t)* code,
12917         const(cef_string_t)* script_url,
12918         int start_line) nothrow execute_java_script;
12919 
12920     ///
12921     /// Returns true (1) if this is the main (top-level) frame.
12922     ///
12923     extern(System) int function (cef_frame_t* self) nothrow is_main;
12924 
12925     ///
12926     /// Returns true (1) if this is the focused frame.
12927     ///
12928     extern(System) int function (cef_frame_t* self) nothrow is_focused;
12929 
12930     ///
12931     /// Returns the name for this frame. If the frame has an assigned name (for
12932     /// example, set via the iframe "name" attribute) then that value will be
12933     /// returned. Otherwise a unique name will be constructed based on the frame
12934     /// parent hierarchy. The main (top-level) frame will always have an NULL name
12935     /// value.
12936     ///
12937     // The resulting string must be freed by calling cef_string_userfree_free().
12938     extern(System) cef_string_userfree_t function (cef_frame_t* self) nothrow get_name;
12939 
12940     ///
12941     /// Returns the globally unique identifier for this frame or NULL if the
12942     /// underlying frame does not yet exist.
12943     ///
12944     // The resulting string must be freed by calling cef_string_userfree_free().
12945     extern(System) cef_string_userfree_t function (cef_frame_t* self) nothrow get_identifier;
12946 
12947     ///
12948     /// Returns the parent of this frame or NULL if this is the main (top-level)
12949     /// frame.
12950     ///
12951     extern(System) cef_frame_t* function (cef_frame_t* self) nothrow get_parent;
12952 
12953     ///
12954     /// Returns the URL currently loaded in this frame.
12955     ///
12956     // The resulting string must be freed by calling cef_string_userfree_free().
12957     extern(System) cef_string_userfree_t function (cef_frame_t* self) nothrow get_url;
12958 
12959     ///
12960     /// Returns the browser that this frame belongs to.
12961     ///
12962     extern(System) cef_browser_t* function (cef_frame_t* self) nothrow get_browser;
12963 
12964     ///
12965     /// Get the V8 context associated with the frame. This function can only be
12966     /// called from the render process.
12967     ///
12968     extern(System) cef_v8context_t* function (cef_frame_t* self) nothrow get_v8context;
12969 
12970     ///
12971     /// Visit the DOM document. This function can only be called from the render
12972     /// process.
12973     ///
12974     extern(System) void function (cef_frame_t* self, cef_domvisitor_t* visitor) nothrow visit_dom;
12975 
12976     ///
12977     /// Create a new URL request that will be treated as originating from this
12978     /// frame and the associated browser. Use cef_urlrequest_t::Create instead if
12979     /// you do not want the request to have this association, in which case it may
12980     /// be handled differently (see documentation on that function). A request
12981     /// created with this function may only originate from the browser process,
12982     /// and will behave as follows:
12983     ///   - It may be intercepted by the client via CefResourceRequestHandler or
12984     ///     CefSchemeHandlerFactory.
12985     ///   - POST data may only contain a single element of type PDE_TYPE_FILE or
12986     ///     PDE_TYPE_BYTES.
12987     ///
12988     /// The |request| object will be marked as read-only after calling this
12989     /// function.
12990     ///
12991     extern(System) cef_urlrequest_t* function (
12992         cef_frame_t* self,
12993         cef_request_t* request,
12994         cef_urlrequest_client_t* client) nothrow create_urlrequest;
12995 
12996     ///
12997     /// Send a message to the specified |target_process|. Ownership of the message
12998     /// contents will be transferred and the |message| reference will be
12999     /// invalidated. Message delivery is not guaranteed in all cases (for example,
13000     /// if the browser is closing, navigating, or if the target process crashes).
13001     /// Send an ACK message back from the target process if confirmation is
13002     /// required.
13003     ///
13004     extern(System) void function (
13005         cef_frame_t* self,
13006         cef_process_id_t target_process,
13007         cef_process_message_t* message) nothrow send_process_message;
13008 }
13009 
13010 
13011 
13012 // CEF_INCLUDE_CAPI_CEF_FRAME_CAPI_H_
13013 // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
13014 //
13015 // Redistribution and use in source and binary forms, with or without
13016 // modification, are permitted provided that the following conditions are
13017 // met:
13018 //
13019 //    * Redistributions of source code must retain the above copyright
13020 // notice, this list of conditions and the following disclaimer.
13021 //    * Redistributions in binary form must reproduce the above
13022 // copyright notice, this list of conditions and the following disclaimer
13023 // in the documentation and/or other materials provided with the
13024 // distribution.
13025 //    * Neither the name of Google Inc. nor the name Chromium Embedded
13026 // Framework nor the names of its contributors may be used to endorse
13027 // or promote products derived from this software without specific prior
13028 // written permission.
13029 //
13030 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
13031 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
13032 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
13033 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
13034 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
13035 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
13036 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
13037 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
13038 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
13039 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
13040 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
13041 //
13042 // ---------------------------------------------------------------------------
13043 //
13044 // This file was generated by the CEF translator tool and should not edited
13045 // by hand. See the translator.README.txt file in the tools directory for
13046 // more information.
13047 //
13048 // $hash=fc6fbee765ce2b649f5293c8c4b076d36014e4aa$
13049 //
13050 
13051 extern (C):
13052 
13053 ///
13054 /// Implement this structure to handle events related to cef_frame_t life span.
13055 /// The order of callbacks is:
13056 ///
13057 /// (1) During initial cef_browser_host_t creation and navigation of the main
13058 /// frame:
13059 /// - cef_frame_handler_t::OnFrameCreated => The initial main frame object has
13060 ///   been created. Any commands will be queued until the frame is attached.
13061 /// - cef_frame_handler_t::OnMainFrameChanged => The initial main frame object
13062 ///   has been assigned to the browser.
13063 /// - cef_life_span_handler_t::OnAfterCreated => The browser is now valid and
13064 ///   can be used.
13065 /// - cef_frame_handler_t::OnFrameAttached => The initial main frame object is
13066 ///   now connected to its peer in the renderer process. Commands can be routed.
13067 ///
13068 /// (2) During further cef_browser_host_t navigation/loading of the main frame
13069 ///     and/or sub-frames:
13070 /// - cef_frame_handler_t::OnFrameCreated => A new main frame or sub-frame
13071 ///   object has been created. Any commands will be queued until the frame is
13072 ///   attached.
13073 /// - cef_frame_handler_t::OnFrameAttached => A new main frame or sub-frame
13074 ///   object is now connected to its peer in the renderer process. Commands can
13075 ///   be routed.
13076 /// - cef_frame_handler_t::OnFrameDetached => An existing main frame or sub-
13077 ///   frame object has lost its connection to the renderer process. If multiple
13078 ///   objects are detached at the same time then notifications will be sent for
13079 ///   any sub-frame objects before the main frame object. Commands can no longer
13080 ///   be routed and will be discarded.
13081 /// - cef_frame_handler_t::OnMainFrameChanged => A new main frame object has
13082 ///   been assigned to the browser. This will only occur with cross-origin
13083 ///   navigation or re-navigation after renderer process termination (due to
13084 ///   crashes, etc).
13085 ///
13086 /// (3) During final cef_browser_host_t destruction of the main frame:
13087 /// - cef_frame_handler_t::OnFrameDetached => Any sub-frame objects have lost
13088 ///   their connection to the renderer process. Commands can no longer be routed
13089 ///   and will be discarded.
13090 /// - cef_life_span_handler_t::OnBeforeClose => The browser has been destroyed.
13091 /// - cef_frame_handler_t::OnFrameDetached => The main frame object have lost
13092 ///   its connection to the renderer process. Notifications will be sent for any
13093 ///   sub-frame objects before the main frame object. Commands can no longer be
13094 ///   routed and will be discarded.
13095 /// - cef_frame_handler_t::OnMainFrameChanged => The final main frame object has
13096 ///   been removed from the browser.
13097 ///
13098 /// Cross-origin navigation and/or loading receives special handling.
13099 ///
13100 /// When the main frame navigates to a different origin the OnMainFrameChanged
13101 /// callback (2) will be executed with the old and new main frame objects.
13102 ///
13103 /// When a new sub-frame is loaded in, or an existing sub-frame is navigated to,
13104 /// a different origin from the parent frame, a temporary sub-frame object will
13105 /// first be created in the parent's renderer process. That temporary sub-frame
13106 /// will then be discarded after the real cross-origin sub-frame is created in
13107 /// the new/target renderer process. The client will receive cross-origin
13108 /// navigation callbacks (2) for the transition from the temporary sub-frame to
13109 /// the real sub-frame. The temporary sub-frame will not receive or execute
13110 /// commands during this transitional period (any sent commands will be
13111 /// discarded).
13112 ///
13113 /// When a new popup browser is created in a different origin from the parent
13114 /// browser, a temporary main frame object for the popup will first be created
13115 /// in the parent's renderer process. That temporary main frame will then be
13116 /// discarded after the real cross-origin main frame is created in the
13117 /// new/target renderer process. The client will receive creation and initial
13118 /// navigation callbacks (1) for the temporary main frame, followed by cross-
13119 /// origin navigation callbacks (2) for the transition from the temporary main
13120 /// frame to the real main frame. The temporary main frame may receive and
13121 /// execute commands during this transitional period (any sent commands may be
13122 /// executed, but the behavior is potentially undesirable since they execute in
13123 /// the parent browser's renderer process and not the new/target renderer
13124 /// process).
13125 ///
13126 /// Callbacks will not be executed for placeholders that may be created during
13127 /// pre-commit navigation for sub-frames that do not yet exist in the renderer
13128 /// process. Placeholders will have cef_frame_t::get_identifier() == -4.
13129 ///
13130 /// The functions of this structure will be called on the UI thread unless
13131 /// otherwise indicated.
13132 ///
13133 struct cef_frame_handler_t
13134 {
13135     ///
13136     /// Base structure.
13137     ///
13138 
13139     cef_base_ref_counted_t base;
13140 
13141     ///
13142     /// Called when a new frame is created. This will be the first notification
13143     /// that references |frame|. Any commands that require transport to the
13144     /// associated renderer process (LoadRequest, SendProcessMessage, GetSource,
13145     /// etc.) will be queued until OnFrameAttached is called for |frame|.
13146     ///
13147     extern(System) void function (
13148         cef_frame_handler_t* self,
13149         cef_browser_t* browser,
13150         cef_frame_t* frame) nothrow on_frame_created;
13151 
13152     ///
13153     /// Called when a frame can begin routing commands to/from the associated
13154     /// renderer process. |reattached| will be true (1) if the frame was re-
13155     /// attached after exiting the BackForwardCache. Any commands that were queued
13156     /// have now been dispatched.
13157     ///
13158     extern(System) void function (
13159         cef_frame_handler_t* self,
13160         cef_browser_t* browser,
13161         cef_frame_t* frame,
13162         int reattached) nothrow on_frame_attached;
13163 
13164     ///
13165     /// Called when a frame loses its connection to the renderer process and will
13166     /// be destroyed. Any pending or future commands will be discarded and
13167     /// cef_frame_t::is_valid() will now return false (0) for |frame|. If called
13168     /// after cef_life_span_handler_t::on_before_close() during browser
13169     /// destruction then cef_browser_t::is_valid() will return false (0) for
13170     /// |browser|.
13171     ///
13172     extern(System) void function (
13173         cef_frame_handler_t* self,
13174         cef_browser_t* browser,
13175         cef_frame_t* frame) nothrow on_frame_detached;
13176 
13177     ///
13178     /// Called when the main frame changes due to (a) initial browser creation,
13179     /// (b) final browser destruction, (c) cross-origin navigation or (d) re-
13180     /// navigation after renderer process termination (due to crashes, etc).
13181     /// |old_frame| will be NULL and |new_frame| will be non-NULL when a main
13182     /// frame is assigned to |browser| for the first time. |old_frame| will be
13183     /// non-NULL and |new_frame| will be NULL and  when a main frame is removed
13184     /// from |browser| for the last time. Both |old_frame| and |new_frame| will be
13185     /// non-NULL for cross-origin navigations or re-navigation after renderer
13186     /// process termination. This function will be called after on_frame_created()
13187     /// for |new_frame| and/or after on_frame_detached() for |old_frame|. If
13188     /// called after cef_life_span_handler_t::on_before_close() during browser
13189     /// destruction then cef_browser_t::is_valid() will return false (0) for
13190     /// |browser|.
13191     ///
13192     extern(System) void function (
13193         cef_frame_handler_t* self,
13194         cef_browser_t* browser,
13195         cef_frame_t* old_frame,
13196         cef_frame_t* new_frame) nothrow on_main_frame_changed;
13197 }
13198 
13199 
13200 
13201 // CEF_INCLUDE_CAPI_CEF_FRAME_HANDLER_CAPI_H_
13202 // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
13203 //
13204 // Redistribution and use in source and binary forms, with or without
13205 // modification, are permitted provided that the following conditions are
13206 // met:
13207 //
13208 //    * Redistributions of source code must retain the above copyright
13209 // notice, this list of conditions and the following disclaimer.
13210 //    * Redistributions in binary form must reproduce the above
13211 // copyright notice, this list of conditions and the following disclaimer
13212 // in the documentation and/or other materials provided with the
13213 // distribution.
13214 //    * Neither the name of Google Inc. nor the name Chromium Embedded
13215 // Framework nor the names of its contributors may be used to endorse
13216 // or promote products derived from this software without specific prior
13217 // written permission.
13218 //
13219 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
13220 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
13221 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
13222 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
13223 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
13224 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
13225 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
13226 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
13227 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
13228 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
13229 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
13230 //
13231 // ---------------------------------------------------------------------------
13232 //
13233 // This file was generated by the CEF translator tool and should not edited
13234 // by hand. See the translator.README.txt file in the tools directory for
13235 // more information.
13236 //
13237 // $hash=990e80ab5ae04298e6b70cbc0a67115825563251$
13238 //
13239 
13240 extern (C):
13241 
13242 ///
13243 /// Returns true (1) if the application text direction is right-to-left.
13244 ///
13245 int cef_is_rtl ();
13246 
13247 // CEF_INCLUDE_CAPI_CEF_I18N_UTIL_CAPI_H_
13248 // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
13249 //
13250 // Redistribution and use in source and binary forms, with or without
13251 // modification, are permitted provided that the following conditions are
13252 // met:
13253 //
13254 //    * Redistributions of source code must retain the above copyright
13255 // notice, this list of conditions and the following disclaimer.
13256 //    * Redistributions in binary form must reproduce the above
13257 // copyright notice, this list of conditions and the following disclaimer
13258 // in the documentation and/or other materials provided with the
13259 // distribution.
13260 //    * Neither the name of Google Inc. nor the name Chromium Embedded
13261 // Framework nor the names of its contributors may be used to endorse
13262 // or promote products derived from this software without specific prior
13263 // written permission.
13264 //
13265 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
13266 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
13267 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
13268 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
13269 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
13270 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
13271 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
13272 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
13273 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
13274 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
13275 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
13276 //
13277 // ---------------------------------------------------------------------------
13278 //
13279 // This file was generated by the CEF translator tool and should not edited
13280 // by hand. See the translator.README.txt file in the tools directory for
13281 // more information.
13282 //
13283 // $hash=7512ccf755017d5b1866b753890b498e8163006d$
13284 //
13285 
13286 extern (C):
13287 
13288 ///
13289 /// Container for a single image represented at different scale factors. All
13290 /// image representations should be the same size in density independent pixel
13291 /// (DIP) units. For example, if the image at scale factor 1.0 is 100x100 pixels
13292 /// then the image at scale factor 2.0 should be 200x200 pixels -- both images
13293 /// will display with a DIP size of 100x100 units. The functions of this
13294 /// structure can be called on any browser process thread.
13295 ///
13296 struct cef_image_t
13297 {
13298     ///
13299     /// Base structure.
13300     ///
13301 
13302     ///
13303     /// Returns true (1) if this Image is NULL.
13304     ///
13305 
13306     ///
13307     /// Returns true (1) if this Image and |that| Image share the same underlying
13308     /// storage. Will also return true (1) if both images are NULL.
13309     ///
13310 
13311     cef_base_ref_counted_t base;
13312     extern(System) int function (cef_image_t* self) nothrow is_empty;
13313     extern(System) int function (cef_image_t* self, cef_image_t* that) nothrow is_same;
13314     ///
13315     /// Add a bitmap image representation for |scale_factor|. Only 32-bit
13316     /// RGBA/BGRA formats are supported. |pixel_width| and |pixel_height| are the
13317     /// bitmap representation size in pixel coordinates. |pixel_data| is the array
13318     /// of pixel data and should be |pixel_width| x |pixel_height| x 4 bytes in
13319     /// size. |color_type| and |alpha_type| values specify the pixel format.
13320     ///
13321     extern(System) int function (
13322         cef_image_t* self,
13323         float scale_factor,
13324         int pixel_width,
13325         int pixel_height,
13326         cef_color_type_t color_type,
13327         cef_alpha_type_t alpha_type,
13328         const(void)* pixel_data,
13329         size_t pixel_data_size) nothrow add_bitmap;
13330 
13331     ///
13332     /// Add a PNG image representation for |scale_factor|. |png_data| is the image
13333     /// data of size |png_data_size|. Any alpha transparency in the PNG data will
13334     /// be maintained.
13335     ///
13336     extern(System) int function (
13337         cef_image_t* self,
13338         float scale_factor,
13339         const(void)* png_data,
13340         size_t png_data_size) nothrow add_png;
13341 
13342     ///
13343     /// Create a JPEG image representation for |scale_factor|. |jpeg_data| is the
13344     /// image data of size |jpeg_data_size|. The JPEG format does not support
13345     /// transparency so the alpha byte will be set to 0xFF for all pixels.
13346     ///
13347     extern(System) int function (
13348         cef_image_t* self,
13349         float scale_factor,
13350         const(void)* jpeg_data,
13351         size_t jpeg_data_size) nothrow add_jpeg;
13352 
13353     ///
13354     /// Returns the image width in density independent pixel (DIP) units.
13355     ///
13356     extern(System) size_t function (cef_image_t* self) nothrow get_width;
13357 
13358     ///
13359     /// Returns the image height in density independent pixel (DIP) units.
13360     ///
13361     extern(System) size_t function (cef_image_t* self) nothrow get_height;
13362 
13363     ///
13364     /// Returns true (1) if this image contains a representation for
13365     /// |scale_factor|.
13366     ///
13367     extern(System) int function (cef_image_t* self, float scale_factor) nothrow has_representation;
13368 
13369     ///
13370     /// Removes the representation for |scale_factor|. Returns true (1) on
13371     /// success.
13372     ///
13373     extern(System) int function (
13374         cef_image_t* self,
13375         float scale_factor) nothrow remove_representation;
13376 
13377     ///
13378     /// Returns information for the representation that most closely matches
13379     /// |scale_factor|. |actual_scale_factor| is the actual scale factor for the
13380     /// representation. |pixel_width| and |pixel_height| are the representation
13381     /// size in pixel coordinates. Returns true (1) on success.
13382     ///
13383     extern(System) int function (
13384         cef_image_t* self,
13385         float scale_factor,
13386         float* actual_scale_factor,
13387         int* pixel_width,
13388         int* pixel_height) nothrow get_representation_info;
13389 
13390     ///
13391     /// Returns the bitmap representation that most closely matches
13392     /// |scale_factor|. Only 32-bit RGBA/BGRA formats are supported. |color_type|
13393     /// and |alpha_type| values specify the desired output pixel format.
13394     /// |pixel_width| and |pixel_height| are the output representation size in
13395     /// pixel coordinates. Returns a cef_binary_value_t containing the pixel data
13396     /// on success or NULL on failure.
13397     ///
13398     extern(System) cef_binary_value_t* function (
13399         cef_image_t* self,
13400         float scale_factor,
13401         cef_color_type_t color_type,
13402         cef_alpha_type_t alpha_type,
13403         int* pixel_width,
13404         int* pixel_height) nothrow get_as_bitmap;
13405 
13406     ///
13407     /// Returns the PNG representation that most closely matches |scale_factor|.
13408     /// If |with_transparency| is true (1) any alpha transparency in the image
13409     /// will be represented in the resulting PNG data. |pixel_width| and
13410     /// |pixel_height| are the output representation size in pixel coordinates.
13411     /// Returns a cef_binary_value_t containing the PNG image data on success or
13412     /// NULL on failure.
13413     ///
13414     extern(System) cef_binary_value_t* function (
13415         cef_image_t* self,
13416         float scale_factor,
13417         int with_transparency,
13418         int* pixel_width,
13419         int* pixel_height) nothrow get_as_png;
13420 
13421     ///
13422     /// Returns the JPEG representation that most closely matches |scale_factor|.
13423     /// |quality| determines the compression level with 0 == lowest and 100 ==
13424     /// highest. The JPEG format does not support alpha transparency and the alpha
13425     /// channel, if any, will be discarded. |pixel_width| and |pixel_height| are
13426     /// the output representation size in pixel coordinates. Returns a
13427     /// cef_binary_value_t containing the JPEG image data on success or NULL on
13428     /// failure.
13429     ///
13430     extern(System) cef_binary_value_t* function (
13431         cef_image_t* self,
13432         float scale_factor,
13433         int quality,
13434         int* pixel_width,
13435         int* pixel_height) nothrow get_as_jpeg;
13436 }
13437 
13438 
13439 
13440 ///
13441 /// Create a new cef_image_t. It will initially be NULL. Use the Add*()
13442 /// functions to add representations at different scale factors.
13443 ///
13444 cef_image_t* cef_image_create ();
13445 
13446 // CEF_INCLUDE_CAPI_CEF_IMAGE_CAPI_H_
13447 // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
13448 //
13449 // Redistribution and use in source and binary forms, with or without
13450 // modification, are permitted provided that the following conditions are
13451 // met:
13452 //
13453 //    * Redistributions of source code must retain the above copyright
13454 // notice, this list of conditions and the following disclaimer.
13455 //    * Redistributions in binary form must reproduce the above
13456 // copyright notice, this list of conditions and the following disclaimer
13457 // in the documentation and/or other materials provided with the
13458 // distribution.
13459 //    * Neither the name of Google Inc. nor the name Chromium Embedded
13460 // Framework nor the names of its contributors may be used to endorse
13461 // or promote products derived from this software without specific prior
13462 // written permission.
13463 //
13464 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
13465 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
13466 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
13467 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
13468 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
13469 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
13470 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
13471 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
13472 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
13473 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
13474 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
13475 //
13476 // ---------------------------------------------------------------------------
13477 //
13478 // This file was generated by the CEF translator tool and should not edited
13479 // by hand. See the translator.README.txt file in the tools directory for
13480 // more information.
13481 //
13482 // $hash=c6810367ba3a17824247dcb17f87040cd021c295$
13483 //
13484 
13485 extern (C):
13486 
13487 ///
13488 /// Callback structure used for asynchronous continuation of JavaScript dialog
13489 /// requests.
13490 ///
13491 struct cef_jsdialog_callback_t
13492 {
13493     ///
13494     /// Base structure.
13495     ///
13496 
13497     ///
13498     /// Continue the JS dialog request. Set |success| to true (1) if the OK button
13499     /// was pressed. The |user_input| value should be specified for prompt
13500     /// dialogs.
13501     ///
13502 
13503     ///
13504     /// Implement this structure to handle events related to JavaScript dialogs. The
13505     /// functions of this structure will be called on the UI thread.
13506     ///
13507 
13508     ///
13509     /// Base structure.
13510     ///
13511 
13512     ///
13513     /// Called to run a JavaScript dialog. If |origin_url| is non-NULL it can be
13514 
13515     cef_base_ref_counted_t base;
13516     extern(System) void function (
13517         cef_jsdialog_callback_t* self,
13518         int success,
13519         const(cef_string_t)* user_input) nothrow cont;
13520 }
13521 
13522 
13523 
13524 struct cef_jsdialog_handler_t
13525 {
13526     cef_base_ref_counted_t base;
13527     /// passed to the CefFormatUrlForSecurityDisplay function to retrieve a secure
13528     /// and user-friendly display string. The |default_prompt_text| value will be
13529     /// specified for prompt dialogs only. Set |suppress_message| to true (1) and
13530     /// return false (0) to suppress the message (suppressing messages is
13531     /// preferable to immediately executing the callback as this is used to detect
13532     /// presumably malicious behavior like spamming alert messages in
13533     /// onbeforeunload). Set |suppress_message| to false (0) and return false (0)
13534     /// to use the default implementation (the default implementation will show
13535     /// one modal dialog at a time and suppress any additional dialog requests
13536     /// until the displayed dialog is dismissed). Return true (1) if the
13537     /// application will use a custom dialog or if the callback has been executed
13538     /// immediately. Custom dialogs may be either modal or modeless. If a custom
13539     /// dialog is used the application must execute |callback| once the custom
13540     /// dialog is dismissed.
13541     ///
13542     extern(System) int function (
13543         cef_jsdialog_handler_t* self,
13544         cef_browser_t* browser,
13545         const(cef_string_t)* origin_url,
13546         cef_jsdialog_type_t dialog_type,
13547         const(cef_string_t)* message_text,
13548         const(cef_string_t)* default_prompt_text,
13549         cef_jsdialog_callback_t* callback,
13550         int* suppress_message) nothrow on_jsdialog;
13551 
13552     ///
13553     /// Called to run a dialog asking the user if they want to leave a page.
13554     /// Return false (0) to use the default dialog implementation. Return true (1)
13555     /// if the application will use a custom dialog or if the callback has been
13556     /// executed immediately. Custom dialogs may be either modal or modeless. If a
13557     /// custom dialog is used the application must execute |callback| once the
13558     /// custom dialog is dismissed.
13559     ///
13560     extern(System) int function (
13561         cef_jsdialog_handler_t* self,
13562         cef_browser_t* browser,
13563         const(cef_string_t)* message_text,
13564         int is_reload,
13565         cef_jsdialog_callback_t* callback) nothrow on_before_unload_dialog;
13566 
13567     ///
13568     /// Called to cancel any pending dialogs and reset any saved dialog state.
13569     /// Will be called due to events like page navigation irregardless of whether
13570     /// any dialogs are currently pending.
13571     ///
13572     extern(System) void function (
13573         cef_jsdialog_handler_t* self,
13574         cef_browser_t* browser) nothrow on_reset_dialog_state;
13575 
13576     ///
13577     /// Called when the dialog is closed.
13578     ///
13579     extern(System) void function (
13580         cef_jsdialog_handler_t* self,
13581         cef_browser_t* browser) nothrow on_dialog_closed;
13582 }
13583 
13584 
13585 
13586 // CEF_INCLUDE_CAPI_CEF_JSDIALOG_HANDLER_CAPI_H_
13587 // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
13588 //
13589 // Redistribution and use in source and binary forms, with or without
13590 // modification, are permitted provided that the following conditions are
13591 // met:
13592 //
13593 //    * Redistributions of source code must retain the above copyright
13594 // notice, this list of conditions and the following disclaimer.
13595 //    * Redistributions in binary form must reproduce the above
13596 // copyright notice, this list of conditions and the following disclaimer
13597 // in the documentation and/or other materials provided with the
13598 // distribution.
13599 //    * Neither the name of Google Inc. nor the name Chromium Embedded
13600 // Framework nor the names of its contributors may be used to endorse
13601 // or promote products derived from this software without specific prior
13602 // written permission.
13603 //
13604 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
13605 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
13606 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
13607 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
13608 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
13609 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
13610 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
13611 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
13612 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
13613 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
13614 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
13615 //
13616 // ---------------------------------------------------------------------------
13617 //
13618 // This file was generated by the CEF translator tool and should not edited
13619 // by hand. See the translator.README.txt file in the tools directory for
13620 // more information.
13621 //
13622 // $hash=0bfe161c51cc6378b2e8e2e2b2c017b750b46864$
13623 //
13624 
13625 extern (C):
13626 
13627 ///
13628 /// Implement this structure to handle events related to keyboard input. The
13629 /// functions of this structure will be called on the UI thread.
13630 ///
13631 struct cef_keyboard_handler_t
13632 {
13633     ///
13634     /// Base structure.
13635     ///
13636 
13637     ///
13638     /// Called before a keyboard event is sent to the renderer. |event| contains
13639     /// information about the keyboard event. |os_event| is the operating system
13640     /// event message, if any. Return true (1) if the event was handled or false
13641     /// (0) otherwise. If the event will be handled in on_key_event() as a
13642     /// keyboard shortcut set |is_keyboard_shortcut| to true (1) and return false
13643     /// (0).
13644     ///
13645 
13646     cef_base_ref_counted_t base;
13647     extern(System) int function (
13648         cef_keyboard_handler_t* self,
13649         cef_browser_t* browser,
13650         const(cef_key_event_t)* event,
13651         XEvent* os_event,
13652         int* is_keyboard_shortcut) nothrow on_pre_key_event;
13653     ///
13654     /// Called after the renderer and JavaScript in the page has had a chance to
13655     /// handle the event. |event| contains information about the keyboard event.
13656     /// |os_event| is the operating system event message, if any. Return true (1)
13657     /// if the keyboard event was handled or false (0) otherwise.
13658     ///
13659     extern(System) int function (
13660         cef_keyboard_handler_t* self,
13661         cef_browser_t* browser,
13662         const(cef_key_event_t)* event,
13663         XEvent* os_event) nothrow on_key_event;
13664 }
13665 
13666 
13667 
13668 // CEF_INCLUDE_CAPI_CEF_KEYBOARD_HANDLER_CAPI_H_
13669 // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
13670 //
13671 // Redistribution and use in source and binary forms, with or without
13672 // modification, are permitted provided that the following conditions are
13673 // met:
13674 //
13675 //    * Redistributions of source code must retain the above copyright
13676 // notice, this list of conditions and the following disclaimer.
13677 //    * Redistributions in binary form must reproduce the above
13678 // copyright notice, this list of conditions and the following disclaimer
13679 // in the documentation and/or other materials provided with the
13680 // distribution.
13681 //    * Neither the name of Google Inc. nor the name Chromium Embedded
13682 // Framework nor the names of its contributors may be used to endorse
13683 // or promote products derived from this software without specific prior
13684 // written permission.
13685 //
13686 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
13687 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
13688 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
13689 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
13690 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
13691 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
13692 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
13693 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
13694 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
13695 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
13696 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
13697 //
13698 // ---------------------------------------------------------------------------
13699 //
13700 // This file was generated by the CEF translator tool and should not edited
13701 // by hand. See the translator.README.txt file in the tools directory for
13702 // more information.
13703 //
13704 // $hash=54edf9e9c2a12acdc4cab55079a4a5cb8e2a1e43$
13705 //
13706 
13707 extern (C):
13708 
13709 
13710 
13711 ///
13712 /// Implement this structure to handle events related to browser life span. The
13713 /// functions of this structure will be called on the UI thread unless otherwise
13714 /// indicated.
13715 ///
13716 struct cef_life_span_handler_t
13717 {
13718     ///
13719     /// Base structure.
13720     ///
13721 
13722     ///
13723     /// Called on the UI thread before a new popup browser is created. The
13724     /// |browser| and |frame| values represent the source of the popup request.
13725     /// The |target_url| and |target_frame_name| values indicate where the popup
13726     /// browser should navigate and may be NULL if not specified with the request.
13727     /// The |target_disposition| value indicates where the user intended to open
13728     /// the popup (e.g. current tab, new tab, etc). The |user_gesture| value will
13729     /// be true (1) if the popup was opened via explicit user gesture (e.g.
13730 
13731     cef_base_ref_counted_t base;
13732     /// clicking a link) or false (0) if the popup opened automatically (e.g. via
13733     /// the DomContentLoaded event). The |popupFeatures| structure contains
13734     /// additional information about the requested popup window. To allow creation
13735     /// of the popup browser optionally modify |windowInfo|, |client|, |settings|
13736     /// and |no_javascript_access| and return false (0). To cancel creation of the
13737     /// popup browser return true (1). The |client| and |settings| values will
13738     /// default to the source browser's values. If the |no_javascript_access|
13739     /// value is set to false (0) the new browser will not be scriptable and may
13740     /// not be hosted in the same renderer process as the source browser. Any
13741     /// modifications to |windowInfo| will be ignored if the parent browser is
13742     /// wrapped in a cef_browser_view_t. Popup browser creation will be canceled
13743     /// if the parent browser is destroyed before the popup browser creation
13744     /// completes (indicated by a call to OnAfterCreated for the popup browser).
13745     /// The |extra_info| parameter provides an opportunity to specify extra
13746     /// information specific to the created popup browser that will be passed to
13747     /// cef_render_process_handler_t::on_browser_created() in the render process.
13748     ///
13749     extern(System) int function (
13750         cef_life_span_handler_t* self,
13751         cef_browser_t* browser,
13752         cef_frame_t* frame,
13753         const(cef_string_t)* target_url,
13754         const(cef_string_t)* target_frame_name,
13755         cef_window_open_disposition_t target_disposition,
13756         int user_gesture,
13757         const(cef_popup_features_t)* popupFeatures,
13758         cef_window_info_t* windowInfo,
13759         cef_client_t** client,
13760         cef_browser_settings_t* settings,
13761         cef_dictionary_value_t** extra_info,
13762         int* no_javascript_access) nothrow on_before_popup;
13763 
13764     ///
13765     /// Called on the UI thread before a new DevTools popup browser is created.
13766     /// The |browser| value represents the source of the popup request. Optionally
13767     /// modify |windowInfo|, |client|, |settings| and |extra_info| values. The
13768     /// |client|, |settings| and |extra_info| values will default to the source
13769     /// browser's values. Any modifications to |windowInfo| will be ignored if the
13770     /// parent browser is Views-hosted (wrapped in a cef_browser_view_t).
13771     ///
13772     /// The |extra_info| parameter provides an opportunity to specify extra
13773     /// information specific to the created popup browser that will be passed to
13774     /// cef_render_process_handler_t::on_browser_created() in the render process.
13775     /// The existing |extra_info| object, if any, will be read-only but may be
13776     /// replaced with a new object.
13777     ///
13778     /// Views-hosted source browsers will create Views-hosted DevTools popups
13779     /// unless |use_default_window| is set to to true (1). DevTools popups can be
13780     /// blocked by returning true (1) from cef_command_handler_t::OnChromeCommand
13781     /// for IDC_DEV_TOOLS. Only used with the Chrome runtime.
13782     ///
13783     extern(System) void function (
13784         cef_life_span_handler_t* self,
13785         cef_browser_t* browser,
13786         cef_window_info_t* windowInfo,
13787         cef_client_t** client,
13788         cef_browser_settings_t* settings,
13789         cef_dictionary_value_t** extra_info,
13790         int* use_default_window) nothrow on_before_dev_tools_popup;
13791 
13792     ///
13793     /// Called after a new browser is created. It is now safe to begin performing
13794     /// actions with |browser|. cef_frame_handler_t callbacks related to initial
13795     /// main frame creation will arrive before this callback. See
13796     /// cef_frame_handler_t documentation for additional usage information.
13797     ///
13798     extern(System) void function (
13799         cef_life_span_handler_t* self,
13800         cef_browser_t* browser) nothrow on_after_created;
13801 
13802     ///
13803     /// Called when a browser has received a request to close. This may result
13804     /// directly from a call to cef_browser_host_t::*close_browser() or indirectly
13805     /// if the browser is parented to a top-level window created by CEF and the
13806     /// user attempts to close that window (by clicking the 'X', for example). The
13807     /// do_close() function will be called after the JavaScript 'onunload' event
13808     /// has been fired.
13809     ///
13810     /// An application should handle top-level owner window close notifications by
13811     /// calling cef_browser_host_t::try_close_browser() or
13812     /// cef_browser_host_t::CloseBrowser(false (0)) instead of allowing the window
13813     /// to close immediately (see the examples below). This gives CEF an
13814     /// opportunity to process the 'onbeforeunload' event and optionally cancel
13815     /// the close before do_close() is called.
13816     ///
13817     /// When windowed rendering is enabled CEF will internally create a window or
13818     /// view to host the browser. In that case returning false (0) from do_close()
13819     /// will send the standard close notification to the browser's top-level owner
13820     /// window (e.g. WM_CLOSE on Windows, performClose: on OS X, "delete_event" on
13821     /// Linux or cef_window_delegate_t::can_close() callback from Views). If the
13822     /// browser's host window/view has already been destroyed (via view hierarchy
13823     /// tear-down, for example) then do_close() will not be called for that
13824     /// browser since is no longer possible to cancel the close.
13825     ///
13826     /// When windowed rendering is disabled returning false (0) from do_close()
13827     /// will cause the browser object to be destroyed immediately.
13828     ///
13829     /// If the browser's top-level owner window requires a non-standard close
13830     /// notification then send that notification from do_close() and return true
13831     /// (1).
13832     ///
13833     /// The cef_life_span_handler_t::on_before_close() function will be called
13834     /// after do_close() (if do_close() is called) and immediately before the
13835     /// browser object is destroyed. The application should only exit after
13836     /// on_before_close() has been called for all existing browsers.
13837     ///
13838     /// The below examples describe what should happen during window close when
13839     /// the browser is parented to an application-provided top-level window.
13840     ///
13841     /// Example 1: Using cef_browser_host_t::try_close_browser(). This is
13842     /// recommended for clients using standard close handling and windows created
13843     /// on the browser process UI thread. 1.  User clicks the window close button
13844     /// which sends a close notification
13845     ///     to the application's top-level window.
13846     /// 2.  Application's top-level window receives the close notification and
13847     ///     calls TryCloseBrowser() (which internally calls CloseBrowser(false)).
13848     ///     TryCloseBrowser() returns false so the client cancels the window
13849     ///     close.
13850     /// 3.  JavaScript 'onbeforeunload' handler executes and shows the close
13851     ///     confirmation dialog (which can be overridden via
13852     ///     CefJSDialogHandler::OnBeforeUnloadDialog()).
13853     /// 4.  User approves the close. 5.  JavaScript 'onunload' handler executes.
13854     /// 6.  CEF sends a close notification to the application's top-level window
13855     ///     (because DoClose() returned false by default).
13856     /// 7.  Application's top-level window receives the close notification and
13857     ///     calls TryCloseBrowser(). TryCloseBrowser() returns true so the client
13858     ///     allows the window close.
13859     /// 8.  Application's top-level window is destroyed. 9.  Application's
13860     /// on_before_close() handler is called and the browser object
13861     ///     is destroyed.
13862     /// 10. Application exits by calling cef_quit_message_loop() if no other
13863     /// browsers
13864     ///     exist.
13865     ///
13866     /// Example 2: Using cef_browser_host_t::CloseBrowser(false (0)) and
13867     /// implementing the do_close() callback. This is recommended for clients
13868     /// using non-standard close handling or windows that were not created on the
13869     /// browser process UI thread. 1.  User clicks the window close button which
13870     /// sends a close notification
13871     ///     to the application's top-level window.
13872     /// 2.  Application's top-level window receives the close notification and:
13873     ///     A. Calls CefBrowserHost::CloseBrowser(false).
13874     ///     B. Cancels the window close.
13875     /// 3.  JavaScript 'onbeforeunload' handler executes and shows the close
13876     ///     confirmation dialog (which can be overridden via
13877     ///     CefJSDialogHandler::OnBeforeUnloadDialog()).
13878     /// 4.  User approves the close. 5.  JavaScript 'onunload' handler executes.
13879     /// 6.  Application's do_close() handler is called. Application will:
13880     ///     A. Set a flag to indicate that the next close attempt will be allowed.
13881     ///     B. Return false.
13882     /// 7.  CEF sends an close notification to the application's top-level window.
13883     /// 8.  Application's top-level window receives the close notification and
13884     ///     allows the window to close based on the flag from #6B.
13885     /// 9.  Application's top-level window is destroyed. 10. Application's
13886     /// on_before_close() handler is called and the browser object
13887     ///     is destroyed.
13888     /// 11. Application exits by calling cef_quit_message_loop() if no other
13889     /// browsers
13890     ///     exist.
13891     ///
13892     extern(System) int function (
13893         cef_life_span_handler_t* self,
13894         cef_browser_t* browser) nothrow do_close;
13895 
13896     ///
13897     /// Called just before a browser is destroyed. Release all references to the
13898     /// browser object and do not attempt to execute any functions on the browser
13899     /// object (other than IsValid, GetIdentifier or IsSame) after this callback
13900     /// returns. cef_frame_handler_t callbacks related to final main frame
13901     /// destruction will arrive after this callback and cef_browser_t::IsValid
13902     /// will return false (0) at that time. Any in-progress network requests
13903     /// associated with |browser| will be aborted when the browser is destroyed,
13904     /// and cef_resource_request_handler_t callbacks related to those requests may
13905     /// still arrive on the IO thread after this callback. See cef_frame_handler_t
13906     /// and do_close() documentation for additional usage information.
13907     ///
13908     extern(System) void function (
13909         cef_life_span_handler_t* self,
13910         cef_browser_t* browser) nothrow on_before_close;
13911 }
13912 
13913 
13914 
13915 // CEF_INCLUDE_CAPI_CEF_LIFE_SPAN_HANDLER_CAPI_H_
13916 // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
13917 //
13918 // Redistribution and use in source and binary forms, with or without
13919 // modification, are permitted provided that the following conditions are
13920 // met:
13921 //
13922 //    * Redistributions of source code must retain the above copyright
13923 // notice, this list of conditions and the following disclaimer.
13924 //    * Redistributions in binary form must reproduce the above
13925 // copyright notice, this list of conditions and the following disclaimer
13926 // in the documentation and/or other materials provided with the
13927 // distribution.
13928 //    * Neither the name of Google Inc. nor the name Chromium Embedded
13929 // Framework nor the names of its contributors may be used to endorse
13930 // or promote products derived from this software without specific prior
13931 // written permission.
13932 //
13933 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
13934 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
13935 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
13936 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
13937 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
13938 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
13939 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
13940 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
13941 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
13942 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
13943 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
13944 //
13945 // ---------------------------------------------------------------------------
13946 //
13947 // This file was generated by the CEF translator tool and should not edited
13948 // by hand. See the translator.README.txt file in the tools directory for
13949 // more information.
13950 //
13951 // $hash=eb842e65cd2e7c4a8a6baa2813b57ac0d3977261$
13952 //
13953 
13954 extern (C):
13955 
13956 ///
13957 /// Implement this structure to handle events related to browser load status.
13958 /// The functions of this structure will be called on the browser process UI
13959 /// thread or render process main thread (TID_RENDERER).
13960 ///
13961 struct cef_load_handler_t
13962 {
13963     ///
13964     /// Base structure.
13965     ///
13966 
13967     ///
13968     /// Called when the loading state has changed. This callback will be executed
13969     /// twice -- once when loading is initiated either programmatically or by user
13970     /// action, and once when loading is terminated due to completion,
13971     /// cancellation of failure. It will be called before any calls to OnLoadStart
13972     /// and after all calls to OnLoadError and/or OnLoadEnd.
13973     ///
13974 
13975     cef_base_ref_counted_t base;
13976     extern(System) void function (
13977         cef_load_handler_t* self,
13978         cef_browser_t* browser,
13979         int isLoading,
13980         int canGoBack,
13981         int canGoForward) nothrow on_loading_state_change;
13982     ///
13983     /// Called after a navigation has been committed and before the browser begins
13984     /// loading contents in the frame. The |frame| value will never be NULL --
13985     /// call the is_main() function to check if this frame is the main frame.
13986     /// |transition_type| provides information about the source of the navigation
13987     /// and an accurate value is only available in the browser process. Multiple
13988     /// frames may be loading at the same time. Sub-frames may start or continue
13989     /// loading after the main frame load has ended. This function will not be
13990     /// called for same page navigations (fragments, history state, etc.) or for
13991     /// navigations that fail or are canceled before commit. For notification of
13992     /// overall browser load status use OnLoadingStateChange instead.
13993     ///
13994     extern(System) void function (
13995         cef_load_handler_t* self,
13996         cef_browser_t* browser,
13997         cef_frame_t* frame,
13998         cef_transition_type_t transition_type) nothrow on_load_start;
13999 
14000     ///
14001     /// Called when the browser is done loading a frame. The |frame| value will
14002     /// never be NULL -- call the is_main() function to check if this frame is the
14003     /// main frame. Multiple frames may be loading at the same time. Sub-frames
14004     /// may start or continue loading after the main frame load has ended. This
14005     /// function will not be called for same page navigations (fragments, history
14006     /// state, etc.) or for navigations that fail or are canceled before commit.
14007     /// For notification of overall browser load status use OnLoadingStateChange
14008     /// instead.
14009     ///
14010     extern(System) void function (
14011         cef_load_handler_t* self,
14012         cef_browser_t* browser,
14013         cef_frame_t* frame,
14014         int httpStatusCode) nothrow on_load_end;
14015 
14016     ///
14017     /// Called when a navigation fails or is canceled. This function may be called
14018     /// by itself if before commit or in combination with OnLoadStart/OnLoadEnd if
14019     /// after commit. |errorCode| is the error code number, |errorText| is the
14020     /// error text and |failedUrl| is the URL that failed to load. See
14021     /// net\base\net_error_list.h for complete descriptions of the error codes.
14022     ///
14023     extern(System) void function (
14024         cef_load_handler_t* self,
14025         cef_browser_t* browser,
14026         cef_frame_t* frame,
14027         cef_errorcode_t errorCode,
14028         const(cef_string_t)* errorText,
14029         const(cef_string_t)* failedUrl) nothrow on_load_error;
14030 }
14031 
14032 
14033 
14034 // CEF_INCLUDE_CAPI_CEF_LOAD_HANDLER_CAPI_H_
14035 // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
14036 //
14037 // Redistribution and use in source and binary forms, with or without
14038 // modification, are permitted provided that the following conditions are
14039 // met:
14040 //
14041 //    * Redistributions of source code must retain the above copyright
14042 // notice, this list of conditions and the following disclaimer.
14043 //    * Redistributions in binary form must reproduce the above
14044 // copyright notice, this list of conditions and the following disclaimer
14045 // in the documentation and/or other materials provided with the
14046 // distribution.
14047 //    * Neither the name of Google Inc. nor the name Chromium Embedded
14048 // Framework nor the names of its contributors may be used to endorse
14049 // or promote products derived from this software without specific prior
14050 // written permission.
14051 //
14052 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
14053 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
14054 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
14055 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
14056 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
14057 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
14058 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
14059 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
14060 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
14061 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
14062 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
14063 //
14064 // ---------------------------------------------------------------------------
14065 //
14066 // This file was generated by the CEF translator tool and should not edited
14067 // by hand. See the translator.README.txt file in the tools directory for
14068 // more information.
14069 //
14070 // $hash=8eec1100e8470cbe3ebc54d5962416d2fa4d57fb$
14071 //
14072 
14073 extern (C):
14074 
14075 ///
14076 /// Supports discovery of and communication with media devices on the local
14077 /// network via the Cast and DIAL protocols. The functions of this structure may
14078 /// be called on any browser process thread unless otherwise indicated.
14079 ///
14080 struct cef_media_router_t
14081 {
14082     ///
14083     /// Base structure.
14084     ///
14085 
14086     ///
14087     /// Add an observer for MediaRouter events. The observer will remain
14088     /// registered until the returned Registration object is destroyed.
14089     ///
14090 
14091     cef_base_ref_counted_t base;
14092     extern(System) cef_registration_t* function (
14093         cef_media_router_t* self,
14094         cef_media_observer_t* observer) nothrow add_observer; ///
14095     /// Returns a MediaSource object for the specified media source URN. Supported
14096     /// URN schemes include "cast:" and "dial:", and will be already known by the
14097     /// client application (e.g. "cast:<appId>?clientId=<clientId>").
14098     ///
14099     extern(System) cef_media_source_t* function (
14100         cef_media_router_t* self,
14101         const(cef_string_t)* urn) nothrow get_source;
14102 
14103     ///
14104     /// Trigger an asynchronous call to cef_media_observer_t::OnSinks on all
14105     /// registered observers.
14106     ///
14107     extern(System) void function (cef_media_router_t* self) nothrow notify_current_sinks;
14108 
14109     ///
14110     /// Create a new route between |source| and |sink|. Source and sink must be
14111     /// valid, compatible (as reported by cef_media_sink_t::IsCompatibleWith), and
14112     /// a route between them must not already exist. |callback| will be executed
14113     /// on success or failure. If route creation succeeds it will also trigger an
14114     /// asynchronous call to cef_media_observer_t::OnRoutes on all registered
14115     /// observers.
14116     ///
14117     extern(System) void function (
14118         cef_media_router_t* self,
14119         cef_media_source_t* source,
14120         cef_media_sink_t* sink,
14121         cef_media_route_create_callback_t* callback) nothrow create_route;
14122 
14123     ///
14124     /// Trigger an asynchronous call to cef_media_observer_t::OnRoutes on all
14125     /// registered observers.
14126     ///
14127     extern(System) void function (cef_media_router_t* self) nothrow notify_current_routes;
14128 }
14129 
14130 
14131 
14132 ///
14133 /// Returns the MediaRouter object associated with the global request context.
14134 /// If |callback| is non-NULL it will be executed asnychronously on the UI
14135 /// thread after the manager's storage has been initialized. Equivalent to
14136 /// calling cef_request_context_t::cef_request_context_get_global_context()-
14137 /// >get_media_router().
14138 ///
14139 cef_media_router_t* cef_media_router_get_global (
14140     cef_completion_callback_t* callback);
14141 
14142 ///
14143 /// Implemented by the client to observe MediaRouter events and registered via
14144 /// cef_media_router_t::AddObserver. The functions of this structure will be
14145 /// called on the browser process UI thread.
14146 ///
14147 struct cef_media_observer_t
14148 {
14149     ///
14150     /// Base structure.
14151     ///
14152     cef_base_ref_counted_t base;
14153 
14154     ///
14155     /// The list of available media sinks has changed or
14156     /// cef_media_router_t::NotifyCurrentSinks was called.
14157     ///
14158     extern(System) void function (
14159         cef_media_observer_t* self,
14160         size_t sinksCount,
14161         cef_media_sink_t** sinks) nothrow on_sinks;
14162 
14163     ///
14164     /// The list of available media routes has changed or
14165     /// cef_media_router_t::NotifyCurrentRoutes was called.
14166     ///
14167     extern(System) void function (
14168         cef_media_observer_t* self,
14169         size_t routesCount,
14170         cef_media_route_t** routes) nothrow on_routes;
14171 
14172     ///
14173     /// The connection state of |route| has changed.
14174     ///
14175     extern(System) void function (
14176         cef_media_observer_t* self,
14177         cef_media_route_t* route,
14178         cef_media_route_connection_state_t state) nothrow on_route_state_changed;
14179 
14180     ///
14181     /// A message was received over |route|. |message| is only valid for the scope
14182     /// of this callback and should be copied if necessary.
14183     ///
14184     extern(System) void function (
14185         cef_media_observer_t* self,
14186         cef_media_route_t* route,
14187         const(void)* message,
14188         size_t message_size) nothrow on_route_message_received;
14189 }
14190 
14191 
14192 
14193 ///
14194 /// Represents the route between a media source and sink. Instances of this
14195 /// object are created via cef_media_router_t::CreateRoute and retrieved via
14196 /// cef_media_observer_t::OnRoutes. Contains the status and metadata of a
14197 /// routing operation. The functions of this structure may be called on any
14198 /// browser process thread unless otherwise indicated.
14199 ///
14200 struct cef_media_route_t
14201 {
14202     ///
14203     /// Base structure.
14204     ///
14205     cef_base_ref_counted_t base;
14206 
14207     ///
14208     /// Returns the ID for this route.
14209     ///
14210     // The resulting string must be freed by calling cef_string_userfree_free().
14211     extern(System) cef_string_userfree_t function (cef_media_route_t* self) nothrow get_id;
14212 
14213     ///
14214     /// Returns the source associated with this route.
14215     ///
14216     extern(System) cef_media_source_t* function (cef_media_route_t* self) nothrow get_source;
14217 
14218     ///
14219     /// Returns the sink associated with this route.
14220     ///
14221     extern(System) cef_media_sink_t* function (cef_media_route_t* self) nothrow get_sink;
14222 
14223     ///
14224     /// Send a message over this route. |message| will be copied if necessary.
14225     ///
14226     extern(System) void function (
14227         cef_media_route_t* self,
14228         const(void)* message,
14229         size_t message_size) nothrow send_route_message;
14230 
14231     ///
14232     /// Terminate this route. Will result in an asynchronous call to
14233     /// cef_media_observer_t::OnRoutes on all registered observers.
14234     ///
14235     extern(System) void function (cef_media_route_t* self) nothrow terminate;
14236 }
14237 
14238 
14239 
14240 ///
14241 /// Callback structure for cef_media_router_t::CreateRoute. The functions of
14242 /// this structure will be called on the browser process UI thread.
14243 ///
14244 struct cef_media_route_create_callback_t
14245 {
14246     ///
14247     /// Base structure.
14248     ///
14249     cef_base_ref_counted_t base;
14250 
14251     ///
14252     /// Method that will be executed when the route creation has finished.
14253     /// |result| will be CEF_MRCR_OK if the route creation succeeded. |error| will
14254     /// be a description of the error if the route creation failed. |route| is the
14255     /// resulting route, or NULL if the route creation failed.
14256     ///
14257     extern(System) void function (
14258         cef_media_route_create_callback_t* self,
14259         cef_media_route_create_result_t result,
14260         const(cef_string_t)* error,
14261         cef_media_route_t* route) nothrow on_media_route_create_finished;
14262 }
14263 
14264 
14265 
14266 ///
14267 /// Represents a sink to which media can be routed. Instances of this object are
14268 /// retrieved via cef_media_observer_t::OnSinks. The functions of this structure
14269 /// may be called on any browser process thread unless otherwise indicated.
14270 ///
14271 struct cef_media_sink_t
14272 {
14273     ///
14274     /// Base structure.
14275     ///
14276     cef_base_ref_counted_t base;
14277 
14278     ///
14279     /// Returns the ID for this sink.
14280     ///
14281     // The resulting string must be freed by calling cef_string_userfree_free().
14282     extern(System) cef_string_userfree_t function (cef_media_sink_t* self) nothrow get_id;
14283 
14284     ///
14285     /// Returns the name of this sink.
14286     ///
14287     // The resulting string must be freed by calling cef_string_userfree_free().
14288     extern(System) cef_string_userfree_t function (cef_media_sink_t* self) nothrow get_name;
14289 
14290     ///
14291     /// Returns the icon type for this sink.
14292     ///
14293     extern(System) cef_media_sink_icon_type_t function (
14294         cef_media_sink_t* self) nothrow get_icon_type;
14295 
14296     ///
14297     /// Asynchronously retrieves device info.
14298     ///
14299     extern(System) void function (
14300         cef_media_sink_t* self,
14301         cef_media_sink_device_info_callback_t* callback) nothrow get_device_info;
14302 
14303     ///
14304     /// Returns true (1) if this sink accepts content via Cast.
14305     ///
14306     extern(System) int function (cef_media_sink_t* self) nothrow is_cast_sink;
14307 
14308     ///
14309     /// Returns true (1) if this sink accepts content via DIAL.
14310     ///
14311     extern(System) int function (cef_media_sink_t* self) nothrow is_dial_sink;
14312 
14313     ///
14314     /// Returns true (1) if this sink is compatible with |source|.
14315     ///
14316     extern(System) int function (
14317         cef_media_sink_t* self,
14318         cef_media_source_t* source) nothrow is_compatible_with;
14319 }
14320 
14321 
14322 
14323 ///
14324 /// Callback structure for cef_media_sink_t::GetDeviceInfo. The functions of
14325 /// this structure will be called on the browser process UI thread.
14326 ///
14327 struct cef_media_sink_device_info_callback_t
14328 {
14329     ///
14330     /// Base structure.
14331     ///
14332     cef_base_ref_counted_t base;
14333 
14334     ///
14335     /// Method that will be executed asyncronously once device information has
14336     /// been retrieved.
14337     ///
14338     extern(System) void function (
14339         cef_media_sink_device_info_callback_t* self,
14340         const(cef_media_sink_device_info_t)* device_info) nothrow on_media_sink_device_info;
14341 }
14342 
14343 
14344 
14345 ///
14346 /// Represents a source from which media can be routed. Instances of this object
14347 /// are retrieved via cef_media_router_t::GetSource. The functions of this
14348 /// structure may be called on any browser process thread unless otherwise
14349 /// indicated.
14350 ///
14351 struct cef_media_source_t
14352 {
14353     ///
14354     /// Base structure.
14355     ///
14356     cef_base_ref_counted_t base;
14357 
14358     ///
14359     /// Returns the ID (media source URN or URL) for this source.
14360     ///
14361     // The resulting string must be freed by calling cef_string_userfree_free().
14362     extern(System) cef_string_userfree_t function (cef_media_source_t* self) nothrow get_id;
14363 
14364     ///
14365     /// Returns true (1) if this source outputs its content via Cast.
14366     ///
14367     extern(System) int function (cef_media_source_t* self) nothrow is_cast_source;
14368 
14369     ///
14370     /// Returns true (1) if this source outputs its content via DIAL.
14371     ///
14372     extern(System) int function (cef_media_source_t* self) nothrow is_dial_source;
14373 }
14374 
14375 
14376 
14377 // CEF_INCLUDE_CAPI_CEF_MEDIA_ROUTER_CAPI_H_
14378 // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
14379 //
14380 // Redistribution and use in source and binary forms, with or without
14381 // modification, are permitted provided that the following conditions are
14382 // met:
14383 //
14384 //    * Redistributions of source code must retain the above copyright
14385 // notice, this list of conditions and the following disclaimer.
14386 //    * Redistributions in binary form must reproduce the above
14387 // copyright notice, this list of conditions and the following disclaimer
14388 // in the documentation and/or other materials provided with the
14389 // distribution.
14390 //    * Neither the name of Google Inc. nor the name Chromium Embedded
14391 // Framework nor the names of its contributors may be used to endorse
14392 // or promote products derived from this software without specific prior
14393 // written permission.
14394 //
14395 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
14396 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
14397 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
14398 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
14399 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
14400 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
14401 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
14402 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
14403 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
14404 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
14405 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
14406 //
14407 // ---------------------------------------------------------------------------
14408 //
14409 // This file was generated by the CEF translator tool and should not edited
14410 // by hand. See the translator.README.txt file in the tools directory for
14411 // more information.
14412 //
14413 // $hash=5dae0b1a1271e79a5fd9b2c6e71e7a719a450161$
14414 //
14415 
14416 extern (C):
14417 
14418 ///
14419 /// Supports creation and modification of menus. See cef_menu_id_t for the
14420 /// command ids that have default implementations. All user-defined command ids
14421 /// should be between MENU_ID_USER_FIRST and MENU_ID_USER_LAST. The functions of
14422 /// this structure can only be accessed on the browser process the UI thread.
14423 ///
14424 struct cef_menu_model_t
14425 {
14426     ///
14427     /// Base structure.
14428     ///
14429 
14430     ///
14431     /// Returns true (1) if this menu is a submenu.
14432     ///
14433 
14434     ///
14435     /// Clears the menu. Returns true (1) on success.
14436     ///
14437 
14438     ///
14439     /// Returns the number of items in this menu.
14440     ///
14441 
14442     ///
14443     /// Add a separator to the menu. Returns true (1) on success.
14444 
14445     cef_base_ref_counted_t base;
14446     extern(System) int function (cef_menu_model_t* self) nothrow is_sub_menu;
14447     extern(System) int function (cef_menu_model_t* self) nothrow clear;
14448     extern(System) size_t function (cef_menu_model_t* self) nothrow get_count;
14449     ///
14450     extern(System) int function (cef_menu_model_t* self) nothrow add_separator;
14451 
14452     ///
14453     /// Add an item to the menu. Returns true (1) on success.
14454     ///
14455     extern(System) int function (
14456         cef_menu_model_t* self,
14457         int command_id,
14458         const(cef_string_t)* label) nothrow add_item;
14459 
14460     ///
14461     /// Add a check item to the menu. Returns true (1) on success.
14462     ///
14463     extern(System) int function (
14464         cef_menu_model_t* self,
14465         int command_id,
14466         const(cef_string_t)* label) nothrow add_check_item;
14467 
14468     ///
14469     /// Add a radio item to the menu. Only a single item with the specified
14470     /// |group_id| can be checked at a time. Returns true (1) on success.
14471     ///
14472     extern(System) int function (
14473         cef_menu_model_t* self,
14474         int command_id,
14475         const(cef_string_t)* label,
14476         int group_id) nothrow add_radio_item;
14477 
14478     ///
14479     /// Add a sub-menu to the menu. The new sub-menu is returned.
14480     ///
14481     extern(System) cef_menu_model_t* function (
14482         cef_menu_model_t* self,
14483         int command_id,
14484         const(cef_string_t)* label) nothrow add_sub_menu;
14485 
14486     ///
14487     /// Insert a separator in the menu at the specified |index|. Returns true (1)
14488     /// on success.
14489     ///
14490     extern(System) int function (cef_menu_model_t* self, size_t index) nothrow insert_separator_at;
14491 
14492     ///
14493     /// Insert an item in the menu at the specified |index|. Returns true (1) on
14494     /// success.
14495     ///
14496     extern(System) int function (
14497         cef_menu_model_t* self,
14498         size_t index,
14499         int command_id,
14500         const(cef_string_t)* label) nothrow insert_item_at;
14501 
14502     ///
14503     /// Insert a check item in the menu at the specified |index|. Returns true (1)
14504     /// on success.
14505     ///
14506     extern(System) int function (
14507         cef_menu_model_t* self,
14508         size_t index,
14509         int command_id,
14510         const(cef_string_t)* label) nothrow insert_check_item_at;
14511 
14512     ///
14513     /// Insert a radio item in the menu at the specified |index|. Only a single
14514     /// item with the specified |group_id| can be checked at a time. Returns true
14515     /// (1) on success.
14516     ///
14517     extern(System) int function (
14518         cef_menu_model_t* self,
14519         size_t index,
14520         int command_id,
14521         const(cef_string_t)* label,
14522         int group_id) nothrow insert_radio_item_at;
14523 
14524     ///
14525     /// Insert a sub-menu in the menu at the specified |index|. The new sub-menu
14526     /// is returned.
14527     ///
14528     extern(System) cef_menu_model_t* function (
14529         cef_menu_model_t* self,
14530         size_t index,
14531         int command_id,
14532         const(cef_string_t)* label) nothrow insert_sub_menu_at;
14533 
14534     ///
14535     /// Removes the item with the specified |command_id|. Returns true (1) on
14536     /// success.
14537     ///
14538     extern(System) int function (cef_menu_model_t* self, int command_id) nothrow remove;
14539 
14540     ///
14541     /// Removes the item at the specified |index|. Returns true (1) on success.
14542     ///
14543     extern(System) int function (cef_menu_model_t* self, size_t index) nothrow remove_at;
14544 
14545     ///
14546     /// Returns the index associated with the specified |command_id| or -1 if not
14547     /// found due to the command id not existing in the menu.
14548     ///
14549     extern(System) int function (cef_menu_model_t* self, int command_id) nothrow get_index_of;
14550 
14551     ///
14552     /// Returns the command id at the specified |index| or -1 if not found due to
14553     /// invalid range or the index being a separator.
14554     ///
14555     extern(System) int function (cef_menu_model_t* self, size_t index) nothrow get_command_id_at;
14556 
14557     ///
14558     /// Sets the command id at the specified |index|. Returns true (1) on success.
14559     ///
14560     extern(System) int function (
14561         cef_menu_model_t* self,
14562         size_t index,
14563         int command_id) nothrow set_command_id_at;
14564 
14565     ///
14566     /// Returns the label for the specified |command_id| or NULL if not found.
14567     ///
14568     // The resulting string must be freed by calling cef_string_userfree_free().
14569     extern(System) cef_string_userfree_t function (
14570         cef_menu_model_t* self,
14571         int command_id) nothrow get_label;
14572 
14573     ///
14574     /// Returns the label at the specified |index| or NULL if not found due to
14575     /// invalid range or the index being a separator.
14576     ///
14577     // The resulting string must be freed by calling cef_string_userfree_free().
14578     extern(System) cef_string_userfree_t function (
14579         cef_menu_model_t* self,
14580         size_t index) nothrow get_label_at;
14581 
14582     ///
14583     /// Sets the label for the specified |command_id|. Returns true (1) on
14584     /// success.
14585     ///
14586     extern(System) int function (
14587         cef_menu_model_t* self,
14588         int command_id,
14589         const(cef_string_t)* label) nothrow set_label;
14590 
14591     ///
14592     /// Set the label at the specified |index|. Returns true (1) on success.
14593     ///
14594     extern(System) int function (
14595         cef_menu_model_t* self,
14596         size_t index,
14597         const(cef_string_t)* label) nothrow set_label_at;
14598 
14599     ///
14600     /// Returns the item type for the specified |command_id|.
14601     ///
14602     extern(System) cef_menu_item_type_t function (
14603         cef_menu_model_t* self,
14604         int command_id) nothrow get_type;
14605 
14606     ///
14607     /// Returns the item type at the specified |index|.
14608     ///
14609     extern(System) cef_menu_item_type_t function (
14610         cef_menu_model_t* self,
14611         size_t index) nothrow get_type_at;
14612 
14613     ///
14614     /// Returns the group id for the specified |command_id| or -1 if invalid.
14615     ///
14616     extern(System) int function (cef_menu_model_t* self, int command_id) nothrow get_group_id;
14617 
14618     ///
14619     /// Returns the group id at the specified |index| or -1 if invalid.
14620     ///
14621     extern(System) int function (cef_menu_model_t* self, size_t index) nothrow get_group_id_at;
14622 
14623     ///
14624     /// Sets the group id for the specified |command_id|. Returns true (1) on
14625     /// success.
14626     ///
14627     extern(System) int function (
14628         cef_menu_model_t* self,
14629         int command_id,
14630         int group_id) nothrow set_group_id;
14631 
14632     ///
14633     /// Sets the group id at the specified |index|. Returns true (1) on success.
14634     ///
14635     extern(System) int function (
14636         cef_menu_model_t* self,
14637         size_t index,
14638         int group_id) nothrow set_group_id_at;
14639 
14640     ///
14641     /// Returns the submenu for the specified |command_id| or NULL if invalid.
14642     ///
14643     extern(System) cef_menu_model_t* function (
14644         cef_menu_model_t* self,
14645         int command_id) nothrow get_sub_menu;
14646 
14647     ///
14648     /// Returns the submenu at the specified |index| or NULL if invalid.
14649     ///
14650     extern(System) cef_menu_model_t* function (
14651         cef_menu_model_t* self,
14652         size_t index) nothrow get_sub_menu_at;
14653 
14654     ///
14655     /// Returns true (1) if the specified |command_id| is visible.
14656     ///
14657     extern(System) int function (cef_menu_model_t* self, int command_id) nothrow is_visible;
14658 
14659     ///
14660     /// Returns true (1) if the specified |index| is visible.
14661     ///
14662     extern(System) int function (cef_menu_model_t* self, size_t index) nothrow is_visible_at;
14663 
14664     ///
14665     /// Change the visibility of the specified |command_id|. Returns true (1) on
14666     /// success.
14667     ///
14668     extern(System) int function (
14669         cef_menu_model_t* self,
14670         int command_id,
14671         int visible) nothrow set_visible;
14672 
14673     ///
14674     /// Change the visibility at the specified |index|. Returns true (1) on
14675     /// success.
14676     ///
14677     extern(System) int function (
14678         cef_menu_model_t* self,
14679         size_t index,
14680         int visible) nothrow set_visible_at;
14681 
14682     ///
14683     /// Returns true (1) if the specified |command_id| is enabled.
14684     ///
14685     extern(System) int function (cef_menu_model_t* self, int command_id) nothrow is_enabled;
14686 
14687     ///
14688     /// Returns true (1) if the specified |index| is enabled.
14689     ///
14690     extern(System) int function (cef_menu_model_t* self, size_t index) nothrow is_enabled_at;
14691 
14692     ///
14693     /// Change the enabled status of the specified |command_id|. Returns true (1)
14694     /// on success.
14695     ///
14696     extern(System) int function (
14697         cef_menu_model_t* self,
14698         int command_id,
14699         int enabled) nothrow set_enabled;
14700 
14701     ///
14702     /// Change the enabled status at the specified |index|. Returns true (1) on
14703     /// success.
14704     ///
14705     extern(System) int function (
14706         cef_menu_model_t* self,
14707         size_t index,
14708         int enabled) nothrow set_enabled_at;
14709 
14710     ///
14711     /// Returns true (1) if the specified |command_id| is checked. Only applies to
14712     /// check and radio items.
14713     ///
14714     extern(System) int function (cef_menu_model_t* self, int command_id) nothrow is_checked;
14715 
14716     ///
14717     /// Returns true (1) if the specified |index| is checked. Only applies to
14718     /// check and radio items.
14719     ///
14720     extern(System) int function (cef_menu_model_t* self, size_t index) nothrow is_checked_at;
14721 
14722     ///
14723     /// Check the specified |command_id|. Only applies to check and radio items.
14724     /// Returns true (1) on success.
14725     ///
14726     extern(System) int function (
14727         cef_menu_model_t* self,
14728         int command_id,
14729         int checked) nothrow set_checked;
14730 
14731     ///
14732     /// Check the specified |index|. Only applies to check and radio items.
14733     /// Returns true (1) on success.
14734     ///
14735     extern(System) int function (
14736         cef_menu_model_t* self,
14737         size_t index,
14738         int checked) nothrow set_checked_at;
14739 
14740     ///
14741     /// Returns true (1) if the specified |command_id| has a keyboard accelerator
14742     /// assigned.
14743     ///
14744     extern(System) int function (cef_menu_model_t* self, int command_id) nothrow has_accelerator;
14745 
14746     ///
14747     /// Returns true (1) if the specified |index| has a keyboard accelerator
14748     /// assigned.
14749     ///
14750     extern(System) int function (cef_menu_model_t* self, size_t index) nothrow has_accelerator_at;
14751 
14752     ///
14753     /// Set the keyboard accelerator for the specified |command_id|. |key_code|
14754     /// can be any virtual key or character value. Returns true (1) on success.
14755     ///
14756     extern(System) int function (
14757         cef_menu_model_t* self,
14758         int command_id,
14759         int key_code,
14760         int shift_pressed,
14761         int ctrl_pressed,
14762         int alt_pressed) nothrow set_accelerator;
14763 
14764     ///
14765     /// Set the keyboard accelerator at the specified |index|. |key_code| can be
14766     /// any virtual key or character value. Returns true (1) on success.
14767     ///
14768     extern(System) int function (
14769         cef_menu_model_t* self,
14770         size_t index,
14771         int key_code,
14772         int shift_pressed,
14773         int ctrl_pressed,
14774         int alt_pressed) nothrow set_accelerator_at;
14775 
14776     ///
14777     /// Remove the keyboard accelerator for the specified |command_id|. Returns
14778     /// true (1) on success.
14779     ///
14780     extern(System) int function (cef_menu_model_t* self, int command_id) nothrow remove_accelerator;
14781 
14782     ///
14783     /// Remove the keyboard accelerator at the specified |index|. Returns true (1)
14784     /// on success.
14785     ///
14786     extern(System) int function (cef_menu_model_t* self, size_t index) nothrow remove_accelerator_at;
14787 
14788     ///
14789     /// Retrieves the keyboard accelerator for the specified |command_id|. Returns
14790     /// true (1) on success.
14791     ///
14792     extern(System) int function (
14793         cef_menu_model_t* self,
14794         int command_id,
14795         int* key_code,
14796         int* shift_pressed,
14797         int* ctrl_pressed,
14798         int* alt_pressed) nothrow get_accelerator;
14799 
14800     ///
14801     /// Retrieves the keyboard accelerator for the specified |index|. Returns true
14802     /// (1) on success.
14803     ///
14804     extern(System) int function (
14805         cef_menu_model_t* self,
14806         size_t index,
14807         int* key_code,
14808         int* shift_pressed,
14809         int* ctrl_pressed,
14810         int* alt_pressed) nothrow get_accelerator_at;
14811 
14812     ///
14813     /// Set the explicit color for |command_id| and |color_type| to |color|.
14814     /// Specify a |color| value of 0 to remove the explicit color. If no explicit
14815     /// color or default color is set for |color_type| then the system color will
14816     /// be used. Returns true (1) on success.
14817     ///
14818     extern(System) int function (
14819         cef_menu_model_t* self,
14820         int command_id,
14821         cef_menu_color_type_t color_type,
14822         cef_color_t color) nothrow set_color;
14823 
14824     ///
14825     /// Set the explicit color for |command_id| and |index| to |color|. Specify a
14826     /// |color| value of 0 to remove the explicit color. Specify an |index| value
14827     /// of -1 to set the default color for items that do not have an explicit
14828     /// color set. If no explicit color or default color is set for |color_type|
14829     /// then the system color will be used. Returns true (1) on success.
14830     ///
14831     extern(System) int function (
14832         cef_menu_model_t* self,
14833         int index,
14834         cef_menu_color_type_t color_type,
14835         cef_color_t color) nothrow set_color_at;
14836 
14837     ///
14838     /// Returns in |color| the color that was explicitly set for |command_id| and
14839     /// |color_type|. If a color was not set then 0 will be returned in |color|.
14840     /// Returns true (1) on success.
14841     ///
14842     extern(System) int function (
14843         cef_menu_model_t* self,
14844         int command_id,
14845         cef_menu_color_type_t color_type,
14846         cef_color_t* color) nothrow get_color;
14847 
14848     ///
14849     /// Returns in |color| the color that was explicitly set for |command_id| and
14850     /// |color_type|. Specify an |index| value of -1 to return the default color
14851     /// in |color|. If a color was not set then 0 will be returned in |color|.
14852     /// Returns true (1) on success.
14853     ///
14854     extern(System) int function (
14855         cef_menu_model_t* self,
14856         int index,
14857         cef_menu_color_type_t color_type,
14858         cef_color_t* color) nothrow get_color_at;
14859 
14860     ///
14861     /// Sets the font list for the specified |command_id|. If |font_list| is NULL
14862     /// the system font will be used. Returns true (1) on success. The format is
14863     /// "<FONT_FAMILY_LIST>,[STYLES] <SIZE>", where:
14864     /// - FONT_FAMILY_LIST is a comma-separated list of font family names,
14865     /// - STYLES is an optional space-separated list of style names (case-
14866     ///   sensitive "Bold" and "Italic" are supported), and
14867     /// - SIZE is an integer font size in pixels with the suffix "px".
14868     ///
14869     /// Here are examples of valid font description strings:
14870     /// - "Arial, Helvetica, Bold Italic 14px"
14871     /// - "Arial, 14px"
14872     ///
14873     extern(System) int function (
14874         cef_menu_model_t* self,
14875         int command_id,
14876         const(cef_string_t)* font_list) nothrow set_font_list;
14877 
14878     ///
14879     /// Sets the font list for the specified |index|. Specify an |index| value of
14880     /// - 1 to set the default font. If |font_list| is NULL the system font will
14881     /// - FONT_FAMILY_LIST is a comma-separated list of font family names,
14882     /// - STYLES is an optional space-separated list of style names (case-
14883     ///   sensitive "Bold" and "Italic" are supported), and
14884     /// - SIZE is an integer font size in pixels with the suffix "px".
14885     ///
14886     /// Here are examples of valid font description strings:
14887     /// - "Arial, Helvetica, Bold Italic 14px"
14888     /// - "Arial, 14px"
14889     ///
14890     extern(System) int function (
14891         cef_menu_model_t* self,
14892         int index,
14893         const(cef_string_t)* font_list) nothrow set_font_list_at;
14894 }
14895 
14896 
14897 
14898 ///
14899 /// Create a new MenuModel with the specified |delegate|.
14900 ///
14901 cef_menu_model_t* cef_menu_model_create (cef_menu_model_delegate_t* delegate_);
14902 
14903 // CEF_INCLUDE_CAPI_CEF_MENU_MODEL_CAPI_H_
14904 // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
14905 //
14906 // Redistribution and use in source and binary forms, with or without
14907 // modification, are permitted provided that the following conditions are
14908 // met:
14909 //
14910 //    * Redistributions of source code must retain the above copyright
14911 // notice, this list of conditions and the following disclaimer.
14912 //    * Redistributions in binary form must reproduce the above
14913 // copyright notice, this list of conditions and the following disclaimer
14914 // in the documentation and/or other materials provided with the
14915 // distribution.
14916 //    * Neither the name of Google Inc. nor the name Chromium Embedded
14917 // Framework nor the names of its contributors may be used to endorse
14918 // or promote products derived from this software without specific prior
14919 // written permission.
14920 //
14921 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
14922 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
14923 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
14924 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
14925 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
14926 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
14927 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
14928 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
14929 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
14930 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
14931 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
14932 //
14933 // ---------------------------------------------------------------------------
14934 //
14935 // This file was generated by the CEF translator tool and should not edited
14936 // by hand. See the translator.README.txt file in the tools directory for
14937 // more information.
14938 //
14939 // $hash=01bdeaf96ea01591689b52b0955504644d6614b8$
14940 //
14941 
14942 extern (C):
14943 
14944 
14945 
14946 ///
14947 /// Implement this structure to handle menu model events. The functions of this
14948 /// structure will be called on the browser process UI thread unless otherwise
14949 /// indicated.
14950 ///
14951 struct cef_menu_model_delegate_t
14952 {
14953     ///
14954     /// Base structure.
14955     ///
14956 
14957     ///
14958     /// Perform the action associated with the specified |command_id| and optional
14959     /// |event_flags|.
14960     ///
14961 
14962     ///
14963     /// Called when the user moves the mouse outside the menu and over the owning
14964     /// window.
14965     ///
14966 
14967     cef_base_ref_counted_t base;
14968     extern(System) void function (
14969         cef_menu_model_delegate_t* self,
14970         cef_menu_model_t* menu_model,
14971         int command_id,
14972         cef_event_flags_t event_flags) nothrow execute_command;
14973     extern(System) void function (
14974         cef_menu_model_delegate_t* self,
14975         cef_menu_model_t* menu_model,
14976         const(cef_point_t)* screen_point) nothrow mouse_outside_menu;
14977 
14978     ///
14979     /// Called on unhandled open submenu keyboard commands. |is_rtl| will be true
14980     /// (1) if the menu is displaying a right-to-left language.
14981     ///
14982     extern(System) void function (
14983         cef_menu_model_delegate_t* self,
14984         cef_menu_model_t* menu_model,
14985         int is_rtl) nothrow unhandled_open_submenu;
14986 
14987     ///
14988     /// Called on unhandled close submenu keyboard commands. |is_rtl| will be true
14989     /// (1) if the menu is displaying a right-to-left language.
14990     ///
14991     extern(System) void function (
14992         cef_menu_model_delegate_t* self,
14993         cef_menu_model_t* menu_model,
14994         int is_rtl) nothrow unhandled_close_submenu;
14995 
14996     ///
14997     /// The menu is about to show.
14998     ///
14999     extern(System) void function (
15000         cef_menu_model_delegate_t* self,
15001         cef_menu_model_t* menu_model) nothrow menu_will_show;
15002 
15003     ///
15004     /// The menu has closed.
15005     ///
15006     extern(System) void function (
15007         cef_menu_model_delegate_t* self,
15008         cef_menu_model_t* menu_model) nothrow menu_closed;
15009 
15010     ///
15011     /// Optionally modify a menu item label. Return true (1) if |label| was
15012     /// modified.
15013     ///
15014     extern(System) int function (
15015         cef_menu_model_delegate_t* self,
15016         cef_menu_model_t* menu_model,
15017         cef_string_t* label) nothrow format_label;
15018 }
15019 
15020 
15021 
15022 // CEF_INCLUDE_CAPI_CEF_MENU_MODEL_DELEGATE_CAPI_H_
15023 // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
15024 //
15025 // Redistribution and use in source and binary forms, with or without
15026 // modification, are permitted provided that the following conditions are
15027 // met:
15028 //
15029 //    * Redistributions of source code must retain the above copyright
15030 // notice, this list of conditions and the following disclaimer.
15031 //    * Redistributions in binary form must reproduce the above
15032 // copyright notice, this list of conditions and the following disclaimer
15033 // in the documentation and/or other materials provided with the
15034 // distribution.
15035 //    * Neither the name of Google Inc. nor the name Chromium Embedded
15036 // Framework nor the names of its contributors may be used to endorse
15037 // or promote products derived from this software without specific prior
15038 // written permission.
15039 //
15040 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
15041 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
15042 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
15043 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
15044 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
15045 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
15046 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
15047 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
15048 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
15049 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
15050 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
15051 //
15052 // ---------------------------------------------------------------------------
15053 //
15054 // This file was generated by the CEF translator tool and should not edited
15055 // by hand. See the translator.README.txt file in the tools directory for
15056 // more information.
15057 //
15058 // $hash=dbdac05f2ebd8e8a357eacfe5095676a5bd5b1ac$
15059 //
15060 
15061 extern (C):
15062 
15063 ///
15064 /// Structure used to represent an entry in navigation history.
15065 ///
15066 struct cef_navigation_entry_t
15067 {
15068     ///
15069     /// Base structure.
15070     ///
15071 
15072     ///
15073     /// Returns true (1) if this object is valid. Do not call any other functions
15074     /// if this function returns false (0).
15075     ///
15076 
15077     ///
15078     /// Returns the actual URL of the page. For some pages this may be data: URL
15079     /// or similar. Use get_display_url() to return a display-friendly version.
15080     ///
15081     // The resulting string must be freed by calling cef_string_userfree_free().
15082 
15083     ///
15084     /// Returns a display-friendly version of the URL.
15085     ///
15086     // The resulting string must be freed by calling cef_string_userfree_free().
15087 
15088     cef_base_ref_counted_t base;
15089     extern(System) int function (cef_navigation_entry_t* self) nothrow is_valid;
15090     extern(System) cef_string_userfree_t function (cef_navigation_entry_t* self) nothrow get_url;
15091     extern(System) cef_string_userfree_t function (
15092         cef_navigation_entry_t* self) nothrow get_display_url;
15093 
15094     ///
15095     /// Returns the original URL that was entered by the user before any
15096     /// redirects.
15097     ///
15098     // The resulting string must be freed by calling cef_string_userfree_free().
15099     extern(System) cef_string_userfree_t function (
15100         cef_navigation_entry_t* self) nothrow get_original_url;
15101 
15102     ///
15103     /// Returns the title set by the page. This value may be NULL.
15104     ///
15105     // The resulting string must be freed by calling cef_string_userfree_free().
15106     extern(System) cef_string_userfree_t function (cef_navigation_entry_t* self) nothrow get_title;
15107 
15108     ///
15109     /// Returns the transition type which indicates what the user did to move to
15110     /// this page from the previous page.
15111     ///
15112     extern(System) cef_transition_type_t function (
15113         cef_navigation_entry_t* self) nothrow get_transition_type;
15114 
15115     ///
15116     /// Returns true (1) if this navigation includes post data.
15117     ///
15118     extern(System) int function (cef_navigation_entry_t* self) nothrow has_post_data;
15119 
15120     ///
15121     /// Returns the time for the last known successful navigation completion. A
15122     /// navigation may be completed more than once if the page is reloaded. May be
15123     /// 0 if the navigation has not yet completed.
15124     ///
15125     extern(System) cef_basetime_t function (
15126         cef_navigation_entry_t* self) nothrow get_completion_time;
15127 
15128     ///
15129     /// Returns the HTTP status code for the last known successful navigation
15130     /// response. May be 0 if the response has not yet been received or if the
15131     /// navigation has not yet completed.
15132     ///
15133     extern(System) int function (cef_navigation_entry_t* self) nothrow get_http_status_code;
15134 
15135     ///
15136     /// Returns the SSL information for this navigation entry.
15137     ///
15138     extern(System) cef_sslstatus_t* function (cef_navigation_entry_t* self) nothrow get_sslstatus;
15139 }
15140 
15141 
15142 
15143 // CEF_INCLUDE_CAPI_CEF_NAVIGATION_ENTRY_CAPI_H_
15144 // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
15145 //
15146 // Redistribution and use in source and binary forms, with or without
15147 // modification, are permitted provided that the following conditions are
15148 // met:
15149 //
15150 //    * Redistributions of source code must retain the above copyright
15151 // notice, this list of conditions and the following disclaimer.
15152 //    * Redistributions in binary form must reproduce the above
15153 // copyright notice, this list of conditions and the following disclaimer
15154 // in the documentation and/or other materials provided with the
15155 // distribution.
15156 //    * Neither the name of Google Inc. nor the name Chromium Embedded
15157 // Framework nor the names of its contributors may be used to endorse
15158 // or promote products derived from this software without specific prior
15159 // written permission.
15160 //
15161 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
15162 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
15163 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
15164 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
15165 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
15166 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
15167 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
15168 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
15169 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
15170 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
15171 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
15172 //
15173 // ---------------------------------------------------------------------------
15174 //
15175 // This file was generated by the CEF translator tool and should not edited
15176 // by hand. See the translator.README.txt file in the tools directory for
15177 // more information.
15178 //
15179 // $hash=f146fd9172033e77e90994841df9fa55ff71aa4b$
15180 //
15181 
15182 extern (C):
15183 
15184 ///
15185 /// Add an entry to the cross-origin access whitelist.
15186 ///
15187 /// The same-origin policy restricts how scripts hosted from different origins
15188 /// (scheme + domain + port) can communicate. By default, scripts can only
15189 /// access resources with the same origin. Scripts hosted on the HTTP and HTTPS
15190 /// schemes (but no other schemes) can use the "Access-Control-Allow-Origin"
15191 /// header to allow cross-origin requests. For example,
15192 /// https://source.example.com can make XMLHttpRequest requests on
15193 /// http://target.example.com if the http://target.example.com request returns
15194 /// an "Access-Control-Allow-Origin: https://source.example.com" response
15195 /// header.
15196 ///
15197 /// Scripts in separate frames or iframes and hosted from the same protocol and
15198 /// domain suffix can execute cross-origin JavaScript if both pages set the
15199 /// document.domain value to the same domain suffix. For example,
15200 /// scheme://foo.example.com and scheme://bar.example.com can communicate using
15201 /// JavaScript if both domains set document.domain="example.com".
15202 ///
15203 /// This function is used to allow access to origins that would otherwise
15204 /// violate the same-origin policy. Scripts hosted underneath the fully
15205 /// qualified |source_origin| URL (like http://www.example.com) will be allowed
15206 /// access to all resources hosted on the specified |target_protocol| and
15207 /// |target_domain|. If |target_domain| is non-NULL and
15208 /// |allow_target_subdomains| is false (0) only exact domain matches will be
15209 /// allowed. If |target_domain| contains a top- level domain component (like
15210 /// "example.com") and |allow_target_subdomains| is true (1) sub-domain matches
15211 /// will be allowed. If |target_domain| is NULL and |allow_target_subdomains| if
15212 /// true (1) all domains and IP addresses will be allowed.
15213 ///
15214 /// This function cannot be used to bypass the restrictions on local or display
15215 /// isolated schemes. See the comments on CefRegisterCustomScheme for more
15216 /// information.
15217 ///
15218 /// This function may be called on any thread. Returns false (0) if
15219 /// |source_origin| is invalid or the whitelist cannot be accessed.
15220 ///
15221 int cef_add_cross_origin_whitelist_entry (
15222     const(cef_string_t)* source_origin,
15223     const(cef_string_t)* target_protocol,
15224     const(cef_string_t)* target_domain,
15225     int allow_target_subdomains);
15226 
15227 ///
15228 /// Remove an entry from the cross-origin access whitelist. Returns false (0) if
15229 /// |source_origin| is invalid or the whitelist cannot be accessed.
15230 ///
15231 int cef_remove_cross_origin_whitelist_entry (
15232     const(cef_string_t)* source_origin,
15233     const(cef_string_t)* target_protocol,
15234     const(cef_string_t)* target_domain,
15235     int allow_target_subdomains);
15236 
15237 ///
15238 /// Remove all entries from the cross-origin access whitelist. Returns false (0)
15239 /// if the whitelist cannot be accessed.
15240 ///
15241 int cef_clear_cross_origin_whitelist ();
15242 
15243 // CEF_INCLUDE_CAPI_CEF_ORIGIN_WHITELIST_CAPI_H_
15244 // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
15245 //
15246 // Redistribution and use in source and binary forms, with or without
15247 // modification, are permitted provided that the following conditions are
15248 // met:
15249 //
15250 //    * Redistributions of source code must retain the above copyright
15251 // notice, this list of conditions and the following disclaimer.
15252 //    * Redistributions in binary form must reproduce the above
15253 // copyright notice, this list of conditions and the following disclaimer
15254 // in the documentation and/or other materials provided with the
15255 // distribution.
15256 //    * Neither the name of Google Inc. nor the name Chromium Embedded
15257 // Framework nor the names of its contributors may be used to endorse
15258 // or promote products derived from this software without specific prior
15259 // written permission.
15260 //
15261 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
15262 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
15263 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
15264 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
15265 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
15266 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
15267 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
15268 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
15269 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
15270 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
15271 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
15272 //
15273 // ---------------------------------------------------------------------------
15274 //
15275 // This file was generated by the CEF translator tool and should not edited
15276 // by hand. See the translator.README.txt file in the tools directory for
15277 // more information.
15278 //
15279 // $hash=8accded29b97df1549e86e58d8976fe0f800359a$
15280 //
15281 
15282 extern (C):
15283 
15284 ///
15285 /// Combines specified |base_url| and |relative_url| into |resolved_url|.
15286 /// Returns false (0) if one of the URLs is NULL or invalid.
15287 ///
15288 int cef_resolve_url (
15289     const(cef_string_t)* base_url,
15290     const(cef_string_t)* relative_url,
15291     cef_string_t* resolved_url);
15292 
15293 ///
15294 /// Parse the specified |url| into its component parts. Returns false (0) if the
15295 /// URL is NULL or invalid.
15296 ///
15297 int cef_parse_url (const(cef_string_t)* url, cef_urlparts_t* parts);
15298 
15299 ///
15300 /// Creates a URL from the specified |parts|, which must contain a non-NULL spec
15301 /// or a non-NULL host and path (at a minimum), but not both. Returns false (0)
15302 /// if |parts| isn't initialized as described.
15303 ///
15304 int cef_create_url (const(cef_urlparts_t)* parts, cef_string_t* url);
15305 
15306 ///
15307 /// This is a convenience function for formatting a URL in a concise and human-
15308 /// friendly way to help users make security-related decisions (or in other
15309 /// circumstances when people need to distinguish sites, origins, or otherwise-
15310 /// simplified URLs from each other). Internationalized domain names (IDN) may
15311 /// be presented in Unicode if the conversion is considered safe. The returned
15312 /// value will (a) omit the path for standard schemes, excepting file and
15313 /// filesystem, and (b) omit the port if it is the default for the scheme. Do
15314 /// not use this for URLs which will be parsed or sent to other applications.
15315 ///
15316 // The resulting string must be freed by calling cef_string_userfree_free().
15317 cef_string_userfree_t cef_format_url_for_security_display (
15318     const(cef_string_t)* origin_url);
15319 
15320 ///
15321 /// Returns the mime type for the specified file extension or an NULL string if
15322 /// unknown.
15323 ///
15324 // The resulting string must be freed by calling cef_string_userfree_free().
15325 cef_string_userfree_t cef_get_mime_type (const(cef_string_t)* extension);
15326 
15327 ///
15328 /// Get the extensions associated with the given mime type. This should be
15329 /// passed in lower case. There could be multiple extensions for a given mime
15330 /// type, like "html,htm" for "text/html", or "txt,text,html,..." for "text/*".
15331 /// Any existing elements in the provided vector will not be erased.
15332 ///
15333 void cef_get_extensions_for_mime_type (
15334     const(cef_string_t)* mime_type,
15335     cef_string_list_t extensions);
15336 
15337 ///
15338 /// Encodes |data| as a base64 string.
15339 ///
15340 // The resulting string must be freed by calling cef_string_userfree_free().
15341 cef_string_userfree_t cef_base64encode (const(void)* data, size_t data_size);
15342 
15343 ///
15344 /// Decodes the base64 encoded string |data|. The returned value will be NULL if
15345 /// the decoding fails.
15346 ///
15347 
15348 cef_binary_value_t* cef_base64decode (const(cef_string_t)* data);
15349 
15350 ///
15351 /// Escapes characters in |text| which are unsuitable for use as a query
15352 /// parameter value. Everything except alphanumerics and -_.!~*'() will be
15353 /// converted to "%XX". If |use_plus| is true (1) spaces will change to "+". The
15354 /// result is basically the same as encodeURIComponent in Javacript.
15355 ///
15356 // The resulting string must be freed by calling cef_string_userfree_free().
15357 cef_string_userfree_t cef_uriencode (const(cef_string_t)* text, int use_plus);
15358 
15359 ///
15360 /// Unescapes |text| and returns the result. Unescaping consists of looking for
15361 /// the exact pattern "%XX" where each X is a hex digit and converting to the
15362 /// character with the numerical value of those digits (e.g. "i%20=%203%3b"
15363 /// unescapes to "i = 3;"). If |convert_to_utf8| is true (1) this function will
15364 /// attempt to interpret the initial decoded result as UTF-8. If the result is
15365 /// convertable into UTF-8 it will be returned as converted. Otherwise the
15366 /// initial decoded result will be returned.  The |unescape_rule| parameter
15367 /// supports further customization the decoding process.
15368 ///
15369 // The resulting string must be freed by calling cef_string_userfree_free().
15370 cef_string_userfree_t cef_uridecode (
15371     const(cef_string_t)* text,
15372     int convert_to_utf8,
15373     cef_uri_unescape_rule_t unescape_rule);
15374 
15375 ///
15376 /// Parses the specified |json_string| and returns a dictionary or list
15377 /// representation. If JSON parsing fails this function returns NULL.
15378 ///
15379 
15380 cef_value_t* cef_parse_json (
15381     const(cef_string_t)* json_string,
15382     cef_json_parser_options_t options);
15383 
15384 ///
15385 /// Parses the specified UTF8-encoded |json| buffer of size |json_size| and
15386 /// returns a dictionary or list representation. If JSON parsing fails this
15387 /// function returns NULL.
15388 ///
15389 cef_value_t* cef_parse_json_buffer (
15390     const(void)* json,
15391     size_t json_size,
15392     cef_json_parser_options_t options);
15393 
15394 ///
15395 /// Parses the specified |json_string| and returns a dictionary or list
15396 /// representation. If JSON parsing fails this function returns NULL and
15397 /// populates |error_msg_out| with a formatted error message.
15398 ///
15399 cef_value_t* cef_parse_jsonand_return_error (
15400     const(cef_string_t)* json_string,
15401     cef_json_parser_options_t options,
15402     cef_string_t* error_msg_out);
15403 
15404 ///
15405 /// Generates a JSON string from the specified root |node| which should be a
15406 /// dictionary or list value. Returns an NULL string on failure. This function
15407 /// requires exclusive access to |node| including any underlying data.
15408 ///
15409 // The resulting string must be freed by calling cef_string_userfree_free().
15410 cef_string_userfree_t cef_write_json (
15411     cef_value_t* node,
15412     cef_json_writer_options_t options);
15413 
15414 // CEF_INCLUDE_CAPI_CEF_PARSER_CAPI_H_
15415 // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
15416 //
15417 // Redistribution and use in source and binary forms, with or without
15418 // modification, are permitted provided that the following conditions are
15419 // met:
15420 //
15421 //    * Redistributions of source code must retain the above copyright
15422 // notice, this list of conditions and the following disclaimer.
15423 //    * Redistributions in binary form must reproduce the above
15424 // copyright notice, this list of conditions and the following disclaimer
15425 // in the documentation and/or other materials provided with the
15426 // distribution.
15427 //    * Neither the name of Google Inc. nor the name Chromium Embedded
15428 // Framework nor the names of its contributors may be used to endorse
15429 // or promote products derived from this software without specific prior
15430 // written permission.
15431 //
15432 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
15433 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
15434 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
15435 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
15436 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
15437 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
15438 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
15439 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
15440 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
15441 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
15442 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
15443 //
15444 // ---------------------------------------------------------------------------
15445 //
15446 // This file was generated by the CEF translator tool and should not edited
15447 // by hand. See the translator.README.txt file in the tools directory for
15448 // more information.
15449 //
15450 // $hash=ee0c50b4e1f51fb2286da24bb9244ae74f3b0c6f$
15451 //
15452 
15453 extern (C):
15454 
15455 ///
15456 /// Retrieve the path associated with the specified |key|. Returns true (1) on
15457 /// success. Can be called on any thread in the browser process.
15458 ///
15459 int cef_get_path (cef_path_key_t key, cef_string_t* path);
15460 
15461 // CEF_INCLUDE_CAPI_CEF_PATH_UTIL_CAPI_H_
15462 // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
15463 //
15464 // Redistribution and use in source and binary forms, with or without
15465 // modification, are permitted provided that the following conditions are
15466 // met:
15467 //
15468 //    * Redistributions of source code must retain the above copyright
15469 // notice, this list of conditions and the following disclaimer.
15470 //    * Redistributions in binary form must reproduce the above
15471 // copyright notice, this list of conditions and the following disclaimer
15472 // in the documentation and/or other materials provided with the
15473 // distribution.
15474 //    * Neither the name of Google Inc. nor the name Chromium Embedded
15475 // Framework nor the names of its contributors may be used to endorse
15476 // or promote products derived from this software without specific prior
15477 // written permission.
15478 //
15479 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
15480 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
15481 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
15482 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
15483 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
15484 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
15485 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
15486 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
15487 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
15488 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
15489 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
15490 //
15491 // ---------------------------------------------------------------------------
15492 //
15493 // This file was generated by the CEF translator tool and should not edited
15494 // by hand. See the translator.README.txt file in the tools directory for
15495 // more information.
15496 //
15497 // $hash=c9b3913701581cd6a1077fa3a39d197f338a2507$
15498 //
15499 
15500 extern (C):
15501 
15502 ///
15503 /// Callback structure used for asynchronous continuation of media access
15504 /// permission requests.
15505 ///
15506 struct cef_media_access_callback_t
15507 {
15508     ///
15509     /// Base structure.
15510     ///
15511 
15512     ///
15513     /// Call to allow or deny media access. If this callback was initiated in
15514     /// response to a getUserMedia (indicated by
15515     /// CEF_MEDIA_PERMISSION_DEVICE_AUDIO_CAPTURE and/or
15516     /// CEF_MEDIA_PERMISSION_DEVICE_VIDEO_CAPTURE being set) then
15517     /// |allowed_permissions| must match |required_permissions| passed to
15518     /// OnRequestMediaAccessPermission.
15519     ///
15520 
15521     ///
15522     /// Cancel the media access request.
15523     ///
15524 
15525     cef_base_ref_counted_t base;
15526     extern(System) void function (
15527         cef_media_access_callback_t* self,
15528         uint allowed_permissions) nothrow cont;
15529     extern(System) void function (cef_media_access_callback_t* self) nothrow cancel;
15530 }
15531 
15532  ///
15533 /// Callback structure used for asynchronous continuation of permission prompts.
15534 ///
15535 struct cef_permission_prompt_callback_t
15536 {
15537     ///
15538     /// Base structure.
15539     ///
15540     cef_base_ref_counted_t base;
15541 
15542     ///
15543     /// Complete the permissions request with the specified |result|.
15544     ///
15545     extern(System) void function (
15546         cef_permission_prompt_callback_t* self,
15547         cef_permission_request_result_t result) nothrow cont;
15548 }
15549 
15550 
15551 
15552 ///
15553 /// Implement this structure to handle events related to permission requests.
15554 /// The functions of this structure will be called on the browser process UI
15555 /// thread.
15556 ///
15557 struct cef_permission_handler_t
15558 {
15559     ///
15560     /// Base structure.
15561     ///
15562     cef_base_ref_counted_t base;
15563 
15564     ///
15565     /// Called when a page requests permission to access media.
15566     /// |requesting_origin| is the URL origin requesting permission.
15567     /// |requested_permissions| is a combination of values from
15568     /// cef_media_access_permission_types_t that represent the requested
15569     /// permissions. Return true (1) and call cef_media_access_callback_t
15570     /// functions either in this function or at a later time to continue or cancel
15571     /// the request. Return false (0) to proceed with default handling. With the
15572     /// Chrome runtime, default handling will display the permission request UI.
15573     /// With the Alloy runtime, default handling will deny the request. This
15574     /// function will not be called if the "--enable-media-stream" command-line
15575     /// switch is used to grant all permissions.
15576     ///
15577     extern(System) int function (
15578         cef_permission_handler_t* self,
15579         cef_browser_t* browser,
15580         cef_frame_t* frame,
15581         const(cef_string_t)* requesting_origin,
15582         uint requested_permissions,
15583         cef_media_access_callback_t* callback) nothrow on_request_media_access_permission;
15584 
15585     ///
15586     /// Called when a page should show a permission prompt. |prompt_id| uniquely
15587     /// identifies the prompt. |requesting_origin| is the URL origin requesting
15588     /// permission. |requested_permissions| is a combination of values from
15589     /// cef_permission_request_types_t that represent the requested permissions.
15590     /// Return true (1) and call cef_permission_prompt_callback_t::Continue either
15591     /// in this function or at a later time to continue or cancel the request.
15592     /// Return false (0) to proceed with default handling. With the Chrome
15593     /// runtime, default handling will display the permission prompt UI. With the
15594     /// Alloy runtime, default handling is CEF_PERMISSION_RESULT_IGNORE.
15595     ///
15596     extern(System) int function (
15597         cef_permission_handler_t* self,
15598         cef_browser_t* browser,
15599         ulong prompt_id,
15600         const(cef_string_t)* requesting_origin,
15601         uint requested_permissions,
15602         cef_permission_prompt_callback_t* callback) nothrow on_show_permission_prompt;
15603 
15604     ///
15605     /// Called when a permission prompt handled via OnShowPermissionPrompt is
15606     /// dismissed. |prompt_id| will match the value that was passed to
15607     /// OnShowPermissionPrompt. |result| will be the value passed to
15608     /// cef_permission_prompt_callback_t::Continue or CEF_PERMISSION_RESULT_IGNORE
15609     /// if the dialog was dismissed for other reasons such as navigation, browser
15610     /// closure, etc. This function will not be called if OnShowPermissionPrompt
15611     /// returned false (0) for |prompt_id|.
15612     ///
15613     extern(System) void function (
15614         cef_permission_handler_t* self,
15615         cef_browser_t* browser,
15616         ulong prompt_id,
15617         cef_permission_request_result_t result) nothrow on_dismiss_permission_prompt;
15618 }
15619 
15620 
15621 
15622 // CEF_INCLUDE_CAPI_CEF_PERMISSION_HANDLER_CAPI_H_
15623 // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
15624 //
15625 // Redistribution and use in source and binary forms, with or without
15626 // modification, are permitted provided that the following conditions are
15627 // met:
15628 //
15629 //    * Redistributions of source code must retain the above copyright
15630 // notice, this list of conditions and the following disclaimer.
15631 //    * Redistributions in binary form must reproduce the above
15632 // copyright notice, this list of conditions and the following disclaimer
15633 // in the documentation and/or other materials provided with the
15634 // distribution.
15635 //    * Neither the name of Google Inc. nor the name Chromium Embedded
15636 // Framework nor the names of its contributors may be used to endorse
15637 // or promote products derived from this software without specific prior
15638 // written permission.
15639 //
15640 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
15641 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
15642 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
15643 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
15644 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
15645 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
15646 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
15647 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
15648 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
15649 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
15650 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
15651 //
15652 // ---------------------------------------------------------------------------
15653 //
15654 // This file was generated by the CEF translator tool and should not edited
15655 // by hand. See the translator.README.txt file in the tools directory for
15656 // more information.
15657 //
15658 // $hash=1c0e469a283538945834404bcd5934b9bb9a0756$
15659 //
15660 
15661 extern (C):
15662 
15663 ///
15664 /// Structure that manages custom preference registrations.
15665 ///
15666 struct cef_preference_registrar_t
15667 {
15668     ///
15669     /// Base structure.
15670     ///
15671 
15672     ///
15673     /// Register a preference with the specified |name| and |default_value|. To
15674     /// avoid conflicts with built-in preferences the |name| value should contain
15675     /// an application-specific prefix followed by a period (e.g. "myapp.value").
15676     /// The contents of |default_value| will be copied. The data type for the
15677     /// preference will be inferred from |default_value|'s type and cannot be
15678     /// changed after registration. Returns true (1) on success. Returns false (0)
15679     /// if |name| is already registered or if |default_value| has an invalid type.
15680     /// This function must be called from within the scope of the
15681     /// cef_browser_process_handler_t::OnRegisterCustomPreferences callback.
15682     ///
15683 
15684     ///
15685     /// Manage access to preferences. Many built-in preferences are registered by
15686     /// Chromium. Custom preferences can be registered in
15687 
15688     cef_base_scoped_t base;
15689     extern(System) int function (
15690         cef_preference_registrar_t* self,
15691         const(cef_string_t)* name,
15692         cef_value_t* default_value) nothrow add_preference;
15693 }
15694 
15695 
15696 /// cef_browser_process_handler_t::OnRegisterCustomPreferences.
15697 ///
15698 struct cef_preference_manager_t
15699 {
15700     ///
15701     /// Base structure.
15702     ///
15703 
15704     cef_base_ref_counted_t base;
15705 
15706     ///
15707     /// Returns true (1) if a preference with the specified |name| exists. This
15708     /// function must be called on the browser process UI thread.
15709     ///
15710     extern(System) int function (
15711         cef_preference_manager_t* self,
15712         const(cef_string_t)* name) nothrow has_preference;
15713 
15714     ///
15715     /// Returns the value for the preference with the specified |name|. Returns
15716     /// NULL if the preference does not exist. The returned object contains a copy
15717     /// of the underlying preference value and modifications to the returned
15718     /// object will not modify the underlying preference value. This function must
15719     /// be called on the browser process UI thread.
15720     ///
15721     extern(System) cef_value_t* function (
15722         cef_preference_manager_t* self,
15723         const(cef_string_t)* name) nothrow get_preference;
15724 
15725     ///
15726     /// Returns all preferences as a dictionary. If |include_defaults| is true (1)
15727     /// then preferences currently at their default value will be included. The
15728     /// returned object contains a copy of the underlying preference values and
15729     /// modifications to the returned object will not modify the underlying
15730     /// preference values. This function must be called on the browser process UI
15731     /// thread.
15732     ///
15733     extern(System) cef_dictionary_value_t* function (
15734         cef_preference_manager_t* self,
15735         int include_defaults) nothrow get_all_preferences;
15736 
15737     ///
15738     /// Returns true (1) if the preference with the specified |name| can be
15739     /// modified using SetPreference. As one example preferences set via the
15740     /// command-line usually cannot be modified. This function must be called on
15741     /// the browser process UI thread.
15742     ///
15743     extern(System) int function (
15744         cef_preference_manager_t* self,
15745         const(cef_string_t)* name) nothrow can_set_preference;
15746 
15747     ///
15748     /// Set the |value| associated with preference |name|. Returns true (1) if the
15749     /// value is set successfully and false (0) otherwise. If |value| is NULL the
15750     /// preference will be restored to its default value. If setting the
15751     /// preference fails then |error| will be populated with a detailed
15752     /// description of the problem. This function must be called on the browser
15753     /// process UI thread.
15754     ///
15755     extern(System) int function (
15756         cef_preference_manager_t* self,
15757         const(cef_string_t)* name,
15758         cef_value_t* value,
15759         cef_string_t* error) nothrow set_preference;
15760 }
15761 
15762 
15763 
15764 ///
15765 /// Returns the global preference manager object.
15766 ///
15767 cef_preference_manager_t* cef_preference_manager_get_global ();
15768 
15769 // CEF_INCLUDE_CAPI_CEF_PREFERENCE_CAPI_H_
15770 // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
15771 //
15772 // Redistribution and use in source and binary forms, with or without
15773 // modification, are permitted provided that the following conditions are
15774 // met:
15775 //
15776 //    * Redistributions of source code must retain the above copyright
15777 // notice, this list of conditions and the following disclaimer.
15778 //    * Redistributions in binary form must reproduce the above
15779 // copyright notice, this list of conditions and the following disclaimer
15780 // in the documentation and/or other materials provided with the
15781 // distribution.
15782 //    * Neither the name of Google Inc. nor the name Chromium Embedded
15783 // Framework nor the names of its contributors may be used to endorse
15784 // or promote products derived from this software without specific prior
15785 // written permission.
15786 //
15787 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
15788 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
15789 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
15790 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
15791 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
15792 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
15793 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
15794 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
15795 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
15796 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
15797 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
15798 //
15799 // ---------------------------------------------------------------------------
15800 //
15801 // This file was generated by the CEF translator tool and should not edited
15802 // by hand. See the translator.README.txt file in the tools directory for
15803 // more information.
15804 //
15805 // $hash=96d5b6c0dc8f2575e686fb79684c63787cdfe876$
15806 //
15807 
15808 extern (C):
15809 
15810 ///
15811 /// Callback structure for asynchronous continuation of print dialog requests.
15812 ///
15813 struct cef_print_dialog_callback_t
15814 {
15815     ///
15816     /// Base structure.
15817     ///
15818 
15819     ///
15820     /// Continue printing with the specified |settings|.
15821     ///
15822 
15823     ///
15824     /// Cancel the printing.
15825     ///
15826 
15827     ///
15828     /// Callback structure for asynchronous continuation of print job requests.
15829     ///
15830 
15831     ///
15832     /// Base structure.
15833     ///
15834 
15835     ///
15836     /// Indicate completion of the print job.
15837     ///
15838 
15839     cef_base_ref_counted_t base;
15840     extern(System) void function (
15841         cef_print_dialog_callback_t* self,
15842         cef_print_settings_t* settings) nothrow cont;
15843     extern(System) void function (cef_print_dialog_callback_t* self) nothrow cancel;
15844 }
15845 
15846 
15847 
15848 struct cef_print_job_callback_t
15849 {
15850     cef_base_ref_counted_t base;
15851     extern(System) void function (cef_print_job_callback_t* self) nothrow cont;
15852 }
15853 
15854 
15855 
15856 ///
15857 /// Implement this structure to handle printing on Linux. Each browser will have
15858 /// only one print job in progress at a time. The functions of this structure
15859 /// will be called on the browser process UI thread.
15860 ///
15861 struct cef_print_handler_t
15862 {
15863     ///
15864     /// Base structure.
15865     ///
15866     cef_base_ref_counted_t base;
15867 
15868     ///
15869     /// Called when printing has started for the specified |browser|. This
15870     /// function will be called before the other OnPrint*() functions and
15871     /// irrespective of how printing was initiated (e.g.
15872     /// cef_browser_host_t::print(), JavaScript window.print() or PDF extension
15873     /// print button).
15874     ///
15875     extern(System) void function (
15876         cef_print_handler_t* self,
15877         cef_browser_t* browser) nothrow on_print_start;
15878 
15879     ///
15880     /// Synchronize |settings| with client state. If |get_defaults| is true (1)
15881     /// then populate |settings| with the default print settings. Do not keep a
15882     /// reference to |settings| outside of this callback.
15883     ///
15884     extern(System) void function (
15885         cef_print_handler_t* self,
15886         cef_browser_t* browser,
15887         cef_print_settings_t* settings,
15888         int get_defaults) nothrow on_print_settings;
15889 
15890     ///
15891     /// Show the print dialog. Execute |callback| once the dialog is dismissed.
15892     /// Return true (1) if the dialog will be displayed or false (0) to cancel the
15893     /// printing immediately.
15894     ///
15895     extern(System) int function (
15896         cef_print_handler_t* self,
15897         cef_browser_t* browser,
15898         int has_selection,
15899         cef_print_dialog_callback_t* callback) nothrow on_print_dialog;
15900 
15901     ///
15902     /// Send the print job to the printer. Execute |callback| once the job is
15903     /// completed. Return true (1) if the job will proceed or false (0) to cancel
15904     /// the job immediately.
15905     ///
15906     extern(System) int function (
15907         cef_print_handler_t* self,
15908         cef_browser_t* browser,
15909         const(cef_string_t)* document_name,
15910         const(cef_string_t)* pdf_file_path,
15911         cef_print_job_callback_t* callback) nothrow on_print_job;
15912 
15913     ///
15914     /// Reset client state related to printing.
15915     ///
15916     extern(System) void function (
15917         cef_print_handler_t* self,
15918         cef_browser_t* browser) nothrow on_print_reset;
15919 
15920     ///
15921     /// Return the PDF paper size in device units. Used in combination with
15922     /// cef_browser_host_t::print_to_pdf().
15923     ///
15924     extern(System) cef_size_t function (
15925         cef_print_handler_t* self,
15926         cef_browser_t* browser,
15927         int device_units_per_inch) nothrow get_pdf_paper_size;
15928 }
15929 
15930 
15931 
15932 // CEF_INCLUDE_CAPI_CEF_PRINT_HANDLER_CAPI_H_
15933 // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
15934 //
15935 // Redistribution and use in source and binary forms, with or without
15936 // modification, are permitted provided that the following conditions are
15937 // met:
15938 //
15939 //    * Redistributions of source code must retain the above copyright
15940 // notice, this list of conditions and the following disclaimer.
15941 //    * Redistributions in binary form must reproduce the above
15942 // copyright notice, this list of conditions and the following disclaimer
15943 // in the documentation and/or other materials provided with the
15944 // distribution.
15945 //    * Neither the name of Google Inc. nor the name Chromium Embedded
15946 // Framework nor the names of its contributors may be used to endorse
15947 // or promote products derived from this software without specific prior
15948 // written permission.
15949 //
15950 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
15951 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
15952 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
15953 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
15954 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
15955 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
15956 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
15957 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
15958 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
15959 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
15960 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
15961 //
15962 // ---------------------------------------------------------------------------
15963 //
15964 // This file was generated by the CEF translator tool and should not edited
15965 // by hand. See the translator.README.txt file in the tools directory for
15966 // more information.
15967 //
15968 // $hash=63977fcbe4567db202914f69539f49b254352053$
15969 //
15970 
15971 extern (C):
15972 
15973 ///
15974 /// Structure representing print settings.
15975 ///
15976 struct cef_print_settings_t
15977 {
15978     ///
15979     /// Base structure.
15980     ///
15981 
15982     ///
15983     /// Returns true (1) if this object is valid. Do not call any other functions
15984     /// if this function returns false (0).
15985     ///
15986 
15987     ///
15988     /// Returns true (1) if the values of this object are read-only. Some APIs may
15989     /// expose read-only objects.
15990     ///
15991 
15992     ///
15993     /// Set the page orientation.
15994     ///
15995 
15996     ///
15997     /// Returns true (1) if the orientation is landscape.
15998     ///
15999 
16000     ///
16001     /// Set the printer printable area in device units. Some platforms already
16002 
16003     cef_base_ref_counted_t base;
16004     extern(System) int function (cef_print_settings_t* self) nothrow is_valid;
16005     extern(System) int function (cef_print_settings_t* self) nothrow is_read_only;
16006     extern(System) void function (cef_print_settings_t* self, int landscape) nothrow set_orientation;
16007     extern(System) int function (cef_print_settings_t* self) nothrow is_landscape;
16008     /// provide flipped area. Set |landscape_needs_flip| to false (0) on those
16009     /// platforms to avoid double flipping.
16010     ///
16011     extern(System) void function (
16012         cef_print_settings_t* self,
16013         const(cef_size_t)* physical_size_device_units,
16014         const(cef_rect_t)* printable_area_device_units,
16015         int landscape_needs_flip) nothrow set_printer_printable_area;
16016 
16017     ///
16018     /// Set the device name.
16019     ///
16020     extern(System) void function (
16021         cef_print_settings_t* self,
16022         const(cef_string_t)* name) nothrow set_device_name;
16023 
16024     ///
16025     /// Get the device name.
16026     ///
16027     // The resulting string must be freed by calling cef_string_userfree_free().
16028     extern(System) cef_string_userfree_t function (
16029         cef_print_settings_t* self) nothrow get_device_name;
16030 
16031     ///
16032     /// Set the DPI (dots per inch).
16033     ///
16034     extern(System) void function (cef_print_settings_t* self, int dpi) nothrow set_dpi;
16035 
16036     ///
16037     /// Get the DPI (dots per inch).
16038     ///
16039     extern(System) int function (cef_print_settings_t* self) nothrow get_dpi;
16040 
16041     ///
16042     /// Set the page ranges.
16043     ///
16044     extern(System) void function (
16045         cef_print_settings_t* self,
16046         size_t rangesCount,
16047         const(cef_range_t)* ranges) nothrow set_page_ranges;
16048 
16049     ///
16050     /// Returns the number of page ranges that currently exist.
16051     ///
16052     extern(System) size_t function (cef_print_settings_t* self) nothrow get_page_ranges_count;
16053 
16054     ///
16055     /// Retrieve the page ranges.
16056     ///
16057     extern(System) void function (
16058         cef_print_settings_t* self,
16059         size_t* rangesCount,
16060         cef_range_t* ranges) nothrow get_page_ranges;
16061 
16062     ///
16063     /// Set whether only the selection will be printed.
16064     ///
16065     extern(System) void function (
16066         cef_print_settings_t* self,
16067         int selection_only) nothrow set_selection_only;
16068 
16069     ///
16070     /// Returns true (1) if only the selection will be printed.
16071     ///
16072     extern(System) int function (cef_print_settings_t* self) nothrow is_selection_only;
16073 
16074     ///
16075     /// Set whether pages will be collated.
16076     ///
16077     extern(System) void function (cef_print_settings_t* self, int collate) nothrow set_collate;
16078 
16079     ///
16080     /// Returns true (1) if pages will be collated.
16081     ///
16082     extern(System) int function (cef_print_settings_t* self) nothrow will_collate;
16083 
16084     ///
16085     /// Set the color model.
16086     ///
16087     extern(System) void function (
16088         cef_print_settings_t* self,
16089         cef_color_model_t model) nothrow set_color_model;
16090 
16091     ///
16092     /// Get the color model.
16093     ///
16094     extern(System) cef_color_model_t function (cef_print_settings_t* self) nothrow get_color_model;
16095 
16096     ///
16097     /// Set the number of copies.
16098     ///
16099     extern(System) void function (cef_print_settings_t* self, int copies) nothrow set_copies;
16100 
16101     ///
16102     /// Get the number of copies.
16103     ///
16104     extern(System) int function (cef_print_settings_t* self) nothrow get_copies;
16105 
16106     ///
16107     /// Set the duplex mode.
16108     ///
16109     extern(System) void function (
16110         cef_print_settings_t* self,
16111         cef_duplex_mode_t mode) nothrow set_duplex_mode;
16112 
16113     ///
16114     /// Get the duplex mode.
16115     ///
16116     extern(System) cef_duplex_mode_t function (cef_print_settings_t* self) nothrow get_duplex_mode;
16117 }
16118 
16119 
16120 
16121 ///
16122 /// Create a new cef_print_settings_t object.
16123 ///
16124 cef_print_settings_t* cef_print_settings_create ();
16125 
16126 // CEF_INCLUDE_CAPI_CEF_PRINT_SETTINGS_CAPI_H_
16127 // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
16128 //
16129 // Redistribution and use in source and binary forms, with or without
16130 // modification, are permitted provided that the following conditions are
16131 // met:
16132 //
16133 //    * Redistributions of source code must retain the above copyright
16134 // notice, this list of conditions and the following disclaimer.
16135 //    * Redistributions in binary form must reproduce the above
16136 // copyright notice, this list of conditions and the following disclaimer
16137 // in the documentation and/or other materials provided with the
16138 // distribution.
16139 //    * Neither the name of Google Inc. nor the name Chromium Embedded
16140 // Framework nor the names of its contributors may be used to endorse
16141 // or promote products derived from this software without specific prior
16142 // written permission.
16143 //
16144 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
16145 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
16146 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
16147 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
16148 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
16149 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
16150 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
16151 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
16152 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
16153 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
16154 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
16155 //
16156 // ---------------------------------------------------------------------------
16157 //
16158 // This file was generated by the CEF translator tool and should not edited
16159 // by hand. See the translator.README.txt file in the tools directory for
16160 // more information.
16161 //
16162 // $hash=89c569df7e5e4a6035d4527218ce4dc1d68e20f0$
16163 //
16164 
16165 extern (C):
16166 
16167 ///
16168 /// Structure representing a message. Can be used on any process and thread.
16169 ///
16170 struct cef_process_message_t
16171 {
16172     ///
16173     /// Base structure.
16174     ///
16175 
16176     ///
16177     /// Returns true (1) if this object is valid. Do not call any other functions
16178     /// if this function returns false (0).
16179     ///
16180 
16181     ///
16182     /// Returns true (1) if the values of this object are read-only. Some APIs may
16183     /// expose read-only objects.
16184     ///
16185 
16186     ///
16187     /// Returns a writable copy of this object. Returns nullptr when message
16188     /// contains a shared memory region.
16189     ///
16190 
16191     cef_base_ref_counted_t base;
16192     extern(System) int function (cef_process_message_t* self) nothrow is_valid;
16193     extern(System) int function (cef_process_message_t* self) nothrow is_read_only;
16194     extern(System) cef_process_message_t* function (cef_process_message_t* self) nothrow copy;
16195 
16196     ///
16197     /// Returns the message name.
16198     ///
16199     // The resulting string must be freed by calling cef_string_userfree_free().
16200     extern(System) cef_string_userfree_t function (cef_process_message_t* self) nothrow get_name;
16201 
16202     ///
16203     /// Returns the list of arguments. Returns nullptr when message contains a
16204     /// shared memory region.
16205     ///
16206     extern(System) cef_list_value_t* function (
16207         cef_process_message_t* self) nothrow get_argument_list;
16208 
16209     ///
16210     /// Returns the shared memory region. Returns nullptr when message contains an
16211     /// argument list.
16212     ///
16213     extern(System) cef_shared_memory_region_t* function (
16214         cef_process_message_t* self) nothrow get_shared_memory_region;
16215 }
16216 
16217 
16218 
16219 ///
16220 /// Create a new cef_process_message_t object with the specified name.
16221 ///
16222 cef_process_message_t* cef_process_message_create (const(cef_string_t)* name);
16223 
16224 // CEF_INCLUDE_CAPI_CEF_PROCESS_MESSAGE_CAPI_H_
16225 // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
16226 //
16227 // Redistribution and use in source and binary forms, with or without
16228 // modification, are permitted provided that the following conditions are
16229 // met:
16230 //
16231 //    * Redistributions of source code must retain the above copyright
16232 // notice, this list of conditions and the following disclaimer.
16233 //    * Redistributions in binary form must reproduce the above
16234 // copyright notice, this list of conditions and the following disclaimer
16235 // in the documentation and/or other materials provided with the
16236 // distribution.
16237 //    * Neither the name of Google Inc. nor the name Chromium Embedded
16238 // Framework nor the names of its contributors may be used to endorse
16239 // or promote products derived from this software without specific prior
16240 // written permission.
16241 //
16242 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
16243 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
16244 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
16245 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
16246 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
16247 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
16248 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
16249 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
16250 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
16251 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
16252 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
16253 //
16254 // ---------------------------------------------------------------------------
16255 //
16256 // This file was generated by the CEF translator tool and should not edited
16257 // by hand. See the translator.README.txt file in the tools directory for
16258 // more information.
16259 //
16260 // $hash=a61a639c7e53ecd9481eae363bac557055f0442e$
16261 //
16262 
16263 extern (C):
16264 
16265 ///
16266 /// Launches the process specified via |command_line|. Returns true (1) upon
16267 /// success. Must be called on the browser process TID_PROCESS_LAUNCHER thread.
16268 ///
16269 /// Unix-specific notes:
16270 /// - All file descriptors open in the parent process will be closed in the
16271 ///   child process except for stdin, stdout, and stderr.
16272 /// - If the first argument on the command line does not contain a slash, PATH
16273 ///   will be searched. (See man execvp.)
16274 ///
16275 int cef_launch_process (cef_command_line_t* command_line);
16276 
16277 // CEF_INCLUDE_CAPI_CEF_PROCESS_UTIL_CAPI_H_
16278 // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
16279 //
16280 // Redistribution and use in source and binary forms, with or without
16281 // modification, are permitted provided that the following conditions are
16282 // met:
16283 //
16284 //    * Redistributions of source code must retain the above copyright
16285 // notice, this list of conditions and the following disclaimer.
16286 //    * Redistributions in binary form must reproduce the above
16287 // copyright notice, this list of conditions and the following disclaimer
16288 // in the documentation and/or other materials provided with the
16289 // distribution.
16290 //    * Neither the name of Google Inc. nor the name Chromium Embedded
16291 // Framework nor the names of its contributors may be used to endorse
16292 // or promote products derived from this software without specific prior
16293 // written permission.
16294 //
16295 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
16296 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
16297 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
16298 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
16299 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
16300 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
16301 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
16302 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
16303 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
16304 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
16305 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
16306 //
16307 // ---------------------------------------------------------------------------
16308 //
16309 // This file was generated by the CEF translator tool and should not edited
16310 // by hand. See the translator.README.txt file in the tools directory for
16311 // more information.
16312 //
16313 // $hash=c53a67bbf1497a51766bf03040714b5edb2117d5$
16314 //
16315 
16316 extern (C):
16317 
16318 ///
16319 /// Generic callback structure used for managing the lifespan of a registration.
16320 ///
16321 struct cef_registration_t
16322 {
16323     ///
16324     /// Base structure.
16325     ///
16326 
16327     // CEF_INCLUDE_CAPI_CEF_REGISTRATION_CAPI_H_
16328 
16329     cef_base_ref_counted_t base;
16330 }
16331 
16332 
16333 // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
16334 //
16335 // Redistribution and use in source and binary forms, with or without
16336 // modification, are permitted provided that the following conditions are
16337 // met:
16338 //
16339 //    * Redistributions of source code must retain the above copyright
16340 // notice, this list of conditions and the following disclaimer.
16341 //    * Redistributions in binary form must reproduce the above
16342 // copyright notice, this list of conditions and the following disclaimer
16343 // in the documentation and/or other materials provided with the
16344 // distribution.
16345 //    * Neither the name of Google Inc. nor the name Chromium Embedded
16346 // Framework nor the names of its contributors may be used to endorse
16347 // or promote products derived from this software without specific prior
16348 // written permission.
16349 //
16350 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
16351 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
16352 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
16353 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
16354 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
16355 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
16356 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
16357 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
16358 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
16359 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
16360 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
16361 //
16362 // ---------------------------------------------------------------------------
16363 //
16364 // This file was generated by the CEF translator tool and should not edited
16365 // by hand. See the translator.README.txt file in the tools directory for
16366 // more information.
16367 //
16368 // $hash=5151b6ea3c06e46a75f2cd7679044a2891063d29$
16369 //
16370 
16371 extern (C):
16372 
16373 ///
16374 /// Implement this structure to handle events when window rendering is disabled.
16375 /// The functions of this structure will be called on the UI thread.
16376 ///
16377 struct cef_render_handler_t
16378 {
16379     ///
16380     /// Base structure.
16381     ///
16382 
16383     ///
16384     /// Return the handler for accessibility notifications. If no handler is
16385     /// provided the default implementation will be used.
16386     ///
16387 
16388     ///
16389     /// Called to retrieve the root window rectangle in screen DIP coordinates.
16390     /// Return true (1) if the rectangle was provided. If this function returns
16391     /// false (0) the rectangle from GetViewRect will be used.
16392 
16393     cef_base_ref_counted_t base;
16394     extern(System) cef_accessibility_handler_t* function (
16395         cef_render_handler_t* self) nothrow get_accessibility_handler;
16396     ///
16397     extern(System) int function (
16398         cef_render_handler_t* self,
16399         cef_browser_t* browser,
16400         cef_rect_t* rect) nothrow get_root_screen_rect;
16401 
16402     ///
16403     /// Called to retrieve the view rectangle in screen DIP coordinates. This
16404     /// function must always provide a non-NULL rectangle.
16405     ///
16406     extern(System) void function (
16407         cef_render_handler_t* self,
16408         cef_browser_t* browser,
16409         cef_rect_t* rect) nothrow get_view_rect;
16410 
16411     ///
16412     /// Called to retrieve the translation from view DIP coordinates to screen
16413     /// coordinates. Windows/Linux should provide screen device (pixel)
16414     /// coordinates and MacOS should provide screen DIP coordinates. Return true
16415     /// (1) if the requested coordinates were provided.
16416     ///
16417     extern(System) int function (
16418         cef_render_handler_t* self,
16419         cef_browser_t* browser,
16420         int viewX,
16421         int viewY,
16422         int* screenX,
16423         int* screenY) nothrow get_screen_point;
16424 
16425     ///
16426     /// Called to allow the client to fill in the CefScreenInfo object with
16427     /// appropriate values. Return true (1) if the |screen_info| structure has
16428     /// been modified.
16429     ///
16430     /// If the screen info rectangle is left NULL the rectangle from GetViewRect
16431     /// will be used. If the rectangle is still NULL or invalid popups may not be
16432     /// drawn correctly.
16433     ///
16434     extern(System) int function (
16435         cef_render_handler_t* self,
16436         cef_browser_t* browser,
16437         cef_screen_info_t* screen_info) nothrow get_screen_info;
16438 
16439     ///
16440     /// Called when the browser wants to show or hide the popup widget. The popup
16441     /// should be shown if |show| is true (1) and hidden if |show| is false (0).
16442     ///
16443     extern(System) void function (
16444         cef_render_handler_t* self,
16445         cef_browser_t* browser,
16446         int show) nothrow on_popup_show;
16447 
16448     ///
16449     /// Called when the browser wants to move or resize the popup widget. |rect|
16450     /// contains the new location and size in view coordinates.
16451     ///
16452     extern(System) void function (
16453         cef_render_handler_t* self,
16454         cef_browser_t* browser,
16455         const(cef_rect_t)* rect) nothrow on_popup_size;
16456 
16457     ///
16458     /// Called when an element should be painted. Pixel values passed to this
16459     /// function are scaled relative to view coordinates based on the value of
16460     /// CefScreenInfo.device_scale_factor returned from GetScreenInfo. |type|
16461     /// indicates whether the element is the view or the popup widget. |buffer|
16462     /// contains the pixel data for the whole image. |dirtyRects| contains the set
16463     /// of rectangles in pixel coordinates that need to be repainted. |buffer|
16464     /// will be |width|*|height|*4 bytes in size and represents a BGRA image with
16465     /// an upper-left origin. This function is only called when
16466     /// cef_window_tInfo::shared_texture_enabled is set to false (0).
16467     ///
16468     extern(System) void function (
16469         cef_render_handler_t* self,
16470         cef_browser_t* browser,
16471         cef_paint_element_type_t type,
16472         size_t dirtyRectsCount,
16473         const(cef_rect_t)* dirtyRects,
16474         const(void)* buffer,
16475         int width,
16476         int height) nothrow on_paint;
16477 
16478     ///
16479     /// Called when an element has been rendered to the shared texture handle.
16480     /// |type| indicates whether the element is the view or the popup widget.
16481     /// |dirtyRects| contains the set of rectangles in pixel coordinates that need
16482     /// to be repainted. |info| contains the shared handle; on Windows it is a
16483     /// HANDLE to a texture that can be opened with D3D11 OpenSharedResource, on
16484     /// macOS it is an IOSurface pointer that can be opened with Metal or OpenGL,
16485     /// and on Linux it contains several planes, each with an fd to the underlying
16486     /// system native buffer.
16487     ///
16488     /// The underlying implementation uses a pool to deliver frames. As a result,
16489     /// the handle may differ every frame depending on how many frames are in-
16490     /// progress. The handle's resource cannot be cached and cannot be accessed
16491     /// outside of this callback. It should be reopened each time this callback is
16492     /// executed and the contents should be copied to a texture owned by the
16493     /// client application. The contents of |info| will be released back to the
16494     /// pool after this callback returns.
16495     ///
16496     extern(System) void function (
16497         cef_render_handler_t* self,
16498         cef_browser_t* browser,
16499         cef_paint_element_type_t type,
16500         size_t dirtyRectsCount,
16501         const(cef_rect_t)* dirtyRects,
16502         const(cef_accelerated_paint_info_t)* info) nothrow on_accelerated_paint;
16503 
16504     ///
16505     /// Called to retrieve the size of the touch handle for the specified
16506     /// |orientation|.
16507     ///
16508     extern(System) void function (
16509         cef_render_handler_t* self,
16510         cef_browser_t* browser,
16511         cef_horizontal_alignment_t orientation,
16512         cef_size_t* size) nothrow get_touch_handle_size;
16513 
16514     ///
16515     /// Called when touch handle state is updated. The client is responsible for
16516     /// rendering the touch handles.
16517     ///
16518     extern(System) void function (
16519         cef_render_handler_t* self,
16520         cef_browser_t* browser,
16521         const(cef_touch_handle_state_t)* state) nothrow on_touch_handle_state_changed;
16522 
16523     ///
16524     /// Called when the user starts dragging content in the web view. Contextual
16525     /// information about the dragged content is supplied by |drag_data|. (|x|,
16526     /// |y|) is the drag start location in screen coordinates. OS APIs that run a
16527     /// system message loop may be used within the StartDragging call.
16528     ///
16529     /// Return false (0) to abort the drag operation. Don't call any of
16530     /// cef_browser_host_t::DragSource*Ended* functions after returning false (0).
16531     ///
16532     /// Return true (1) to handle the drag operation. Call
16533     /// cef_browser_host_t::DragSourceEndedAt and DragSourceSystemDragEnded either
16534     /// synchronously or asynchronously to inform the web view that the drag
16535     /// operation has ended.
16536     ///
16537     extern(System) int function (
16538         cef_render_handler_t* self,
16539         cef_browser_t* browser,
16540         cef_drag_data_t* drag_data,
16541         cef_drag_operations_mask_t allowed_ops,
16542         int x,
16543         int y) nothrow start_dragging;
16544 
16545     ///
16546     /// Called when the web view wants to update the mouse cursor during a drag &
16547     /// drop operation. |operation| describes the allowed operation (none, move,
16548     /// copy, link).
16549     ///
16550     extern(System) void function (
16551         cef_render_handler_t* self,
16552         cef_browser_t* browser,
16553         cef_drag_operations_mask_t operation) nothrow update_drag_cursor;
16554 
16555     ///
16556     /// Called when the scroll offset has changed.
16557     ///
16558     extern(System) void function (
16559         cef_render_handler_t* self,
16560         cef_browser_t* browser,
16561         double x,
16562         double y) nothrow on_scroll_offset_changed;
16563 
16564     ///
16565     /// Called when the IME composition range has changed. |selected_range| is the
16566     /// range of characters that have been selected. |character_bounds| is the
16567     /// bounds of each character in view coordinates.
16568     ///
16569     extern(System) void function (
16570         cef_render_handler_t* self,
16571         cef_browser_t* browser,
16572         const(cef_range_t)* selected_range,
16573         size_t character_boundsCount,
16574         const(cef_rect_t)* character_bounds) nothrow on_ime_composition_range_changed;
16575 
16576     ///
16577     /// Called when text selection has changed for the specified |browser|.
16578     /// |selected_text| is the currently selected text and |selected_range| is the
16579     /// character range.
16580     ///
16581     extern(System) void function (
16582         cef_render_handler_t* self,
16583         cef_browser_t* browser,
16584         const(cef_string_t)* selected_text,
16585         const(cef_range_t)* selected_range) nothrow on_text_selection_changed;
16586 
16587     ///
16588     /// Called when an on-screen keyboard should be shown or hidden for the
16589     /// specified |browser|. |input_mode| specifies what kind of keyboard should
16590     /// be opened. If |input_mode| is CEF_TEXT_INPUT_MODE_NONE, any existing
16591     /// keyboard for this browser should be hidden.
16592     ///
16593     extern(System) void function (
16594         cef_render_handler_t* self,
16595         cef_browser_t* browser,
16596         cef_text_input_mode_t input_mode) nothrow on_virtual_keyboard_requested;
16597 }
16598 
16599 
16600 
16601 // CEF_INCLUDE_CAPI_CEF_RENDER_HANDLER_CAPI_H_
16602 // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
16603 //
16604 // Redistribution and use in source and binary forms, with or without
16605 // modification, are permitted provided that the following conditions are
16606 // met:
16607 //
16608 //    * Redistributions of source code must retain the above copyright
16609 // notice, this list of conditions and the following disclaimer.
16610 //    * Redistributions in binary form must reproduce the above
16611 // copyright notice, this list of conditions and the following disclaimer
16612 // in the documentation and/or other materials provided with the
16613 // distribution.
16614 //    * Neither the name of Google Inc. nor the name Chromium Embedded
16615 // Framework nor the names of its contributors may be used to endorse
16616 // or promote products derived from this software without specific prior
16617 // written permission.
16618 //
16619 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
16620 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
16621 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
16622 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
16623 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
16624 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
16625 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
16626 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
16627 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
16628 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
16629 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
16630 //
16631 // ---------------------------------------------------------------------------
16632 //
16633 // This file was generated by the CEF translator tool and should not edited
16634 // by hand. See the translator.README.txt file in the tools directory for
16635 // more information.
16636 //
16637 // $hash=6e2fccb5a8e49918d723f6c5223062cf98b0f9de$
16638 //
16639 
16640 extern (C):
16641 
16642 ///
16643 /// Structure used to implement render process callbacks. The functions of this
16644 /// structure will be called on the render process main thread (TID_RENDERER)
16645 /// unless otherwise indicated.
16646 ///
16647 struct cef_render_process_handler_t
16648 {
16649     ///
16650     /// Base structure.
16651     ///
16652 
16653     ///
16654     /// Called after WebKit has been initialized.
16655     ///
16656 
16657     ///
16658     /// Called after a browser has been created. When browsing cross-origin a new
16659     /// browser will be created before the old browser with the same identifier is
16660 
16661     cef_base_ref_counted_t base;
16662     extern(System) void function (cef_render_process_handler_t* self) nothrow on_web_kit_initialized;
16663     /// destroyed. |extra_info| is an optional read-only value originating from
16664     /// cef_browser_host_t::cef_browser_host_create_browser(),
16665     /// cef_browser_host_t::cef_browser_host_create_browser_sync(),
16666     /// cef_life_span_handler_t::on_before_popup() or
16667     /// cef_browser_view_t::cef_browser_view_create().
16668     ///
16669     extern(System) void function (
16670         cef_render_process_handler_t* self,
16671         cef_browser_t* browser,
16672         cef_dictionary_value_t* extra_info) nothrow on_browser_created;
16673 
16674     ///
16675     /// Called before a browser is destroyed.
16676     ///
16677     extern(System) void function (
16678         cef_render_process_handler_t* self,
16679         cef_browser_t* browser) nothrow on_browser_destroyed;
16680 
16681     ///
16682     /// Return the handler for browser load status events.
16683     ///
16684     extern(System) cef_load_handler_t* function (
16685         cef_render_process_handler_t* self) nothrow get_load_handler;
16686 
16687     ///
16688     /// Called immediately after the V8 context for a frame has been created. To
16689     /// retrieve the JavaScript 'window' object use the
16690     /// cef_v8context_t::get_global() function. V8 handles can only be accessed
16691     /// from the thread on which they are created. A task runner for posting tasks
16692     /// on the associated thread can be retrieved via the
16693     /// cef_v8context_t::get_task_runner() function.
16694     ///
16695     extern(System) void function (
16696         cef_render_process_handler_t* self,
16697         cef_browser_t* browser,
16698         cef_frame_t* frame,
16699         cef_v8context_t* context) nothrow on_context_created;
16700 
16701     ///
16702     /// Called immediately before the V8 context for a frame is released. No
16703     /// references to the context should be kept after this function is called.
16704     ///
16705     extern(System) void function (
16706         cef_render_process_handler_t* self,
16707         cef_browser_t* browser,
16708         cef_frame_t* frame,
16709         cef_v8context_t* context) nothrow on_context_released;
16710 
16711     ///
16712     /// Called for global uncaught exceptions in a frame. Execution of this
16713     /// callback is disabled by default. To enable set
16714     /// cef_settings_t.uncaught_exception_stack_size > 0.
16715     ///
16716     extern(System) void function (
16717         cef_render_process_handler_t* self,
16718         cef_browser_t* browser,
16719         cef_frame_t* frame,
16720         cef_v8context_t* context,
16721         cef_v8exception_t* exception,
16722         cef_v8stack_trace_t* stackTrace) nothrow on_uncaught_exception;
16723 
16724     ///
16725     /// Called when a new node in the the browser gets focus. The |node| value may
16726     /// be NULL if no specific node has gained focus. The node object passed to
16727     /// this function represents a snapshot of the DOM at the time this function
16728     /// is executed. DOM objects are only valid for the scope of this function. Do
16729     /// not keep references to or attempt to access any DOM objects outside the
16730     /// scope of this function.
16731     ///
16732     extern(System) void function (
16733         cef_render_process_handler_t* self,
16734         cef_browser_t* browser,
16735         cef_frame_t* frame,
16736         cef_domnode_t* node) nothrow on_focused_node_changed;
16737 
16738     ///
16739     /// Called when a new message is received from a different process. Return
16740     /// true (1) if the message was handled or false (0) otherwise. It is safe to
16741     /// keep a reference to |message| outside of this callback.
16742     ///
16743     extern(System) int function (
16744         cef_render_process_handler_t* self,
16745         cef_browser_t* browser,
16746         cef_frame_t* frame,
16747         cef_process_id_t source_process,
16748         cef_process_message_t* message) nothrow on_process_message_received;
16749 }
16750 
16751 
16752 
16753 // CEF_INCLUDE_CAPI_CEF_RENDER_PROCESS_HANDLER_CAPI_H_
16754 // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
16755 //
16756 // Redistribution and use in source and binary forms, with or without
16757 // modification, are permitted provided that the following conditions are
16758 // met:
16759 //
16760 //    * Redistributions of source code must retain the above copyright
16761 // notice, this list of conditions and the following disclaimer.
16762 //    * Redistributions in binary form must reproduce the above
16763 // copyright notice, this list of conditions and the following disclaimer
16764 // in the documentation and/or other materials provided with the
16765 // distribution.
16766 //    * Neither the name of Google Inc. nor the name Chromium Embedded
16767 // Framework nor the names of its contributors may be used to endorse
16768 // or promote products derived from this software without specific prior
16769 // written permission.
16770 //
16771 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
16772 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
16773 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
16774 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
16775 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
16776 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
16777 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
16778 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
16779 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
16780 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
16781 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
16782 //
16783 // ---------------------------------------------------------------------------
16784 //
16785 // This file was generated by the CEF translator tool and should not edited
16786 // by hand. See the translator.README.txt file in the tools directory for
16787 // more information.
16788 //
16789 // $hash=14ce483864835eca476d08d39ed4236fbd1a874c$
16790 //
16791 
16792 extern (C):
16793 
16794 ///
16795 /// Structure used to represent a web request. The functions of this structure
16796 /// may be called on any thread.
16797 ///
16798 struct cef_request_t
16799 {
16800     ///
16801     /// Base structure.
16802     ///
16803 
16804     ///
16805     /// Returns true (1) if this object is read-only.
16806     ///
16807 
16808     ///
16809     /// Get the fully qualified URL.
16810     ///
16811     // The resulting string must be freed by calling cef_string_userfree_free().
16812 
16813     ///
16814     /// Set the fully qualified URL.
16815     ///
16816 
16817     ///
16818     /// Get the request function type. The value will default to POST if post data
16819     /// is provided and GET otherwise.
16820     ///
16821     // The resulting string must be freed by calling cef_string_userfree_free().
16822 
16823     cef_base_ref_counted_t base;
16824     extern(System) int function (cef_request_t* self) nothrow is_read_only;
16825     extern(System) cef_string_userfree_t function (cef_request_t* self) nothrow get_url;
16826     extern(System) void function (cef_request_t* self, const(cef_string_t)* url) nothrow set_url;
16827     extern(System) cef_string_userfree_t function (cef_request_t* self) nothrow get_method;
16828 
16829     ///
16830     /// Set the request function type.
16831     ///
16832     extern(System) void function (
16833         cef_request_t* self,
16834         const(cef_string_t)* method) nothrow set_method;
16835 
16836     ///
16837     /// Set the referrer URL and policy. If non-NULL the referrer URL must be
16838     /// fully qualified with an HTTP or HTTPS scheme component. Any username,
16839     /// password or ref component will be removed.
16840     ///
16841     extern(System) void function (
16842         cef_request_t* self,
16843         const(cef_string_t)* referrer_url,
16844         cef_referrer_policy_t policy) nothrow set_referrer;
16845 
16846     ///
16847     /// Get the referrer URL.
16848     ///
16849     // The resulting string must be freed by calling cef_string_userfree_free().
16850     extern(System) cef_string_userfree_t function (cef_request_t* self) nothrow get_referrer_url;
16851 
16852     ///
16853     /// Get the referrer policy.
16854     ///
16855     extern(System) cef_referrer_policy_t function (cef_request_t* self) nothrow get_referrer_policy;
16856 
16857     ///
16858     /// Get the post data.
16859     ///
16860     extern(System) cef_post_data_t* function (cef_request_t* self) nothrow get_post_data;
16861 
16862     ///
16863     /// Set the post data.
16864     ///
16865     extern(System) void function (
16866         cef_request_t* self,
16867         cef_post_data_t* postData) nothrow set_post_data;
16868 
16869     ///
16870     /// Get the header values. Will not include the Referer value if any.
16871     ///
16872     extern(System) void function (
16873         cef_request_t* self,
16874         cef_string_multimap_t headerMap) nothrow get_header_map;
16875 
16876     ///
16877     /// Set the header values. If a Referer value exists in the header map it will
16878     /// be removed and ignored.
16879     ///
16880     extern(System) void function (
16881         cef_request_t* self,
16882         cef_string_multimap_t headerMap) nothrow set_header_map;
16883 
16884     ///
16885     /// Returns the first header value for |name| or an NULL string if not found.
16886     /// Will not return the Referer value if any. Use GetHeaderMap instead if
16887     /// |name| might have multiple values.
16888     ///
16889     // The resulting string must be freed by calling cef_string_userfree_free().
16890     extern(System) cef_string_userfree_t function (
16891         cef_request_t* self,
16892         const(cef_string_t)* name) nothrow get_header_by_name;
16893 
16894     ///
16895     /// Set the header |name| to |value|. If |overwrite| is true (1) any existing
16896     /// values will be replaced with the new value. If |overwrite| is false (0)
16897     /// any existing values will not be overwritten. The Referer value cannot be
16898     /// set using this function.
16899     ///
16900     extern(System) void function (
16901         cef_request_t* self,
16902         const(cef_string_t)* name,
16903         const(cef_string_t)* value,
16904         int overwrite) nothrow set_header_by_name;
16905 
16906     ///
16907     /// Set all values at one time.
16908     ///
16909     extern(System) void function (
16910         cef_request_t* self,
16911         const(cef_string_t)* url,
16912         const(cef_string_t)* method,
16913         cef_post_data_t* postData,
16914         cef_string_multimap_t headerMap) nothrow set;
16915 
16916     ///
16917     /// Get the flags used in combination with cef_urlrequest_t. See
16918     /// cef_urlrequest_flags_t for supported values.
16919     ///
16920     extern(System) int function (cef_request_t* self) nothrow get_flags;
16921 
16922     ///
16923     /// Set the flags used in combination with cef_urlrequest_t.  See
16924     /// cef_urlrequest_flags_t for supported values.
16925     ///
16926     extern(System) void function (cef_request_t* self, int flags) nothrow set_flags;
16927 
16928     ///
16929     /// Get the URL to the first party for cookies used in combination with
16930     /// cef_urlrequest_t.
16931     ///
16932     // The resulting string must be freed by calling cef_string_userfree_free().
16933     extern(System) cef_string_userfree_t function (
16934         cef_request_t* self) nothrow get_first_party_for_cookies;
16935 
16936     ///
16937     /// Set the URL to the first party for cookies used in combination with
16938     /// cef_urlrequest_t.
16939     ///
16940     extern(System) void function (
16941         cef_request_t* self,
16942         const(cef_string_t)* url) nothrow set_first_party_for_cookies;
16943 
16944     ///
16945     /// Get the resource type for this request. Only available in the browser
16946     /// process.
16947     ///
16948     extern(System) cef_resource_type_t function (cef_request_t* self) nothrow get_resource_type;
16949 
16950     ///
16951     /// Get the transition type for this request. Only available in the browser
16952     /// process and only applies to requests that represent a main frame or sub-
16953     /// frame navigation.
16954     ///
16955     extern(System) cef_transition_type_t function (cef_request_t* self) nothrow get_transition_type;
16956 
16957     ///
16958     /// Returns the globally unique identifier for this request or 0 if not
16959     /// specified. Can be used by cef_resource_request_handler_t implementations
16960     /// in the browser process to track a single request across multiple
16961     /// callbacks.
16962     ///
16963     extern(System) ulong function (cef_request_t* self) nothrow get_identifier;
16964 }
16965 
16966 
16967 
16968 ///
16969 /// Create a new cef_request_t object.
16970 ///
16971 cef_request_t* cef_request_create ();
16972 
16973 ///
16974 /// Structure used to represent post data for a web request. The functions of
16975 /// this structure may be called on any thread.
16976 ///
16977 struct cef_post_data_t
16978 {
16979     ///
16980     /// Base structure.
16981     ///
16982     cef_base_ref_counted_t base;
16983 
16984     ///
16985     /// Returns true (1) if this object is read-only.
16986     ///
16987     extern(System) int function (cef_post_data_t* self) nothrow is_read_only;
16988 
16989     ///
16990     /// Returns true (1) if the underlying POST data includes elements that are
16991     /// not represented by this cef_post_data_t object (for example, multi-part
16992     /// file upload data). Modifying cef_post_data_t objects with excluded
16993     /// elements may result in the request failing.
16994     ///
16995     extern(System) int function (cef_post_data_t* self) nothrow has_excluded_elements;
16996 
16997     ///
16998     /// Returns the number of existing post data elements.
16999     ///
17000     extern(System) size_t function (cef_post_data_t* self) nothrow get_element_count;
17001 
17002     ///
17003     /// Retrieve the post data elements.
17004     ///
17005     extern(System) void function (
17006         cef_post_data_t* self,
17007         size_t* elementsCount,
17008         cef_post_data_element_t** elements) nothrow get_elements;
17009 
17010     ///
17011     /// Remove the specified post data element.  Returns true (1) if the removal
17012     /// succeeds.
17013     ///
17014     extern(System) int function (
17015         cef_post_data_t* self,
17016         cef_post_data_element_t* element) nothrow remove_element;
17017 
17018     ///
17019     /// Add the specified post data element.  Returns true (1) if the add
17020     /// succeeds.
17021     ///
17022     extern(System) int function (
17023         cef_post_data_t* self,
17024         cef_post_data_element_t* element) nothrow add_element;
17025 
17026     ///
17027     /// Remove all existing post data elements.
17028     ///
17029     extern(System) void function (cef_post_data_t* self) nothrow remove_elements;
17030 }
17031 
17032 
17033 
17034 ///
17035 /// Create a new cef_post_data_t object.
17036 ///
17037 cef_post_data_t* cef_post_data_create ();
17038 
17039 ///
17040 /// Structure used to represent a single element in the request post data. The
17041 /// functions of this structure may be called on any thread.
17042 ///
17043 struct cef_post_data_element_t
17044 {
17045     ///
17046     /// Base structure.
17047     ///
17048     cef_base_ref_counted_t base;
17049 
17050     ///
17051     /// Returns true (1) if this object is read-only.
17052     ///
17053     extern(System) int function (cef_post_data_element_t* self) nothrow is_read_only;
17054 
17055     ///
17056     /// Remove all contents from the post data element.
17057     ///
17058     extern(System) void function (cef_post_data_element_t* self) nothrow set_to_empty;
17059 
17060     ///
17061     /// The post data element will represent a file.
17062     ///
17063     extern(System) void function (
17064         cef_post_data_element_t* self,
17065         const(cef_string_t)* fileName) nothrow set_to_file;
17066 
17067     ///
17068     /// The post data element will represent bytes.  The bytes passed in will be
17069     /// copied.
17070     ///
17071     extern(System) void function (
17072         cef_post_data_element_t* self,
17073         size_t size,
17074         const(void)* bytes) nothrow set_to_bytes;
17075 
17076     ///
17077     /// Return the type of this post data element.
17078     ///
17079     extern(System) cef_postdataelement_type_t function (
17080         cef_post_data_element_t* self) nothrow get_type;
17081 
17082     ///
17083     /// Return the file name.
17084     ///
17085     // The resulting string must be freed by calling cef_string_userfree_free().
17086     extern(System) cef_string_userfree_t function (cef_post_data_element_t* self) nothrow get_file;
17087 
17088     ///
17089     /// Return the number of bytes.
17090     ///
17091     extern(System) size_t function (cef_post_data_element_t* self) nothrow get_bytes_count;
17092 
17093     ///
17094     /// Read up to |size| bytes into |bytes| and return the number of bytes
17095     /// actually read.
17096     ///
17097     extern(System) size_t function (
17098         cef_post_data_element_t* self,
17099         size_t size,
17100         void* bytes) nothrow get_bytes;
17101 }
17102 
17103 
17104 
17105 ///
17106 /// Create a new cef_post_data_element_t object.
17107 ///
17108 cef_post_data_element_t* cef_post_data_element_create ();
17109 
17110 // CEF_INCLUDE_CAPI_CEF_REQUEST_CAPI_H_
17111 // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
17112 //
17113 // Redistribution and use in source and binary forms, with or without
17114 // modification, are permitted provided that the following conditions are
17115 // met:
17116 //
17117 //    * Redistributions of source code must retain the above copyright
17118 // notice, this list of conditions and the following disclaimer.
17119 //    * Redistributions in binary form must reproduce the above
17120 // copyright notice, this list of conditions and the following disclaimer
17121 // in the documentation and/or other materials provided with the
17122 // distribution.
17123 //    * Neither the name of Google Inc. nor the name Chromium Embedded
17124 // Framework nor the names of its contributors may be used to endorse
17125 // or promote products derived from this software without specific prior
17126 // written permission.
17127 //
17128 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17129 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
17130 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
17131 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
17132 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
17133 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
17134 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
17135 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
17136 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
17137 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
17138 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
17139 //
17140 // ---------------------------------------------------------------------------
17141 //
17142 // This file was generated by the CEF translator tool and should not edited
17143 // by hand. See the translator.README.txt file in the tools directory for
17144 // more information.
17145 //
17146 // $hash=2c496139ca9a59303b1493ee93d2c3ae96a956c0$
17147 //
17148 
17149 extern (C):
17150 
17151 
17152 
17153 
17154 ///
17155 /// Callback structure for cef_request_context_t::ResolveHost.
17156 ///
17157 struct cef_resolve_callback_t
17158 {
17159     ///
17160     /// Base structure.
17161     ///
17162 
17163     ///
17164     /// Called on the UI thread after the ResolveHost request has completed.
17165     /// |result| will be the result code. |resolved_ips| will be the list of
17166     /// resolved IP addresses or NULL if the resolution failed.
17167     ///
17168 
17169     cef_base_ref_counted_t base;
17170     extern(System) void function (
17171         cef_resolve_callback_t* self,
17172         cef_errorcode_t result,
17173         cef_string_list_t resolved_ips) nothrow on_resolve_completed;
17174 }
17175 
17176  ///
17177 /// A request context provides request handling for a set of related browser or
17178 /// URL request objects. A request context can be specified when creating a new
17179 /// browser via the cef_browser_host_t static factory functions or when creating
17180 /// a new URL request via the cef_urlrequest_t static factory functions. Browser
17181 /// objects with different request contexts will never be hosted in the same
17182 /// render process. Browser objects with the same request context may or may not
17183 /// be hosted in the same render process depending on the process model. Browser
17184 /// objects created indirectly via the JavaScript window.open function or
17185 /// targeted links will share the same render process and the same request
17186 /// context as the source browser. When running in single-process mode there is
17187 /// only a single render process (the main process) and so all browsers created
17188 /// in single-process mode will share the same request context. This will be the
17189 /// first request context passed into a cef_browser_host_t static factory
17190 /// function and all other request context objects will be ignored.
17191 ///
17192 struct cef_request_context_t
17193 {
17194     ///
17195     /// Base structure.
17196     ///
17197 
17198     ///
17199     /// Returns true (1) if this object is pointing to the same context as |that|
17200     /// object.
17201     ///
17202 
17203     ///
17204     /// Returns true (1) if this object is sharing the same storage as |that|
17205     /// object.
17206     ///
17207 
17208     ///
17209     /// Returns true (1) if this object is the global context. The global context
17210     /// is used by default when creating a browser or URL request with a NULL
17211     /// context argument.
17212     ///
17213 
17214     ///
17215     /// Returns the handler for this context if any.
17216     ///
17217 
17218     ///
17219     /// Returns the cache path for this object. If NULL an "incognito mode" in-
17220     /// memory cache is being used.
17221     ///
17222     // The resulting string must be freed by calling cef_string_userfree_free().
17223 
17224     ///
17225     /// Returns the cookie manager for this object. If |callback| is non-NULL it
17226     /// will be executed asnychronously on the UI thread after the manager's
17227     /// storage has been initialized.
17228     ///
17229 
17230     ///
17231     /// Register a scheme handler factory for the specified |scheme_name| and
17232     /// optional |domain_name|. An NULL |domain_name| value for a standard scheme
17233 
17234     cef_preference_manager_t base;
17235     extern(System) int function (
17236         cef_request_context_t* self,
17237         cef_request_context_t* other) nothrow is_same;
17238     extern(System) int function (
17239         cef_request_context_t* self,
17240         cef_request_context_t* other) nothrow is_sharing_with;
17241     extern(System) int function (cef_request_context_t* self) nothrow is_global;
17242     extern(System) cef_request_context_handler_t* function (
17243         cef_request_context_t* self) nothrow get_handler;
17244     extern(System) cef_string_userfree_t function (
17245         cef_request_context_t* self) nothrow get_cache_path;
17246     extern(System) cef_cookie_manager_t* function (
17247         cef_request_context_t* self,
17248         cef_completion_callback_t* callback) nothrow get_cookie_manager;
17249     /// will cause the factory to match all domain names. The |domain_name| value
17250     /// will be ignored for non-standard schemes. If |scheme_name| is a built-in
17251     /// scheme and no handler is returned by |factory| then the built-in scheme
17252     /// handler factory will be called. If |scheme_name| is a custom scheme then
17253     /// you must also implement the cef_app_t::on_register_custom_schemes()
17254     /// function in all processes. This function may be called multiple times to
17255     /// change or remove the factory that matches the specified |scheme_name| and
17256     /// optional |domain_name|. Returns false (0) if an error occurs. This
17257     /// function may be called on any thread in the browser process.
17258     ///
17259     extern(System) int function (
17260         cef_request_context_t* self,
17261         const(cef_string_t)* scheme_name,
17262         const(cef_string_t)* domain_name,
17263         cef_scheme_handler_factory_t* factory) nothrow register_scheme_handler_factory;
17264 
17265     ///
17266     /// Clear all registered scheme handler factories. Returns false (0) on error.
17267     /// This function may be called on any thread in the browser process.
17268     ///
17269     extern(System) int function (cef_request_context_t* self) nothrow clear_scheme_handler_factories;
17270 
17271     ///
17272     /// Clears all certificate exceptions that were added as part of handling
17273     /// cef_request_handler_t::on_certificate_error(). If you call this it is
17274     /// recommended that you also call close_all_connections() or you risk not
17275     /// being prompted again for server certificates if you reconnect quickly. If
17276     /// |callback| is non-NULL it will be executed on the UI thread after
17277     /// completion.
17278     ///
17279     extern(System) void function (
17280         cef_request_context_t* self,
17281         cef_completion_callback_t* callback) nothrow clear_certificate_exceptions;
17282 
17283     ///
17284     /// Clears all HTTP authentication credentials that were added as part of
17285     /// handling GetAuthCredentials. If |callback| is non-NULL it will be executed
17286     /// on the UI thread after completion.
17287     ///
17288     extern(System) void function (
17289         cef_request_context_t* self,
17290         cef_completion_callback_t* callback) nothrow clear_http_auth_credentials;
17291 
17292     ///
17293     /// Clears all active and idle connections that Chromium currently has. This
17294     /// is only recommended if you have released all other CEF objects but don't
17295     /// yet want to call cef_shutdown(). If |callback| is non-NULL it will be
17296     /// executed on the UI thread after completion.
17297     ///
17298     extern(System) void function (
17299         cef_request_context_t* self,
17300         cef_completion_callback_t* callback) nothrow close_all_connections;
17301 
17302     ///
17303     /// Attempts to resolve |origin| to a list of associated IP addresses.
17304     /// |callback| will be executed on the UI thread after completion.
17305     ///
17306     extern(System) void function (
17307         cef_request_context_t* self,
17308         const(cef_string_t)* origin,
17309         cef_resolve_callback_t* callback) nothrow resolve_host;
17310 
17311     ///
17312     /// Load an extension.
17313     ///
17314     /// If extension resources will be read from disk using the default load
17315     /// implementation then |root_directory| should be the absolute path to the
17316     /// extension resources directory and |manifest| should be NULL. If extension
17317     /// resources will be provided by the client (e.g. via cef_request_handler_t
17318     /// and/or cef_extension_handler_t) then |root_directory| should be a path
17319     /// component unique to the extension (if not absolute this will be internally
17320     /// prefixed with the PK_DIR_RESOURCES path) and |manifest| should contain the
17321     /// contents that would otherwise be read from the "manifest.json" file on
17322     /// disk.
17323     ///
17324     /// The loaded extension will be accessible in all contexts sharing the same
17325     /// storage (HasExtension returns true (1)). However, only the context on
17326     /// which this function was called is considered the loader (DidLoadExtension
17327     /// returns true (1)) and only the loader will receive
17328     /// cef_request_context_handler_t callbacks for the extension.
17329     ///
17330     /// cef_extension_handler_t::OnExtensionLoaded will be called on load success
17331     /// or cef_extension_handler_t::OnExtensionLoadFailed will be called on load
17332     /// failure.
17333     ///
17334     /// If the extension specifies a background script via the "background"
17335     /// manifest key then cef_extension_handler_t::OnBeforeBackgroundBrowser will
17336     /// be called to create the background browser. See that function for
17337     /// additional information about background scripts.
17338     ///
17339     /// For visible extension views the client application should evaluate the
17340     /// manifest to determine the correct extension URL to load and then pass that
17341     /// URL to the cef_browser_host_t::CreateBrowser* function after the extension
17342     /// has loaded. For example, the client can look for the "browser_action"
17343     /// manifest key as documented at
17344     /// https://developer.chrome.com/extensions/browserAction. Extension URLs take
17345     /// the form "chrome-extension://<extension_id>/<path>".
17346     ///
17347     /// Browsers that host extensions differ from normal browsers as follows:
17348     ///  - Can access chrome.* JavaScript APIs if allowed by the manifest. Visit
17349     ///    chrome://extensions-support for the list of extension APIs currently
17350     ///    supported by CEF.
17351     ///  - Main frame navigation to non-extension content is blocked.
17352     ///  - Pinch-zooming is disabled.
17353     ///  - CefBrowserHost::GetExtension returns the hosted extension.
17354     ///  - CefBrowserHost::IsBackgroundHost returns true for background hosts.
17355     ///
17356     /// See https://developer.chrome.com/extensions for extension implementation
17357     /// and usage documentation.
17358     ///
17359     /// WARNING: This function is deprecated and will be removed in ~M127.
17360     ///
17361     extern(System) void function (
17362         cef_request_context_t* self,
17363         const(cef_string_t)* root_directory,
17364         cef_dictionary_value_t* manifest,
17365         cef_extension_handler_t* handler) nothrow load_extension;
17366 
17367     ///
17368     /// Returns true (1) if this context was used to load the extension identified
17369     /// by |extension_id|. Other contexts sharing the same storage will also have
17370     /// access to the extension (see HasExtension). This function must be called
17371     /// on the browser process UI thread.
17372     ///
17373     /// WARNING: This function is deprecated and will be removed in ~M127.
17374     ///
17375     extern(System) int function (
17376         cef_request_context_t* self,
17377         const(cef_string_t)* extension_id) nothrow did_load_extension;
17378 
17379     ///
17380     /// Returns true (1) if this context has access to the extension identified by
17381     /// |extension_id|. This may not be the context that was used to load the
17382     /// extension (see DidLoadExtension). This function must be called on the
17383     /// browser process UI thread.
17384     ///
17385     /// WARNING: This function is deprecated and will be removed in ~M127.
17386     ///
17387     extern(System) int function (
17388         cef_request_context_t* self,
17389         const(cef_string_t)* extension_id) nothrow has_extension;
17390 
17391     ///
17392     /// Retrieve the list of all extensions that this context has access to (see
17393     /// HasExtension). |extension_ids| will be populated with the list of
17394     /// extension ID values. Returns true (1) on success. This function must be
17395     /// called on the browser process UI thread.
17396     ///
17397     /// WARNING: This function is deprecated and will be removed in ~M127.
17398     ///
17399     extern(System) int function (
17400         cef_request_context_t* self,
17401         cef_string_list_t extension_ids) nothrow get_extensions;
17402 
17403     ///
17404     /// Returns the extension matching |extension_id| or NULL if no matching
17405     /// extension is accessible in this context (see HasExtension). This function
17406     /// must be called on the browser process UI thread.
17407     ///
17408     /// WARNING: This function is deprecated and will be removed in ~M127.
17409     ///
17410     extern(System) cef_extension_t* function (
17411         cef_request_context_t* self,
17412         const(cef_string_t)* extension_id) nothrow get_extension;
17413 
17414     ///
17415     /// Returns the MediaRouter object associated with this context.  If
17416     /// |callback| is non-NULL it will be executed asnychronously on the UI thread
17417     /// after the manager's context has been initialized.
17418     ///
17419     extern(System) cef_media_router_t* function (
17420         cef_request_context_t* self,
17421         cef_completion_callback_t* callback) nothrow get_media_router;
17422 
17423     ///
17424     /// Returns the current value for |content_type| that applies for the
17425     /// specified URLs. If both URLs are NULL the default value will be returned.
17426     /// Returns nullptr if no value is configured. Must be called on the browser
17427     /// process UI thread.
17428     ///
17429     extern(System) cef_value_t* function (
17430         cef_request_context_t* self,
17431         const(cef_string_t)* requesting_url,
17432         const(cef_string_t)* top_level_url,
17433         cef_content_setting_types_t content_type) nothrow get_website_setting;
17434 
17435     ///
17436     /// Sets the current value for |content_type| for the specified URLs in the
17437     /// default scope. If both URLs are NULL, and the context is not incognito,
17438     /// the default value will be set. Pass nullptr for |value| to remove the
17439     /// default value for this content type.
17440     ///
17441     /// WARNING: Incorrect usage of this function may cause instability or
17442     /// security issues in Chromium. Make sure that you first understand the
17443     /// potential impact of any changes to |content_type| by reviewing the related
17444     /// source code in Chromium. For example, if you plan to modify
17445     /// CEF_CONTENT_SETTING_TYPE_POPUPS, first review and understand the usage of
17446     /// ContentSettingsType::POPUPS in Chromium:
17447     /// https://source.chromium.org/search?q=ContentSettingsType::POPUPS
17448     ///
17449     extern(System) void function (
17450         cef_request_context_t* self,
17451         const(cef_string_t)* requesting_url,
17452         const(cef_string_t)* top_level_url,
17453         cef_content_setting_types_t content_type,
17454         cef_value_t* value) nothrow set_website_setting;
17455 
17456     ///
17457     /// Returns the current value for |content_type| that applies for the
17458     /// specified URLs. If both URLs are NULL the default value will be returned.
17459     /// Returns CEF_CONTENT_SETTING_VALUE_DEFAULT if no value is configured. Must
17460     /// be called on the browser process UI thread.
17461     ///
17462     extern(System) cef_content_setting_values_t function (
17463         cef_request_context_t* self,
17464         const(cef_string_t)* requesting_url,
17465         const(cef_string_t)* top_level_url,
17466         cef_content_setting_types_t content_type) nothrow get_content_setting;
17467 
17468     ///
17469     /// Sets the current value for |content_type| for the specified URLs in the
17470     /// default scope. If both URLs are NULL, and the context is not incognito,
17471     /// the default value will be set. Pass CEF_CONTENT_SETTING_VALUE_DEFAULT for
17472     /// |value| to use the default value for this content type.
17473     ///
17474     /// WARNING: Incorrect usage of this function may cause instability or
17475     /// security issues in Chromium. Make sure that you first understand the
17476     /// potential impact of any changes to |content_type| by reviewing the related
17477     /// source code in Chromium. For example, if you plan to modify
17478     /// CEF_CONTENT_SETTING_TYPE_POPUPS, first review and understand the usage of
17479     /// ContentSettingsType::POPUPS in Chromium:
17480     /// https://source.chromium.org/search?q=ContentSettingsType::POPUPS
17481     ///
17482     extern(System) void function (
17483         cef_request_context_t* self,
17484         const(cef_string_t)* requesting_url,
17485         const(cef_string_t)* top_level_url,
17486         cef_content_setting_types_t content_type,
17487         cef_content_setting_values_t value) nothrow set_content_setting;
17488 
17489     ///
17490     /// Sets the Chrome color scheme for all browsers that share this request
17491     /// context. |variant| values of SYSTEM, LIGHT and DARK change the underlying
17492     /// color mode (e.g. light vs dark). Other |variant| values determine how
17493     /// |user_color| will be applied in the current color mode. If |user_color| is
17494     /// transparent (0) the default color will be used.
17495     ///
17496     extern(System) void function (
17497         cef_request_context_t* self,
17498         cef_color_variant_t variant,
17499         cef_color_t user_color) nothrow set_chrome_color_scheme;
17500 
17501     ///
17502     /// Returns the current Chrome color scheme mode (SYSTEM, LIGHT or DARK). Must
17503     /// be called on the browser process UI thread.
17504     ///
17505     extern(System) cef_color_variant_t function (
17506         cef_request_context_t* self) nothrow get_chrome_color_scheme_mode;
17507 
17508     ///
17509     /// Returns the current Chrome color scheme color, or transparent (0) for the
17510     /// default color. Must be called on the browser process UI thread.
17511     ///
17512     extern(System) cef_color_t function (
17513         cef_request_context_t* self) nothrow get_chrome_color_scheme_color;
17514 
17515     ///
17516     /// Returns the current Chrome color scheme variant. Must be called on the
17517     /// browser process UI thread.
17518     ///
17519     extern(System) cef_color_variant_t function (
17520         cef_request_context_t* self) nothrow get_chrome_color_scheme_variant;
17521 }
17522 
17523 
17524 
17525 ///
17526 /// Returns the global context object.
17527 ///
17528 cef_request_context_t* cef_request_context_get_global_context ();
17529 
17530 ///
17531 /// Creates a new context object with the specified |settings| and optional
17532 /// |handler|.
17533 ///
17534 cef_request_context_t* cef_request_context_create_context (
17535     const(cef_request_context_settings_t)* settings,
17536     cef_request_context_handler_t* handler);
17537 
17538 ///
17539 /// Creates a new context object that shares storage with |other| and uses an
17540 /// optional |handler|.
17541 ///
17542 cef_request_context_t* cef_create_context_shared (
17543     cef_request_context_t* other,
17544     cef_request_context_handler_t* handler);
17545 
17546 // CEF_INCLUDE_CAPI_CEF_REQUEST_CONTEXT_CAPI_H_
17547 // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
17548 //
17549 // Redistribution and use in source and binary forms, with or without
17550 // modification, are permitted provided that the following conditions are
17551 // met:
17552 //
17553 //    * Redistributions of source code must retain the above copyright
17554 // notice, this list of conditions and the following disclaimer.
17555 //    * Redistributions in binary form must reproduce the above
17556 // copyright notice, this list of conditions and the following disclaimer
17557 // in the documentation and/or other materials provided with the
17558 // distribution.
17559 //    * Neither the name of Google Inc. nor the name Chromium Embedded
17560 // Framework nor the names of its contributors may be used to endorse
17561 // or promote products derived from this software without specific prior
17562 // written permission.
17563 //
17564 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17565 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
17566 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
17567 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
17568 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
17569 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
17570 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
17571 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
17572 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
17573 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
17574 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
17575 //
17576 // ---------------------------------------------------------------------------
17577 //
17578 // This file was generated by the CEF translator tool and should not edited
17579 // by hand. See the translator.README.txt file in the tools directory for
17580 // more information.
17581 //
17582 // $hash=d90d816565429ad304f43490b0619af5ffa70274$
17583 //
17584 
17585 extern (C):
17586 
17587 ///
17588 /// Implement this structure to provide handler implementations. The handler
17589 /// instance will not be released until all objects related to the context have
17590 /// been destroyed.
17591 ///
17592 struct cef_request_context_handler_t
17593 {
17594     ///
17595     /// Base structure.
17596     ///
17597 
17598     ///
17599     /// Called on the browser process UI thread immediately after the request
17600     /// context has been initialized.
17601     ///
17602 
17603     ///
17604     /// Called on the browser process IO thread before a resource request is
17605 
17606     cef_base_ref_counted_t base;
17607     extern(System) void function (
17608         cef_request_context_handler_t* self,
17609         cef_request_context_t* request_context) nothrow on_request_context_initialized;
17610     /// initiated. The |browser| and |frame| values represent the source of the
17611     /// request, and may be NULL for requests originating from service workers or
17612     /// cef_urlrequest_t. |request| represents the request contents and cannot be
17613     /// modified in this callback. |is_navigation| will be true (1) if the
17614     /// resource request is a navigation. |is_download| will be true (1) if the
17615     /// resource request is a download. |request_initiator| is the origin (scheme
17616     /// + domain) of the page that initiated the request. Set
17617     /// |disable_default_handling| to true (1) to disable default handling of the
17618     /// request, in which case it will need to be handled via
17619     /// cef_resource_request_handler_t::GetResourceHandler or it will be canceled.
17620     /// To allow the resource load to proceed with default handling return NULL.
17621     /// To specify a handler for the resource return a
17622     /// cef_resource_request_handler_t object. This function will not be called if
17623     /// the client associated with |browser| returns a non-NULL value from
17624     /// cef_request_handler_t::GetResourceRequestHandler for the same request
17625     /// (identified by cef_request_t::GetIdentifier).
17626     ///
17627     extern(System) cef_resource_request_handler_t* function (
17628         cef_request_context_handler_t* self,
17629         cef_browser_t* browser,
17630         cef_frame_t* frame,
17631         cef_request_t* request,
17632         int is_navigation,
17633         int is_download,
17634         const(cef_string_t)* request_initiator,
17635         int* disable_default_handling) nothrow get_resource_request_handler;
17636 }
17637 
17638 
17639 
17640 // CEF_INCLUDE_CAPI_CEF_REQUEST_CONTEXT_HANDLER_CAPI_H_
17641 // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
17642 //
17643 // Redistribution and use in source and binary forms, with or without
17644 // modification, are permitted provided that the following conditions are
17645 // met:
17646 //
17647 //    * Redistributions of source code must retain the above copyright
17648 // notice, this list of conditions and the following disclaimer.
17649 //    * Redistributions in binary form must reproduce the above
17650 // copyright notice, this list of conditions and the following disclaimer
17651 // in the documentation and/or other materials provided with the
17652 // distribution.
17653 //    * Neither the name of Google Inc. nor the name Chromium Embedded
17654 // Framework nor the names of its contributors may be used to endorse
17655 // or promote products derived from this software without specific prior
17656 // written permission.
17657 //
17658 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17659 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
17660 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
17661 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
17662 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
17663 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
17664 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
17665 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
17666 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
17667 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
17668 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
17669 //
17670 // ---------------------------------------------------------------------------
17671 //
17672 // This file was generated by the CEF translator tool and should not edited
17673 // by hand. See the translator.README.txt file in the tools directory for
17674 // more information.
17675 //
17676 // $hash=2e8b5c5107f61e3d4c333dc02c76a9f30cd0cf83$
17677 //
17678 
17679 extern (C):
17680 
17681 ///
17682 /// Callback structure used to select a client certificate for authentication.
17683 ///
17684 struct cef_select_client_certificate_callback_t
17685 {
17686     ///
17687     /// Base structure.
17688     ///
17689 
17690     ///
17691     /// Chooses the specified certificate for client certificate authentication.
17692     /// NULL value means that no client certificate should be used.
17693     ///
17694 
17695     cef_base_ref_counted_t base;
17696     extern(System) void function (
17697         cef_select_client_certificate_callback_t* self,
17698         cef_x509certificate_t* cert) nothrow select;
17699 }
17700 
17701 
17702 ///
17703 /// Implement this structure to handle events related to browser requests. The
17704 /// functions of this structure will be called on the thread indicated.
17705 ///
17706 struct cef_request_handler_t
17707 {
17708     ///
17709     /// Base structure.
17710     ///
17711     cef_base_ref_counted_t base;
17712 
17713     ///
17714     /// Called on the UI thread before browser navigation. Return true (1) to
17715     /// cancel the navigation or false (0) to allow the navigation to proceed. The
17716     /// |request| object cannot be modified in this callback.
17717     /// cef_load_handler_t::OnLoadingStateChange will be called twice in all
17718     /// cases. If the navigation is allowed cef_load_handler_t::OnLoadStart and
17719     /// cef_load_handler_t::OnLoadEnd will be called. If the navigation is
17720     /// canceled cef_load_handler_t::OnLoadError will be called with an
17721     /// |errorCode| value of ERR_ABORTED. The |user_gesture| value will be true
17722     /// (1) if the browser navigated via explicit user gesture (e.g. clicking a
17723     /// link) or false (0) if it navigated automatically (e.g. via the
17724     /// DomContentLoaded event).
17725     ///
17726     extern(System) int function (
17727         cef_request_handler_t* self,
17728         cef_browser_t* browser,
17729         cef_frame_t* frame,
17730         cef_request_t* request,
17731         int user_gesture,
17732         int is_redirect) nothrow on_before_browse;
17733 
17734     ///
17735     /// Called on the UI thread before OnBeforeBrowse in certain limited cases
17736     /// where navigating a new or different browser might be desirable. This
17737     /// includes user-initiated navigation that might open in a special way (e.g.
17738     /// links clicked via middle-click or ctrl + left-click) and certain types of
17739     /// cross-origin navigation initiated from the renderer process (e.g.
17740     /// navigating the top-level frame to/from a file URL). The |browser| and
17741     /// |frame| values represent the source of the navigation. The
17742     /// |target_disposition| value indicates where the user intended to navigate
17743     /// the browser based on standard Chromium behaviors (e.g. current tab, new
17744     /// tab, etc). The |user_gesture| value will be true (1) if the browser
17745     /// navigated via explicit user gesture (e.g. clicking a link) or false (0) if
17746     /// it navigated automatically (e.g. via the DomContentLoaded event). Return
17747     /// true (1) to cancel the navigation or false (0) to allow the navigation to
17748     /// proceed in the source browser's top-level frame.
17749     ///
17750     extern(System) int function (
17751         cef_request_handler_t* self,
17752         cef_browser_t* browser,
17753         cef_frame_t* frame,
17754         const(cef_string_t)* target_url,
17755         cef_window_open_disposition_t target_disposition,
17756         int user_gesture) nothrow on_open_urlfrom_tab;
17757 
17758     ///
17759     /// Called on the browser process IO thread before a resource request is
17760     /// initiated. The |browser| and |frame| values represent the source of the
17761     /// request. |request| represents the request contents and cannot be modified
17762     /// in this callback. |is_navigation| will be true (1) if the resource request
17763     /// is a navigation. |is_download| will be true (1) if the resource request is
17764     /// a download. |request_initiator| is the origin (scheme + domain) of the
17765     /// page that initiated the request. Set |disable_default_handling| to true
17766     /// (1) to disable default handling of the request, in which case it will need
17767     /// to be handled via cef_resource_request_handler_t::GetResourceHandler or it
17768     /// will be canceled. To allow the resource load to proceed with default
17769     /// handling return NULL. To specify a handler for the resource return a
17770     /// cef_resource_request_handler_t object. If this callback returns NULL the
17771     /// same function will be called on the associated
17772     /// cef_request_context_handler_t, if any.
17773     ///
17774     extern(System) cef_resource_request_handler_t* function (
17775         cef_request_handler_t* self,
17776         cef_browser_t* browser,
17777         cef_frame_t* frame,
17778         cef_request_t* request,
17779         int is_navigation,
17780         int is_download,
17781         const(cef_string_t)* request_initiator,
17782         int* disable_default_handling) nothrow get_resource_request_handler;
17783 
17784     ///
17785     /// Called on the IO thread when the browser needs credentials from the user.
17786     /// |origin_url| is the origin making this authentication request. |isProxy|
17787     /// indicates whether the host is a proxy server. |host| contains the hostname
17788     /// and |port| contains the port number. |realm| is the realm of the challenge
17789     /// and may be NULL. |scheme| is the authentication scheme used, such as
17790     /// "basic" or "digest", and will be NULL if the source of the request is an
17791     /// FTP server. Return true (1) to continue the request and call
17792     /// cef_auth_callback_t::cont() either in this function or at a later time
17793     /// when the authentication information is available. Return false (0) to
17794     /// cancel the request immediately.
17795     ///
17796     extern(System) int function (
17797         cef_request_handler_t* self,
17798         cef_browser_t* browser,
17799         const(cef_string_t)* origin_url,
17800         int isProxy,
17801         const(cef_string_t)* host,
17802         int port,
17803         const(cef_string_t)* realm,
17804         const(cef_string_t)* scheme,
17805         cef_auth_callback_t* callback) nothrow get_auth_credentials;
17806 
17807     ///
17808     /// Called on the UI thread to handle requests for URLs with an invalid SSL
17809     /// certificate. Return true (1) and call cef_callback_t functions either in
17810     /// this function or at a later time to continue or cancel the request. Return
17811     /// false (0) to cancel the request immediately. If
17812     /// cef_settings_t.ignore_certificate_errors is set all invalid certificates
17813     /// will be accepted without calling this function.
17814     ///
17815     extern(System) int function (
17816         cef_request_handler_t* self,
17817         cef_browser_t* browser,
17818         cef_errorcode_t cert_error,
17819         const(cef_string_t)* request_url,
17820         cef_sslinfo_t* ssl_info,
17821         cef_callback_t* callback) nothrow on_certificate_error;
17822 
17823     ///
17824     /// Called on the UI thread when a client certificate is being requested for
17825     /// authentication. Return false (0) to use the default behavior and
17826     /// automatically select the first certificate available. Return true (1) and
17827     /// call cef_select_client_certificate_callback_t::Select either in this
17828     /// function or at a later time to select a certificate. Do not call Select or
17829     /// call it with NULL to continue without using any certificate. |isProxy|
17830     /// indicates whether the host is an HTTPS proxy or the origin server. |host|
17831     /// and |port| contains the hostname and port of the SSL server.
17832     /// |certificates| is the list of certificates to choose from; this list has
17833     /// already been pruned by Chromium so that it only contains certificates from
17834     /// issuers that the server trusts.
17835     ///
17836     extern(System) int function (
17837         cef_request_handler_t* self,
17838         cef_browser_t* browser,
17839         int isProxy,
17840         const(cef_string_t)* host,
17841         int port,
17842         size_t certificatesCount,
17843         cef_x509certificate_t** certificates,
17844         cef_select_client_certificate_callback_t* callback) nothrow on_select_client_certificate;
17845 
17846     ///
17847     /// Called on the browser process UI thread when the render view associated
17848     /// with |browser| is ready to receive/handle IPC messages in the render
17849     /// process.
17850     ///
17851     extern(System) void function (
17852         cef_request_handler_t* self,
17853         cef_browser_t* browser) nothrow on_render_view_ready;
17854 
17855     ///
17856     /// Called on the browser process UI thread when the render process is
17857     /// unresponsive as indicated by a lack of input event processing for at least
17858     /// 15 seconds. Return false (0) for the default behavior which is an
17859     /// indefinite wait with the Alloy runtime or display of the "Page
17860     /// unresponsive" dialog with the Chrome runtime. Return true (1) and don't
17861     /// execute the callback for an indefinite wait without display of the Chrome
17862     /// runtime dialog. Return true (1) and call
17863     /// cef_unresponsive_process_callback_t::Wait either in this function or at a
17864     /// later time to reset the wait timer, potentially triggering another call to
17865     /// this function if the process remains unresponsive. Return true (1) and
17866     /// call cef_unresponsive_process_callback_t:: Terminate either in this
17867     /// function or at a later time to terminate the unresponsive process,
17868     /// resulting in a call to OnRenderProcessTerminated.
17869     /// OnRenderProcessResponsive will be called if the process becomes responsive
17870     /// after this function is called. This functionality depends on the hang
17871     /// monitor which can be disabled by passing the `--disable-hang-monitor`
17872     /// command-line flag.
17873     ///
17874     extern(System) int function (
17875         cef_request_handler_t* self,
17876         cef_browser_t* browser,
17877         cef_unresponsive_process_callback_t* callback) nothrow on_render_process_unresponsive;
17878 
17879     ///
17880     /// Called on the browser process UI thread when the render process becomes
17881     /// responsive after previously being unresponsive. See documentation on
17882     /// OnRenderProcessUnresponsive.
17883     ///
17884     extern(System) void function (
17885         cef_request_handler_t* self,
17886         cef_browser_t* browser) nothrow on_render_process_responsive;
17887 
17888     ///
17889     /// Called on the browser process UI thread when the render process terminates
17890     /// unexpectedly. |status| indicates how the process terminated. |error_code|
17891     /// and |error_string| represent the error that would be displayed in Chrome's
17892     /// "Aw, Snap!" view. Possible |error_code| values include cef_resultcode_t
17893     /// non-normal exit values and platform-specific crash values (for example, a
17894     /// Posix signal or Windows hardware exception).
17895     ///
17896     extern(System) void function (
17897         cef_request_handler_t* self,
17898         cef_browser_t* browser,
17899         cef_termination_status_t status,
17900         int error_code,
17901         const(cef_string_t)* error_string) nothrow on_render_process_terminated;
17902 
17903     ///
17904     /// Called on the browser process UI thread when the window.document object of
17905     /// the main frame has been created.
17906     ///
17907     extern(System) void function (
17908         cef_request_handler_t* self,
17909         cef_browser_t* browser) nothrow on_document_available_in_main_frame;
17910 }
17911 
17912 
17913 
17914 // CEF_INCLUDE_CAPI_CEF_REQUEST_HANDLER_CAPI_H_
17915 // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
17916 //
17917 // Redistribution and use in source and binary forms, with or without
17918 // modification, are permitted provided that the following conditions are
17919 // met:
17920 //
17921 //    * Redistributions of source code must retain the above copyright
17922 // notice, this list of conditions and the following disclaimer.
17923 //    * Redistributions in binary form must reproduce the above
17924 // copyright notice, this list of conditions and the following disclaimer
17925 // in the documentation and/or other materials provided with the
17926 // distribution.
17927 //    * Neither the name of Google Inc. nor the name Chromium Embedded
17928 // Framework nor the names of its contributors may be used to endorse
17929 // or promote products derived from this software without specific prior
17930 // written permission.
17931 //
17932 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17933 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
17934 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
17935 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
17936 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
17937 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
17938 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
17939 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
17940 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
17941 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
17942 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
17943 //
17944 // ---------------------------------------------------------------------------
17945 //
17946 // This file was generated by the CEF translator tool and should not edited
17947 // by hand. See the translator.README.txt file in the tools directory for
17948 // more information.
17949 //
17950 // $hash=d97d3ca6c8d610627538c58f3b4ba3869f3d9ac7$
17951 //
17952 
17953 extern (C):
17954 
17955 ///
17956 /// Structure used for retrieving resources from the resource bundle (*.pak)
17957 /// files loaded by CEF during startup or via the cef_resource_bundle_handler_t
17958 /// returned from cef_app_t::GetResourceBundleHandler. See CefSettings for
17959 /// additional options related to resource bundle loading. The functions of this
17960 /// structure may be called on any thread unless otherwise indicated.
17961 ///
17962 struct cef_resource_bundle_t
17963 {
17964     ///
17965     /// Base structure.
17966     ///
17967 
17968     ///
17969     /// Returns the localized string for the specified |string_id| or an NULL
17970     /// string if the value is not found. Include cef_pack_strings.h for a listing
17971     /// of valid string ID values.
17972     ///
17973     // The resulting string must be freed by calling cef_string_userfree_free().
17974 
17975     cef_base_ref_counted_t base;
17976     extern(System) cef_string_userfree_t function (
17977         cef_resource_bundle_t* self,
17978         int string_id) nothrow get_localized_string;
17979     ///
17980     /// Returns a cef_binary_value_t containing the decompressed contents of the
17981     /// specified scale independent |resource_id| or NULL if not found. Include
17982     /// cef_pack_resources.h for a listing of valid resource ID values.
17983     ///
17984     extern(System) cef_binary_value_t* function (
17985         cef_resource_bundle_t* self,
17986         int resource_id) nothrow get_data_resource;
17987 
17988     ///
17989     /// Returns a cef_binary_value_t containing the decompressed contents of the
17990     /// specified |resource_id| nearest the scale factor |scale_factor| or NULL if
17991     /// not found. Use a |scale_factor| value of SCALE_FACTOR_NONE for scale
17992     /// independent resources or call GetDataResource instead.Include
17993     /// cef_pack_resources.h for a listing of valid resource ID values.
17994     ///
17995     extern(System) cef_binary_value_t* function (
17996         cef_resource_bundle_t* self,
17997         int resource_id,
17998         cef_scale_factor_t scale_factor) nothrow get_data_resource_for_scale;
17999 }
18000 
18001 
18002 
18003 ///
18004 /// Returns the global resource bundle instance.
18005 ///
18006 cef_resource_bundle_t* cef_resource_bundle_get_global ();
18007 
18008 // CEF_INCLUDE_CAPI_CEF_RESOURCE_BUNDLE_CAPI_H_
18009 // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
18010 //
18011 // Redistribution and use in source and binary forms, with or without
18012 // modification, are permitted provided that the following conditions are
18013 // met:
18014 //
18015 //    * Redistributions of source code must retain the above copyright
18016 // notice, this list of conditions and the following disclaimer.
18017 //    * Redistributions in binary form must reproduce the above
18018 // copyright notice, this list of conditions and the following disclaimer
18019 // in the documentation and/or other materials provided with the
18020 // distribution.
18021 //    * Neither the name of Google Inc. nor the name Chromium Embedded
18022 // Framework nor the names of its contributors may be used to endorse
18023 // or promote products derived from this software without specific prior
18024 // written permission.
18025 //
18026 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18027 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18028 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
18029 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
18030 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
18031 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
18032 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
18033 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
18034 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
18035 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
18036 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
18037 //
18038 // ---------------------------------------------------------------------------
18039 //
18040 // This file was generated by the CEF translator tool and should not edited
18041 // by hand. See the translator.README.txt file in the tools directory for
18042 // more information.
18043 //
18044 // $hash=b25f3131d67980e493da4d7e484676d000334995$
18045 //
18046 
18047 extern (C):
18048 
18049 ///
18050 /// Structure used to implement a custom resource bundle structure. See
18051 /// CefSettings for additional options related to resource bundle loading. The
18052 /// functions of this structure may be called on multiple threads.
18053 ///
18054 struct cef_resource_bundle_handler_t
18055 {
18056     ///
18057     /// Base structure.
18058     ///
18059 
18060     ///
18061     /// Called to retrieve a localized translation for the specified |string_id|.
18062     /// To provide the translation set |string| to the translation string and
18063     /// return true (1). To use the default translation return false (0). Include
18064     /// cef_pack_strings.h for a listing of valid string ID values.
18065     ///
18066 
18067     ///
18068     /// Called to retrieve data for the specified scale independent |resource_id|.
18069 
18070     cef_base_ref_counted_t base;
18071     extern(System) int function (
18072         cef_resource_bundle_handler_t* self,
18073         int string_id,
18074         cef_string_t* string) nothrow get_localized_string;
18075     /// To provide the resource data set |data| and |data_size| to the data
18076     /// pointer and size respectively and return true (1). To use the default
18077     /// resource data return false (0). The resource data will not be copied and
18078     /// must remain resident in memory. Include cef_pack_resources.h for a listing
18079     /// of valid resource ID values.
18080     ///
18081     extern(System) int function (
18082         cef_resource_bundle_handler_t* self,
18083         int resource_id,
18084         void** data,
18085         size_t* data_size) nothrow get_data_resource;
18086 
18087     ///
18088     /// Called to retrieve data for the specified |resource_id| nearest the scale
18089     /// factor |scale_factor|. To provide the resource data set |data| and
18090     /// |data_size| to the data pointer and size respectively and return true (1).
18091     /// To use the default resource data return false (0). The resource data will
18092     /// not be copied and must remain resident in memory. Include
18093     /// cef_pack_resources.h for a listing of valid resource ID values.
18094     ///
18095     extern(System) int function (
18096         cef_resource_bundle_handler_t* self,
18097         int resource_id,
18098         cef_scale_factor_t scale_factor,
18099         void** data,
18100         size_t* data_size) nothrow get_data_resource_for_scale;
18101 }
18102 
18103 
18104 
18105 // CEF_INCLUDE_CAPI_CEF_RESOURCE_BUNDLE_HANDLER_CAPI_H_
18106 // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
18107 //
18108 // Redistribution and use in source and binary forms, with or without
18109 // modification, are permitted provided that the following conditions are
18110 // met:
18111 //
18112 //    * Redistributions of source code must retain the above copyright
18113 // notice, this list of conditions and the following disclaimer.
18114 //    * Redistributions in binary form must reproduce the above
18115 // copyright notice, this list of conditions and the following disclaimer
18116 // in the documentation and/or other materials provided with the
18117 // distribution.
18118 //    * Neither the name of Google Inc. nor the name Chromium Embedded
18119 // Framework nor the names of its contributors may be used to endorse
18120 // or promote products derived from this software without specific prior
18121 // written permission.
18122 //
18123 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18124 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18125 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
18126 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
18127 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
18128 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
18129 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
18130 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
18131 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
18132 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
18133 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
18134 //
18135 // ---------------------------------------------------------------------------
18136 //
18137 // This file was generated by the CEF translator tool and should not edited
18138 // by hand. See the translator.README.txt file in the tools directory for
18139 // more information.
18140 //
18141 // $hash=ad8218a8ac9e313884110e72bb2af32ec916907f$
18142 //
18143 
18144 extern (C):
18145 
18146 ///
18147 /// Callback for asynchronous continuation of cef_resource_handler_t::skip().
18148 ///
18149 struct cef_resource_skip_callback_t
18150 {
18151     ///
18152     /// Base structure.
18153     ///
18154 
18155     ///
18156     /// Callback for asynchronous continuation of skip(). If |bytes_skipped| > 0
18157     /// then either skip() will be called again until the requested number of
18158     /// bytes have been skipped or the request will proceed. If |bytes_skipped| <=
18159     /// 0 the request will fail with ERR_REQUEST_RANGE_NOT_SATISFIABLE.
18160     ///
18161 
18162     ///
18163     /// Callback for asynchronous continuation of cef_resource_handler_t::read().
18164 
18165     cef_base_ref_counted_t base;
18166     extern(System) void function (
18167         cef_resource_skip_callback_t* self,
18168         long bytes_skipped) nothrow cont;
18169 }
18170 
18171 
18172 ///
18173 struct cef_resource_read_callback_t
18174 {
18175     ///
18176     /// Base structure.
18177     ///
18178     cef_base_ref_counted_t base;
18179 
18180     ///
18181     /// Callback for asynchronous continuation of read(). If |bytes_read| == 0 the
18182     /// response will be considered complete. If |bytes_read| > 0 then read() will
18183     /// be called again until the request is complete (based on either the result
18184     /// or the expected content length). If |bytes_read| < 0 then the request will
18185     /// fail and the |bytes_read| value will be treated as the error code.
18186     ///
18187     extern(System) void function (cef_resource_read_callback_t* self, int bytes_read) nothrow cont;
18188 }
18189 
18190 
18191 
18192 ///
18193 /// Structure used to implement a custom request handler structure. The
18194 /// functions of this structure will be called on the IO thread unless otherwise
18195 /// indicated.
18196 ///
18197 struct cef_resource_handler_t
18198 {
18199     ///
18200     /// Base structure.
18201     ///
18202     cef_base_ref_counted_t base;
18203 
18204     ///
18205     /// Open the response stream. To handle the request immediately set
18206     /// |handle_request| to true (1) and return true (1). To decide at a later
18207     /// time set |handle_request| to false (0), return true (1), and execute
18208     /// |callback| to continue or cancel the request. To cancel the request
18209     /// immediately set |handle_request| to true (1) and return false (0). This
18210     /// function will be called in sequence but not from a dedicated thread. For
18211     /// backwards compatibility set |handle_request| to false (0) and return false
18212     /// (0) and the ProcessRequest function will be called.
18213     ///
18214     extern(System) int function (
18215         cef_resource_handler_t* self,
18216         cef_request_t* request,
18217         int* handle_request,
18218         cef_callback_t* callback) nothrow open;
18219 
18220     ///
18221     /// Begin processing the request. To handle the request return true (1) and
18222     /// call cef_callback_t::cont() once the response header information is
18223     /// available (cef_callback_t::cont() can also be called from inside this
18224     /// function if header information is available immediately). To cancel the
18225     /// request return false (0).
18226     ///
18227     /// WARNING: This function is deprecated. Use Open instead.
18228     ///
18229     extern(System) int function (
18230         cef_resource_handler_t* self,
18231         cef_request_t* request,
18232         cef_callback_t* callback) nothrow process_request;
18233 
18234     ///
18235     /// Retrieve response header information. If the response length is not known
18236     /// set |response_length| to -1 and read_response() will be called until it
18237     /// returns false (0). If the response length is known set |response_length|
18238     /// to a positive value and read_response() will be called until it returns
18239     /// false (0) or the specified number of bytes have been read. Use the
18240     /// |response| object to set the mime type, http status code and other
18241     /// optional header values. To redirect the request to a new URL set
18242     /// |redirectUrl| to the new URL. |redirectUrl| can be either a relative or
18243     /// fully qualified URL. It is also possible to set |response| to a redirect
18244     /// http status code and pass the new URL via a Location header. Likewise with
18245     /// |redirectUrl| it is valid to set a relative or fully qualified URL as the
18246     /// Location header value. If an error occured while setting up the request
18247     /// you can call set_error() on |response| to indicate the error condition.
18248     ///
18249     extern(System) void function (
18250         cef_resource_handler_t* self,
18251         cef_response_t* response,
18252         long* response_length,
18253         cef_string_t* redirectUrl) nothrow get_response_headers;
18254 
18255     ///
18256     /// Skip response data when requested by a Range header. Skip over and discard
18257     /// |bytes_to_skip| bytes of response data. If data is available immediately
18258     /// set |bytes_skipped| to the number of bytes skipped and return true (1). To
18259     /// read the data at a later time set |bytes_skipped| to 0, return true (1)
18260     /// and execute |callback| when the data is available. To indicate failure set
18261     /// |bytes_skipped| to < 0 (e.g. -2 for ERR_FAILED) and return false (0). This
18262     /// function will be called in sequence but not from a dedicated thread.
18263     ///
18264     extern(System) int function (
18265         cef_resource_handler_t* self,
18266         long bytes_to_skip,
18267         long* bytes_skipped,
18268         cef_resource_skip_callback_t* callback) nothrow skip;
18269 
18270     ///
18271     /// Read response data. If data is available immediately copy up to
18272     /// |bytes_to_read| bytes into |data_out|, set |bytes_read| to the number of
18273     /// bytes copied, and return true (1). To read the data at a later time keep a
18274     /// pointer to |data_out|, set |bytes_read| to 0, return true (1) and execute
18275     /// |callback| when the data is available (|data_out| will remain valid until
18276     /// the callback is executed). To indicate response completion set
18277     /// |bytes_read| to 0 and return false (0). To indicate failure set
18278     /// |bytes_read| to < 0 (e.g. -2 for ERR_FAILED) and return false (0). This
18279     /// function will be called in sequence but not from a dedicated thread. For
18280     /// backwards compatibility set |bytes_read| to -1 and return false (0) and
18281     /// the ReadResponse function will be called.
18282     ///
18283     extern(System) int function (
18284         cef_resource_handler_t* self,
18285         void* data_out,
18286         int bytes_to_read,
18287         int* bytes_read,
18288         cef_resource_read_callback_t* callback) nothrow read;
18289 
18290     ///
18291     /// Read response data. If data is available immediately copy up to
18292     /// |bytes_to_read| bytes into |data_out|, set |bytes_read| to the number of
18293     /// bytes copied, and return true (1). To read the data at a later time set
18294     /// |bytes_read| to 0, return true (1) and call cef_callback_t::cont() when
18295     /// the data is available. To indicate response completion return false (0).
18296     ///
18297     /// WARNING: This function is deprecated. Use Skip and Read instead.
18298     ///
18299     extern(System) int function (
18300         cef_resource_handler_t* self,
18301         void* data_out,
18302         int bytes_to_read,
18303         int* bytes_read,
18304         cef_callback_t* callback) nothrow read_response;
18305 
18306     ///
18307     /// Request processing has been canceled.
18308     ///
18309     extern(System) void function (cef_resource_handler_t* self) nothrow cancel;
18310 }
18311 
18312 
18313 
18314 // CEF_INCLUDE_CAPI_CEF_RESOURCE_HANDLER_CAPI_H_
18315 // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
18316 //
18317 // Redistribution and use in source and binary forms, with or without
18318 // modification, are permitted provided that the following conditions are
18319 // met:
18320 //
18321 //    * Redistributions of source code must retain the above copyright
18322 // notice, this list of conditions and the following disclaimer.
18323 //    * Redistributions in binary form must reproduce the above
18324 // copyright notice, this list of conditions and the following disclaimer
18325 // in the documentation and/or other materials provided with the
18326 // distribution.
18327 //    * Neither the name of Google Inc. nor the name Chromium Embedded
18328 // Framework nor the names of its contributors may be used to endorse
18329 // or promote products derived from this software without specific prior
18330 // written permission.
18331 //
18332 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18333 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18334 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
18335 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
18336 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
18337 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
18338 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
18339 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
18340 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
18341 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
18342 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
18343 //
18344 // ---------------------------------------------------------------------------
18345 //
18346 // This file was generated by the CEF translator tool and should not edited
18347 // by hand. See the translator.README.txt file in the tools directory for
18348 // more information.
18349 //
18350 // $hash=c4416644786e3c1999cdcd7e6bf78af94ff7f0da$
18351 //
18352 
18353 extern (C):
18354 
18355 ///
18356 /// Implement this structure to handle events related to browser requests. The
18357 /// functions of this structure will be called on the IO thread unless otherwise
18358 /// indicated.
18359 ///
18360 struct cef_resource_request_handler_t
18361 {
18362     ///
18363     /// Base structure.
18364     ///
18365 
18366     ///
18367     /// Called on the IO thread before a resource request is loaded. The |browser|
18368     /// and |frame| values represent the source of the request, and may be NULL
18369     /// for requests originating from service workers or cef_urlrequest_t. To
18370 
18371     cef_base_ref_counted_t base;
18372     /// optionally filter cookies for the request return a
18373     /// cef_cookie_access_filter_t object. The |request| object cannot not be
18374     /// modified in this callback.
18375     ///
18376     extern(System) cef_cookie_access_filter_t* function (
18377         cef_resource_request_handler_t* self,
18378         cef_browser_t* browser,
18379         cef_frame_t* frame,
18380         cef_request_t* request) nothrow get_cookie_access_filter;
18381 
18382     ///
18383     /// Called on the IO thread before a resource request is loaded. The |browser|
18384     /// and |frame| values represent the source of the request, and may be NULL
18385     /// for requests originating from service workers or cef_urlrequest_t. To
18386     /// redirect or change the resource load optionally modify |request|.
18387     /// Modification of the request URL will be treated as a redirect. Return
18388     /// RV_CONTINUE to continue the request immediately. Return RV_CONTINUE_ASYNC
18389     /// and call cef_callback_t functions at a later time to continue or cancel
18390     /// the request asynchronously. Return RV_CANCEL to cancel the request
18391     /// immediately.
18392     ///
18393     extern(System) cef_return_value_t function (
18394         cef_resource_request_handler_t* self,
18395         cef_browser_t* browser,
18396         cef_frame_t* frame,
18397         cef_request_t* request,
18398         cef_callback_t* callback) nothrow on_before_resource_load;
18399 
18400     ///
18401     /// Called on the IO thread before a resource is loaded. The |browser| and
18402     /// |frame| values represent the source of the request, and may be NULL for
18403     /// requests originating from service workers or cef_urlrequest_t. To allow
18404     /// the resource to load using the default network loader return NULL. To
18405     /// specify a handler for the resource return a cef_resource_handler_t object.
18406     /// The |request| object cannot not be modified in this callback.
18407     ///
18408     extern(System) cef_resource_handler_t* function (
18409         cef_resource_request_handler_t* self,
18410         cef_browser_t* browser,
18411         cef_frame_t* frame,
18412         cef_request_t* request) nothrow get_resource_handler;
18413 
18414     ///
18415     /// Called on the IO thread when a resource load is redirected. The |browser|
18416     /// and |frame| values represent the source of the request, and may be NULL
18417     /// for requests originating from service workers or cef_urlrequest_t. The
18418     /// |request| parameter will contain the old URL and other request-related
18419     /// information. The |response| parameter will contain the response that
18420     /// resulted in the redirect. The |new_url| parameter will contain the new URL
18421     /// and can be changed if desired. The |request| and |response| objects cannot
18422     /// be modified in this callback.
18423     ///
18424     extern(System) void function (
18425         cef_resource_request_handler_t* self,
18426         cef_browser_t* browser,
18427         cef_frame_t* frame,
18428         cef_request_t* request,
18429         cef_response_t* response,
18430         cef_string_t* new_url) nothrow on_resource_redirect;
18431 
18432     ///
18433     /// Called on the IO thread when a resource response is received. The
18434     /// |browser| and |frame| values represent the source of the request, and may
18435     /// be NULL for requests originating from service workers or cef_urlrequest_t.
18436     /// To allow the resource load to proceed without modification return false
18437     /// (0). To redirect or retry the resource load optionally modify |request|
18438     /// and return true (1). Modification of the request URL will be treated as a
18439     /// redirect. Requests handled using the default network loader cannot be
18440     /// redirected in this callback. The |response| object cannot be modified in
18441     /// this callback.
18442     ///
18443     /// WARNING: Redirecting using this function is deprecated. Use
18444     /// OnBeforeResourceLoad or GetResourceHandler to perform redirects.
18445     ///
18446     extern(System) int function (
18447         cef_resource_request_handler_t* self,
18448         cef_browser_t* browser,
18449         cef_frame_t* frame,
18450         cef_request_t* request,
18451         cef_response_t* response) nothrow on_resource_response;
18452 
18453     ///
18454     /// Called on the IO thread to optionally filter resource response content.
18455     /// The |browser| and |frame| values represent the source of the request, and
18456     /// may be NULL for requests originating from service workers or
18457     /// cef_urlrequest_t. |request| and |response| represent the request and
18458     /// response respectively and cannot be modified in this callback.
18459     ///
18460     extern(System) cef_response_filter_t* function (
18461         cef_resource_request_handler_t* self,
18462         cef_browser_t* browser,
18463         cef_frame_t* frame,
18464         cef_request_t* request,
18465         cef_response_t* response) nothrow get_resource_response_filter;
18466 
18467     ///
18468     /// Called on the IO thread when a resource load has completed. The |browser|
18469     /// and |frame| values represent the source of the request, and may be NULL
18470     /// for requests originating from service workers or cef_urlrequest_t.
18471     /// |request| and |response| represent the request and response respectively
18472     /// and cannot be modified in this callback. |status| indicates the load
18473     /// completion status. |received_content_length| is the number of response
18474     /// bytes actually read. This function will be called for all requests,
18475     /// including requests that are aborted due to CEF shutdown or destruction of
18476     /// the associated browser. In cases where the associated browser is destroyed
18477     /// this callback may arrive after the cef_life_span_handler_t::OnBeforeClose
18478     /// callback for that browser. The cef_frame_t::IsValid function can be used
18479     /// to test for this situation, and care should be taken not to call |browser|
18480     /// or |frame| functions that modify state (like LoadURL, SendProcessMessage,
18481     /// etc.) if the frame is invalid.
18482     ///
18483     extern(System) void function (
18484         cef_resource_request_handler_t* self,
18485         cef_browser_t* browser,
18486         cef_frame_t* frame,
18487         cef_request_t* request,
18488         cef_response_t* response,
18489         cef_urlrequest_status_t status,
18490         long received_content_length) nothrow on_resource_load_complete;
18491 
18492     ///
18493     /// Called on the IO thread to handle requests for URLs with an unknown
18494     /// protocol component. The |browser| and |frame| values represent the source
18495     /// of the request, and may be NULL for requests originating from service
18496     /// workers or cef_urlrequest_t. |request| cannot be modified in this
18497     /// callback. Set |allow_os_execution| to true (1) to attempt execution via
18498     /// the registered OS protocol handler, if any. SECURITY WARNING: YOU SHOULD
18499     /// USE THIS METHOD TO ENFORCE RESTRICTIONS BASED ON SCHEME, HOST OR OTHER URL
18500     /// ANALYSIS BEFORE ALLOWING OS EXECUTION.
18501     ///
18502     extern(System) void function (
18503         cef_resource_request_handler_t* self,
18504         cef_browser_t* browser,
18505         cef_frame_t* frame,
18506         cef_request_t* request,
18507         int* allow_os_execution) nothrow on_protocol_execution;
18508 }
18509 
18510 
18511 
18512 ///
18513 /// Implement this structure to filter cookies that may be sent or received from
18514 /// resource requests. The functions of this structure will be called on the IO
18515 /// thread unless otherwise indicated.
18516 ///
18517 struct cef_cookie_access_filter_t
18518 {
18519     ///
18520     /// Base structure.
18521     ///
18522     cef_base_ref_counted_t base;
18523 
18524     ///
18525     /// Called on the IO thread before a resource request is sent. The |browser|
18526     /// and |frame| values represent the source of the request, and may be NULL
18527     /// for requests originating from service workers or cef_urlrequest_t.
18528     /// |request| cannot be modified in this callback. Return true (1) if the
18529     /// specified cookie can be sent with the request or false (0) otherwise.
18530     ///
18531     extern(System) int function (
18532         cef_cookie_access_filter_t* self,
18533         cef_browser_t* browser,
18534         cef_frame_t* frame,
18535         cef_request_t* request,
18536         const(cef_cookie_t)* cookie) nothrow can_send_cookie;
18537 
18538     ///
18539     /// Called on the IO thread after a resource response is received. The
18540     /// |browser| and |frame| values represent the source of the request, and may
18541     /// be NULL for requests originating from service workers or cef_urlrequest_t.
18542     /// |request| cannot be modified in this callback. Return true (1) if the
18543     /// specified cookie returned with the response can be saved or false (0)
18544     /// otherwise.
18545     ///
18546     extern(System) int function (
18547         cef_cookie_access_filter_t* self,
18548         cef_browser_t* browser,
18549         cef_frame_t* frame,
18550         cef_request_t* request,
18551         cef_response_t* response,
18552         const(cef_cookie_t)* cookie) nothrow can_save_cookie;
18553 }
18554 
18555 
18556 
18557 // CEF_INCLUDE_CAPI_CEF_RESOURCE_REQUEST_HANDLER_CAPI_H_
18558 // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
18559 //
18560 // Redistribution and use in source and binary forms, with or without
18561 // modification, are permitted provided that the following conditions are
18562 // met:
18563 //
18564 //    * Redistributions of source code must retain the above copyright
18565 // notice, this list of conditions and the following disclaimer.
18566 //    * Redistributions in binary form must reproduce the above
18567 // copyright notice, this list of conditions and the following disclaimer
18568 // in the documentation and/or other materials provided with the
18569 // distribution.
18570 //    * Neither the name of Google Inc. nor the name Chromium Embedded
18571 // Framework nor the names of its contributors may be used to endorse
18572 // or promote products derived from this software without specific prior
18573 // written permission.
18574 //
18575 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18576 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18577 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
18578 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
18579 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
18580 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
18581 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
18582 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
18583 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
18584 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
18585 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
18586 //
18587 // ---------------------------------------------------------------------------
18588 //
18589 // This file was generated by the CEF translator tool and should not edited
18590 // by hand. See the translator.README.txt file in the tools directory for
18591 // more information.
18592 //
18593 // $hash=de559e5cd4b539ce129beab8f7627576c4249cd5$
18594 //
18595 
18596 extern (C):
18597 
18598 ///
18599 /// Structure used to represent a web response. The functions of this structure
18600 /// may be called on any thread.
18601 ///
18602 struct cef_response_t
18603 {
18604     ///
18605     /// Base structure.
18606     ///
18607 
18608     ///
18609     /// Returns true (1) if this object is read-only.
18610     ///
18611 
18612     ///
18613     /// Get the response error code. Returns ERR_NONE if there was no error.
18614     ///
18615 
18616     ///
18617     /// Set the response error code. This can be used by custom scheme handlers to
18618     /// return errors during initial request processing.
18619     ///
18620 
18621     ///
18622     /// Get the response status code.
18623     ///
18624 
18625     ///
18626     /// Set the response status code.
18627 
18628     cef_base_ref_counted_t base;
18629     extern(System) int function (cef_response_t* self) nothrow is_read_only;
18630     extern(System) cef_errorcode_t function (cef_response_t* self) nothrow get_error;
18631     extern(System) void function (cef_response_t* self, cef_errorcode_t error) nothrow set_error;
18632     extern(System) int function (cef_response_t* self) nothrow get_status;
18633     ///
18634     extern(System) void function (cef_response_t* self, int status) nothrow set_status;
18635 
18636     ///
18637     /// Get the response status text.
18638     ///
18639     // The resulting string must be freed by calling cef_string_userfree_free().
18640     extern(System) cef_string_userfree_t function (cef_response_t* self) nothrow get_status_text;
18641 
18642     ///
18643     /// Set the response status text.
18644     ///
18645     extern(System) void function (
18646         cef_response_t* self,
18647         const(cef_string_t)* statusText) nothrow set_status_text;
18648 
18649     ///
18650     /// Get the response mime type.
18651     ///
18652     // The resulting string must be freed by calling cef_string_userfree_free().
18653     extern(System) cef_string_userfree_t function (cef_response_t* self) nothrow get_mime_type;
18654 
18655     ///
18656     /// Set the response mime type.
18657     ///
18658     extern(System) void function (
18659         cef_response_t* self,
18660         const(cef_string_t)* mimeType) nothrow set_mime_type;
18661 
18662     ///
18663     /// Get the response charset.
18664     ///
18665     // The resulting string must be freed by calling cef_string_userfree_free().
18666     extern(System) cef_string_userfree_t function (cef_response_t* self) nothrow get_charset;
18667 
18668     ///
18669     /// Set the response charset.
18670     ///
18671     extern(System) void function (
18672         cef_response_t* self,
18673         const(cef_string_t)* charset) nothrow set_charset;
18674 
18675     ///
18676     /// Get the value for the specified response header field.
18677     ///
18678     // The resulting string must be freed by calling cef_string_userfree_free().
18679     extern(System) cef_string_userfree_t function (
18680         cef_response_t* self,
18681         const(cef_string_t)* name) nothrow get_header_by_name;
18682 
18683     ///
18684     /// Set the header |name| to |value|. If |overwrite| is true (1) any existing
18685     /// values will be replaced with the new value. If |overwrite| is false (0)
18686     /// any existing values will not be overwritten.
18687     ///
18688     extern(System) void function (
18689         cef_response_t* self,
18690         const(cef_string_t)* name,
18691         const(cef_string_t)* value,
18692         int overwrite) nothrow set_header_by_name;
18693 
18694     ///
18695     /// Get all response header fields.
18696     ///
18697     extern(System) void function (
18698         cef_response_t* self,
18699         cef_string_multimap_t headerMap) nothrow get_header_map;
18700 
18701     ///
18702     /// Set all response header fields.
18703     ///
18704     extern(System) void function (
18705         cef_response_t* self,
18706         cef_string_multimap_t headerMap) nothrow set_header_map;
18707 
18708     ///
18709     /// Get the resolved URL after redirects or changed as a result of HSTS.
18710     ///
18711     // The resulting string must be freed by calling cef_string_userfree_free().
18712     extern(System) cef_string_userfree_t function (cef_response_t* self) nothrow get_url;
18713 
18714     ///
18715     /// Set the resolved URL after redirects or changed as a result of HSTS.
18716     ///
18717     extern(System) void function (cef_response_t* self, const(cef_string_t)* url) nothrow set_url;
18718 }
18719 
18720 
18721 
18722 ///
18723 /// Create a new cef_response_t object.
18724 ///
18725 cef_response_t* cef_response_create ();
18726 
18727 // CEF_INCLUDE_CAPI_CEF_RESPONSE_CAPI_H_
18728 // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
18729 //
18730 // Redistribution and use in source and binary forms, with or without
18731 // modification, are permitted provided that the following conditions are
18732 // met:
18733 //
18734 //    * Redistributions of source code must retain the above copyright
18735 // notice, this list of conditions and the following disclaimer.
18736 //    * Redistributions in binary form must reproduce the above
18737 // copyright notice, this list of conditions and the following disclaimer
18738 // in the documentation and/or other materials provided with the
18739 // distribution.
18740 //    * Neither the name of Google Inc. nor the name Chromium Embedded
18741 // Framework nor the names of its contributors may be used to endorse
18742 // or promote products derived from this software without specific prior
18743 // written permission.
18744 //
18745 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18746 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18747 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
18748 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
18749 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
18750 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
18751 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
18752 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
18753 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
18754 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
18755 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
18756 //
18757 // ---------------------------------------------------------------------------
18758 //
18759 // This file was generated by the CEF translator tool and should not edited
18760 // by hand. See the translator.README.txt file in the tools directory for
18761 // more information.
18762 //
18763 // $hash=1c83177e8030f7637d8ce0aa68831e417fbf37d3$
18764 //
18765 
18766 extern (C):
18767 
18768 ///
18769 /// Implement this structure to filter resource response content. The functions
18770 /// of this structure will be called on the browser process IO thread.
18771 ///
18772 struct cef_response_filter_t
18773 {
18774     ///
18775     /// Base structure.
18776     ///
18777 
18778     ///
18779     /// Initialize the response filter. Will only be called a single time. The
18780     /// filter will not be installed if this function returns false (0).
18781     ///
18782 
18783     ///
18784     /// Called to filter a chunk of data. Expected usage is as follows:
18785     ///
18786     ///  1. Read input data from |data_in| and set |data_in_read| to the number of
18787     ///     bytes that were read up to a maximum of |data_in_size|. |data_in| will
18788     ///     be NULL if |data_in_size| is zero.
18789     ///  2. Write filtered output data to |data_out| and set |data_out_written| to
18790     ///     the number of bytes that were written up to a maximum of
18791 
18792     cef_base_ref_counted_t base;
18793     extern(System) int function (cef_response_filter_t* self) nothrow init_filter;
18794     ///     |data_out_size|. If no output data was written then all data must be
18795     ///     read from |data_in| (user must set |data_in_read| = |data_in_size|).
18796     ///  3. Return RESPONSE_FILTER_DONE if all output data was written or
18797     ///     RESPONSE_FILTER_NEED_MORE_DATA if output data is still pending.
18798     ///
18799     /// This function will be called repeatedly until the input buffer has been
18800     /// fully read (user sets |data_in_read| = |data_in_size|) and there is no
18801     /// more input data to filter (the resource response is complete). This
18802     /// function may then be called an additional time with an NULL input buffer
18803     /// if the user filled the output buffer (set |data_out_written| =
18804     /// |data_out_size|) and returned RESPONSE_FILTER_NEED_MORE_DATA to indicate
18805     /// that output data is still pending.
18806     ///
18807     /// Calls to this function will stop when one of the following conditions is
18808     /// met:
18809     ///
18810     ///  1. There is no more input data to filter (the resource response is
18811     ///     complete) and the user sets |data_out_written| = 0 or returns
18812     ///     RESPONSE_FILTER_DONE to indicate that all data has been written, or;
18813     ///  2. The user returns RESPONSE_FILTER_ERROR to indicate an error.
18814     ///
18815     /// Do not keep a reference to the buffers passed to this function.
18816     ///
18817     extern(System) cef_response_filter_status_t function (
18818         cef_response_filter_t* self,
18819         void* data_in,
18820         size_t data_in_size,
18821         size_t* data_in_read,
18822         void* data_out,
18823         size_t data_out_size,
18824         size_t* data_out_written) nothrow filter;
18825 }
18826 
18827 
18828 
18829 // CEF_INCLUDE_CAPI_CEF_RESPONSE_FILTER_CAPI_H_
18830 // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
18831 //
18832 // Redistribution and use in source and binary forms, with or without
18833 // modification, are permitted provided that the following conditions are
18834 // met:
18835 //
18836 //    * Redistributions of source code must retain the above copyright
18837 // notice, this list of conditions and the following disclaimer.
18838 //    * Redistributions in binary form must reproduce the above
18839 // copyright notice, this list of conditions and the following disclaimer
18840 // in the documentation and/or other materials provided with the
18841 // distribution.
18842 //    * Neither the name of Google Inc. nor the name Chromium Embedded
18843 // Framework nor the names of its contributors may be used to endorse
18844 // or promote products derived from this software without specific prior
18845 // written permission.
18846 //
18847 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18848 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18849 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
18850 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
18851 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
18852 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
18853 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
18854 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
18855 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
18856 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
18857 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
18858 //
18859 // ---------------------------------------------------------------------------
18860 //
18861 // This file was generated by the CEF translator tool and should not edited
18862 // by hand. See the translator.README.txt file in the tools directory for
18863 // more information.
18864 //
18865 // $hash=dd3f6003f9a8f59c2eb4320c382651a441086aee$
18866 //
18867 
18868 extern (C):
18869 
18870 ///
18871 /// Structure that manages custom scheme registrations.
18872 ///
18873 struct cef_scheme_registrar_t
18874 {
18875     ///
18876     /// Base structure.
18877     ///
18878 
18879     ///
18880     /// Register a custom scheme. This function should not be called for the
18881     /// built-in HTTP, HTTPS, FILE, FTP, ABOUT and DATA schemes.
18882     ///
18883     /// See cef_scheme_options_t for possible values for |options|.
18884     ///
18885     /// This function may be called on any thread. It should only be called once
18886     /// per unique |scheme_name| value. If |scheme_name| is already registered or
18887     /// if an error occurs this function will return false (0).
18888     ///
18889 
18890     ///
18891     /// Structure that creates cef_resource_handler_t instances for handling scheme
18892     /// requests. The functions of this structure will always be called on the IO
18893 
18894     cef_base_scoped_t base;
18895     extern(System) int function (
18896         cef_scheme_registrar_t* self,
18897         const(cef_string_t)* scheme_name,
18898         int options) nothrow add_custom_scheme;
18899 }
18900 
18901 
18902 /// thread.
18903 ///
18904 struct cef_scheme_handler_factory_t
18905 {
18906     ///
18907     /// Base structure.
18908     ///
18909 
18910     cef_base_ref_counted_t base;
18911 
18912     ///
18913     /// Return a new resource handler instance to handle the request or an NULL
18914     /// reference to allow default handling of the request. |browser| and |frame|
18915     /// will be the browser window and frame respectively that originated the
18916     /// request or NULL if the request did not originate from a browser window
18917     /// (for example, if the request came from cef_urlrequest_t). The |request|
18918     /// object passed to this function cannot be modified.
18919     ///
18920     extern(System) cef_resource_handler_t* function (
18921         cef_scheme_handler_factory_t* self,
18922         cef_browser_t* browser,
18923         cef_frame_t* frame,
18924         const(cef_string_t)* scheme_name,
18925         cef_request_t* request) nothrow create;
18926 }
18927 
18928 
18929 
18930 ///
18931 /// Register a scheme handler factory with the global request context. An NULL
18932 /// |domain_name| value for a standard scheme will cause the factory to match
18933 /// all domain names. The |domain_name| value will be ignored for non-standard
18934 /// schemes. If |scheme_name| is a built-in scheme and no handler is returned by
18935 /// |factory| then the built-in scheme handler factory will be called. If
18936 /// |scheme_name| is a custom scheme then you must also implement the
18937 /// cef_app_t::on_register_custom_schemes() function in all processes. This
18938 /// function may be called multiple times to change or remove the factory that
18939 /// matches the specified |scheme_name| and optional |domain_name|. Returns
18940 /// false (0) if an error occurs. This function may be called on any thread in
18941 /// the browser process. Using this function is equivalent to calling cef_reques
18942 /// t_context_t::cef_request_context_get_global_context()-
18943 /// >register_scheme_handler_factory().
18944 ///
18945 int cef_register_scheme_handler_factory (
18946     const(cef_string_t)* scheme_name,
18947     const(cef_string_t)* domain_name,
18948     cef_scheme_handler_factory_t* factory);
18949 
18950 ///
18951 /// Clear all scheme handler factories registered with the global request
18952 /// context. Returns false (0) on error. This function may be called on any
18953 /// thread in the browser process. Using this function is equivalent to calling
18954 /// cef_request_context_t::cef_request_context_get_global_context()-
18955 /// >clear_scheme_handler_factories().
18956 ///
18957 int cef_clear_scheme_handler_factories ();
18958 
18959 // CEF_INCLUDE_CAPI_CEF_SCHEME_CAPI_H_
18960 // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
18961 //
18962 // Redistribution and use in source and binary forms, with or without
18963 // modification, are permitted provided that the following conditions are
18964 // met:
18965 //
18966 //    * Redistributions of source code must retain the above copyright
18967 // notice, this list of conditions and the following disclaimer.
18968 //    * Redistributions in binary form must reproduce the above
18969 // copyright notice, this list of conditions and the following disclaimer
18970 // in the documentation and/or other materials provided with the
18971 // distribution.
18972 //    * Neither the name of Google Inc. nor the name Chromium Embedded
18973 // Framework nor the names of its contributors may be used to endorse
18974 // or promote products derived from this software without specific prior
18975 // written permission.
18976 //
18977 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18978 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18979 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
18980 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
18981 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
18982 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
18983 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
18984 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
18985 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
18986 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
18987 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
18988 //
18989 // ---------------------------------------------------------------------------
18990 //
18991 // This file was generated by the CEF translator tool and should not edited
18992 // by hand. See the translator.README.txt file in the tools directory for
18993 // more information.
18994 //
18995 // $hash=b85c5d4060c951571f122e519e7dc7e9a4c4e629$
18996 //
18997 
18998 extern (C):
18999 
19000 ///
19001 /// Structure representing a server that supports HTTP and WebSocket requests.
19002 /// Server capacity is limited and is intended to handle only a small number of
19003 /// simultaneous connections (e.g. for communicating between applications on
19004 /// localhost). The functions of this structure are safe to call from any thread
19005 /// in the brower process unless otherwise indicated.
19006 ///
19007 struct cef_server_t
19008 {
19009     ///
19010     /// Base structure.
19011     ///
19012 
19013     ///
19014     /// Returns the task runner for the dedicated server thread.
19015     ///
19016 
19017     ///
19018     /// Stop the server and shut down the dedicated server thread. See
19019     /// cef_server_handler_t::OnServerCreated documentation for a description of
19020 
19021     cef_base_ref_counted_t base;
19022     extern(System) cef_task_runner_t* function (cef_server_t* self) nothrow get_task_runner;
19023     /// server lifespan.
19024     ///
19025     extern(System) void function (cef_server_t* self) nothrow shutdown;
19026 
19027     ///
19028     /// Returns true (1) if the server is currently running and accepting incoming
19029     /// connections. See cef_server_handler_t::OnServerCreated documentation for a
19030     /// description of server lifespan. This function must be called on the
19031     /// dedicated server thread.
19032     ///
19033     extern(System) int function (cef_server_t* self) nothrow is_running;
19034 
19035     ///
19036     /// Returns the server address including the port number.
19037     ///
19038     // The resulting string must be freed by calling cef_string_userfree_free().
19039     extern(System) cef_string_userfree_t function (cef_server_t* self) nothrow get_address;
19040 
19041     ///
19042     /// Returns true (1) if the server currently has a connection. This function
19043     /// must be called on the dedicated server thread.
19044     ///
19045     extern(System) int function (cef_server_t* self) nothrow has_connection;
19046 
19047     ///
19048     /// Returns true (1) if |connection_id| represents a valid connection. This
19049     /// function must be called on the dedicated server thread.
19050     ///
19051     extern(System) int function (cef_server_t* self, int connection_id) nothrow is_valid_connection;
19052 
19053     ///
19054     /// Send an HTTP 200 "OK" response to the connection identified by
19055     /// |connection_id|. |content_type| is the response content type (e.g.
19056     /// "text/html"), |data| is the response content, and |data_size| is the size
19057     /// of |data| in bytes. The contents of |data| will be copied. The connection
19058     /// will be closed automatically after the response is sent.
19059     ///
19060     extern(System) void function (
19061         cef_server_t* self,
19062         int connection_id,
19063         const(cef_string_t)* content_type,
19064         const(void)* data,
19065         size_t data_size) nothrow send_http200response;
19066 
19067     ///
19068     /// Send an HTTP 404 "Not Found" response to the connection identified by
19069     /// |connection_id|. The connection will be closed automatically after the
19070     /// response is sent.
19071     ///
19072     extern(System) void function (
19073         cef_server_t* self,
19074         int connection_id) nothrow send_http404response;
19075 
19076     ///
19077     /// Send an HTTP 500 "Internal Server Error" response to the connection
19078     /// identified by |connection_id|. |error_message| is the associated error
19079     /// message. The connection will be closed automatically after the response is
19080     /// sent.
19081     ///
19082     extern(System) void function (
19083         cef_server_t* self,
19084         int connection_id,
19085         const(cef_string_t)* error_message) nothrow send_http500response;
19086 
19087     ///
19088     /// Send a custom HTTP response to the connection identified by
19089     /// |connection_id|. |response_code| is the HTTP response code sent in the
19090     /// status line (e.g. 200), |content_type| is the response content type sent
19091     /// as the "Content-Type" header (e.g. "text/html"), |content_length| is the
19092     /// expected content length, and |extra_headers| is the map of extra response
19093     /// headers. If |content_length| is >= 0 then the "Content-Length" header will
19094     /// be sent. If |content_length| is 0 then no content is expected and the
19095     /// connection will be closed automatically after the response is sent. If
19096     /// |content_length| is < 0 then no "Content-Length" header will be sent and
19097     /// the client will continue reading until the connection is closed. Use the
19098     /// SendRawData function to send the content, if applicable, and call
19099     /// CloseConnection after all content has been sent.
19100     ///
19101     extern(System) void function (
19102         cef_server_t* self,
19103         int connection_id,
19104         int response_code,
19105         const(cef_string_t)* content_type,
19106         long content_length,
19107         cef_string_multimap_t extra_headers) nothrow send_http_response;
19108 
19109     ///
19110     /// Send raw data directly to the connection identified by |connection_id|.
19111     /// |data| is the raw data and |data_size| is the size of |data| in bytes. The
19112     /// contents of |data| will be copied. No validation of |data| is performed
19113     /// internally so the client should be careful to send the amount indicated by
19114     /// the "Content-Length" header, if specified. See SendHttpResponse
19115     /// documentation for intended usage.
19116     ///
19117     extern(System) void function (
19118         cef_server_t* self,
19119         int connection_id,
19120         const(void)* data,
19121         size_t data_size) nothrow send_raw_data;
19122 
19123     ///
19124     /// Close the connection identified by |connection_id|. See SendHttpResponse
19125     /// documentation for intended usage.
19126     ///
19127     extern(System) void function (cef_server_t* self, int connection_id) nothrow close_connection;
19128 
19129     ///
19130     /// Send a WebSocket message to the connection identified by |connection_id|.
19131     /// |data| is the response content and |data_size| is the size of |data| in
19132     /// bytes. The contents of |data| will be copied. See
19133     /// cef_server_handler_t::OnWebSocketRequest documentation for intended usage.
19134     ///
19135     extern(System) void function (
19136         cef_server_t* self,
19137         int connection_id,
19138         const(void)* data,
19139         size_t data_size) nothrow send_web_socket_message;
19140 }
19141 
19142 
19143 
19144 ///
19145 /// Create a new server that binds to |address| and |port|. |address| must be a
19146 /// valid IPv4 or IPv6 address (e.g. 127.0.0.1 or ::1) and |port| must be a port
19147 /// number outside of the reserved range (e.g. between 1025 and 65535 on most
19148 /// platforms). |backlog| is the maximum number of pending connections. A new
19149 /// thread will be created for each CreateServer call (the "dedicated server
19150 /// thread"). It is therefore recommended to use a different
19151 /// cef_server_handler_t instance for each CreateServer call to avoid thread
19152 /// safety issues in the cef_server_handler_t implementation. The
19153 /// cef_server_handler_t::OnServerCreated function will be called on the
19154 /// dedicated server thread to report success or failure. See
19155 /// cef_server_handler_t::OnServerCreated documentation for a description of
19156 /// server lifespan.
19157 ///
19158 void cef_server_create (
19159     const(cef_string_t)* address,
19160     ushort port,
19161     int backlog,
19162     cef_server_handler_t* handler);
19163 
19164 ///
19165 /// Implement this structure to handle HTTP server requests. A new thread will
19166 /// be created for each cef_server_t::CreateServer call (the "dedicated server
19167 /// thread"), and the functions of this structure will be called on that thread.
19168 /// It is therefore recommended to use a different cef_server_handler_t instance
19169 /// for each cef_server_t::CreateServer call to avoid thread safety issues in
19170 /// the cef_server_handler_t implementation.
19171 ///
19172 struct cef_server_handler_t
19173 {
19174     ///
19175     /// Base structure.
19176     ///
19177     cef_base_ref_counted_t base;
19178 
19179     ///
19180     /// Called when |server| is created. If the server was started successfully
19181     /// then cef_server_t::IsRunning will return true (1). The server will
19182     /// continue running until cef_server_t::Shutdown is called, after which time
19183     /// OnServerDestroyed will be called. If the server failed to start then
19184     /// OnServerDestroyed will be called immediately after this function returns.
19185     ///
19186     extern(System) void function (
19187         cef_server_handler_t* self,
19188         cef_server_t* server) nothrow on_server_created;
19189 
19190     ///
19191     /// Called when |server| is destroyed. The server thread will be stopped after
19192     /// this function returns. The client should release any references to
19193     /// |server| when this function is called. See OnServerCreated documentation
19194     /// for a description of server lifespan.
19195     ///
19196     extern(System) void function (
19197         cef_server_handler_t* self,
19198         cef_server_t* server) nothrow on_server_destroyed;
19199 
19200     ///
19201     /// Called when a client connects to |server|. |connection_id| uniquely
19202     /// identifies the connection. Each call to this function will have a matching
19203     /// call to OnClientDisconnected.
19204     ///
19205     extern(System) void function (
19206         cef_server_handler_t* self,
19207         cef_server_t* server,
19208         int connection_id) nothrow on_client_connected;
19209 
19210     ///
19211     /// Called when a client disconnects from |server|. |connection_id| uniquely
19212     /// identifies the connection. The client should release any data associated
19213     /// with |connection_id| when this function is called and |connection_id|
19214     /// should no longer be passed to cef_server_t functions. Disconnects can
19215     /// originate from either the client or the server. For example, the server
19216     /// will disconnect automatically after a cef_server_t::SendHttpXXXResponse
19217     /// function is called.
19218     ///
19219     extern(System) void function (
19220         cef_server_handler_t* self,
19221         cef_server_t* server,
19222         int connection_id) nothrow on_client_disconnected;
19223 
19224     ///
19225     /// Called when |server| receives an HTTP request. |connection_id| uniquely
19226     /// identifies the connection, |client_address| is the requesting IPv4 or IPv6
19227     /// client address including port number, and |request| contains the request
19228     /// contents (URL, function, headers and optional POST data). Call
19229     /// cef_server_t functions either synchronously or asynchronusly to send a
19230     /// response.
19231     ///
19232     extern(System) void function (
19233         cef_server_handler_t* self,
19234         cef_server_t* server,
19235         int connection_id,
19236         const(cef_string_t)* client_address,
19237         cef_request_t* request) nothrow on_http_request;
19238 
19239     ///
19240     /// Called when |server| receives a WebSocket request. |connection_id|
19241     /// uniquely identifies the connection, |client_address| is the requesting
19242     /// IPv4 or IPv6 client address including port number, and |request| contains
19243     /// the request contents (URL, function, headers and optional POST data).
19244     /// Execute |callback| either synchronously or asynchronously to accept or
19245     /// decline the WebSocket connection. If the request is accepted then
19246     /// OnWebSocketConnected will be called after the WebSocket has connected and
19247     /// incoming messages will be delivered to the OnWebSocketMessage callback. If
19248     /// the request is declined then the client will be disconnected and
19249     /// OnClientDisconnected will be called. Call the
19250     /// cef_server_t::SendWebSocketMessage function after receiving the
19251     /// OnWebSocketConnected callback to respond with WebSocket messages.
19252     ///
19253     extern(System) void function (
19254         cef_server_handler_t* self,
19255         cef_server_t* server,
19256         int connection_id,
19257         const(cef_string_t)* client_address,
19258         cef_request_t* request,
19259         cef_callback_t* callback) nothrow on_web_socket_request;
19260 
19261     ///
19262     /// Called after the client has accepted the WebSocket connection for |server|
19263     /// and |connection_id| via the OnWebSocketRequest callback. See
19264     /// OnWebSocketRequest documentation for intended usage.
19265     ///
19266     extern(System) void function (
19267         cef_server_handler_t* self,
19268         cef_server_t* server,
19269         int connection_id) nothrow on_web_socket_connected;
19270 
19271     ///
19272     /// Called when |server| receives an WebSocket message. |connection_id|
19273     /// uniquely identifies the connection, |data| is the message content and
19274     /// |data_size| is the size of |data| in bytes. Do not keep a reference to
19275     /// |data| outside of this function. See OnWebSocketRequest documentation for
19276     /// intended usage.
19277     ///
19278     extern(System) void function (
19279         cef_server_handler_t* self,
19280         cef_server_t* server,
19281         int connection_id,
19282         const(void)* data,
19283         size_t data_size) nothrow on_web_socket_message;
19284 }
19285 
19286 
19287 
19288 // CEF_INCLUDE_CAPI_CEF_SERVER_CAPI_H_
19289 // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
19290 //
19291 // Redistribution and use in source and binary forms, with or without
19292 // modification, are permitted provided that the following conditions are
19293 // met:
19294 //
19295 //    * Redistributions of source code must retain the above copyright
19296 // notice, this list of conditions and the following disclaimer.
19297 //    * Redistributions in binary form must reproduce the above
19298 // copyright notice, this list of conditions and the following disclaimer
19299 // in the documentation and/or other materials provided with the
19300 // distribution.
19301 //    * Neither the name of Google Inc. nor the name Chromium Embedded
19302 // Framework nor the names of its contributors may be used to endorse
19303 // or promote products derived from this software without specific prior
19304 // written permission.
19305 //
19306 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19307 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
19308 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19309 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
19310 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
19311 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
19312 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
19313 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
19314 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
19315 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
19316 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
19317 //
19318 // ---------------------------------------------------------------------------
19319 //
19320 // This file was generated by the CEF translator tool and should not edited
19321 // by hand. See the translator.README.txt file in the tools directory for
19322 // more information.
19323 //
19324 // $hash=3d208a996f65f37012460edb1890773218580913$
19325 //
19326 
19327 extern (C):
19328 
19329 ///
19330 /// Structure that wraps platform-dependent share memory region mapping.
19331 ///
19332 struct cef_shared_memory_region_t
19333 {
19334     ///
19335     /// Base structure.
19336     ///
19337 
19338     ///
19339     /// Returns true (1) if the mapping is valid.
19340     ///
19341 
19342     ///
19343     /// Returns the size of the mapping in bytes. Returns 0 for invalid instances.
19344     ///
19345 
19346     ///
19347     /// Returns the pointer to the memory. Returns nullptr for invalid instances.
19348     /// The returned pointer is only valid for the life span of this object.
19349     ///
19350 
19351     // CEF_INCLUDE_CAPI_CEF_SHARED_MEMORY_REGION_CAPI_H_
19352 
19353     cef_base_ref_counted_t base;
19354     extern(System) int function (cef_shared_memory_region_t* self) nothrow is_valid;
19355     extern(System) size_t function (cef_shared_memory_region_t* self) nothrow size;
19356     extern(System) void* function (cef_shared_memory_region_t* self) nothrow memory;
19357 }
19358 
19359 
19360 // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
19361 //
19362 // Redistribution and use in source and binary forms, with or without
19363 // modification, are permitted provided that the following conditions are
19364 // met:
19365 //
19366 //    * Redistributions of source code must retain the above copyright
19367 // notice, this list of conditions and the following disclaimer.
19368 //    * Redistributions in binary form must reproduce the above
19369 // copyright notice, this list of conditions and the following disclaimer
19370 // in the documentation and/or other materials provided with the
19371 // distribution.
19372 //    * Neither the name of Google Inc. nor the name Chromium Embedded
19373 // Framework nor the names of its contributors may be used to endorse
19374 // or promote products derived from this software without specific prior
19375 // written permission.
19376 //
19377 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19378 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
19379 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19380 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
19381 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
19382 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
19383 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
19384 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
19385 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
19386 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
19387 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
19388 //
19389 // ---------------------------------------------------------------------------
19390 //
19391 // This file was generated by the CEF translator tool and should not edited
19392 // by hand. See the translator.README.txt file in the tools directory for
19393 // more information.
19394 //
19395 // $hash=1ae66f6ec465fda2d62530f5871efd58c89e7568$
19396 //
19397 
19398 extern (C):
19399 
19400 ///
19401 /// Structure that builds a cef_process_message_t containing a shared memory
19402 /// region. This structure is not thread-safe but may be used exclusively on a
19403 /// different thread from the one which constructed it.
19404 ///
19405 struct cef_shared_process_message_builder_t
19406 {
19407     ///
19408     /// Base structure.
19409     ///
19410 
19411     ///
19412     /// Returns true (1) if the builder is valid.
19413     ///
19414 
19415     ///
19416     /// Returns the size of the shared memory region in bytes. Returns 0 for
19417     /// invalid instances.
19418     ///
19419 
19420     ///
19421     /// Returns the pointer to the writable memory. Returns nullptr for invalid
19422     /// instances. The returned pointer is only valid for the life span of this
19423 
19424     cef_base_ref_counted_t base;
19425     extern(System) int function (cef_shared_process_message_builder_t* self) nothrow is_valid;
19426     extern(System) size_t function (cef_shared_process_message_builder_t* self) nothrow size;
19427     /// object.
19428     ///
19429     extern(System) void* function (cef_shared_process_message_builder_t* self) nothrow memory;
19430 
19431     ///
19432     /// Creates a new cef_process_message_t from the data provided to the builder.
19433     /// Returns nullptr for invalid instances. Invalidates the builder instance.
19434     ///
19435     extern(System) cef_process_message_t* function (
19436         cef_shared_process_message_builder_t* self) nothrow build;
19437 }
19438 
19439 
19440 
19441 ///
19442 /// Creates a new cef_shared_process_message_builder_t with the specified |name|
19443 /// and shared memory region of specified |byte_size|.
19444 ///
19445 cef_shared_process_message_builder_t* cef_shared_process_message_builder_create (
19446     const(cef_string_t)* name,
19447     size_t byte_size);
19448 
19449 // CEF_INCLUDE_CAPI_CEF_SHARED_PROCESS_MESSAGE_BUILDER_CAPI_H_
19450 // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
19451 //
19452 // Redistribution and use in source and binary forms, with or without
19453 // modification, are permitted provided that the following conditions are
19454 // met:
19455 //
19456 //    * Redistributions of source code must retain the above copyright
19457 // notice, this list of conditions and the following disclaimer.
19458 //    * Redistributions in binary form must reproduce the above
19459 // copyright notice, this list of conditions and the following disclaimer
19460 // in the documentation and/or other materials provided with the
19461 // distribution.
19462 //    * Neither the name of Google Inc. nor the name Chromium Embedded
19463 // Framework nor the names of its contributors may be used to endorse
19464 // or promote products derived from this software without specific prior
19465 // written permission.
19466 //
19467 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19468 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
19469 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19470 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
19471 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
19472 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
19473 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
19474 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
19475 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
19476 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
19477 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
19478 //
19479 // ---------------------------------------------------------------------------
19480 //
19481 // This file was generated by the CEF translator tool and should not edited
19482 // by hand. See the translator.README.txt file in the tools directory for
19483 // more information.
19484 //
19485 // $hash=d781f3791df17c6d6adc4414e8534a6b13a54ff2$
19486 //
19487 
19488 extern (C):
19489 
19490 ///
19491 /// Structure representing SSL information.
19492 ///
19493 struct cef_sslinfo_t
19494 {
19495     ///
19496     /// Base structure.
19497     ///
19498 
19499     ///
19500     /// Returns a bitmask containing any and all problems verifying the server
19501     /// certificate.
19502     ///
19503 
19504     ///
19505     /// Returns the X.509 certificate.
19506     ///
19507 
19508     ///
19509     /// Returns true (1) if the certificate status represents an error.
19510     ///
19511 
19512     // CEF_INCLUDE_CAPI_CEF_SSL_INFO_CAPI_H_
19513 
19514     cef_base_ref_counted_t base;
19515     extern(System) cef_cert_status_t function (cef_sslinfo_t* self) nothrow get_cert_status;
19516     extern(System) cef_x509certificate_t* function (
19517         cef_sslinfo_t* self) nothrow get_x509certificate;
19518 }
19519 
19520 
19521 int cef_is_cert_status_error (cef_cert_status_t status);
19522 // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
19523 //
19524 // Redistribution and use in source and binary forms, with or without
19525 // modification, are permitted provided that the following conditions are
19526 // met:
19527 //
19528 //    * Redistributions of source code must retain the above copyright
19529 // notice, this list of conditions and the following disclaimer.
19530 //    * Redistributions in binary form must reproduce the above
19531 // copyright notice, this list of conditions and the following disclaimer
19532 // in the documentation and/or other materials provided with the
19533 // distribution.
19534 //    * Neither the name of Google Inc. nor the name Chromium Embedded
19535 // Framework nor the names of its contributors may be used to endorse
19536 // or promote products derived from this software without specific prior
19537 // written permission.
19538 //
19539 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19540 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
19541 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19542 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
19543 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
19544 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
19545 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
19546 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
19547 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
19548 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
19549 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
19550 //
19551 // ---------------------------------------------------------------------------
19552 //
19553 // This file was generated by the CEF translator tool and should not edited
19554 // by hand. See the translator.README.txt file in the tools directory for
19555 // more information.
19556 //
19557 // $hash=1d224cc81c5a42ce8d7de172ff7341f1e0785f46$
19558 //
19559 
19560 extern (C):
19561 
19562 ///
19563 /// Structure representing the SSL information for a navigation entry.
19564 ///
19565 struct cef_sslstatus_t
19566 {
19567     ///
19568     /// Base structure.
19569     ///
19570 
19571     ///
19572     /// Returns true (1) if the status is related to a secure SSL/TLS connection.
19573     ///
19574 
19575     ///
19576     /// Returns a bitmask containing any and all problems verifying the server
19577     /// certificate.
19578     ///
19579 
19580     ///
19581     /// Returns the SSL version used for the SSL connection.
19582     ///
19583 
19584     ///
19585     /// Returns a bitmask containing the page security content status.
19586     ///
19587 
19588     cef_base_ref_counted_t base;
19589     extern(System) int function (cef_sslstatus_t* self) nothrow is_secure_connection;
19590     extern(System) cef_cert_status_t function (cef_sslstatus_t* self) nothrow get_cert_status;
19591     extern(System) cef_ssl_version_t function (cef_sslstatus_t* self) nothrow get_sslversion;
19592     extern(System) cef_ssl_content_status_t function (
19593         cef_sslstatus_t* self) nothrow get_content_status;
19594 
19595     ///
19596     /// Returns the X.509 certificate.
19597     ///
19598     extern(System) cef_x509certificate_t* function (
19599         cef_sslstatus_t* self) nothrow get_x509certificate;
19600 }
19601 
19602 
19603 
19604 // CEF_INCLUDE_CAPI_CEF_SSL_STATUS_CAPI_H_
19605 // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
19606 //
19607 // Redistribution and use in source and binary forms, with or without
19608 // modification, are permitted provided that the following conditions are
19609 // met:
19610 //
19611 //    * Redistributions of source code must retain the above copyright
19612 // notice, this list of conditions and the following disclaimer.
19613 //    * Redistributions in binary form must reproduce the above
19614 // copyright notice, this list of conditions and the following disclaimer
19615 // in the documentation and/or other materials provided with the
19616 // distribution.
19617 //    * Neither the name of Google Inc. nor the name Chromium Embedded
19618 // Framework nor the names of its contributors may be used to endorse
19619 // or promote products derived from this software without specific prior
19620 // written permission.
19621 //
19622 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19623 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
19624 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19625 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
19626 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
19627 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
19628 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
19629 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
19630 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
19631 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
19632 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
19633 //
19634 // ---------------------------------------------------------------------------
19635 //
19636 // This file was generated by the CEF translator tool and should not edited
19637 // by hand. See the translator.README.txt file in the tools directory for
19638 // more information.
19639 //
19640 // $hash=f55fa17800b9a63d128fb78201372754f9250875$
19641 //
19642 
19643 extern (C):
19644 
19645 ///
19646 /// Structure the client can implement to provide a custom stream reader. The
19647 /// functions of this structure may be called on any thread.
19648 ///
19649 struct cef_read_handler_t
19650 {
19651     ///
19652     /// Base structure.
19653     ///
19654 
19655     ///
19656     /// Read raw binary data.
19657     ///
19658 
19659     ///
19660     /// Seek to the specified offset position. |whence| may be any one of
19661     /// SEEK_CUR, SEEK_END or SEEK_SET. Return zero on success and non-zero on
19662     /// failure.
19663     ///
19664 
19665     ///
19666     /// Return the current offset position.
19667     ///
19668 
19669     ///
19670 
19671     cef_base_ref_counted_t base;
19672     extern(System) size_t function (
19673         cef_read_handler_t* self,
19674         void* ptr,
19675         size_t size,
19676         size_t n) nothrow read;
19677     extern(System) int function (cef_read_handler_t* self, long offset, int whence) nothrow seek;
19678     extern(System) long function (cef_read_handler_t* self) nothrow tell;
19679     /// Return non-zero if at end of file.
19680     ///
19681     extern(System) int function (cef_read_handler_t* self) nothrow eof;
19682 
19683     ///
19684     /// Return true (1) if this handler performs work like accessing the file
19685     /// system which may block. Used as a hint for determining the thread to
19686     /// access the handler from.
19687     ///
19688     extern(System) int function (cef_read_handler_t* self) nothrow may_block;
19689 }
19690 
19691 
19692 
19693 ///
19694 /// Structure used to read data from a stream. The functions of this structure
19695 /// may be called on any thread.
19696 ///
19697 struct cef_stream_reader_t
19698 {
19699     ///
19700     /// Base structure.
19701     ///
19702     cef_base_ref_counted_t base;
19703 
19704     ///
19705     /// Read raw binary data.
19706     ///
19707     extern(System) size_t function (
19708         cef_stream_reader_t* self,
19709         void* ptr,
19710         size_t size,
19711         size_t n) nothrow read;
19712 
19713     ///
19714     /// Seek to the specified offset position. |whence| may be any one of
19715     /// SEEK_CUR, SEEK_END or SEEK_SET. Returns zero on success and non-zero on
19716     /// failure.
19717     ///
19718     extern(System) int function (cef_stream_reader_t* self, long offset, int whence) nothrow seek;
19719 
19720     ///
19721     /// Return the current offset position.
19722     ///
19723     extern(System) long function (cef_stream_reader_t* self) nothrow tell;
19724 
19725     ///
19726     /// Return non-zero if at end of file.
19727     ///
19728     extern(System) int function (cef_stream_reader_t* self) nothrow eof;
19729 
19730     ///
19731     /// Returns true (1) if this reader performs work like accessing the file
19732     /// system which may block. Used as a hint for determining the thread to
19733     /// access the reader from.
19734     ///
19735     extern(System) int function (cef_stream_reader_t* self) nothrow may_block;
19736 }
19737 
19738 
19739 
19740 ///
19741 /// Create a new cef_stream_reader_t object from a file.
19742 ///
19743 cef_stream_reader_t* cef_stream_reader_create_for_file (
19744     const(cef_string_t)* fileName);
19745 
19746 ///
19747 /// Create a new cef_stream_reader_t object from data.
19748 ///
19749 cef_stream_reader_t* cef_stream_reader_create_for_data (
19750     void* data,
19751     size_t size);
19752 
19753 ///
19754 /// Create a new cef_stream_reader_t object from a custom handler.
19755 ///
19756 cef_stream_reader_t* cef_stream_reader_create_for_handler (
19757     cef_read_handler_t* handler);
19758 
19759 ///
19760 /// Structure the client can implement to provide a custom stream writer. The
19761 /// functions of this structure may be called on any thread.
19762 ///
19763 struct cef_write_handler_t
19764 {
19765     ///
19766     /// Base structure.
19767     ///
19768     cef_base_ref_counted_t base;
19769 
19770     ///
19771     /// Write raw binary data.
19772     ///
19773     extern(System) size_t function (
19774         cef_write_handler_t* self,
19775         const(void)* ptr,
19776         size_t size,
19777         size_t n) nothrow write;
19778 
19779     ///
19780     /// Seek to the specified offset position. |whence| may be any one of
19781     /// SEEK_CUR, SEEK_END or SEEK_SET. Return zero on success and non-zero on
19782     /// failure.
19783     ///
19784     extern(System) int function (cef_write_handler_t* self, long offset, int whence) nothrow seek;
19785 
19786     ///
19787     /// Return the current offset position.
19788     ///
19789     extern(System) long function (cef_write_handler_t* self) nothrow tell;
19790 
19791     ///
19792     /// Flush the stream.
19793     ///
19794     extern(System) int function (cef_write_handler_t* self) nothrow flush;
19795 
19796     ///
19797     /// Return true (1) if this handler performs work like accessing the file
19798     /// system which may block. Used as a hint for determining the thread to
19799     /// access the handler from.
19800     ///
19801     extern(System) int function (cef_write_handler_t* self) nothrow may_block;
19802 }
19803 
19804 
19805 
19806 ///
19807 /// Structure used to write data to a stream. The functions of this structure
19808 /// may be called on any thread.
19809 ///
19810 struct cef_stream_writer_t
19811 {
19812     ///
19813     /// Base structure.
19814     ///
19815     cef_base_ref_counted_t base;
19816 
19817     ///
19818     /// Write raw binary data.
19819     ///
19820     extern(System) size_t function (
19821         cef_stream_writer_t* self,
19822         const(void)* ptr,
19823         size_t size,
19824         size_t n) nothrow write;
19825 
19826     ///
19827     /// Seek to the specified offset position. |whence| may be any one of
19828     /// SEEK_CUR, SEEK_END or SEEK_SET. Returns zero on success and non-zero on
19829     /// failure.
19830     ///
19831     extern(System) int function (cef_stream_writer_t* self, long offset, int whence) nothrow seek;
19832 
19833     ///
19834     /// Return the current offset position.
19835     ///
19836     extern(System) long function (cef_stream_writer_t* self) nothrow tell;
19837 
19838     ///
19839     /// Flush the stream.
19840     ///
19841     extern(System) int function (cef_stream_writer_t* self) nothrow flush;
19842 
19843     ///
19844     /// Returns true (1) if this writer performs work like accessing the file
19845     /// system which may block. Used as a hint for determining the thread to
19846     /// access the writer from.
19847     ///
19848     extern(System) int function (cef_stream_writer_t* self) nothrow may_block;
19849 }
19850 
19851 
19852 
19853 ///
19854 /// Create a new cef_stream_writer_t object for a file.
19855 ///
19856 cef_stream_writer_t* cef_stream_writer_create_for_file (
19857     const(cef_string_t)* fileName);
19858 
19859 ///
19860 /// Create a new cef_stream_writer_t object for a custom handler.
19861 ///
19862 cef_stream_writer_t* cef_stream_writer_create_for_handler (
19863     cef_write_handler_t* handler);
19864 
19865 // CEF_INCLUDE_CAPI_CEF_STREAM_CAPI_H_
19866 // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
19867 //
19868 // Redistribution and use in source and binary forms, with or without
19869 // modification, are permitted provided that the following conditions are
19870 // met:
19871 //
19872 //    * Redistributions of source code must retain the above copyright
19873 // notice, this list of conditions and the following disclaimer.
19874 //    * Redistributions in binary form must reproduce the above
19875 // copyright notice, this list of conditions and the following disclaimer
19876 // in the documentation and/or other materials provided with the
19877 // distribution.
19878 //    * Neither the name of Google Inc. nor the name Chromium Embedded
19879 // Framework nor the names of its contributors may be used to endorse
19880 // or promote products derived from this software without specific prior
19881 // written permission.
19882 //
19883 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19884 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
19885 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19886 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
19887 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
19888 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
19889 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
19890 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
19891 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
19892 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
19893 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
19894 //
19895 // ---------------------------------------------------------------------------
19896 //
19897 // This file was generated by the CEF translator tool and should not edited
19898 // by hand. See the translator.README.txt file in the tools directory for
19899 // more information.
19900 //
19901 // $hash=c43ca147d723753000bc819d64d09b83a23bfac2$
19902 //
19903 
19904 extern (C):
19905 
19906 ///
19907 /// Implement this structure to receive string values asynchronously.
19908 ///
19909 struct cef_string_visitor_t
19910 {
19911     ///
19912     /// Base structure.
19913     ///
19914 
19915     ///
19916     /// Method that will be executed.
19917     ///
19918 
19919     // CEF_INCLUDE_CAPI_CEF_STRING_VISITOR_CAPI_H_
19920 
19921     cef_base_ref_counted_t base;
19922     extern(System) void function (
19923         cef_string_visitor_t* self,
19924         const(cef_string_t)* string) nothrow visit;
19925 }
19926 
19927 
19928 // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
19929 //
19930 // Redistribution and use in source and binary forms, with or without
19931 // modification, are permitted provided that the following conditions are
19932 // met:
19933 //
19934 //    * Redistributions of source code must retain the above copyright
19935 // notice, this list of conditions and the following disclaimer.
19936 //    * Redistributions in binary form must reproduce the above
19937 // copyright notice, this list of conditions and the following disclaimer
19938 // in the documentation and/or other materials provided with the
19939 // distribution.
19940 //    * Neither the name of Google Inc. nor the name Chromium Embedded
19941 // Framework nor the names of its contributors may be used to endorse
19942 // or promote products derived from this software without specific prior
19943 // written permission.
19944 //
19945 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19946 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
19947 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19948 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
19949 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
19950 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
19951 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
19952 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
19953 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
19954 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
19955 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
19956 //
19957 // ---------------------------------------------------------------------------
19958 //
19959 // This file was generated by the CEF translator tool and should not edited
19960 // by hand. See the translator.README.txt file in the tools directory for
19961 // more information.
19962 //
19963 // $hash=d6055c4567fec4f3e9c72b0536812f40a97c0c3c$
19964 //
19965 
19966 extern (C):
19967 
19968 ///
19969 /// Implement this structure for asynchronous task execution. If the task is
19970 /// posted successfully and if the associated message loop is still running then
19971 /// the execute() function will be called on the target thread. If the task
19972 /// fails to post then the task object may be destroyed on the source thread
19973 /// instead of the target thread. For this reason be cautious when performing
19974 /// work in the task object destructor.
19975 ///
19976 struct cef_task_t
19977 {
19978     ///
19979     /// Base structure.
19980     ///
19981 
19982     ///
19983     /// Method that will be executed on the target thread.
19984     ///
19985 
19986     ///
19987     /// Structure that asynchronously executes tasks on the associated thread. It is
19988     /// safe to call the functions of this structure on any thread.
19989     ///
19990     /// CEF maintains multiple internal threads that are used for handling different
19991     /// types of tasks in different processes. The cef_thread_id_t definitions in
19992 
19993     cef_base_ref_counted_t base;
19994     extern(System) void function (cef_task_t* self) nothrow execute;
19995 }
19996 
19997 
19998 /// cef_types.h list the common CEF threads. Task runners are also available for
19999 /// other CEF threads as appropriate (for example, V8 WebWorker threads).
20000 ///
20001 struct cef_task_runner_t
20002 {
20003     ///
20004     /// Base structure.
20005     ///
20006     cef_base_ref_counted_t base;
20007 
20008     ///
20009     /// Returns true (1) if this object is pointing to the same task runner as
20010     /// |that| object.
20011     ///
20012     extern(System) int function (cef_task_runner_t* self, cef_task_runner_t* that) nothrow is_same;
20013 
20014     ///
20015     /// Returns true (1) if this task runner belongs to the current thread.
20016     ///
20017     extern(System) int function (cef_task_runner_t* self) nothrow belongs_to_current_thread;
20018 
20019     ///
20020     /// Returns true (1) if this task runner is for the specified CEF thread.
20021     ///
20022     extern(System) int function (
20023         cef_task_runner_t* self,
20024         cef_thread_id_t threadId) nothrow belongs_to_thread;
20025 
20026     ///
20027     /// Post a task for execution on the thread associated with this task runner.
20028     /// Execution will occur asynchronously.
20029     ///
20030     extern(System) int function (cef_task_runner_t* self, cef_task_t* task) nothrow post_task;
20031 
20032     ///
20033     /// Post a task for delayed execution on the thread associated with this task
20034     /// runner. Execution will occur asynchronously. Delayed tasks are not
20035     /// supported on V8 WebWorker threads and will be executed without the
20036     /// specified delay.
20037     ///
20038     extern(System) int function (
20039         cef_task_runner_t* self,
20040         cef_task_t* task,
20041         long delay_ms) nothrow post_delayed_task;
20042 }
20043 
20044 
20045 
20046 ///
20047 /// Returns the task runner for the current thread. Only CEF threads will have
20048 /// task runners. An NULL reference will be returned if this function is called
20049 /// on an invalid thread.
20050 ///
20051 cef_task_runner_t* cef_task_runner_get_for_current_thread ();
20052 
20053 ///
20054 /// Returns the task runner for the specified CEF thread.
20055 ///
20056 cef_task_runner_t* cef_task_runner_get_for_thread (cef_thread_id_t threadId);
20057 
20058 ///
20059 /// Returns true (1) if called on the specified thread. Equivalent to using
20060 /// cef_task_runner_t::GetForThread(threadId)->belongs_to_current_thread().
20061 ///
20062 int cef_currently_on (cef_thread_id_t threadId);
20063 
20064 ///
20065 /// Post a task for execution on the specified thread. Equivalent to using
20066 /// cef_task_runner_t::GetForThread(threadId)->PostTask(task).
20067 ///
20068 int cef_post_task (cef_thread_id_t threadId, cef_task_t* task);
20069 
20070 ///
20071 /// Post a task for delayed execution on the specified thread. Equivalent to
20072 /// using cef_task_runner_t::GetForThread(threadId)->PostDelayedTask(task,
20073 /// delay_ms).
20074 ///
20075 int cef_post_delayed_task (
20076     cef_thread_id_t threadId,
20077     cef_task_t* task,
20078     long delay_ms);
20079 
20080 // CEF_INCLUDE_CAPI_CEF_TASK_CAPI_H_
20081 // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
20082 //
20083 // Redistribution and use in source and binary forms, with or without
20084 // modification, are permitted provided that the following conditions are
20085 // met:
20086 //
20087 //    * Redistributions of source code must retain the above copyright
20088 // notice, this list of conditions and the following disclaimer.
20089 //    * Redistributions in binary form must reproduce the above
20090 // copyright notice, this list of conditions and the following disclaimer
20091 // in the documentation and/or other materials provided with the
20092 // distribution.
20093 //    * Neither the name of Google Inc. nor the name Chromium Embedded
20094 // Framework nor the names of its contributors may be used to endorse
20095 // or promote products derived from this software without specific prior
20096 // written permission.
20097 //
20098 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20099 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20100 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
20101 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
20102 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
20103 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
20104 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
20105 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
20106 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
20107 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
20108 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
20109 //
20110 // ---------------------------------------------------------------------------
20111 //
20112 // This file was generated by the CEF translator tool and should not edited
20113 // by hand. See the translator.README.txt file in the tools directory for
20114 // more information.
20115 //
20116 // $hash=752a853dae97c9bfd9b6515d20f99af751ba2dd9$
20117 //
20118 
20119 extern (C):
20120 
20121 ///
20122 /// A simple thread abstraction that establishes a message loop on a new thread.
20123 /// The consumer uses cef_task_runner_t to execute code on the thread's message
20124 /// loop. The thread is terminated when the cef_thread_t object is destroyed or
20125 /// stop() is called. All pending tasks queued on the thread's message loop will
20126 /// run to completion before the thread is terminated. cef_thread_create() can
20127 /// be called on any valid CEF thread in either the browser or render process.
20128 /// This structure should only be used for tasks that require a dedicated
20129 /// thread. In most cases you can post tasks to an existing CEF thread instead
20130 /// of creating a new one; see cef_task.h for details.
20131 ///
20132 struct cef_thread_t
20133 {
20134     ///
20135     /// Base structure.
20136     ///
20137 
20138     ///
20139     /// Returns the cef_task_runner_t that will execute code on this thread's
20140 
20141     cef_base_ref_counted_t base;
20142     /// message loop. This function is safe to call from any thread.
20143     ///
20144     extern(System) cef_task_runner_t* function (cef_thread_t* self) nothrow get_task_runner;
20145 
20146     ///
20147     /// Returns the platform thread ID. It will return the same value after stop()
20148     /// is called. This function is safe to call from any thread.
20149     ///
20150     extern(System) cef_platform_thread_id_t function (
20151         cef_thread_t* self) nothrow get_platform_thread_id;
20152 
20153     ///
20154     /// Stop and join the thread. This function must be called from the same
20155     /// thread that called cef_thread_create(). Do not call this function if
20156     /// cef_thread_create() was called with a |stoppable| value of false (0).
20157     ///
20158     extern(System) void function (cef_thread_t* self) nothrow stop;
20159 
20160     ///
20161     /// Returns true (1) if the thread is currently running. This function must be
20162     /// called from the same thread that called cef_thread_create().
20163     ///
20164     extern(System) int function (cef_thread_t* self) nothrow is_running;
20165 }
20166 
20167 
20168 
20169 ///
20170 /// Create and start a new thread. This function does not block waiting for the
20171 /// thread to run initialization. |display_name| is the name that will be used
20172 /// to identify the thread. |priority| is the thread execution priority.
20173 /// |message_loop_type| indicates the set of asynchronous events that the thread
20174 /// can process. If |stoppable| is true (1) the thread will stopped and joined
20175 /// on destruction or when stop() is called; otherwise, the thread cannot be
20176 /// stopped and will be leaked on shutdown. On Windows the |com_init_mode| value
20177 /// specifies how COM will be initialized for the thread. If |com_init_mode| is
20178 /// set to COM_INIT_MODE_STA then |message_loop_type| must be set to ML_TYPE_UI.
20179 ///
20180 cef_thread_t* cef_thread_create (
20181     const(cef_string_t)* display_name,
20182     cef_thread_priority_t priority,
20183     cef_message_loop_type_t message_loop_type,
20184     int stoppable,
20185     cef_com_init_mode_t com_init_mode);
20186 
20187 // CEF_INCLUDE_CAPI_CEF_THREAD_CAPI_H_
20188 // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
20189 //
20190 // Redistribution and use in source and binary forms, with or without
20191 // modification, are permitted provided that the following conditions are
20192 // met:
20193 //
20194 //    * Redistributions of source code must retain the above copyright
20195 // notice, this list of conditions and the following disclaimer.
20196 //    * Redistributions in binary form must reproduce the above
20197 // copyright notice, this list of conditions and the following disclaimer
20198 // in the documentation and/or other materials provided with the
20199 // distribution.
20200 //    * Neither the name of Google Inc. nor the name Chromium Embedded
20201 // Framework nor the names of its contributors may be used to endorse
20202 // or promote products derived from this software without specific prior
20203 // written permission.
20204 //
20205 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20206 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20207 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
20208 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
20209 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
20210 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
20211 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
20212 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
20213 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
20214 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
20215 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
20216 //
20217 // ---------------------------------------------------------------------------
20218 //
20219 // This file was generated by the CEF translator tool and should not edited
20220 // by hand. See the translator.README.txt file in the tools directory for
20221 // more information.
20222 //
20223 // $hash=740d6eb5bea1bfc7c4ea413fefd3bf6586a81f20$
20224 //
20225 
20226 extern (C):
20227 
20228 ///
20229 /// Implement this structure to receive notification when tracing has completed.
20230 /// The functions of this structure will be called on the browser process UI
20231 /// thread.
20232 ///
20233 struct cef_end_tracing_callback_t
20234 {
20235     ///
20236     /// Base structure.
20237     ///
20238 
20239     ///
20240     /// Called after all processes have sent their trace data. |tracing_file| is
20241     /// the path at which tracing data was written. The client is responsible for
20242     /// deleting |tracing_file|.
20243     ///
20244 
20245     ///
20246     /// Start tracing events on all processes. Tracing is initialized asynchronously
20247     /// and |callback| will be executed on the UI thread after initialization is
20248     /// complete.
20249     ///
20250     /// If CefBeginTracing was called previously, or if a CefEndTracingAsync call is
20251 
20252     cef_base_ref_counted_t base;
20253     extern(System) void function (
20254         cef_end_tracing_callback_t* self,
20255         const(cef_string_t)* tracing_file) nothrow on_end_tracing_complete;
20256 }
20257 
20258  /// pending, CefBeginTracing will fail and return false (0).
20259 ///
20260 /// |categories| is a comma-delimited list of category wildcards. A category can
20261 /// have an optional '-' prefix to make it an excluded category. Having both
20262 /// included and excluded categories in the same list is not supported.
20263 ///
20264 /// Examples:
20265 /// - "test_MyTest*"
20266 /// - "test_MyTest*,test_OtherStuff"
20267 /// - "-excluded_category1,-excluded_category2"
20268 ///
20269 /// This function must be called on the browser process UI thread.
20270 ///
20271 int cef_begin_tracing (
20272     const(cef_string_t)* categories,
20273     cef_completion_callback_t* callback);
20274 
20275 ///
20276 /// Stop tracing events on all processes.
20277 ///
20278 /// This function will fail and return false (0) if a previous call to
20279 /// CefEndTracingAsync is already pending or if CefBeginTracing was not called.
20280 ///
20281 /// |tracing_file| is the path at which tracing data will be written and
20282 /// |callback| is the callback that will be executed once all processes have
20283 /// sent their trace data. If |tracing_file| is NULL a new temporary file path
20284 /// will be used. If |callback| is NULL no trace data will be written.
20285 ///
20286 /// This function must be called on the browser process UI thread.
20287 ///
20288 int cef_end_tracing (
20289     const(cef_string_t)* tracing_file,
20290     cef_end_tracing_callback_t* callback);
20291 
20292 ///
20293 /// Returns the current system trace time or, if none is defined, the current
20294 /// high-res time. Can be used by clients to synchronize with the time
20295 /// information in trace events.
20296 ///
20297 long cef_now_from_system_trace_time ();
20298 
20299 // CEF_INCLUDE_CAPI_CEF_TRACE_CAPI_H_
20300 // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
20301 //
20302 // Redistribution and use in source and binary forms, with or without
20303 // modification, are permitted provided that the following conditions are
20304 // met:
20305 //
20306 //    * Redistributions of source code must retain the above copyright
20307 // notice, this list of conditions and the following disclaimer.
20308 //    * Redistributions in binary form must reproduce the above
20309 // copyright notice, this list of conditions and the following disclaimer
20310 // in the documentation and/or other materials provided with the
20311 // distribution.
20312 //    * Neither the name of Google Inc. nor the name Chromium Embedded
20313 // Framework nor the names of its contributors may be used to endorse
20314 // or promote products derived from this software without specific prior
20315 // written permission.
20316 //
20317 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20318 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20319 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
20320 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
20321 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
20322 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
20323 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
20324 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
20325 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
20326 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
20327 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
20328 //
20329 // ---------------------------------------------------------------------------
20330 //
20331 // This file was generated by the CEF translator tool and should not edited
20332 // by hand. See the translator.README.txt file in the tools directory for
20333 // more information.
20334 //
20335 // $hash=9ad38f2709d9e3b1bd0e99c279b0497b8aa4c82a$
20336 //
20337 
20338 extern (C):
20339 
20340 ///
20341 /// Callback structure for asynchronous handling of an unresponsive process.
20342 ///
20343 struct cef_unresponsive_process_callback_t
20344 {
20345     ///
20346     /// Base structure.
20347     ///
20348 
20349     ///
20350     /// Reset the timeout for the unresponsive process.
20351     ///
20352 
20353     ///
20354     /// Terminate the unresponsive process.
20355     ///
20356 
20357     // CEF_INCLUDE_CAPI_CEF_UNRESPONSIVE_PROCESS_CALLBACK_CAPI_H_
20358 
20359     cef_base_ref_counted_t base;
20360     extern(System) void function (cef_unresponsive_process_callback_t* self) nothrow wait;
20361     extern(System) void function (cef_unresponsive_process_callback_t* self) nothrow terminate;
20362 }
20363 
20364 
20365 // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
20366 //
20367 // Redistribution and use in source and binary forms, with or without
20368 // modification, are permitted provided that the following conditions are
20369 // met:
20370 //
20371 //    * Redistributions of source code must retain the above copyright
20372 // notice, this list of conditions and the following disclaimer.
20373 //    * Redistributions in binary form must reproduce the above
20374 // copyright notice, this list of conditions and the following disclaimer
20375 // in the documentation and/or other materials provided with the
20376 // distribution.
20377 //    * Neither the name of Google Inc. nor the name Chromium Embedded
20378 // Framework nor the names of its contributors may be used to endorse
20379 // or promote products derived from this software without specific prior
20380 // written permission.
20381 //
20382 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20383 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20384 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
20385 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
20386 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
20387 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
20388 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
20389 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
20390 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
20391 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
20392 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
20393 //
20394 // ---------------------------------------------------------------------------
20395 //
20396 // This file was generated by the CEF translator tool and should not edited
20397 // by hand. See the translator.README.txt file in the tools directory for
20398 // more information.
20399 //
20400 // $hash=6a8ed2646d767d3c42ea79f7586f19769c1df742$
20401 //
20402 
20403 extern (C):
20404 
20405 ///
20406 /// Structure used to make a URL request. URL requests are not associated with a
20407 /// browser instance so no cef_client_t callbacks will be executed. URL requests
20408 /// can be created on any valid CEF thread in either the browser or render
20409 /// process. Once created the functions of the URL request object must be
20410 /// accessed on the same thread that created it.
20411 ///
20412 struct cef_urlrequest_t
20413 {
20414     ///
20415     /// Base structure.
20416     ///
20417 
20418     ///
20419     /// Returns the request object used to create this URL request. The returned
20420     /// object is read-only and should not be modified.
20421     ///
20422 
20423     cef_base_ref_counted_t base;
20424     extern(System) cef_request_t* function (cef_urlrequest_t* self) nothrow get_request;
20425     ///
20426     /// Returns the client.
20427     ///
20428     extern(System) cef_urlrequest_client_t* function (cef_urlrequest_t* self) nothrow get_client;
20429 
20430     ///
20431     /// Returns the request status.
20432     ///
20433     extern(System) cef_urlrequest_status_t function (
20434         cef_urlrequest_t* self) nothrow get_request_status;
20435 
20436     ///
20437     /// Returns the request error if status is UR_CANCELED or UR_FAILED, or 0
20438     /// otherwise.
20439     ///
20440     extern(System) cef_errorcode_t function (cef_urlrequest_t* self) nothrow get_request_error;
20441 
20442     ///
20443     /// Returns the response, or NULL if no response information is available.
20444     /// Response information will only be available after the upload has
20445     /// completed. The returned object is read-only and should not be modified.
20446     ///
20447     extern(System) cef_response_t* function (cef_urlrequest_t* self) nothrow get_response;
20448 
20449     ///
20450     /// Returns true (1) if the response body was served from the cache. This
20451     /// includes responses for which revalidation was required.
20452     ///
20453     extern(System) int function (cef_urlrequest_t* self) nothrow response_was_cached;
20454 
20455     ///
20456     /// Cancel the request.
20457     ///
20458     extern(System) void function (cef_urlrequest_t* self) nothrow cancel;
20459 }
20460 
20461 
20462 
20463 ///
20464 /// Create a new URL request that is not associated with a specific browser or
20465 /// frame. Use cef_frame_t::CreateURLRequest instead if you want the request to
20466 /// have this association, in which case it may be handled differently (see
20467 /// documentation on that function). A request created with this function may
20468 /// only originate from the browser process, and will behave as follows:
20469 ///   - It may be intercepted by the client via CefResourceRequestHandler or
20470 ///     CefSchemeHandlerFactory.
20471 ///   - POST data may only contain only a single element of type PDE_TYPE_FILE
20472 ///     or PDE_TYPE_BYTES.
20473 ///   - If |request_context| is empty the global request context will be used.
20474 ///
20475 /// The |request| object will be marked as read-only after calling this
20476 /// function.
20477 ///
20478 cef_urlrequest_t* cef_urlrequest_create (
20479     cef_request_t* request,
20480     cef_urlrequest_client_t* client,
20481     cef_request_context_t* request_context);
20482 
20483 ///
20484 /// Structure that should be implemented by the cef_urlrequest_t client. The
20485 /// functions of this structure will be called on the same thread that created
20486 /// the request unless otherwise documented.
20487 ///
20488 struct cef_urlrequest_client_t
20489 {
20490     ///
20491     /// Base structure.
20492     ///
20493     cef_base_ref_counted_t base;
20494 
20495     ///
20496     /// Notifies the client that the request has completed. Use the
20497     /// cef_urlrequest_t::GetRequestStatus function to determine if the request
20498     /// was successful or not.
20499     ///
20500     extern(System) void function (
20501         cef_urlrequest_client_t* self,
20502         cef_urlrequest_t* request) nothrow on_request_complete;
20503 
20504     ///
20505     /// Notifies the client of upload progress. |current| denotes the number of
20506     /// bytes sent so far and |total| is the total size of uploading data (or -1
20507     /// if chunked upload is enabled). This function will only be called if the
20508     /// UR_FLAG_REPORT_UPLOAD_PROGRESS flag is set on the request.
20509     ///
20510     extern(System) void function (
20511         cef_urlrequest_client_t* self,
20512         cef_urlrequest_t* request,
20513         long current,
20514         long total) nothrow on_upload_progress;
20515 
20516     ///
20517     /// Notifies the client of download progress. |current| denotes the number of
20518     /// bytes received up to the call and |total| is the expected total size of
20519     /// the response (or -1 if not determined).
20520     ///
20521     extern(System) void function (
20522         cef_urlrequest_client_t* self,
20523         cef_urlrequest_t* request,
20524         long current,
20525         long total) nothrow on_download_progress;
20526 
20527     ///
20528     /// Called when some part of the response is read. |data| contains the current
20529     /// bytes received since the last call. This function will not be called if
20530     /// the UR_FLAG_NO_DOWNLOAD_DATA flag is set on the request.
20531     ///
20532     extern(System) void function (
20533         cef_urlrequest_client_t* self,
20534         cef_urlrequest_t* request,
20535         const(void)* data,
20536         size_t data_length) nothrow on_download_data;
20537 
20538     ///
20539     /// Called on the IO thread when the browser needs credentials from the user.
20540     /// |isProxy| indicates whether the host is a proxy server. |host| contains
20541     /// the hostname and |port| contains the port number. Return true (1) to
20542     /// continue the request and call cef_auth_callback_t::cont() when the
20543     /// authentication information is available. If the request has an associated
20544     /// browser/frame then returning false (0) will result in a call to
20545     /// GetAuthCredentials on the cef_request_handler_t associated with that
20546     /// browser, if any. Otherwise, returning false (0) will cancel the request
20547     /// immediately. This function will only be called for requests initiated from
20548     /// the browser process.
20549     ///
20550     extern(System) int function (
20551         cef_urlrequest_client_t* self,
20552         int isProxy,
20553         const(cef_string_t)* host,
20554         int port,
20555         const(cef_string_t)* realm,
20556         const(cef_string_t)* scheme,
20557         cef_auth_callback_t* callback) nothrow get_auth_credentials;
20558 }
20559 
20560 
20561 
20562 // CEF_INCLUDE_CAPI_CEF_URLREQUEST_CAPI_H_
20563 // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
20564 //
20565 // Redistribution and use in source and binary forms, with or without
20566 // modification, are permitted provided that the following conditions are
20567 // met:
20568 //
20569 //    * Redistributions of source code must retain the above copyright
20570 // notice, this list of conditions and the following disclaimer.
20571 //    * Redistributions in binary form must reproduce the above
20572 // copyright notice, this list of conditions and the following disclaimer
20573 // in the documentation and/or other materials provided with the
20574 // distribution.
20575 //    * Neither the name of Google Inc. nor the name Chromium Embedded
20576 // Framework nor the names of its contributors may be used to endorse
20577 // or promote products derived from this software without specific prior
20578 // written permission.
20579 //
20580 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20581 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20582 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
20583 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
20584 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
20585 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
20586 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
20587 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
20588 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
20589 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
20590 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
20591 //
20592 // ---------------------------------------------------------------------------
20593 //
20594 // This file was generated by the CEF translator tool and should not edited
20595 // by hand. See the translator.README.txt file in the tools directory for
20596 // more information.
20597 //
20598 // $hash=5dd4948a92af2ad69e2171f2dffb8f2c23e5c147$
20599 //
20600 
20601 extern (C):
20602 
20603 ///
20604 /// Structure representing a V8 context handle. V8 handles can only be accessed
20605 /// from the thread on which they are created. Valid threads for creating a V8
20606 /// handle include the render process main thread (TID_RENDERER) and WebWorker
20607 /// threads. A task runner for posting tasks on the associated thread can be
20608 /// retrieved via the cef_v8context_t::get_task_runner() function.
20609 ///
20610 struct cef_v8context_t
20611 {
20612     ///
20613     /// Base structure.
20614     ///
20615 
20616     ///
20617     /// Returns the task runner associated with this context. V8 handles can only
20618     /// be accessed from the thread on which they are created. This function can
20619     /// be called on any render process thread.
20620 
20621     cef_base_ref_counted_t base;
20622     ///
20623     extern(System) cef_task_runner_t* function (cef_v8context_t* self) nothrow get_task_runner;
20624 
20625     ///
20626     /// Returns true (1) if the underlying handle is valid and it can be accessed
20627     /// on the current thread. Do not call any other functions if this function
20628     /// returns false (0).
20629     ///
20630     extern(System) int function (cef_v8context_t* self) nothrow is_valid;
20631 
20632     ///
20633     /// Returns the browser for this context. This function will return an NULL
20634     /// reference for WebWorker contexts.
20635     ///
20636     extern(System) cef_browser_t* function (cef_v8context_t* self) nothrow get_browser;
20637 
20638     ///
20639     /// Returns the frame for this context. This function will return an NULL
20640     /// reference for WebWorker contexts.
20641     ///
20642     extern(System) cef_frame_t* function (cef_v8context_t* self) nothrow get_frame;
20643 
20644     ///
20645     /// Returns the global object for this context. The context must be entered
20646     /// before calling this function.
20647     ///
20648     extern(System) cef_v8value_t* function (cef_v8context_t* self) nothrow get_global;
20649 
20650     ///
20651     /// Enter this context. A context must be explicitly entered before creating a
20652     /// V8 Object, Array, Function or Date asynchronously. exit() must be called
20653     /// the same number of times as enter() before releasing this context. V8
20654     /// objects belong to the context in which they are created. Returns true (1)
20655     /// if the scope was entered successfully.
20656     ///
20657     extern(System) int function (cef_v8context_t* self) nothrow enter;
20658 
20659     ///
20660     /// Exit this context. Call this function only after calling enter(). Returns
20661     /// true (1) if the scope was exited successfully.
20662     ///
20663     extern(System) int function (cef_v8context_t* self) nothrow exit;
20664 
20665     ///
20666     /// Returns true (1) if this object is pointing to the same handle as |that|
20667     /// object.
20668     ///
20669     extern(System) int function (cef_v8context_t* self, cef_v8context_t* that) nothrow is_same;
20670 
20671     ///
20672     /// Execute a string of JavaScript code in this V8 context. The |script_url|
20673     /// parameter is the URL where the script in question can be found, if any.
20674     /// The |start_line| parameter is the base line number to use for error
20675     /// reporting. On success |retval| will be set to the return value, if any,
20676     /// and the function will return true (1). On failure |exception| will be set
20677     /// to the exception, if any, and the function will return false (0).
20678     ///
20679     extern(System) int function (
20680         cef_v8context_t* self,
20681         const(cef_string_t)* code,
20682         const(cef_string_t)* script_url,
20683         int start_line,
20684         cef_v8value_t** retval,
20685         cef_v8exception_t** exception) nothrow eval;
20686 }
20687 
20688 
20689 
20690 ///
20691 /// Returns the current (top) context object in the V8 context stack.
20692 ///
20693 cef_v8context_t* cef_v8context_get_current_context ();
20694 
20695 ///
20696 /// Returns the entered (bottom) context object in the V8 context stack.
20697 ///
20698 cef_v8context_t* cef_v8context_get_entered_context ();
20699 
20700 ///
20701 /// Returns true (1) if V8 is currently inside a context.
20702 ///
20703 int cef_v8context_in_context ();
20704 
20705 ///
20706 /// Structure that should be implemented to handle V8 function calls. The
20707 /// functions of this structure will be called on the thread associated with the
20708 /// V8 function.
20709 ///
20710 struct cef_v8handler_t
20711 {
20712     ///
20713     /// Base structure.
20714     ///
20715     cef_base_ref_counted_t base;
20716 
20717     ///
20718     /// Handle execution of the function identified by |name|. |object| is the
20719     /// receiver ('this' object) of the function. |arguments| is the list of
20720     /// arguments passed to the function. If execution succeeds set |retval| to
20721     /// the function return value. If execution fails set |exception| to the
20722     /// exception that will be thrown. Return true (1) if execution was handled.
20723     ///
20724     extern(System) int function (
20725         cef_v8handler_t* self,
20726         const(cef_string_t)* name,
20727         cef_v8value_t* object,
20728         size_t argumentsCount,
20729         cef_v8value_t** arguments,
20730         cef_v8value_t** retval,
20731         cef_string_t* exception) nothrow execute;
20732 }
20733 
20734 
20735 
20736 ///
20737 /// Structure that should be implemented to handle V8 accessor calls. Accessor
20738 /// identifiers are registered by calling cef_v8value_t::set_value(). The
20739 /// functions of this structure will be called on the thread associated with the
20740 /// V8 accessor.
20741 ///
20742 struct cef_v8accessor_t
20743 {
20744     ///
20745     /// Base structure.
20746     ///
20747     cef_base_ref_counted_t base;
20748 
20749     ///
20750     /// Handle retrieval the accessor value identified by |name|. |object| is the
20751     /// receiver ('this' object) of the accessor. If retrieval succeeds set
20752     /// |retval| to the return value. If retrieval fails set |exception| to the
20753     /// exception that will be thrown. Return true (1) if accessor retrieval was
20754     /// handled.
20755     ///
20756     extern(System) int function (
20757         cef_v8accessor_t* self,
20758         const(cef_string_t)* name,
20759         cef_v8value_t* object,
20760         cef_v8value_t** retval,
20761         cef_string_t* exception) nothrow get;
20762 
20763     ///
20764     /// Handle assignment of the accessor value identified by |name|. |object| is
20765     /// the receiver ('this' object) of the accessor. |value| is the new value
20766     /// being assigned to the accessor. If assignment fails set |exception| to the
20767     /// exception that will be thrown. Return true (1) if accessor assignment was
20768     /// handled.
20769     ///
20770     extern(System) int function (
20771         cef_v8accessor_t* self,
20772         const(cef_string_t)* name,
20773         cef_v8value_t* object,
20774         cef_v8value_t* value,
20775         cef_string_t* exception) nothrow set;
20776 }
20777 
20778 
20779 
20780 ///
20781 /// Structure that should be implemented to handle V8 interceptor calls. The
20782 /// functions of this structure will be called on the thread associated with the
20783 /// V8 interceptor. Interceptor's named property handlers (with first argument
20784 /// of type CefString) are called when object is indexed by string. Indexed
20785 /// property handlers (with first argument of type int) are called when object
20786 /// is indexed by integer.
20787 ///
20788 struct cef_v8interceptor_t
20789 {
20790     ///
20791     /// Base structure.
20792     ///
20793     cef_base_ref_counted_t base;
20794 
20795     ///
20796     /// Handle retrieval of the interceptor value identified by |name|. |object|
20797     /// is the receiver ('this' object) of the interceptor. If retrieval succeeds,
20798     /// set |retval| to the return value. If the requested value does not exist,
20799     /// don't set either |retval| or |exception|. If retrieval fails, set
20800     /// |exception| to the exception that will be thrown. If the property has an
20801     /// associated accessor, it will be called only if you don't set |retval|.
20802     /// Return true (1) if interceptor retrieval was handled, false (0) otherwise.
20803     ///
20804     extern(System) int function (
20805         cef_v8interceptor_t* self,
20806         const(cef_string_t)* name,
20807         cef_v8value_t* object,
20808         cef_v8value_t** retval,
20809         cef_string_t* exception) nothrow get_byname;
20810 
20811     ///
20812     /// Handle retrieval of the interceptor value identified by |index|. |object|
20813     /// is the receiver ('this' object) of the interceptor. If retrieval succeeds,
20814     /// set |retval| to the return value. If the requested value does not exist,
20815     /// don't set either |retval| or |exception|. If retrieval fails, set
20816     /// |exception| to the exception that will be thrown. Return true (1) if
20817     /// interceptor retrieval was handled, false (0) otherwise.
20818     ///
20819     extern(System) int function (
20820         cef_v8interceptor_t* self,
20821         int index,
20822         cef_v8value_t* object,
20823         cef_v8value_t** retval,
20824         cef_string_t* exception) nothrow get_byindex;
20825 
20826     ///
20827     /// Handle assignment of the interceptor value identified by |name|. |object|
20828     /// is the receiver ('this' object) of the interceptor. |value| is the new
20829     /// value being assigned to the interceptor. If assignment fails, set
20830     /// |exception| to the exception that will be thrown. This setter will always
20831     /// be called, even when the property has an associated accessor. Return true
20832     /// (1) if interceptor assignment was handled, false (0) otherwise.
20833     ///
20834     extern(System) int function (
20835         cef_v8interceptor_t* self,
20836         const(cef_string_t)* name,
20837         cef_v8value_t* object,
20838         cef_v8value_t* value,
20839         cef_string_t* exception) nothrow set_byname;
20840 
20841     ///
20842     /// Handle assignment of the interceptor value identified by |index|. |object|
20843     /// is the receiver ('this' object) of the interceptor. |value| is the new
20844     /// value being assigned to the interceptor. If assignment fails, set
20845     /// |exception| to the exception that will be thrown. Return true (1) if
20846     /// interceptor assignment was handled, false (0) otherwise.
20847     ///
20848     extern(System) int function (
20849         cef_v8interceptor_t* self,
20850         int index,
20851         cef_v8value_t* object,
20852         cef_v8value_t* value,
20853         cef_string_t* exception) nothrow set_byindex;
20854 }
20855 
20856 
20857 
20858 ///
20859 /// Structure representing a V8 exception. The functions of this structure may
20860 /// be called on any render process thread.
20861 ///
20862 struct cef_v8exception_t
20863 {
20864     ///
20865     /// Base structure.
20866     ///
20867     cef_base_ref_counted_t base;
20868 
20869     ///
20870     /// Returns the exception message.
20871     ///
20872     // The resulting string must be freed by calling cef_string_userfree_free().
20873     extern(System) cef_string_userfree_t function (cef_v8exception_t* self) nothrow get_message;
20874 
20875     ///
20876     /// Returns the line of source code that the exception occurred within.
20877     ///
20878     // The resulting string must be freed by calling cef_string_userfree_free().
20879     extern(System) cef_string_userfree_t function (cef_v8exception_t* self) nothrow get_source_line;
20880 
20881     ///
20882     /// Returns the resource name for the script from where the function causing
20883     /// the error originates.
20884     ///
20885     // The resulting string must be freed by calling cef_string_userfree_free().
20886     extern(System) cef_string_userfree_t function (
20887         cef_v8exception_t* self) nothrow get_script_resource_name;
20888 
20889     ///
20890     /// Returns the 1-based number of the line where the error occurred or 0 if
20891     /// the line number is unknown.
20892     ///
20893     extern(System) int function (cef_v8exception_t* self) nothrow get_line_number;
20894 
20895     ///
20896     /// Returns the index within the script of the first character where the error
20897     /// occurred.
20898     ///
20899     extern(System) int function (cef_v8exception_t* self) nothrow get_start_position;
20900 
20901     ///
20902     /// Returns the index within the script of the last character where the error
20903     /// occurred.
20904     ///
20905     extern(System) int function (cef_v8exception_t* self) nothrow get_end_position;
20906 
20907     ///
20908     /// Returns the index within the line of the first character where the error
20909     /// occurred.
20910     ///
20911     extern(System) int function (cef_v8exception_t* self) nothrow get_start_column;
20912 
20913     ///
20914     /// Returns the index within the line of the last character where the error
20915     /// occurred.
20916     ///
20917     extern(System) int function (cef_v8exception_t* self) nothrow get_end_column;
20918 }
20919 
20920 
20921 
20922 ///
20923 /// Callback structure that is passed to cef_v8value_t::CreateArrayBuffer.
20924 ///
20925 struct cef_v8array_buffer_release_callback_t
20926 {
20927     ///
20928     /// Base structure.
20929     ///
20930     cef_base_ref_counted_t base;
20931 
20932     ///
20933     /// Called to release |buffer| when the ArrayBuffer JS object is garbage
20934     /// collected. |buffer| is the value that was passed to CreateArrayBuffer
20935     /// along with this object.
20936     ///
20937     extern(System) void function (
20938         cef_v8array_buffer_release_callback_t* self,
20939         void* buffer) nothrow release_buffer;
20940 }
20941 
20942 
20943 
20944 ///
20945 /// Structure representing a V8 value handle. V8 handles can only be accessed
20946 /// from the thread on which they are created. Valid threads for creating a V8
20947 /// handle include the render process main thread (TID_RENDERER) and WebWorker
20948 /// threads. A task runner for posting tasks on the associated thread can be
20949 /// retrieved via the cef_v8context_t::get_task_runner() function.
20950 ///
20951 struct cef_v8value_t
20952 {
20953     ///
20954     /// Base structure.
20955     ///
20956     cef_base_ref_counted_t base;
20957 
20958     ///
20959     /// Returns true (1) if the underlying handle is valid and it can be accessed
20960     /// on the current thread. Do not call any other functions if this function
20961     /// returns false (0).
20962     ///
20963     extern(System) int function (cef_v8value_t* self) nothrow is_valid;
20964 
20965     ///
20966     /// True if the value type is undefined.
20967     ///
20968     extern(System) int function (cef_v8value_t* self) nothrow is_undefined;
20969 
20970     ///
20971     /// True if the value type is null.
20972     ///
20973     extern(System) int function (cef_v8value_t* self) nothrow is_null;
20974 
20975     ///
20976     /// True if the value type is bool.
20977     ///
20978     extern(System) int function (cef_v8value_t* self) nothrow is_bool;
20979 
20980     ///
20981     /// True if the value type is int.
20982     ///
20983     extern(System) int function (cef_v8value_t* self) nothrow is_int;
20984 
20985     ///
20986     /// True if the value type is unsigned int.
20987     ///
20988     extern(System) int function (cef_v8value_t* self) nothrow is_uint;
20989 
20990     ///
20991     /// True if the value type is double.
20992     ///
20993     extern(System) int function (cef_v8value_t* self) nothrow is_double;
20994 
20995     ///
20996     /// True if the value type is Date.
20997     ///
20998     extern(System) int function (cef_v8value_t* self) nothrow is_date;
20999 
21000     ///
21001     /// True if the value type is string.
21002     ///
21003     extern(System) int function (cef_v8value_t* self) nothrow is_string;
21004 
21005     ///
21006     /// True if the value type is object.
21007     ///
21008     extern(System) int function (cef_v8value_t* self) nothrow is_object;
21009 
21010     ///
21011     /// True if the value type is array.
21012     ///
21013     extern(System) int function (cef_v8value_t* self) nothrow is_array;
21014 
21015     ///
21016     /// True if the value type is an ArrayBuffer.
21017     ///
21018     extern(System) int function (cef_v8value_t* self) nothrow is_array_buffer;
21019 
21020     ///
21021     /// True if the value type is function.
21022     ///
21023     extern(System) int function (cef_v8value_t* self) nothrow is_function;
21024 
21025     ///
21026     /// True if the value type is a Promise.
21027     ///
21028     extern(System) int function (cef_v8value_t* self) nothrow is_promise;
21029 
21030     ///
21031     /// Returns true (1) if this object is pointing to the same handle as |that|
21032     /// object.
21033     ///
21034     extern(System) int function (cef_v8value_t* self, cef_v8value_t* that) nothrow is_same;
21035 
21036     ///
21037     /// Return a bool value.
21038     ///
21039     extern(System) int function (cef_v8value_t* self) nothrow get_bool_value;
21040 
21041     ///
21042     /// Return an int value.
21043     ///
21044     extern(System) int function (cef_v8value_t* self) nothrow get_int_value;
21045 
21046     ///
21047     /// Return an unsigned int value.
21048     ///
21049     extern(System) uint function (cef_v8value_t* self) nothrow get_uint_value;
21050 
21051     ///
21052     /// Return a double value.
21053     ///
21054     extern(System) double function (cef_v8value_t* self) nothrow get_double_value;
21055 
21056     ///
21057     /// Return a Date value.
21058     ///
21059     extern(System) cef_basetime_t function (cef_v8value_t* self) nothrow get_date_value;
21060 
21061     ///
21062     /// Return a string value.
21063     ///
21064     // The resulting string must be freed by calling cef_string_userfree_free().
21065     extern(System) cef_string_userfree_t function (cef_v8value_t* self) nothrow get_string_value;
21066 
21067     ///
21068     /// Returns true (1) if this is a user created object.
21069     ///
21070     extern(System) int function (cef_v8value_t* self) nothrow is_user_created;
21071 
21072     ///
21073     /// Returns true (1) if the last function call resulted in an exception. This
21074     /// attribute exists only in the scope of the current CEF value object.
21075     ///
21076     extern(System) int function (cef_v8value_t* self) nothrow has_exception;
21077 
21078     ///
21079     /// Returns the exception resulting from the last function call. This
21080     /// attribute exists only in the scope of the current CEF value object.
21081     ///
21082     extern(System) cef_v8exception_t* function (cef_v8value_t* self) nothrow get_exception;
21083 
21084     ///
21085     /// Clears the last exception and returns true (1) on success.
21086     ///
21087     extern(System) int function (cef_v8value_t* self) nothrow clear_exception;
21088 
21089     ///
21090     /// Returns true (1) if this object will re-throw future exceptions. This
21091     /// attribute exists only in the scope of the current CEF value object.
21092     ///
21093     extern(System) int function (cef_v8value_t* self) nothrow will_rethrow_exceptions;
21094 
21095     ///
21096     /// Set whether this object will re-throw future exceptions. By default
21097     /// exceptions are not re-thrown. If a exception is re-thrown the current
21098     /// context should not be accessed again until after the exception has been
21099     /// caught and not re-thrown. Returns true (1) on success. This attribute
21100     /// exists only in the scope of the current CEF value object.
21101     ///
21102     extern(System) int function (cef_v8value_t* self, int rethrow) nothrow set_rethrow_exceptions;
21103 
21104     ///
21105     /// Returns true (1) if the object has a value with the specified identifier.
21106     ///
21107     extern(System) int function (
21108         cef_v8value_t* self,
21109         const(cef_string_t)* key) nothrow has_value_bykey;
21110 
21111     ///
21112     /// Returns true (1) if the object has a value with the specified identifier.
21113     ///
21114     extern(System) int function (cef_v8value_t* self, int index) nothrow has_value_byindex;
21115 
21116     ///
21117     /// Deletes the value with the specified identifier and returns true (1) on
21118     /// success. Returns false (0) if this function is called incorrectly or an
21119     /// exception is thrown. For read-only and don't-delete values this function
21120     /// will return true (1) even though deletion failed.
21121     ///
21122     extern(System) int function (
21123         cef_v8value_t* self,
21124         const(cef_string_t)* key) nothrow delete_value_bykey;
21125 
21126     ///
21127     /// Deletes the value with the specified identifier and returns true (1) on
21128     /// success. Returns false (0) if this function is called incorrectly,
21129     /// deletion fails or an exception is thrown. For read-only and don't-delete
21130     /// values this function will return true (1) even though deletion failed.
21131     ///
21132     extern(System) int function (cef_v8value_t* self, int index) nothrow delete_value_byindex;
21133 
21134     ///
21135     /// Returns the value with the specified identifier on success. Returns NULL
21136     /// if this function is called incorrectly or an exception is thrown.
21137     ///
21138     extern(System) cef_v8value_t* function (
21139         cef_v8value_t* self,
21140         const(cef_string_t)* key) nothrow get_value_bykey;
21141 
21142     ///
21143     /// Returns the value with the specified identifier on success. Returns NULL
21144     /// if this function is called incorrectly or an exception is thrown.
21145     ///
21146     extern(System) cef_v8value_t* function (
21147         cef_v8value_t* self,
21148         int index) nothrow get_value_byindex;
21149 
21150     ///
21151     /// Associates a value with the specified identifier and returns true (1) on
21152     /// success. Returns false (0) if this function is called incorrectly or an
21153     /// exception is thrown. For read-only values this function will return true
21154     /// (1) even though assignment failed.
21155     ///
21156     extern(System) int function (
21157         cef_v8value_t* self,
21158         const(cef_string_t)* key,
21159         cef_v8value_t* value,
21160         cef_v8_propertyattribute_t attribute) nothrow set_value_bykey;
21161 
21162     ///
21163     /// Associates a value with the specified identifier and returns true (1) on
21164     /// success. Returns false (0) if this function is called incorrectly or an
21165     /// exception is thrown. For read-only values this function will return true
21166     /// (1) even though assignment failed.
21167     ///
21168     extern(System) int function (
21169         cef_v8value_t* self,
21170         int index,
21171         cef_v8value_t* value) nothrow set_value_byindex;
21172 
21173     ///
21174     /// Registers an identifier and returns true (1) on success. Access to the
21175     /// identifier will be forwarded to the cef_v8accessor_t instance passed to
21176     /// cef_v8value_t::cef_v8value_create_object(). Returns false (0) if this
21177     /// function is called incorrectly or an exception is thrown. For read-only
21178     /// values this function will return true (1) even though assignment failed.
21179     ///
21180     extern(System) int function (
21181         cef_v8value_t* self,
21182         const(cef_string_t)* key,
21183         cef_v8_propertyattribute_t attribute) nothrow set_value_byaccessor;
21184 
21185     ///
21186     /// Read the keys for the object's values into the specified vector. Integer-
21187     /// based keys will also be returned as strings.
21188     ///
21189     extern(System) int function (cef_v8value_t* self, cef_string_list_t keys) nothrow get_keys;
21190 
21191     ///
21192     /// Sets the user data for this object and returns true (1) on success.
21193     /// Returns false (0) if this function is called incorrectly. This function
21194     /// can only be called on user created objects.
21195     ///
21196     extern(System) int function (
21197         cef_v8value_t* self,
21198         cef_base_ref_counted_t* user_data) nothrow set_user_data;
21199 
21200     ///
21201     /// Returns the user data, if any, assigned to this object.
21202     ///
21203     extern(System) cef_base_ref_counted_t* function (cef_v8value_t* self) nothrow get_user_data;
21204 
21205     ///
21206     /// Returns the amount of externally allocated memory registered for the
21207     /// object.
21208     ///
21209     extern(System) int function (cef_v8value_t* self) nothrow get_externally_allocated_memory;
21210 
21211     ///
21212     /// Adjusts the amount of registered external memory for the object. Used to
21213     /// give V8 an indication of the amount of externally allocated memory that is
21214     /// kept alive by JavaScript objects. V8 uses this information to decide when
21215     /// to perform global garbage collection. Each cef_v8value_t tracks the amount
21216     /// of external memory associated with it and automatically decreases the
21217     /// global total by the appropriate amount on its destruction.
21218     /// |change_in_bytes| specifies the number of bytes to adjust by. This
21219     /// function returns the number of bytes associated with the object after the
21220     /// adjustment. This function can only be called on user created objects.
21221     ///
21222     extern(System) int function (
21223         cef_v8value_t* self,
21224         int change_in_bytes) nothrow adjust_externally_allocated_memory;
21225 
21226     ///
21227     /// Returns the number of elements in the array.
21228     ///
21229     extern(System) int function (cef_v8value_t* self) nothrow get_array_length;
21230 
21231     ///
21232     /// Returns the ReleaseCallback object associated with the ArrayBuffer or NULL
21233     /// if the ArrayBuffer was not created with CreateArrayBuffer.
21234     ///
21235     extern(System) cef_v8array_buffer_release_callback_t* function (
21236         cef_v8value_t* self) nothrow get_array_buffer_release_callback;
21237 
21238     ///
21239     /// Prevent the ArrayBuffer from using it's memory block by setting the length
21240     /// to zero. This operation cannot be undone. If the ArrayBuffer was created
21241     /// with CreateArrayBuffer then
21242     /// cef_v8array_buffer_release_callback_t::ReleaseBuffer will be called to
21243     /// release the underlying buffer.
21244     ///
21245     extern(System) int function (cef_v8value_t* self) nothrow neuter_array_buffer;
21246 
21247     ///
21248     /// Returns the length (in bytes) of the ArrayBuffer.
21249     ///
21250     extern(System) size_t function (cef_v8value_t* self) nothrow get_array_buffer_byte_length;
21251 
21252     ///
21253     /// Returns a pointer to the beginning of the memory block for this
21254     /// ArrayBuffer backing store. The returned pointer is valid as long as the
21255     /// cef_v8value_t is alive.
21256     ///
21257     extern(System) void* function (cef_v8value_t* self) nothrow get_array_buffer_data;
21258 
21259     ///
21260     /// Returns the function name.
21261     ///
21262     // The resulting string must be freed by calling cef_string_userfree_free().
21263     extern(System) cef_string_userfree_t function (cef_v8value_t* self) nothrow get_function_name;
21264 
21265     ///
21266     /// Returns the function handler or NULL if not a CEF-created function.
21267     ///
21268     extern(System) cef_v8handler_t* function (cef_v8value_t* self) nothrow get_function_handler;
21269 
21270     ///
21271     /// Execute the function using the current V8 context. This function should
21272     /// only be called from within the scope of a cef_v8handler_t or
21273     /// cef_v8accessor_t callback, or in combination with calling enter() and
21274     /// exit() on a stored cef_v8context_t reference. |object| is the receiver
21275     /// ('this' object) of the function. If |object| is NULL the current context's
21276     /// global object will be used. |arguments| is the list of arguments that will
21277     /// be passed to the function. Returns the function return value on success.
21278     /// Returns NULL if this function is called incorrectly or an exception is
21279     /// thrown.
21280     ///
21281     extern(System) cef_v8value_t* function (
21282         cef_v8value_t* self,
21283         cef_v8value_t* object,
21284         size_t argumentsCount,
21285         cef_v8value_t** arguments) nothrow execute_function;
21286 
21287     ///
21288     /// Execute the function using the specified V8 context. |object| is the
21289     /// receiver ('this' object) of the function. If |object| is NULL the
21290     /// specified context's global object will be used. |arguments| is the list of
21291     /// arguments that will be passed to the function. Returns the function return
21292     /// value on success. Returns NULL if this function is called incorrectly or
21293     /// an exception is thrown.
21294     ///
21295     extern(System) cef_v8value_t* function (
21296         cef_v8value_t* self,
21297         cef_v8context_t* context,
21298         cef_v8value_t* object,
21299         size_t argumentsCount,
21300         cef_v8value_t** arguments) nothrow execute_function_with_context;
21301 
21302     ///
21303     /// Resolve the Promise using the current V8 context. This function should
21304     /// only be called from within the scope of a cef_v8handler_t or
21305     /// cef_v8accessor_t callback, or in combination with calling enter() and
21306     /// exit() on a stored cef_v8context_t reference. |arg| is the argument passed
21307     /// to the resolved promise. Returns true (1) on success. Returns false (0) if
21308     /// this function is called incorrectly or an exception is thrown.
21309     ///
21310     extern(System) int function (cef_v8value_t* self, cef_v8value_t* arg) nothrow resolve_promise;
21311 
21312     ///
21313     /// Reject the Promise using the current V8 context. This function should only
21314     /// be called from within the scope of a cef_v8handler_t or cef_v8accessor_t
21315     /// callback, or in combination with calling enter() and exit() on a stored
21316     /// cef_v8context_t reference. Returns true (1) on success. Returns false (0)
21317     /// if this function is called incorrectly or an exception is thrown.
21318     ///
21319     extern(System) int function (
21320         cef_v8value_t* self,
21321         const(cef_string_t)* errorMsg) nothrow reject_promise;
21322 }
21323 
21324 
21325 
21326 ///
21327 /// Create a new cef_v8value_t object of type undefined.
21328 ///
21329 cef_v8value_t* cef_v8value_create_undefined ();
21330 
21331 ///
21332 /// Create a new cef_v8value_t object of type null.
21333 ///
21334 cef_v8value_t* cef_v8value_create_null ();
21335 
21336 ///
21337 /// Create a new cef_v8value_t object of type bool.
21338 ///
21339 cef_v8value_t* cef_v8value_create_bool (int value);
21340 
21341 ///
21342 /// Create a new cef_v8value_t object of type int.
21343 ///
21344 cef_v8value_t* cef_v8value_create_int (int value);
21345 
21346 ///
21347 /// Create a new cef_v8value_t object of type unsigned int.
21348 ///
21349 cef_v8value_t* cef_v8value_create_uint (uint value);
21350 
21351 ///
21352 /// Create a new cef_v8value_t object of type double.
21353 ///
21354 cef_v8value_t* cef_v8value_create_double (double value);
21355 
21356 ///
21357 /// Create a new cef_v8value_t object of type Date. This function should only be
21358 /// called from within the scope of a cef_render_process_handler_t,
21359 /// cef_v8handler_t or cef_v8accessor_t callback, or in combination with calling
21360 /// enter() and exit() on a stored cef_v8context_t reference.
21361 ///
21362 cef_v8value_t* cef_v8value_create_date (cef_basetime_t date);
21363 
21364 ///
21365 /// Create a new cef_v8value_t object of type string.
21366 ///
21367 cef_v8value_t* cef_v8value_create_string (const(cef_string_t)* value);
21368 
21369 ///
21370 /// Create a new cef_v8value_t object of type object with optional accessor
21371 /// and/or interceptor. This function should only be called from within the
21372 /// scope of a cef_render_process_handler_t, cef_v8handler_t or cef_v8accessor_t
21373 /// callback, or in combination with calling enter() and exit() on a stored
21374 /// cef_v8context_t reference.
21375 ///
21376 cef_v8value_t* cef_v8value_create_object (
21377     cef_v8accessor_t* accessor,
21378     cef_v8interceptor_t* interceptor);
21379 
21380 ///
21381 /// Create a new cef_v8value_t object of type array with the specified |length|.
21382 /// If |length| is negative the returned array will have length 0. This function
21383 /// should only be called from within the scope of a
21384 /// cef_render_process_handler_t, cef_v8handler_t or cef_v8accessor_t callback,
21385 /// or in combination with calling enter() and exit() on a stored
21386 /// cef_v8context_t reference.
21387 ///
21388 cef_v8value_t* cef_v8value_create_array (int length);
21389 
21390 ///
21391 /// Create a new cef_v8value_t object of type ArrayBuffer which wraps the
21392 /// provided |buffer| of size |length| bytes. The ArrayBuffer is externalized,
21393 /// meaning that it does not own |buffer|. The caller is responsible for freeing
21394 /// |buffer| when requested via a call to
21395 /// cef_v8array_buffer_release_callback_t::ReleaseBuffer. This function should
21396 /// only be called from within the scope of a cef_render_process_handler_t,
21397 /// cef_v8handler_t or cef_v8accessor_t callback, or in combination with calling
21398 /// enter() and exit() on a stored cef_v8context_t reference.
21399 ///
21400 cef_v8value_t* cef_v8value_create_array_buffer (
21401     void* buffer,
21402     size_t length,
21403     cef_v8array_buffer_release_callback_t* release_callback);
21404 
21405 ///
21406 /// Create a new cef_v8value_t object of type function. This function should
21407 /// only be called from within the scope of a cef_render_process_handler_t,
21408 /// cef_v8handler_t or cef_v8accessor_t callback, or in combination with calling
21409 /// enter() and exit() on a stored cef_v8context_t reference.
21410 ///
21411 extern(System) cef_v8value_t* cef_v8value_create_function (
21412     const(cef_string_t)* name,
21413     cef_v8handler_t* handler) nothrow;
21414 
21415 ///
21416 /// Create a new cef_v8value_t object of type Promise. This function should only
21417 /// be called from within the scope of a cef_render_process_handler_t,
21418 /// cef_v8handler_t or cef_v8accessor_t callback, or in combination with calling
21419 /// enter() and exit() on a stored cef_v8context_t reference.
21420 ///
21421 cef_v8value_t* cef_v8value_create_promise ();
21422 
21423 ///
21424 /// Structure representing a V8 stack trace handle. V8 handles can only be
21425 /// accessed from the thread on which they are created. Valid threads for
21426 /// creating a V8 handle include the render process main thread (TID_RENDERER)
21427 /// and WebWorker threads. A task runner for posting tasks on the associated
21428 /// thread can be retrieved via the cef_v8context_t::get_task_runner() function.
21429 ///
21430 struct cef_v8stack_trace_t
21431 {
21432     ///
21433     /// Base structure.
21434     ///
21435     cef_base_ref_counted_t base;
21436 
21437     ///
21438     /// Returns true (1) if the underlying handle is valid and it can be accessed
21439     /// on the current thread. Do not call any other functions if this function
21440     /// returns false (0).
21441     ///
21442     extern(System) int function (cef_v8stack_trace_t* self) nothrow is_valid;
21443 
21444     ///
21445     /// Returns the number of stack frames.
21446     ///
21447     extern(System) int function (cef_v8stack_trace_t* self) nothrow get_frame_count;
21448 
21449     ///
21450     /// Returns the stack frame at the specified 0-based index.
21451     ///
21452     extern(System) cef_v8stack_frame_t* function (
21453         cef_v8stack_trace_t* self,
21454         int index) nothrow get_frame;
21455 }
21456 
21457 
21458 
21459 ///
21460 /// Returns the stack trace for the currently active context. |frame_limit| is
21461 /// the maximum number of frames that will be captured.
21462 ///
21463 cef_v8stack_trace_t* cef_v8stack_trace_get_current (int frame_limit);
21464 
21465 ///
21466 /// Structure representing a V8 stack frame handle. V8 handles can only be
21467 /// accessed from the thread on which they are created. Valid threads for
21468 /// creating a V8 handle include the render process main thread (TID_RENDERER)
21469 /// and WebWorker threads. A task runner for posting tasks on the associated
21470 /// thread can be retrieved via the cef_v8context_t::get_task_runner() function.
21471 ///
21472 struct cef_v8stack_frame_t
21473 {
21474     ///
21475     /// Base structure.
21476     ///
21477     cef_base_ref_counted_t base;
21478 
21479     ///
21480     /// Returns true (1) if the underlying handle is valid and it can be accessed
21481     /// on the current thread. Do not call any other functions if this function
21482     /// returns false (0).
21483     ///
21484     extern(System) int function (cef_v8stack_frame_t* self) nothrow is_valid;
21485 
21486     ///
21487     /// Returns the name of the resource script that contains the function.
21488     ///
21489     // The resulting string must be freed by calling cef_string_userfree_free().
21490     extern(System) cef_string_userfree_t function (
21491         cef_v8stack_frame_t* self) nothrow get_script_name;
21492 
21493     ///
21494     /// Returns the name of the resource script that contains the function or the
21495     /// sourceURL value if the script name is undefined and its source ends with a
21496     /// "//@ sourceURL=..." string.
21497     ///
21498     // The resulting string must be freed by calling cef_string_userfree_free().
21499     extern(System) cef_string_userfree_t function (
21500         cef_v8stack_frame_t* self) nothrow get_script_name_or_source_url;
21501 
21502     ///
21503     /// Returns the name of the function.
21504     ///
21505     // The resulting string must be freed by calling cef_string_userfree_free().
21506     extern(System) cef_string_userfree_t function (
21507         cef_v8stack_frame_t* self) nothrow get_function_name;
21508 
21509     ///
21510     /// Returns the 1-based line number for the function call or 0 if unknown.
21511     ///
21512     extern(System) int function (cef_v8stack_frame_t* self) nothrow get_line_number;
21513 
21514     ///
21515     /// Returns the 1-based column offset on the line for the function call or 0
21516     /// if unknown.
21517     ///
21518     extern(System) int function (cef_v8stack_frame_t* self) nothrow get_column;
21519 
21520     ///
21521     /// Returns true (1) if the function was compiled using eval().
21522     ///
21523     extern(System) int function (cef_v8stack_frame_t* self) nothrow is_eval;
21524 
21525     ///
21526     /// Returns true (1) if the function was called as a constructor via "new".
21527     ///
21528     extern(System) int function (cef_v8stack_frame_t* self) nothrow is_constructor;
21529 }
21530 
21531 
21532 
21533 ///
21534 /// Register a new V8 extension with the specified JavaScript extension code and
21535 /// handler. Functions implemented by the handler are prototyped using the
21536 /// keyword 'native'. The calling of a native function is restricted to the
21537 /// scope in which the prototype of the native function is defined. This
21538 /// function may only be called on the render process main thread.
21539 ///
21540 /// Example JavaScript extension code: <pre>
21541 ///   // create the 'example' global object if it doesn't already exist.
21542 ///   if (!example)
21543 ///     example = {};
21544 ///   // create the 'example.test' global object if it doesn't already exist.
21545 ///   if (!example.test)
21546 ///     example.test = {};
21547 ///   (function() {
21548 ///     // Define the function 'example.test.myfunction'.
21549 ///     example.test.myfunction = function() {
21550 ///       // Call CefV8Handler::Execute() with the function name 'MyFunction'
21551 ///       // and no arguments.
21552 ///       native function MyFunction();
21553 ///       return MyFunction();
21554 ///     };
21555 ///     // Define the getter function for parameter 'example.test.myparam'.
21556 ///     example.test.__defineGetter__('myparam', function() {
21557 ///       // Call CefV8Handler::Execute() with the function name 'GetMyParam'
21558 ///       // and no arguments.
21559 ///       native function GetMyParam();
21560 ///       return GetMyParam();
21561 ///     });
21562 ///     // Define the setter function for parameter 'example.test.myparam'.
21563 ///     example.test.__defineSetter__('myparam', function(b) {
21564 ///       // Call CefV8Handler::Execute() with the function name 'SetMyParam'
21565 ///       // and a single argument.
21566 ///       native function SetMyParam();
21567 ///       if(b) SetMyParam(b);
21568 ///     });
21569 ///
21570 ///     // Extension definitions can also contain normal JavaScript variables
21571 ///     // and functions.
21572 ///     var myint = 0;
21573 ///     example.test.increment = function() {
21574 ///       myint += 1;
21575 ///       return myint;
21576 ///     };
21577 ///   })();
21578 /// </pre>
21579 ///
21580 /// Example usage in the page: <pre>
21581 ///   // Call the function.
21582 ///   example.test.myfunction();
21583 ///   // Set the parameter.
21584 ///   example.test.myparam = value;
21585 ///   // Get the parameter.
21586 ///   value = example.test.myparam;
21587 ///   // Call another function.
21588 ///   example.test.increment();
21589 /// </pre>
21590 ///
21591 int cef_register_extension (
21592     const(cef_string_t)* extension_name,
21593     const(cef_string_t)* javascript_code,
21594     cef_v8handler_t* handler);
21595 
21596 // CEF_INCLUDE_CAPI_CEF_V8_CAPI_H_
21597 // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
21598 //
21599 // Redistribution and use in source and binary forms, with or without
21600 // modification, are permitted provided that the following conditions are
21601 // met:
21602 //
21603 //    * Redistributions of source code must retain the above copyright
21604 // notice, this list of conditions and the following disclaimer.
21605 //    * Redistributions in binary form must reproduce the above
21606 // copyright notice, this list of conditions and the following disclaimer
21607 // in the documentation and/or other materials provided with the
21608 // distribution.
21609 //    * Neither the name of Google Inc. nor the name Chromium Embedded
21610 // Framework nor the names of its contributors may be used to endorse
21611 // or promote products derived from this software without specific prior
21612 // written permission.
21613 //
21614 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21615 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21616 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
21617 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
21618 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21619 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
21620 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
21621 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
21622 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
21623 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
21624 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
21625 //
21626 // ---------------------------------------------------------------------------
21627 //
21628 // This file was generated by the CEF translator tool and should not edited
21629 // by hand. See the translator.README.txt file in the tools directory for
21630 // more information.
21631 //
21632 // $hash=f1ac6a6d5605078a38b7fa7e898619623eca6d51$
21633 //
21634 
21635 extern (C):
21636 
21637 ///
21638 /// Structure that wraps other data value types. Complex types (binary,
21639 /// dictionary and list) will be referenced but not owned by this object. Can be
21640 /// used on any process and thread.
21641 ///
21642 struct cef_value_t
21643 {
21644     ///
21645     /// Base structure.
21646     ///
21647 
21648     ///
21649     /// Returns true (1) if the underlying data is valid. This will always be true
21650     /// (1) for simple types. For complex types (binary, dictionary and list) the
21651     /// underlying data may become invalid if owned by another object (e.g. list
21652     /// or dictionary) and that other object is then modified or destroyed. This
21653     /// value object can be re-used by calling Set*() even if the underlying data
21654     /// is invalid.
21655     ///
21656 
21657     ///
21658     /// Returns true (1) if the underlying data is owned by another object.
21659 
21660     cef_base_ref_counted_t base;
21661     extern(System) int function (cef_value_t* self) nothrow is_valid;
21662     ///
21663     extern(System) int function (cef_value_t* self) nothrow is_owned;
21664 
21665     ///
21666     /// Returns true (1) if the underlying data is read-only. Some APIs may expose
21667     /// read-only objects.
21668     ///
21669     extern(System) int function (cef_value_t* self) nothrow is_read_only;
21670 
21671     ///
21672     /// Returns true (1) if this object and |that| object have the same underlying
21673     /// data. If true (1) modifications to this object will also affect |that|
21674     /// object and vice-versa.
21675     ///
21676     extern(System) int function (cef_value_t* self, cef_value_t* that) nothrow is_same;
21677 
21678     ///
21679     /// Returns true (1) if this object and |that| object have an equivalent
21680     /// underlying value but are not necessarily the same object.
21681     ///
21682     extern(System) int function (cef_value_t* self, cef_value_t* that) nothrow is_equal;
21683 
21684     ///
21685     /// Returns a copy of this object. The underlying data will also be copied.
21686     ///
21687     extern(System) cef_value_t* function (cef_value_t* self) nothrow copy;
21688 
21689     ///
21690     /// Returns the underlying value type.
21691     ///
21692     extern(System) cef_value_type_t function (cef_value_t* self) nothrow get_type;
21693 
21694     ///
21695     /// Returns the underlying value as type bool.
21696     ///
21697     extern(System) int function (cef_value_t* self) nothrow get_bool;
21698 
21699     ///
21700     /// Returns the underlying value as type int.
21701     ///
21702     extern(System) int function (cef_value_t* self) nothrow get_int;
21703 
21704     ///
21705     /// Returns the underlying value as type double.
21706     ///
21707     extern(System) double function (cef_value_t* self) nothrow get_double;
21708 
21709     ///
21710     /// Returns the underlying value as type string.
21711     ///
21712     // The resulting string must be freed by calling cef_string_userfree_free().
21713     extern(System) cef_string_userfree_t function (cef_value_t* self) nothrow get_string;
21714 
21715     ///
21716     /// Returns the underlying value as type binary. The returned reference may
21717     /// become invalid if the value is owned by another object or if ownership is
21718     /// transferred to another object in the future. To maintain a reference to
21719     /// the value after assigning ownership to a dictionary or list pass this
21720     /// object to the set_value() function instead of passing the returned
21721     /// reference to set_binary().
21722     ///
21723     extern(System) cef_binary_value_t* function (cef_value_t* self) nothrow get_binary;
21724 
21725     ///
21726     /// Returns the underlying value as type dictionary. The returned reference
21727     /// may become invalid if the value is owned by another object or if ownership
21728     /// is transferred to another object in the future. To maintain a reference to
21729     /// the value after assigning ownership to a dictionary or list pass this
21730     /// object to the set_value() function instead of passing the returned
21731     /// reference to set_dictionary().
21732     ///
21733     extern(System) cef_dictionary_value_t* function (cef_value_t* self) nothrow get_dictionary;
21734 
21735     ///
21736     /// Returns the underlying value as type list. The returned reference may
21737     /// become invalid if the value is owned by another object or if ownership is
21738     /// transferred to another object in the future. To maintain a reference to
21739     /// the value after assigning ownership to a dictionary or list pass this
21740     /// object to the set_value() function instead of passing the returned
21741     /// reference to set_list().
21742     ///
21743     extern(System) cef_list_value_t* function (cef_value_t* self) nothrow get_list;
21744 
21745     ///
21746     /// Sets the underlying value as type null. Returns true (1) if the value was
21747     /// set successfully.
21748     ///
21749     extern(System) int function (cef_value_t* self) nothrow set_null;
21750 
21751     ///
21752     /// Sets the underlying value as type bool. Returns true (1) if the value was
21753     /// set successfully.
21754     ///
21755     extern(System) int function (cef_value_t* self, int value) nothrow set_bool;
21756 
21757     ///
21758     /// Sets the underlying value as type int. Returns true (1) if the value was
21759     /// set successfully.
21760     ///
21761     extern(System) int function (cef_value_t* self, int value) nothrow set_int;
21762 
21763     ///
21764     /// Sets the underlying value as type double. Returns true (1) if the value
21765     /// was set successfully.
21766     ///
21767     extern(System) int function (cef_value_t* self, double value) nothrow set_double;
21768 
21769     ///
21770     /// Sets the underlying value as type string. Returns true (1) if the value
21771     /// was set successfully.
21772     ///
21773     extern(System) int function (cef_value_t* self, const(cef_string_t)* value) nothrow set_string;
21774 
21775     ///
21776     /// Sets the underlying value as type binary. Returns true (1) if the value
21777     /// was set successfully. This object keeps a reference to |value| and
21778     /// ownership of the underlying data remains unchanged.
21779     ///
21780     extern(System) int function (cef_value_t* self, cef_binary_value_t* value) nothrow set_binary;
21781 
21782     ///
21783     /// Sets the underlying value as type dict. Returns true (1) if the value was
21784     /// set successfully. This object keeps a reference to |value| and ownership
21785     /// of the underlying data remains unchanged.
21786     ///
21787     extern(System) int function (
21788         cef_value_t* self,
21789         cef_dictionary_value_t* value) nothrow set_dictionary;
21790 
21791     ///
21792     /// Sets the underlying value as type list. Returns true (1) if the value was
21793     /// set successfully. This object keeps a reference to |value| and ownership
21794     /// of the underlying data remains unchanged.
21795     ///
21796     extern(System) int function (cef_value_t* self, cef_list_value_t* value) nothrow set_list;
21797 }
21798 
21799 
21800 
21801 ///
21802 /// Creates a new object.
21803 ///
21804 cef_value_t* cef_value_create ();
21805 
21806 ///
21807 /// Structure representing a binary value. Can be used on any process and
21808 /// thread.
21809 ///
21810 struct cef_binary_value_t
21811 {
21812     ///
21813     /// Base structure.
21814     ///
21815     cef_base_ref_counted_t base;
21816 
21817     ///
21818     /// Returns true (1) if this object is valid. This object may become invalid
21819     /// if the underlying data is owned by another object (e.g. list or
21820     /// dictionary) and that other object is then modified or destroyed. Do not
21821     /// call any other functions if this function returns false (0).
21822     ///
21823     extern(System) int function (cef_binary_value_t* self) nothrow is_valid;
21824 
21825     ///
21826     /// Returns true (1) if this object is currently owned by another object.
21827     ///
21828     extern(System) int function (cef_binary_value_t* self) nothrow is_owned;
21829 
21830     ///
21831     /// Returns true (1) if this object and |that| object have the same underlying
21832     /// data.
21833     ///
21834     extern(System) int function (
21835         cef_binary_value_t* self,
21836         cef_binary_value_t* that) nothrow is_same;
21837 
21838     ///
21839     /// Returns true (1) if this object and |that| object have an equivalent
21840     /// underlying value but are not necessarily the same object.
21841     ///
21842     extern(System) int function (
21843         cef_binary_value_t* self,
21844         cef_binary_value_t* that) nothrow is_equal;
21845 
21846     ///
21847     /// Returns a copy of this object. The data in this object will also be
21848     /// copied.
21849     ///
21850     extern(System) cef_binary_value_t* function (cef_binary_value_t* self) nothrow copy;
21851 
21852     ///
21853     /// Returns a pointer to the beginning of the memory block. The returned
21854     /// pointer is valid as long as the cef_binary_value_t is alive.
21855     ///
21856     extern(System) const(void)* function (cef_binary_value_t* self) nothrow get_raw_data;
21857 
21858     ///
21859     /// Returns the data size.
21860     ///
21861     extern(System) size_t function (cef_binary_value_t* self) nothrow get_size;
21862 
21863     ///
21864     /// Read up to |buffer_size| number of bytes into |buffer|. Reading begins at
21865     /// the specified byte |data_offset|. Returns the number of bytes read.
21866     ///
21867     extern(System) size_t function (
21868         cef_binary_value_t* self,
21869         void* buffer,
21870         size_t buffer_size,
21871         size_t data_offset) nothrow get_data;
21872 }
21873 
21874 
21875 
21876 ///
21877 /// Creates a new object that is not owned by any other object. The specified
21878 /// |data| will be copied.
21879 ///
21880 cef_binary_value_t* cef_binary_value_create (
21881     const(void)* data,
21882     size_t data_size);
21883 
21884 ///
21885 /// Structure representing a dictionary value. Can be used on any process and
21886 /// thread.
21887 ///
21888 struct cef_dictionary_value_t
21889 {
21890     ///
21891     /// Base structure.
21892     ///
21893     cef_base_ref_counted_t base;
21894 
21895     ///
21896     /// Returns true (1) if this object is valid. This object may become invalid
21897     /// if the underlying data is owned by another object (e.g. list or
21898     /// dictionary) and that other object is then modified or destroyed. Do not
21899     /// call any other functions if this function returns false (0).
21900     ///
21901     extern(System) int function (cef_dictionary_value_t* self) nothrow is_valid;
21902 
21903     ///
21904     /// Returns true (1) if this object is currently owned by another object.
21905     ///
21906     extern(System) int function (cef_dictionary_value_t* self) nothrow is_owned;
21907 
21908     ///
21909     /// Returns true (1) if the values of this object are read-only. Some APIs may
21910     /// expose read-only objects.
21911     ///
21912     extern(System) int function (cef_dictionary_value_t* self) nothrow is_read_only;
21913 
21914     ///
21915     /// Returns true (1) if this object and |that| object have the same underlying
21916     /// data. If true (1) modifications to this object will also affect |that|
21917     /// object and vice-versa.
21918     ///
21919     extern(System) int function (
21920         cef_dictionary_value_t* self,
21921         cef_dictionary_value_t* that) nothrow is_same;
21922 
21923     ///
21924     /// Returns true (1) if this object and |that| object have an equivalent
21925     /// underlying value but are not necessarily the same object.
21926     ///
21927     extern(System) int function (
21928         cef_dictionary_value_t* self,
21929         cef_dictionary_value_t* that) nothrow is_equal;
21930 
21931     ///
21932     /// Returns a writable copy of this object. If |exclude_NULL_children| is true
21933     /// (1) any NULL dictionaries or lists will be excluded from the copy.
21934     ///
21935     extern(System) cef_dictionary_value_t* function (
21936         cef_dictionary_value_t* self,
21937         int exclude_empty_children) nothrow copy;
21938 
21939     ///
21940     /// Returns the number of values.
21941     ///
21942     extern(System) size_t function (cef_dictionary_value_t* self) nothrow get_size;
21943 
21944     ///
21945     /// Removes all values. Returns true (1) on success.
21946     ///
21947     extern(System) int function (cef_dictionary_value_t* self) nothrow clear;
21948 
21949     ///
21950     /// Returns true (1) if the current dictionary has a value for the given key.
21951     ///
21952     extern(System) int function (
21953         cef_dictionary_value_t* self,
21954         const(cef_string_t)* key) nothrow has_key;
21955 
21956     ///
21957     /// Reads all keys for this dictionary into the specified vector.
21958     ///
21959     extern(System) int function (
21960         cef_dictionary_value_t* self,
21961         cef_string_list_t keys) nothrow get_keys;
21962 
21963     ///
21964     /// Removes the value at the specified key. Returns true (1) is the value was
21965     /// removed successfully.
21966     ///
21967     extern(System) int function (
21968         cef_dictionary_value_t* self,
21969         const(cef_string_t)* key) nothrow remove;
21970 
21971     ///
21972     /// Returns the value type for the specified key.
21973     ///
21974     extern(System) cef_value_type_t function (
21975         cef_dictionary_value_t* self,
21976         const(cef_string_t)* key) nothrow get_type;
21977 
21978     ///
21979     /// Returns the value at the specified key. For simple types the returned
21980     /// value will copy existing data and modifications to the value will not
21981     /// modify this object. For complex types (binary, dictionary and list) the
21982     /// returned value will reference existing data and modifications to the value
21983     /// will modify this object.
21984     ///
21985     extern(System) cef_value_t* function (
21986         cef_dictionary_value_t* self,
21987         const(cef_string_t)* key) nothrow get_value;
21988 
21989     ///
21990     /// Returns the value at the specified key as type bool.
21991     ///
21992     extern(System) int function (
21993         cef_dictionary_value_t* self,
21994         const(cef_string_t)* key) nothrow get_bool;
21995 
21996     ///
21997     /// Returns the value at the specified key as type int.
21998     ///
21999     extern(System) int function (
22000         cef_dictionary_value_t* self,
22001         const(cef_string_t)* key) nothrow get_int;
22002 
22003     ///
22004     /// Returns the value at the specified key as type double.
22005     ///
22006     extern(System) double function (
22007         cef_dictionary_value_t* self,
22008         const(cef_string_t)* key) nothrow get_double;
22009 
22010     ///
22011     /// Returns the value at the specified key as type string.
22012     ///
22013     // The resulting string must be freed by calling cef_string_userfree_free().
22014     extern(System) cef_string_userfree_t function (
22015         cef_dictionary_value_t* self,
22016         const(cef_string_t)* key) nothrow get_string;
22017 
22018     ///
22019     /// Returns the value at the specified key as type binary. The returned value
22020     /// will reference existing data.
22021     ///
22022     extern(System) cef_binary_value_t* function (
22023         cef_dictionary_value_t* self,
22024         const(cef_string_t)* key) nothrow get_binary;
22025 
22026     ///
22027     /// Returns the value at the specified key as type dictionary. The returned
22028     /// value will reference existing data and modifications to the value will
22029     /// modify this object.
22030     ///
22031     extern(System) cef_dictionary_value_t* function (
22032         cef_dictionary_value_t* self,
22033         const(cef_string_t)* key) nothrow get_dictionary;
22034 
22035     ///
22036     /// Returns the value at the specified key as type list. The returned value
22037     /// will reference existing data and modifications to the value will modify
22038     /// this object.
22039     ///
22040     extern(System) cef_list_value_t* function (
22041         cef_dictionary_value_t* self,
22042         const(cef_string_t)* key) nothrow get_list;
22043 
22044     ///
22045     /// Sets the value at the specified key. Returns true (1) if the value was set
22046     /// successfully. If |value| represents simple data then the underlying data
22047     /// will be copied and modifications to |value| will not modify this object.
22048     /// If |value| represents complex data (binary, dictionary or list) then the
22049     /// underlying data will be referenced and modifications to |value| will
22050     /// modify this object.
22051     ///
22052     extern(System) int function (
22053         cef_dictionary_value_t* self,
22054         const(cef_string_t)* key,
22055         cef_value_t* value) nothrow set_value;
22056 
22057     ///
22058     /// Sets the value at the specified key as type null. Returns true (1) if the
22059     /// value was set successfully.
22060     ///
22061     extern(System) int function (
22062         cef_dictionary_value_t* self,
22063         const(cef_string_t)* key) nothrow set_null;
22064 
22065     ///
22066     /// Sets the value at the specified key as type bool. Returns true (1) if the
22067     /// value was set successfully.
22068     ///
22069     extern(System) int function (
22070         cef_dictionary_value_t* self,
22071         const(cef_string_t)* key,
22072         int value) nothrow set_bool;
22073 
22074     ///
22075     /// Sets the value at the specified key as type int. Returns true (1) if the
22076     /// value was set successfully.
22077     ///
22078     extern(System) int function (
22079         cef_dictionary_value_t* self,
22080         const(cef_string_t)* key,
22081         int value) nothrow set_int;
22082 
22083     ///
22084     /// Sets the value at the specified key as type double. Returns true (1) if
22085     /// the value was set successfully.
22086     ///
22087     extern(System) int function (
22088         cef_dictionary_value_t* self,
22089         const(cef_string_t)* key,
22090         double value) nothrow set_double;
22091 
22092     ///
22093     /// Sets the value at the specified key as type string. Returns true (1) if
22094     /// the value was set successfully.
22095     ///
22096     extern(System) int function (
22097         cef_dictionary_value_t* self,
22098         const(cef_string_t)* key,
22099         const(cef_string_t)* value) nothrow set_string;
22100 
22101     ///
22102     /// Sets the value at the specified key as type binary. Returns true (1) if
22103     /// the value was set successfully. If |value| is currently owned by another
22104     /// object then the value will be copied and the |value| reference will not
22105     /// change. Otherwise, ownership will be transferred to this object and the
22106     /// |value| reference will be invalidated.
22107     ///
22108     extern(System) int function (
22109         cef_dictionary_value_t* self,
22110         const(cef_string_t)* key,
22111         cef_binary_value_t* value) nothrow set_binary;
22112 
22113     ///
22114     /// Sets the value at the specified key as type dict. Returns true (1) if the
22115     /// value was set successfully. If |value| is currently owned by another
22116     /// object then the value will be copied and the |value| reference will not
22117     /// change. Otherwise, ownership will be transferred to this object and the
22118     /// |value| reference will be invalidated.
22119     ///
22120     extern(System) int function (
22121         cef_dictionary_value_t* self,
22122         const(cef_string_t)* key,
22123         cef_dictionary_value_t* value) nothrow set_dictionary;
22124 
22125     ///
22126     /// Sets the value at the specified key as type list. Returns true (1) if the
22127     /// value was set successfully. If |value| is currently owned by another
22128     /// object then the value will be copied and the |value| reference will not
22129     /// change. Otherwise, ownership will be transferred to this object and the
22130     /// |value| reference will be invalidated.
22131     ///
22132     extern(System) int function (
22133         cef_dictionary_value_t* self,
22134         const(cef_string_t)* key,
22135         cef_list_value_t* value) nothrow set_list;
22136 }
22137 
22138 
22139 
22140 ///
22141 /// Creates a new object that is not owned by any other object.
22142 ///
22143 cef_dictionary_value_t* cef_dictionary_value_create ();
22144 
22145 ///
22146 /// Structure representing a list value. Can be used on any process and thread.
22147 ///
22148 struct cef_list_value_t
22149 {
22150     ///
22151     /// Base structure.
22152     ///
22153     cef_base_ref_counted_t base;
22154 
22155     ///
22156     /// Returns true (1) if this object is valid. This object may become invalid
22157     /// if the underlying data is owned by another object (e.g. list or
22158     /// dictionary) and that other object is then modified or destroyed. Do not
22159     /// call any other functions if this function returns false (0).
22160     ///
22161     extern(System) int function (cef_list_value_t* self) nothrow is_valid;
22162 
22163     ///
22164     /// Returns true (1) if this object is currently owned by another object.
22165     ///
22166     extern(System) int function (cef_list_value_t* self) nothrow is_owned;
22167 
22168     ///
22169     /// Returns true (1) if the values of this object are read-only. Some APIs may
22170     /// expose read-only objects.
22171     ///
22172     extern(System) int function (cef_list_value_t* self) nothrow is_read_only;
22173 
22174     ///
22175     /// Returns true (1) if this object and |that| object have the same underlying
22176     /// data. If true (1) modifications to this object will also affect |that|
22177     /// object and vice-versa.
22178     ///
22179     extern(System) int function (cef_list_value_t* self, cef_list_value_t* that) nothrow is_same;
22180 
22181     ///
22182     /// Returns true (1) if this object and |that| object have an equivalent
22183     /// underlying value but are not necessarily the same object.
22184     ///
22185     extern(System) int function (cef_list_value_t* self, cef_list_value_t* that) nothrow is_equal;
22186 
22187     ///
22188     /// Returns a writable copy of this object.
22189     ///
22190     extern(System) cef_list_value_t* function (cef_list_value_t* self) nothrow copy;
22191 
22192     ///
22193     /// Sets the number of values. If the number of values is expanded all new
22194     /// value slots will default to type null. Returns true (1) on success.
22195     ///
22196     extern(System) int function (cef_list_value_t* self, size_t size) nothrow set_size;
22197 
22198     ///
22199     /// Returns the number of values.
22200     ///
22201     extern(System) size_t function (cef_list_value_t* self) nothrow get_size;
22202 
22203     ///
22204     /// Removes all values. Returns true (1) on success.
22205     ///
22206     extern(System) int function (cef_list_value_t* self) nothrow clear;
22207 
22208     ///
22209     /// Removes the value at the specified index.
22210     ///
22211     extern(System) int function (cef_list_value_t* self, size_t index) nothrow remove;
22212 
22213     ///
22214     /// Returns the value type at the specified index.
22215     ///
22216     extern(System) cef_value_type_t function (cef_list_value_t* self, size_t index) nothrow get_type;
22217 
22218     ///
22219     /// Returns the value at the specified index. For simple types the returned
22220     /// value will copy existing data and modifications to the value will not
22221     /// modify this object. For complex types (binary, dictionary and list) the
22222     /// returned value will reference existing data and modifications to the value
22223     /// will modify this object.
22224     ///
22225     extern(System) cef_value_t* function (cef_list_value_t* self, size_t index) nothrow get_value;
22226 
22227     ///
22228     /// Returns the value at the specified index as type bool.
22229     ///
22230     extern(System) int function (cef_list_value_t* self, size_t index) nothrow get_bool;
22231 
22232     ///
22233     /// Returns the value at the specified index as type int.
22234     ///
22235     extern(System) int function (cef_list_value_t* self, size_t index) nothrow get_int;
22236 
22237     ///
22238     /// Returns the value at the specified index as type double.
22239     ///
22240     extern(System) double function (cef_list_value_t* self, size_t index) nothrow get_double;
22241 
22242     ///
22243     /// Returns the value at the specified index as type string.
22244     ///
22245     // The resulting string must be freed by calling cef_string_userfree_free().
22246     extern(System) cef_string_userfree_t function (
22247         cef_list_value_t* self,
22248         size_t index) nothrow get_string;
22249 
22250     ///
22251     /// Returns the value at the specified index as type binary. The returned
22252     /// value will reference existing data.
22253     ///
22254     extern(System) cef_binary_value_t* function (
22255         cef_list_value_t* self,
22256         size_t index) nothrow get_binary;
22257 
22258     ///
22259     /// Returns the value at the specified index as type dictionary. The returned
22260     /// value will reference existing data and modifications to the value will
22261     /// modify this object.
22262     ///
22263     extern(System) cef_dictionary_value_t* function (
22264         cef_list_value_t* self,
22265         size_t index) nothrow get_dictionary;
22266 
22267     ///
22268     /// Returns the value at the specified index as type list. The returned value
22269     /// will reference existing data and modifications to the value will modify
22270     /// this object.
22271     ///
22272     extern(System) cef_list_value_t* function (
22273         cef_list_value_t* self,
22274         size_t index) nothrow get_list;
22275 
22276     ///
22277     /// Sets the value at the specified index. Returns true (1) if the value was
22278     /// set successfully. If |value| represents simple data then the underlying
22279     /// data will be copied and modifications to |value| will not modify this
22280     /// object. If |value| represents complex data (binary, dictionary or list)
22281     /// then the underlying data will be referenced and modifications to |value|
22282     /// will modify this object.
22283     ///
22284     extern(System) int function (
22285         cef_list_value_t* self,
22286         size_t index,
22287         cef_value_t* value) nothrow set_value;
22288 
22289     ///
22290     /// Sets the value at the specified index as type null. Returns true (1) if
22291     /// the value was set successfully.
22292     ///
22293     extern(System) int function (cef_list_value_t* self, size_t index) nothrow set_null;
22294 
22295     ///
22296     /// Sets the value at the specified index as type bool. Returns true (1) if
22297     /// the value was set successfully.
22298     ///
22299     extern(System) int function (cef_list_value_t* self, size_t index, int value) nothrow set_bool;
22300 
22301     ///
22302     /// Sets the value at the specified index as type int. Returns true (1) if the
22303     /// value was set successfully.
22304     ///
22305     extern(System) int function (cef_list_value_t* self, size_t index, int value) nothrow set_int;
22306 
22307     ///
22308     /// Sets the value at the specified index as type double. Returns true (1) if
22309     /// the value was set successfully.
22310     ///
22311     extern(System) int function (
22312         cef_list_value_t* self,
22313         size_t index,
22314         double value) nothrow set_double;
22315 
22316     ///
22317     /// Sets the value at the specified index as type string. Returns true (1) if
22318     /// the value was set successfully.
22319     ///
22320     extern(System) int function (
22321         cef_list_value_t* self,
22322         size_t index,
22323         const(cef_string_t)* value) nothrow set_string;
22324 
22325     ///
22326     /// Sets the value at the specified index as type binary. Returns true (1) if
22327     /// the value was set successfully. If |value| is currently owned by another
22328     /// object then the value will be copied and the |value| reference will not
22329     /// change. Otherwise, ownership will be transferred to this object and the
22330     /// |value| reference will be invalidated.
22331     ///
22332     extern(System) int function (
22333         cef_list_value_t* self,
22334         size_t index,
22335         cef_binary_value_t* value) nothrow set_binary;
22336 
22337     ///
22338     /// Sets the value at the specified index as type dict. Returns true (1) if
22339     /// the value was set successfully. If |value| is currently owned by another
22340     /// object then the value will be copied and the |value| reference will not
22341     /// change. Otherwise, ownership will be transferred to this object and the
22342     /// |value| reference will be invalidated.
22343     ///
22344     extern(System) int function (
22345         cef_list_value_t* self,
22346         size_t index,
22347         cef_dictionary_value_t* value) nothrow set_dictionary;
22348 
22349     ///
22350     /// Sets the value at the specified index as type list. Returns true (1) if
22351     /// the value was set successfully. If |value| is currently owned by another
22352     /// object then the value will be copied and the |value| reference will not
22353     /// change. Otherwise, ownership will be transferred to this object and the
22354     /// |value| reference will be invalidated.
22355     ///
22356     extern(System) int function (
22357         cef_list_value_t* self,
22358         size_t index,
22359         cef_list_value_t* value) nothrow set_list;
22360 }
22361 
22362 
22363 
22364 ///
22365 /// Creates a new object that is not owned by any other object.
22366 ///
22367 cef_list_value_t* cef_list_value_create ();
22368 
22369 // CEF_INCLUDE_CAPI_CEF_VALUES_CAPI_H_
22370 // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
22371 //
22372 // Redistribution and use in source and binary forms, with or without
22373 // modification, are permitted provided that the following conditions are
22374 // met:
22375 //
22376 //    * Redistributions of source code must retain the above copyright
22377 // notice, this list of conditions and the following disclaimer.
22378 //    * Redistributions in binary form must reproduce the above
22379 // copyright notice, this list of conditions and the following disclaimer
22380 // in the documentation and/or other materials provided with the
22381 // distribution.
22382 //    * Neither the name of Google Inc. nor the name Chromium Embedded
22383 // Framework nor the names of its contributors may be used to endorse
22384 // or promote products derived from this software without specific prior
22385 // written permission.
22386 //
22387 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22388 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22389 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22390 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22391 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
22392 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22393 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
22394 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
22395 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22396 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
22397 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
22398 //
22399 // ---------------------------------------------------------------------------
22400 //
22401 // This file was generated by the CEF translator tool and should not edited
22402 // by hand. See the translator.README.txt file in the tools directory for
22403 // more information.
22404 //
22405 // $hash=7dbd68a4517f8fc578a523d590d1ff7a8aa2a49a$
22406 //
22407 
22408 extern (C):
22409 
22410 ///
22411 /// WaitableEvent is a thread synchronization tool that allows one thread to
22412 /// wait for another thread to finish some work. This is equivalent to using a
22413 /// Lock+ConditionVariable to protect a simple boolean value. However, using
22414 /// WaitableEvent in conjunction with a Lock to wait for a more complex state
22415 /// change (e.g., for an item to be added to a queue) is not recommended. In
22416 /// that case consider using a ConditionVariable instead of a WaitableEvent. It
22417 /// is safe to create and/or signal a WaitableEvent from any thread. Blocking on
22418 /// a WaitableEvent by calling the *wait() functions is not allowed on the
22419 /// browser process UI or IO threads.
22420 ///
22421 struct cef_waitable_event_t
22422 {
22423     ///
22424     /// Base structure.
22425     ///
22426 
22427     ///
22428     /// Put the event in the un-signaled state.
22429     ///
22430 
22431     cef_base_ref_counted_t base;
22432     extern(System) void function (cef_waitable_event_t* self) nothrow reset;
22433     ///
22434     /// Put the event in the signaled state. This causes any thread blocked on
22435     /// Wait to be woken up.
22436     ///
22437     extern(System) void function (cef_waitable_event_t* self) nothrow signal;
22438 
22439     ///
22440     /// Returns true (1) if the event is in the signaled state, else false (0). If
22441     /// the event was created with |automatic_reset| set to true (1) then calling
22442     /// this function will also cause a reset.
22443     ///
22444     extern(System) int function (cef_waitable_event_t* self) nothrow is_signaled;
22445 
22446     ///
22447     /// Wait indefinitely for the event to be signaled. This function will not
22448     /// return until after the call to signal() has completed. This function
22449     /// cannot be called on the browser process UI or IO threads.
22450     ///
22451     extern(System) void function (cef_waitable_event_t* self) nothrow wait;
22452 
22453     ///
22454     /// Wait up to |max_ms| milliseconds for the event to be signaled. Returns
22455     /// true (1) if the event was signaled. A return value of false (0) does not
22456     /// necessarily mean that |max_ms| was exceeded. This function will not return
22457     /// until after the call to signal() has completed. This function cannot be
22458     /// called on the browser process UI or IO threads.
22459     ///
22460     extern(System) int function (cef_waitable_event_t* self, long max_ms) nothrow timed_wait;
22461 }
22462 
22463 
22464 
22465 ///
22466 /// Create a new waitable event. If |automatic_reset| is true (1) then the event
22467 /// state is automatically reset to un-signaled after a single waiting thread
22468 /// has been released; otherwise, the state remains signaled until reset() is
22469 /// called manually. If |initially_signaled| is true (1) then the event will
22470 /// start in the signaled state.
22471 ///
22472 cef_waitable_event_t* cef_waitable_event_create (
22473     int automatic_reset,
22474     int initially_signaled);
22475 
22476 // CEF_INCLUDE_CAPI_CEF_WAITABLE_EVENT_CAPI_H_
22477 // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
22478 //
22479 // Redistribution and use in source and binary forms, with or without
22480 // modification, are permitted provided that the following conditions are
22481 // met:
22482 //
22483 //    * Redistributions of source code must retain the above copyright
22484 // notice, this list of conditions and the following disclaimer.
22485 //    * Redistributions in binary form must reproduce the above
22486 // copyright notice, this list of conditions and the following disclaimer
22487 // in the documentation and/or other materials provided with the
22488 // distribution.
22489 //    * Neither the name of Google Inc. nor the name Chromium Embedded
22490 // Framework nor the names of its contributors may be used to endorse
22491 // or promote products derived from this software without specific prior
22492 // written permission.
22493 //
22494 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22495 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22496 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22497 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22498 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
22499 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22500 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
22501 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
22502 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22503 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
22504 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
22505 //
22506 // ---------------------------------------------------------------------------
22507 //
22508 // This file was generated by the CEF translator tool and should not edited
22509 // by hand. See the translator.README.txt file in the tools directory for
22510 // more information.
22511 //
22512 // $hash=e20d330e3d1cd3ac5bcd3ce7ee09bc1025490f63$
22513 //
22514 
22515 extern (C):
22516 
22517 ///
22518 /// Structure representing the issuer or subject field of an X.509 certificate.
22519 ///
22520 struct cef_x509cert_principal_t
22521 {
22522     ///
22523     /// Base structure.
22524     ///
22525 
22526     ///
22527     /// Returns a name that can be used to represent the issuer. It tries in this
22528     /// order: Common Name (CN), Organization Name (O) and Organizational Unit
22529     /// Name (OU) and returns the first non-NULL one found.
22530     ///
22531     // The resulting string must be freed by calling cef_string_userfree_free().
22532 
22533     ///
22534     /// Returns the common name.
22535     ///
22536     // The resulting string must be freed by calling cef_string_userfree_free().
22537 
22538     ///
22539     /// Returns the locality name.
22540 
22541     cef_base_ref_counted_t base;
22542     extern(System) cef_string_userfree_t function (
22543         cef_x509cert_principal_t* self) nothrow get_display_name;
22544     extern(System) cef_string_userfree_t function (
22545         cef_x509cert_principal_t* self) nothrow get_common_name; ///
22546     // The resulting string must be freed by calling cef_string_userfree_free().
22547     extern(System) cef_string_userfree_t function (
22548         cef_x509cert_principal_t* self) nothrow get_locality_name;
22549 
22550     ///
22551     /// Returns the state or province name.
22552     ///
22553     // The resulting string must be freed by calling cef_string_userfree_free().
22554     extern(System) cef_string_userfree_t function (
22555         cef_x509cert_principal_t* self) nothrow get_state_or_province_name;
22556 
22557     ///
22558     /// Returns the country name.
22559     ///
22560     // The resulting string must be freed by calling cef_string_userfree_free().
22561     extern(System) cef_string_userfree_t function (
22562         cef_x509cert_principal_t* self) nothrow get_country_name;
22563 
22564     ///
22565     /// Retrieve the list of organization names.
22566     ///
22567     extern(System) void function (
22568         cef_x509cert_principal_t* self,
22569         cef_string_list_t names) nothrow get_organization_names;
22570 
22571     ///
22572     /// Retrieve the list of organization unit names.
22573     ///
22574     extern(System) void function (
22575         cef_x509cert_principal_t* self,
22576         cef_string_list_t names) nothrow get_organization_unit_names;
22577 }
22578 
22579 
22580 
22581 ///
22582 /// Structure representing a X.509 certificate.
22583 ///
22584 struct cef_x509certificate_t
22585 {
22586     ///
22587     /// Base structure.
22588     ///
22589     cef_base_ref_counted_t base;
22590 
22591     ///
22592     /// Returns the subject of the X.509 certificate. For HTTPS server
22593     /// certificates this represents the web server.  The common name of the
22594     /// subject should match the host name of the web server.
22595     ///
22596     extern(System) cef_x509cert_principal_t* function (
22597         cef_x509certificate_t* self) nothrow get_subject;
22598 
22599     ///
22600     /// Returns the issuer of the X.509 certificate.
22601     ///
22602     extern(System) cef_x509cert_principal_t* function (
22603         cef_x509certificate_t* self) nothrow get_issuer;
22604 
22605     ///
22606     /// Returns the DER encoded serial number for the X.509 certificate. The value
22607     /// possibly includes a leading 00 byte.
22608     ///
22609     extern(System) cef_binary_value_t* function (
22610         cef_x509certificate_t* self) nothrow get_serial_number;
22611 
22612     ///
22613     /// Returns the date before which the X.509 certificate is invalid.
22614     /// CefBaseTime.GetTimeT() will return 0 if no date was specified.
22615     ///
22616     extern(System) cef_basetime_t function (cef_x509certificate_t* self) nothrow get_valid_start;
22617 
22618     ///
22619     /// Returns the date after which the X.509 certificate is invalid.
22620     /// CefBaseTime.GetTimeT() will return 0 if no date was specified.
22621     ///
22622     extern(System) cef_basetime_t function (cef_x509certificate_t* self) nothrow get_valid_expiry;
22623 
22624     ///
22625     /// Returns the DER encoded data for the X.509 certificate.
22626     ///
22627     extern(System) cef_binary_value_t* function (
22628         cef_x509certificate_t* self) nothrow get_derencoded;
22629 
22630     ///
22631     /// Returns the PEM encoded data for the X.509 certificate.
22632     ///
22633     extern(System) cef_binary_value_t* function (
22634         cef_x509certificate_t* self) nothrow get_pemencoded;
22635 
22636     ///
22637     /// Returns the number of certificates in the issuer chain. If 0, the
22638     /// certificate is self-signed.
22639     ///
22640     extern(System) size_t function (cef_x509certificate_t* self) nothrow get_issuer_chain_size;
22641 
22642     ///
22643     /// Returns the DER encoded data for the certificate issuer chain. If we
22644     /// failed to encode a certificate in the chain it is still present in the
22645     /// array but is an NULL string.
22646     ///
22647     extern(System) void function (
22648         cef_x509certificate_t* self,
22649         size_t* chainCount,
22650         cef_binary_value_t** chain) nothrow get_derencoded_issuer_chain;
22651 
22652     ///
22653     /// Returns the PEM encoded data for the certificate issuer chain. If we
22654     /// failed to encode a certificate in the chain it is still present in the
22655     /// array but is an NULL string.
22656     ///
22657     extern(System) void function (
22658         cef_x509certificate_t* self,
22659         size_t* chainCount,
22660         cef_binary_value_t** chain) nothrow get_pemencoded_issuer_chain;
22661 }
22662 
22663 
22664 
22665 // CEF_INCLUDE_CAPI_CEF_X509_CERTIFICATE_CAPI_H_
22666 // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
22667 //
22668 // Redistribution and use in source and binary forms, with or without
22669 // modification, are permitted provided that the following conditions are
22670 // met:
22671 //
22672 //    * Redistributions of source code must retain the above copyright
22673 // notice, this list of conditions and the following disclaimer.
22674 //    * Redistributions in binary form must reproduce the above
22675 // copyright notice, this list of conditions and the following disclaimer
22676 // in the documentation and/or other materials provided with the
22677 // distribution.
22678 //    * Neither the name of Google Inc. nor the name Chromium Embedded
22679 // Framework nor the names of its contributors may be used to endorse
22680 // or promote products derived from this software without specific prior
22681 // written permission.
22682 //
22683 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22684 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22685 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22686 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22687 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
22688 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22689 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
22690 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
22691 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22692 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
22693 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
22694 //
22695 // ---------------------------------------------------------------------------
22696 //
22697 // This file was generated by the CEF translator tool and should not edited
22698 // by hand. See the translator.README.txt file in the tools directory for
22699 // more information.
22700 //
22701 // $hash=53c197aa80f55c9a1c9496de4a4d3598a9d7c735$
22702 //
22703 
22704 extern (C):
22705 
22706 ///
22707 /// Structure that supports the reading of XML data via the libxml streaming
22708 /// API. The functions of this structure should only be called on the thread
22709 /// that creates the object.
22710 ///
22711 struct cef_xml_reader_t
22712 {
22713     ///
22714     /// Base structure.
22715     ///
22716 
22717     ///
22718     /// Moves the cursor to the next node in the document. This function must be
22719     /// called at least once to set the current cursor position. Returns true (1)
22720     /// if the cursor position was set successfully.
22721     ///
22722 
22723     ///
22724     /// Close the document. This should be called directly to ensure that cleanup
22725     /// occurs on the correct thread.
22726     ///
22727 
22728     ///
22729     /// Returns true (1) if an error has been reported by the XML parser.
22730     ///
22731 
22732     cef_base_ref_counted_t base;
22733     extern(System) int function (cef_xml_reader_t* self) nothrow move_to_next_node;
22734     extern(System) int function (cef_xml_reader_t* self) nothrow close;
22735     extern(System) int function (cef_xml_reader_t* self) nothrow has_error;
22736 
22737     ///
22738     /// Returns the error string.
22739     ///
22740     // The resulting string must be freed by calling cef_string_userfree_free().
22741     extern(System) cef_string_userfree_t function (cef_xml_reader_t* self) nothrow get_error;
22742 
22743     ///
22744     /// Returns the node type.
22745     ///
22746     extern(System) cef_xml_node_type_t function (cef_xml_reader_t* self) nothrow get_type;
22747 
22748     ///
22749     /// Returns the node depth. Depth starts at 0 for the root node.
22750     ///
22751     extern(System) int function (cef_xml_reader_t* self) nothrow get_depth;
22752 
22753     ///
22754     /// Returns the local name. See http://www.w3.org/TR/REC-xml-names/#NT-
22755     /// LocalPart for additional details.
22756     ///
22757     // The resulting string must be freed by calling cef_string_userfree_free().
22758     extern(System) cef_string_userfree_t function (cef_xml_reader_t* self) nothrow get_local_name;
22759 
22760     ///
22761     /// Returns the namespace prefix. See http://www.w3.org/TR/REC-xml-names/ for
22762     /// additional details.
22763     ///
22764     // The resulting string must be freed by calling cef_string_userfree_free().
22765     extern(System) cef_string_userfree_t function (cef_xml_reader_t* self) nothrow get_prefix;
22766 
22767     ///
22768     /// Returns the qualified name, equal to (Prefix:)LocalName. See
22769     /// http://www.w3.org/TR/REC-xml-names/#ns-qualnames for additional details.
22770     ///
22771     // The resulting string must be freed by calling cef_string_userfree_free().
22772     extern(System) cef_string_userfree_t function (
22773         cef_xml_reader_t* self) nothrow get_qualified_name;
22774 
22775     ///
22776     /// Returns the URI defining the namespace associated with the node. See
22777     /// http://www.w3.org/TR/REC-xml-names/ for additional details.
22778     ///
22779     // The resulting string must be freed by calling cef_string_userfree_free().
22780     extern(System) cef_string_userfree_t function (cef_xml_reader_t* self) nothrow get_namespace_uri;
22781 
22782     ///
22783     /// Returns the base URI of the node. See http://www.w3.org/TR/xmlbase/ for
22784     /// additional details.
22785     ///
22786     // The resulting string must be freed by calling cef_string_userfree_free().
22787     extern(System) cef_string_userfree_t function (cef_xml_reader_t* self) nothrow get_base_uri;
22788 
22789     ///
22790     /// Returns the xml:lang scope within which the node resides. See
22791     /// http://www.w3.org/TR/REC-xml/#sec-lang-tag for additional details.
22792     ///
22793     // The resulting string must be freed by calling cef_string_userfree_free().
22794     extern(System) cef_string_userfree_t function (cef_xml_reader_t* self) nothrow get_xml_lang;
22795 
22796     ///
22797     /// Returns true (1) if the node represents an NULL element. "<a/>" is
22798     /// considered NULL but "<a></a>" is not.
22799     ///
22800     extern(System) int function (cef_xml_reader_t* self) nothrow is_empty_element;
22801 
22802     ///
22803     /// Returns true (1) if the node has a text value.
22804     ///
22805     extern(System) int function (cef_xml_reader_t* self) nothrow has_value;
22806 
22807     ///
22808     /// Returns the text value.
22809     ///
22810     // The resulting string must be freed by calling cef_string_userfree_free().
22811     extern(System) cef_string_userfree_t function (cef_xml_reader_t* self) nothrow get_value;
22812 
22813     ///
22814     /// Returns true (1) if the node has attributes.
22815     ///
22816     extern(System) int function (cef_xml_reader_t* self) nothrow has_attributes;
22817 
22818     ///
22819     /// Returns the number of attributes.
22820     ///
22821     extern(System) size_t function (cef_xml_reader_t* self) nothrow get_attribute_count;
22822 
22823     ///
22824     /// Returns the value of the attribute at the specified 0-based index.
22825     ///
22826     // The resulting string must be freed by calling cef_string_userfree_free().
22827     extern(System) cef_string_userfree_t function (
22828         cef_xml_reader_t* self,
22829         int index) nothrow get_attribute_byindex;
22830 
22831     ///
22832     /// Returns the value of the attribute with the specified qualified name.
22833     ///
22834     // The resulting string must be freed by calling cef_string_userfree_free().
22835     extern(System) cef_string_userfree_t function (
22836         cef_xml_reader_t* self,
22837         const(cef_string_t)* qualifiedName) nothrow get_attribute_byqname;
22838 
22839     ///
22840     /// Returns the value of the attribute with the specified local name and
22841     /// namespace URI.
22842     ///
22843     // The resulting string must be freed by calling cef_string_userfree_free().
22844     extern(System) cef_string_userfree_t function (
22845         cef_xml_reader_t* self,
22846         const(cef_string_t)* localName,
22847         const(cef_string_t)* namespaceURI) nothrow get_attribute_bylname;
22848 
22849     ///
22850     /// Returns an XML representation of the current node's children.
22851     ///
22852     // The resulting string must be freed by calling cef_string_userfree_free().
22853     extern(System) cef_string_userfree_t function (cef_xml_reader_t* self) nothrow get_inner_xml;
22854 
22855     ///
22856     /// Returns an XML representation of the current node including its children.
22857     ///
22858     // The resulting string must be freed by calling cef_string_userfree_free().
22859     extern(System) cef_string_userfree_t function (cef_xml_reader_t* self) nothrow get_outer_xml;
22860 
22861     ///
22862     /// Returns the line number for the current node.
22863     ///
22864     extern(System) int function (cef_xml_reader_t* self) nothrow get_line_number;
22865 
22866     ///
22867     /// Moves the cursor to the attribute at the specified 0-based index. Returns
22868     /// true (1) if the cursor position was set successfully.
22869     ///
22870     extern(System) int function (
22871         cef_xml_reader_t* self,
22872         int index) nothrow move_to_attribute_byindex;
22873 
22874     ///
22875     /// Moves the cursor to the attribute with the specified qualified name.
22876     /// Returns true (1) if the cursor position was set successfully.
22877     ///
22878     extern(System) int function (
22879         cef_xml_reader_t* self,
22880         const(cef_string_t)* qualifiedName) nothrow move_to_attribute_byqname;
22881 
22882     ///
22883     /// Moves the cursor to the attribute with the specified local name and
22884     /// namespace URI. Returns true (1) if the cursor position was set
22885     /// successfully.
22886     ///
22887     extern(System) int function (
22888         cef_xml_reader_t* self,
22889         const(cef_string_t)* localName,
22890         const(cef_string_t)* namespaceURI) nothrow move_to_attribute_bylname;
22891 
22892     ///
22893     /// Moves the cursor to the first attribute in the current element. Returns
22894     /// true (1) if the cursor position was set successfully.
22895     ///
22896     extern(System) int function (cef_xml_reader_t* self) nothrow move_to_first_attribute;
22897 
22898     ///
22899     /// Moves the cursor to the next attribute in the current element. Returns
22900     /// true (1) if the cursor position was set successfully.
22901     ///
22902     extern(System) int function (cef_xml_reader_t* self) nothrow move_to_next_attribute;
22903 
22904     ///
22905     /// Moves the cursor back to the carrying element. Returns true (1) if the
22906     /// cursor position was set successfully.
22907     ///
22908     extern(System) int function (cef_xml_reader_t* self) nothrow move_to_carrying_element;
22909 }
22910 
22911 
22912 
22913 ///
22914 /// Create a new cef_xml_reader_t object. The returned object's functions can
22915 /// only be called from the thread that created the object.
22916 ///
22917 cef_xml_reader_t* cef_xml_reader_create (
22918     cef_stream_reader_t* stream,
22919     cef_xml_encoding_type_t encodingType,
22920     const(cef_string_t)* URI);
22921 
22922 // CEF_INCLUDE_CAPI_CEF_XML_READER_CAPI_H_
22923 // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
22924 //
22925 // Redistribution and use in source and binary forms, with or without
22926 // modification, are permitted provided that the following conditions are
22927 // met:
22928 //
22929 //    * Redistributions of source code must retain the above copyright
22930 // notice, this list of conditions and the following disclaimer.
22931 //    * Redistributions in binary form must reproduce the above
22932 // copyright notice, this list of conditions and the following disclaimer
22933 // in the documentation and/or other materials provided with the
22934 // distribution.
22935 //    * Neither the name of Google Inc. nor the name Chromium Embedded
22936 // Framework nor the names of its contributors may be used to endorse
22937 // or promote products derived from this software without specific prior
22938 // written permission.
22939 //
22940 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22941 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22942 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22943 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22944 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
22945 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22946 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
22947 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
22948 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22949 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
22950 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
22951 //
22952 // ---------------------------------------------------------------------------
22953 //
22954 // This file was generated by the CEF translator tool and should not edited
22955 // by hand. See the translator.README.txt file in the tools directory for
22956 // more information.
22957 //
22958 // $hash=134a172de5a6674836b723af06baf792553bf9be$
22959 //
22960 
22961 extern (C):
22962 
22963 ///
22964 /// Structure that supports the reading of zip archives via the zlib unzip API.
22965 /// The functions of this structure should only be called on the thread that
22966 /// creates the object.
22967 ///
22968 struct cef_zip_reader_t
22969 {
22970     ///
22971     /// Base structure.
22972     ///
22973 
22974     ///
22975     /// Moves the cursor to the first file in the archive. Returns true (1) if the
22976     /// cursor position was set successfully.
22977     ///
22978 
22979     ///
22980     /// Moves the cursor to the next file in the archive. Returns true (1) if the
22981     /// cursor position was set successfully.
22982     ///
22983 
22984     ///
22985     /// Moves the cursor to the specified file in the archive. If |caseSensitive|
22986     /// is true (1) then the search will be case sensitive. Returns true (1) if
22987 
22988     cef_base_ref_counted_t base;
22989     extern(System) int function (cef_zip_reader_t* self) nothrow move_to_first_file;
22990     extern(System) int function (cef_zip_reader_t* self) nothrow move_to_next_file;
22991     /// the cursor position was set successfully.
22992     ///
22993     extern(System) int function (
22994         cef_zip_reader_t* self,
22995         const(cef_string_t)* fileName,
22996         int caseSensitive) nothrow move_to_file;
22997 
22998     ///
22999     /// Closes the archive. This should be called directly to ensure that cleanup
23000     /// occurs on the correct thread.
23001     ///
23002     extern(System) int function (cef_zip_reader_t* self) nothrow close;
23003 
23004     ///
23005     /// Returns the name of the file.
23006     ///
23007     // The resulting string must be freed by calling cef_string_userfree_free().
23008     extern(System) cef_string_userfree_t function (cef_zip_reader_t* self) nothrow get_file_name;
23009 
23010     ///
23011     /// Returns the uncompressed size of the file.
23012     ///
23013     extern(System) long function (cef_zip_reader_t* self) nothrow get_file_size;
23014 
23015     ///
23016     /// Returns the last modified timestamp for the file.
23017     ///
23018     extern(System) cef_basetime_t function (cef_zip_reader_t* self) nothrow get_file_last_modified;
23019 
23020     ///
23021     /// Opens the file for reading of uncompressed data. A read password may
23022     /// optionally be specified.
23023     ///
23024     extern(System) int function (
23025         cef_zip_reader_t* self,
23026         const(cef_string_t)* password) nothrow open_file;
23027 
23028     ///
23029     /// Closes the file.
23030     ///
23031     extern(System) int function (cef_zip_reader_t* self) nothrow close_file;
23032 
23033     ///
23034     /// Read uncompressed file contents into the specified buffer. Returns < 0 if
23035     /// an error occurred, 0 if at the end of file, or the number of bytes read.
23036     ///
23037     extern(System) int function (
23038         cef_zip_reader_t* self,
23039         void* buffer,
23040         size_t bufferSize) nothrow read_file;
23041 
23042     ///
23043     /// Returns the current offset in the uncompressed file contents.
23044     ///
23045     extern(System) long function (cef_zip_reader_t* self) nothrow tell;
23046 
23047     ///
23048     /// Returns true (1) if at end of the file contents.
23049     ///
23050     extern(System) int function (cef_zip_reader_t* self) nothrow eof;
23051 }
23052 
23053 
23054 
23055 ///
23056 /// Create a new cef_zip_reader_t object. The returned object's functions can
23057 /// only be called from the thread that created the object.
23058 ///
23059 cef_zip_reader_t* cef_zip_reader_create (cef_stream_reader_t* stream);
23060 
23061 // CEF_INCLUDE_CAPI_CEF_ZIP_READER_CAPI_H_
23062 }
23063 
23064 }
23065 
23066 
23067 version(Windows) {
23068 
23069 /+
23070 	***** Webview2 Bindings *****
23071 
23072 	TO UPDATE THIS:
23073 
23074 	Get the new package from https://www.nuget.org/packages/Microsoft.Web.WebView2
23075 	Note that is a .zip file so you can extract the WebView2.idl file by just treating it as such
23076 
23077 	Use my idl2d fork (from ~/program/idl2d or dub) on it `./idl2d WebView2.idl` to make webview2.d.
23078 
23079 	Just delete any `import sdk.*` lines. Comment out the lines that mention `DEFINE_ENUM_FLAG_OPERATORS` (there's like a dozen, it is some C macro that isn't translated and i don't think it is important).
23080 
23081 	And paste it in the version(inline_webview2_bindings) block.
23082 +/
23083 
23084 alias EventRegistrationToken = long;
23085 version=inline_webview2_bindings;
23086 
23087 version(inline_webview2_bindings) {
23088 public import core.sys.windows.windows;
23089 public import core.sys.windows.unknwn;
23090 public import core.sys.windows.oaidl;
23091 public import core.sys.windows.objidl;
23092 
23093 
23094 // Copyright (C) Microsoft Corporation. All rights reserved.
23095 // Use of this source code is governed by a BSD-style license that can be
23096 // found in the LICENSE file.
23097 
23098 @("uuid(26d34152-879f-4065-bea2-3daa2cfadfb8), version(1.0)")
23099 enum LibraryInfo;
23100 version(all)
23101 { /+ library WebView2 +/
23102 
23103 // Interface forward declarations
23104 
23105 /+ interface ICoreWebView2AcceleratorKeyPressedEventArgs; +/
23106 /+ interface ICoreWebView2AcceleratorKeyPressedEventArgs2; +/
23107 /+ interface ICoreWebView2AcceleratorKeyPressedEventHandler; +/
23108 /+ interface ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandler; +/
23109 /+ interface ICoreWebView2CallDevToolsProtocolMethodCompletedHandler; +/
23110 /+ interface ICoreWebView2CapturePreviewCompletedHandler; +/
23111 /+ interface ICoreWebView2; +/
23112 /+ interface ICoreWebView2_2; +/
23113 /+ interface ICoreWebView2_3; +/
23114 /+ interface ICoreWebView2_4; +/
23115 /+ interface ICoreWebView2_5; +/
23116 /+ interface ICoreWebView2_6; +/
23117 /+ interface ICoreWebView2_7; +/
23118 /+ interface ICoreWebView2_8; +/
23119 /+ interface ICoreWebView2_9; +/
23120 /+ interface ICoreWebView2_10; +/
23121 /+ interface ICoreWebView2_11; +/
23122 /+ interface ICoreWebView2_12; +/
23123 /+ interface ICoreWebView2_13; +/
23124 /+ interface ICoreWebView2_14; +/
23125 /+ interface ICoreWebView2_15; +/
23126 /+ interface ICoreWebView2_16; +/
23127 /+ interface ICoreWebView2_17; +/
23128 /+ interface ICoreWebView2_18; +/
23129 /+ interface ICoreWebView2_19; +/
23130 /+ interface ICoreWebView2_20; +/
23131 /+ interface ICoreWebView2BasicAuthenticationRequestedEventArgs; +/
23132 /+ interface ICoreWebView2BasicAuthenticationRequestedEventHandler; +/
23133 /+ interface ICoreWebView2BasicAuthenticationResponse; +/
23134 /+ interface ICoreWebView2BrowserProcessExitedEventArgs; +/
23135 /+ interface ICoreWebView2BrowserProcessExitedEventHandler; +/
23136 /+ interface ICoreWebView2BytesReceivedChangedEventHandler; +/
23137 /+ interface ICoreWebView2CompositionController; +/
23138 /+ interface ICoreWebView2CompositionController2; +/
23139 /+ interface ICoreWebView2CompositionController3; +/
23140 /+ interface ICoreWebView2Controller; +/
23141 /+ interface ICoreWebView2Controller2; +/
23142 /+ interface ICoreWebView2Controller3; +/
23143 /+ interface ICoreWebView2Controller4; +/
23144 /+ interface ICoreWebView2ControllerOptions; +/
23145 /+ interface ICoreWebView2ControllerOptions2; +/
23146 /+ interface ICoreWebView2ContentLoadingEventArgs; +/
23147 /+ interface ICoreWebView2ContentLoadingEventHandler; +/
23148 /+ interface ICoreWebView2ContextMenuRequestedEventArgs; +/
23149 /+ interface ICoreWebView2ContextMenuRequestedEventHandler; +/
23150 /+ interface ICoreWebView2Cookie; +/
23151 /+ interface ICoreWebView2CookieList; +/
23152 /+ interface ICoreWebView2CookieManager; +/
23153 /+ interface ICoreWebView2Certificate; +/
23154 /+ interface ICoreWebView2ClientCertificate; +/
23155 /+ interface ICoreWebView2StringCollection; +/
23156 /+ interface ICoreWebView2ClearBrowsingDataCompletedHandler; +/
23157 /+ interface ICoreWebView2ClientCertificateCollection; +/
23158 /+ interface ICoreWebView2ClientCertificateRequestedEventArgs; +/
23159 /+ interface ICoreWebView2ClientCertificateRequestedEventHandler; +/
23160 /+ interface ICoreWebView2ContextMenuItem; +/
23161 /+ interface ICoreWebView2ContextMenuItemCollection; +/
23162 /+ interface ICoreWebView2ContextMenuRequestedEventArgs; +/
23163 /+ interface ICoreWebView2ContextMenuRequestedEventHandler; +/
23164 /+ interface ICoreWebView2ContextMenuTarget; +/
23165 /+ interface ICoreWebView2ClearServerCertificateErrorActionsCompletedHandler; +/
23166 /+ interface ICoreWebView2CreateCoreWebView2CompositionControllerCompletedHandler; +/
23167 /+ interface ICoreWebView2CreateCoreWebView2ControllerCompletedHandler; +/
23168 /+ interface ICoreWebView2CreateCoreWebView2EnvironmentCompletedHandler; +/
23169 /+ interface ICoreWebView2ContainsFullScreenElementChangedEventHandler; +/
23170 /+ interface ICoreWebView2CursorChangedEventHandler; +/
23171 /+ interface ICoreWebView2CustomItemSelectedEventHandler; +/
23172 /+ interface ICoreWebView2CustomSchemeRegistration; +/
23173 /+ interface ICoreWebView2DocumentTitleChangedEventHandler; +/
23174 /+ interface ICoreWebView2DOMContentLoadedEventArgs; +/
23175 /+ interface ICoreWebView2DOMContentLoadedEventHandler; +/
23176 /+ interface ICoreWebView2Deferral; +/
23177 /+ interface ICoreWebView2DevToolsProtocolEventReceivedEventArgs; +/
23178 /+ interface ICoreWebView2DevToolsProtocolEventReceivedEventArgs2; +/
23179 /+ interface ICoreWebView2DevToolsProtocolEventReceivedEventHandler; +/
23180 /+ interface ICoreWebView2DevToolsProtocolEventReceiver; +/
23181 /+ interface ICoreWebView2DownloadOperation; +/
23182 /+ interface ICoreWebView2DownloadStartingEventArgs; +/
23183 /+ interface ICoreWebView2DownloadStartingEventHandler; +/
23184 /+ interface ICoreWebView2Environment; +/
23185 /+ interface ICoreWebView2Environment2; +/
23186 /+ interface ICoreWebView2Environment3; +/
23187 /+ interface ICoreWebView2Environment4; +/
23188 /+ interface ICoreWebView2Environment5; +/
23189 /+ interface ICoreWebView2Environment6; +/
23190 /+ interface ICoreWebView2Environment7; +/
23191 /+ interface ICoreWebView2Environment8; +/
23192 /+ interface ICoreWebView2Environment9; +/
23193 /+ interface ICoreWebView2Environment10; +/
23194 /+ interface ICoreWebView2Environment11; +/
23195 /+ interface ICoreWebView2Environment12; +/
23196 /+ interface ICoreWebView2Environment13; +/
23197 /+ interface ICoreWebView2EnvironmentOptions; +/
23198 /+ interface ICoreWebView2EnvironmentOptions2; +/
23199 /+ interface ICoreWebView2EnvironmentOptions3; +/
23200 /+ interface ICoreWebView2EnvironmentOptions4; +/
23201 /+ interface ICoreWebView2EnvironmentOptions5; +/
23202 /+ interface ICoreWebView2EnvironmentOptions6; +/
23203 /+ interface ICoreWebView2EstimatedEndTimeChangedEventHandler; +/
23204 /+ interface ICoreWebView2ExecuteScriptCompletedHandler; +/
23205 /+ interface ICoreWebView2GetProcessExtendedInfosCompletedHandler; +/
23206 /+ interface ICoreWebView2ProcessExtendedInfo; +/
23207 /+ interface ICoreWebView2ProcessExtendedInfoCollection; +/
23208 /+ interface ICoreWebView2Frame; +/
23209 /+ interface ICoreWebView2Frame2; +/
23210 /+ interface ICoreWebView2Frame3; +/
23211 /+ interface ICoreWebView2Frame4; +/
23212 /+ interface ICoreWebView2Frame5; +/
23213 /+ interface ICoreWebView2FrameContentLoadingEventHandler; +/
23214 /+ interface ICoreWebView2FrameCreatedEventArgs; +/
23215 /+ interface ICoreWebView2FrameCreatedEventHandler; +/
23216 /+ interface ICoreWebView2FrameDestroyedEventHandler; +/
23217 /+ interface ICoreWebView2FrameDOMContentLoadedEventHandler; +/
23218 /+ interface ICoreWebView2FrameNameChangedEventHandler; +/
23219 /+ interface ICoreWebView2FrameNavigationCompletedEventHandler; +/
23220 /+ interface ICoreWebView2FrameNavigationStartingEventHandler; +/
23221 /+ interface ICoreWebView2FramePermissionRequestedEventHandler; +/
23222 /+ interface ICoreWebView2FrameWebMessageReceivedEventHandler; +/
23223 /+ interface ICoreWebView2FrameInfo; +/
23224 /+ interface ICoreWebView2FrameInfo2; +/
23225 /+ interface ICoreWebView2FrameInfoCollection; +/
23226 /+ interface ICoreWebView2FrameInfoCollectionIterator; +/
23227 /+ interface ICoreWebView2FocusChangedEventHandler; +/
23228 /+ interface ICoreWebView2GetCookiesCompletedHandler; +/
23229 /+ interface ICoreWebView2GetNonDefaultPermissionSettingsCompletedHandler; +/
23230 /+ interface ICoreWebView2HistoryChangedEventHandler; +/
23231 /+ interface ICoreWebView2HttpHeadersCollectionIterator; +/
23232 /+ interface ICoreWebView2HttpRequestHeaders; +/
23233 /+ interface ICoreWebView2HttpResponseHeaders; +/
23234 /+ interface ICoreWebView2IsDefaultDownloadDialogOpenChangedEventHandler; +/
23235 /+ interface ICoreWebView2LaunchingExternalUriSchemeEventArgs; +/
23236 /+ interface ICoreWebView2LaunchingExternalUriSchemeEventHandler; +/
23237 /+ interface ICoreWebView2MoveFocusRequestedEventArgs; +/
23238 /+ interface ICoreWebView2MoveFocusRequestedEventHandler; +/
23239 /+ interface ICoreWebView2NavigationCompletedEventArgs; +/
23240 /+ interface ICoreWebView2NavigationCompletedEventArgs2; +/
23241 /+ interface ICoreWebView2NavigationCompletedEventHandler; +/
23242 /+ interface ICoreWebView2NavigationStartingEventArgs; +/
23243 /+ interface ICoreWebView2NavigationStartingEventArgs2; +/
23244 /+ interface ICoreWebView2NavigationStartingEventArgs3; +/
23245 /+ interface ICoreWebView2NavigationStartingEventHandler; +/
23246 /+ interface ICoreWebView2NewBrowserVersionAvailableEventHandler; +/
23247 /+ interface ICoreWebView2NewWindowRequestedEventArgs; +/
23248 /+ interface ICoreWebView2NewWindowRequestedEventArgs2; +/
23249 /+ interface ICoreWebView2NewWindowRequestedEventArgs3; +/
23250 /+ interface ICoreWebView2NewWindowRequestedEventHandler; +/
23251 /+ interface ICoreWebView2PermissionRequestedEventArgs; +/
23252 /+ interface ICoreWebView2PermissionRequestedEventArgs2; +/
23253 /+ interface ICoreWebView2PermissionRequestedEventArgs3; +/
23254 /+ interface ICoreWebView2PermissionRequestedEventHandler; +/
23255 /+ interface ICoreWebView2PermissionSettingCollectionView; +/
23256 /+ interface ICoreWebView2PermissionSetting; +/
23257 /+ interface ICoreWebView2PointerInfo; +/
23258 /+ interface ICoreWebView2PrintSettings; +/
23259 /+ interface ICoreWebView2PrintSettings2; +/
23260 /+ interface ICoreWebView2PrintToPdfCompletedHandler; +/
23261 /+ interface ICoreWebView2PrintCompletedHandler; +/
23262 /+ interface ICoreWebView2PrintToPdfStreamCompletedHandler; +/
23263 /+ interface ICoreWebView2ProcessFailedEventArgs; +/
23264 /+ interface ICoreWebView2ProcessFailedEventArgs2; +/
23265 /+ interface ICoreWebView2ProcessFailedEventHandler; +/
23266 /+ interface ICoreWebView2Profile; +/
23267 /+ interface ICoreWebView2Profile2; +/
23268 /+ interface ICoreWebView2Profile3; +/
23269 /+ interface ICoreWebView2Profile4; +/
23270 /+ interface ICoreWebView2Profile5; +/
23271 /+ interface ICoreWebView2Profile6; +/
23272 /+ interface ICoreWebView2Profile7; +/
23273 /+ interface ICoreWebView2Profile8; +/
23274 /+ interface ICoreWebView2ProfileDeletedEventHandler; +/
23275 /+ interface ICoreWebView2RasterizationScaleChangedEventHandler; +/
23276 /+ interface ICoreWebView2ServerCertificateErrorDetectedEventArgs; +/
23277 /+ interface ICoreWebView2ServerCertificateErrorDetectedEventHandler; +/
23278 /+ interface ICoreWebView2SetPermissionStateCompletedHandler; +/
23279 /+ interface ICoreWebView2ScriptDialogOpeningEventArgs; +/
23280 /+ interface ICoreWebView2ScriptDialogOpeningEventHandler; +/
23281 /+ interface ICoreWebView2Settings; +/
23282 /+ interface ICoreWebView2Settings2; +/
23283 /+ interface ICoreWebView2Settings3; +/
23284 /+ interface ICoreWebView2Settings4; +/
23285 /+ interface ICoreWebView2Settings5; +/
23286 /+ interface ICoreWebView2Settings6; +/
23287 /+ interface ICoreWebView2Settings7; +/
23288 /+ interface ICoreWebView2Settings8; +/
23289 /+ interface ICoreWebView2SharedBuffer; +/
23290 /+ interface ICoreWebView2SourceChangedEventArgs; +/
23291 /+ interface ICoreWebView2SourceChangedEventHandler; +/
23292 /+ interface ICoreWebView2StateChangedEventHandler; +/
23293 /+ interface ICoreWebView2StatusBarTextChangedEventHandler; +/
23294 /+ interface ICoreWebView2TrySuspendCompletedHandler; +/
23295 /+ interface ICoreWebView2WebMessageReceivedEventArgs; +/
23296 /+ interface ICoreWebView2WebMessageReceivedEventHandler; +/
23297 /+ interface ICoreWebView2WebResourceRequest; +/
23298 /+ interface ICoreWebView2WebResourceRequestedEventArgs; +/
23299 /+ interface ICoreWebView2WebResourceRequestedEventHandler; +/
23300 /+ interface ICoreWebView2WebResourceResponse; +/
23301 /+ interface ICoreWebView2WebResourceResponseReceivedEventHandler; +/
23302 /+ interface ICoreWebView2WebResourceResponseReceivedEventArgs; +/
23303 /+ interface ICoreWebView2WebResourceResponseView; +/
23304 /+ interface ICoreWebView2WebResourceResponseViewGetContentCompletedHandler; +/
23305 /+ interface ICoreWebView2WindowCloseRequestedEventHandler; +/
23306 /+ interface ICoreWebView2WindowFeatures; +/
23307 /+ interface ICoreWebView2ZoomFactorChangedEventHandler; +/
23308 /+ interface ICoreWebView2IsMutedChangedEventHandler; +/
23309 /+ interface ICoreWebView2IsDocumentPlayingAudioChangedEventHandler; +/
23310 /+ interface ICoreWebView2ProcessInfo; +/
23311 /+ interface ICoreWebView2ProcessInfoCollection; +/
23312 /+ interface ICoreWebView2ProcessInfosChangedEventHandler; +/
23313 /+ interface ICoreWebView2FaviconChangedEventHandler; +/
23314 /+ interface ICoreWebView2GetFaviconCompletedHandler; +/
23315 /+ interface ICoreWebView2ProfileAddBrowserExtensionCompletedHandler; +/
23316 /+ interface ICoreWebView2ProfileGetBrowserExtensionsCompletedHandler; +/
23317 /+ interface ICoreWebView2BrowserExtensionList; +/
23318 /+ interface ICoreWebView2BrowserExtension; +/
23319 /+ interface ICoreWebView2BrowserExtensionEnableCompletedHandler; +/
23320 /+ interface ICoreWebView2BrowserExtensionRemoveCompletedHandler; +/
23321 
23322 // Enums and structs
23323 
23324 /// Specifies the image format for the `ICoreWebView2::CapturePreview` method.
23325 
23326 @("v1_enum")
23327 enum /+ COREWEBVIEW2_CAPTURE_PREVIEW_IMAGE_FORMAT+/
23328 {
23329 
23330   /// Indicates that the PNG image format is used.
23331 
23332   COREWEBVIEW2_CAPTURE_PREVIEW_IMAGE_FORMAT_PNG,
23333 
23334   /// Indicates the JPEG image format is used.
23335 
23336   COREWEBVIEW2_CAPTURE_PREVIEW_IMAGE_FORMAT_JPEG,
23337 }
23338 alias int COREWEBVIEW2_CAPTURE_PREVIEW_IMAGE_FORMAT;
23339 
23340 /// Kind of cookie SameSite status used in the ICoreWebView2Cookie interface.
23341 /// These fields match those as specified in https://developer.mozilla.org/docs/Web/HTTP/Cookies#.
23342 /// Learn more about SameSite cookies here: https://tools.ietf.org/html/draft-west-first-party-cookies-07
23343 @("v1_enum")
23344 enum /+ COREWEBVIEW2_COOKIE_SAME_SITE_KIND+/
23345 {
23346   /// None SameSite type. No restrictions on cross-site requests.
23347   COREWEBVIEW2_COOKIE_SAME_SITE_KIND_NONE,
23348   /// Lax SameSite type. The cookie will be sent with "same-site" requests, and with "cross-site" top level navigation.
23349   COREWEBVIEW2_COOKIE_SAME_SITE_KIND_LAX,
23350   /// Strict SameSite type. The cookie will only be sent along with "same-site" requests.
23351   COREWEBVIEW2_COOKIE_SAME_SITE_KIND_STRICT,
23352 }
23353 alias int COREWEBVIEW2_COOKIE_SAME_SITE_KIND;
23354 
23355 /// Kind of cross origin resource access allowed for host resources during download.
23356 /// Note that other normal access checks like same origin DOM access check and [Content
23357 /// Security Policy](https://developer.mozilla.org/docs/Web/HTTP/CSP) still apply.
23358 /// The following table illustrates the host resource cross origin access according to
23359 /// access context and `COREWEBVIEW2_HOST_RESOURCE_ACCESS_KIND`.
23360 ///
23361 /// Cross Origin Access Context | DENY | ALLOW | DENY_CORS
23362 /// --- | --- | --- | ---
23363 /// From DOM like src of img, script or iframe element| Deny | Allow | Allow
23364 /// From Script like Fetch or XMLHttpRequest| Deny | Allow | Deny
23365 @("v1_enum")
23366 enum /+ COREWEBVIEW2_HOST_RESOURCE_ACCESS_KIND+/
23367 {
23368   /// All cross origin resource access is denied, including normal sub resource access
23369   /// as src of a script or image element.
23370   COREWEBVIEW2_HOST_RESOURCE_ACCESS_KIND_DENY,
23371 
23372   /// All cross origin resource access is allowed, including accesses that are
23373   /// subject to Cross-Origin Resource Sharing(CORS) check. The behavior is similar to
23374   /// a web site sends back http header Access-Control-Allow-Origin: *.
23375   COREWEBVIEW2_HOST_RESOURCE_ACCESS_KIND_ALLOW,
23376 
23377   /// Cross origin resource access is allowed for normal sub resource access like
23378   /// as src of a script or image element, while any access that subjects to CORS check
23379   /// will be denied.
23380   /// See [Cross-Origin Resource Sharing](https://developer.mozilla.org/docs/Web/HTTP/CORS)
23381   /// for more information.
23382   COREWEBVIEW2_HOST_RESOURCE_ACCESS_KIND_DENY_CORS,
23383 }
23384 alias int COREWEBVIEW2_HOST_RESOURCE_ACCESS_KIND;
23385 
23386 /// Specifies the JavaScript dialog type used in the
23387 /// `ICoreWebView2ScriptDialogOpeningEventHandler` interface.
23388 
23389 @("v1_enum")
23390 enum /+ COREWEBVIEW2_SCRIPT_DIALOG_KIND+/
23391 {
23392 
23393   /// Indicates that the dialog uses the `window.alert` JavaScript function.
23394 
23395   COREWEBVIEW2_SCRIPT_DIALOG_KIND_ALERT,
23396 
23397   /// Indicates that the dialog uses the `window.confirm` JavaScript function.
23398 
23399   COREWEBVIEW2_SCRIPT_DIALOG_KIND_CONFIRM,
23400 
23401   /// Indicates that the dialog uses the `window.prompt` JavaScript function.
23402 
23403   COREWEBVIEW2_SCRIPT_DIALOG_KIND_PROMPT,
23404 
23405   /// Indicates that the dialog uses the `beforeunload` JavaScript event.
23406 
23407   COREWEBVIEW2_SCRIPT_DIALOG_KIND_BEFOREUNLOAD,
23408 }
23409 alias int COREWEBVIEW2_SCRIPT_DIALOG_KIND;
23410 
23411 /// Specifies the process failure type used in the
23412 /// `ICoreWebView2ProcessFailedEventArgs` interface. The values in this enum
23413 /// make reference to the process kinds in the Chromium architecture. For more
23414 /// information about what these processes are and what they do, see
23415 /// [Browser Architecture - Inside look at modern web browser](https://developers.google.com/web/updates/2018/09/inside-browser-part1).
23416 
23417 @("v1_enum")
23418 enum /+ COREWEBVIEW2_PROCESS_FAILED_KIND+/
23419 {
23420 
23421   /// Indicates that the browser process ended unexpectedly.  The WebView
23422   /// automatically moves to the Closed state.  The app has to recreate a new
23423   /// WebView to recover from this failure.
23424 
23425   COREWEBVIEW2_PROCESS_FAILED_KIND_BROWSER_PROCESS_EXITED,
23426 
23427   /// Indicates that the main frame's render process ended unexpectedly. Any
23428   /// subframes in the WebView will be gone too.  A new render process is
23429   /// created automatically and navigated to an error page. You can use the
23430   /// `Reload` method to try to recover from this failure. Alternatively, you
23431   /// can `Close` and recreate the WebView.
23432 
23433   COREWEBVIEW2_PROCESS_FAILED_KIND_RENDER_PROCESS_EXITED,
23434 
23435   /// Indicates that the main frame's render process is unresponsive. Renderer
23436   /// process unresponsiveness can happen for the following reasons:
23437   ///
23438   /// *   There is a **long-running script** being executed. For example, the
23439   /// web content in your WebView might be performing a synchronous XHR, or have
23440   /// entered an infinite loop.
23441   /// *   The **system is busy**.
23442   ///
23443   /// The `ProcessFailed` event will continue to be raised every few seconds
23444   /// until the renderer process has become responsive again. The application
23445   /// can consider taking action if the event keeps being raised. For example,
23446   /// the application might show UI for the user to decide to keep waiting or
23447   /// reload the page, or navigate away.
23448 
23449   COREWEBVIEW2_PROCESS_FAILED_KIND_RENDER_PROCESS_UNRESPONSIVE,
23450 
23451   /// Indicates that a frame-only render process ended unexpectedly. The process
23452   /// exit does not affect the top-level document, only a subset of the
23453   /// subframes within it. The content in these frames is replaced with an error
23454   /// page in the frame. Your application can communicate with the main frame to
23455   /// recover content in the impacted frames, using
23456   /// `ICoreWebView2ProcessFailedEventArgs2::FrameInfosForFailedProcess` to get
23457   /// information about the impacted frames.
23458 
23459   COREWEBVIEW2_PROCESS_FAILED_KIND_FRAME_RENDER_PROCESS_EXITED,
23460 
23461   /// Indicates that a utility process ended unexpectedly. The failed process
23462   /// is recreated automatically. Your application does **not** need to handle
23463   /// recovery for this event, but can use `ICoreWebView2ProcessFailedEventArgs`
23464   /// and `ICoreWebView2ProcessFailedEventArgs2` to collect information about
23465   /// the failure, including `ProcessDescription`.
23466 
23467   COREWEBVIEW2_PROCESS_FAILED_KIND_UTILITY_PROCESS_EXITED,
23468 
23469   /// Indicates that a sandbox helper process ended unexpectedly. This failure
23470   /// is not fatal. Your application does **not** need to handle recovery for
23471   /// this event, but can use `ICoreWebView2ProcessFailedEventArgs` and
23472   /// `ICoreWebView2ProcessFailedEventArgs2` to collect information about
23473   /// the failure.
23474 
23475   COREWEBVIEW2_PROCESS_FAILED_KIND_SANDBOX_HELPER_PROCESS_EXITED,
23476 
23477   /// Indicates that the GPU process ended unexpectedly. The failed process
23478   /// is recreated automatically. Your application does **not** need to handle
23479   /// recovery for this event, but can use `ICoreWebView2ProcessFailedEventArgs`
23480   /// and `ICoreWebView2ProcessFailedEventArgs2` to collect information about
23481   /// the failure.
23482 
23483   COREWEBVIEW2_PROCESS_FAILED_KIND_GPU_PROCESS_EXITED,
23484 
23485   /// Indicates that a PPAPI plugin process ended unexpectedly. This failure
23486   /// is not fatal. Your application does **not** need to handle recovery for
23487   /// this event, but can use `ICoreWebView2ProcessFailedEventArgs` and
23488   /// `ICoreWebView2ProcessFailedEventArgs2` to collect information about
23489   /// the failure, including `ProcessDescription`.
23490 
23491   COREWEBVIEW2_PROCESS_FAILED_KIND_PPAPI_PLUGIN_PROCESS_EXITED,
23492 
23493   /// Indicates that a PPAPI plugin broker process ended unexpectedly. This failure
23494   /// is not fatal. Your application does **not** need to handle recovery for
23495   /// this event, but can use `ICoreWebView2ProcessFailedEventArgs` and
23496   /// `ICoreWebView2ProcessFailedEventArgs2` to collect information about
23497   /// the failure.
23498 
23499   COREWEBVIEW2_PROCESS_FAILED_KIND_PPAPI_BROKER_PROCESS_EXITED,
23500 
23501   /// Indicates that a process of unspecified kind ended unexpectedly. Your
23502   /// application can use `ICoreWebView2ProcessFailedEventArgs` and
23503   /// `ICoreWebView2ProcessFailedEventArgs2` to collect information about
23504   /// the failure.
23505 
23506   COREWEBVIEW2_PROCESS_FAILED_KIND_UNKNOWN_PROCESS_EXITED,
23507 }
23508 alias int COREWEBVIEW2_PROCESS_FAILED_KIND;
23509 
23510 /// Specifies the process failure reason used in the
23511 /// `ICoreWebView2ProcessFailedEventArgs` interface. For process failures where
23512 /// a process has exited, it indicates the type of issue that produced the
23513 /// process exit.
23514 
23515 @("v1_enum")
23516 enum /+ COREWEBVIEW2_PROCESS_FAILED_REASON+/
23517 {
23518 
23519   /// An unexpected process failure occurred.
23520   COREWEBVIEW2_PROCESS_FAILED_REASON_UNEXPECTED,
23521 
23522   /// The process became unresponsive.
23523   /// This only applies to the main frame's render process.
23524 
23525   COREWEBVIEW2_PROCESS_FAILED_REASON_UNRESPONSIVE,
23526 
23527   /// The process was terminated. For example, from Task Manager.
23528 
23529   COREWEBVIEW2_PROCESS_FAILED_REASON_TERMINATED,
23530 
23531   /// The process crashed. Most crashes will generate dumps in the location
23532   /// indicated by `ICoreWebView2Environment11::get_FailureReportFolderPath`.
23533 
23534   COREWEBVIEW2_PROCESS_FAILED_REASON_CRASHED,
23535 
23536   /// The process failed to launch.
23537 
23538   COREWEBVIEW2_PROCESS_FAILED_REASON_LAUNCH_FAILED,
23539 
23540   /// The process terminated due to running out of memory.
23541 
23542   COREWEBVIEW2_PROCESS_FAILED_REASON_OUT_OF_MEMORY,
23543 
23544   /// The process exited because its corresponding profile was deleted.
23545   COREWEBVIEW2_PROCESS_FAILED_REASON_PROFILE_DELETED,
23546 }
23547 alias int COREWEBVIEW2_PROCESS_FAILED_REASON;
23548 
23549 /// Indicates the type of a permission request.
23550 
23551 @("v1_enum")
23552 enum /+ COREWEBVIEW2_PERMISSION_KIND+/
23553 {
23554 
23555   /// Indicates an unknown permission.
23556 
23557   COREWEBVIEW2_PERMISSION_KIND_UNKNOWN_PERMISSION,
23558 
23559   /// Indicates permission to capture audio.
23560 
23561   COREWEBVIEW2_PERMISSION_KIND_MICROPHONE,
23562 
23563   /// Indicates permission to capture video.
23564 
23565   COREWEBVIEW2_PERMISSION_KIND_CAMERA,
23566 
23567   /// Indicates permission to access geolocation.
23568 
23569   COREWEBVIEW2_PERMISSION_KIND_GEOLOCATION,
23570 
23571   /// Indicates permission to send web notifications. Apps that would like to
23572   /// show notifications should handle `PermissionRequested` events
23573   /// and no browser permission prompt will be shown for notification requests.
23574   /// Note that push notifications are currently unavailable in WebView2.
23575 
23576   COREWEBVIEW2_PERMISSION_KIND_NOTIFICATIONS,
23577 
23578   /// Indicates permission to access generic sensor.  Generic Sensor covering
23579   /// ambient-light-sensor, accelerometer, gyroscope, and magnetometer.
23580 
23581   COREWEBVIEW2_PERMISSION_KIND_OTHER_SENSORS,
23582 
23583   /// Indicates permission to read the system clipboard without a user gesture.
23584 
23585   COREWEBVIEW2_PERMISSION_KIND_CLIPBOARD_READ,
23586 
23587   /// Indicates permission to automatically download multiple files. Permission
23588   /// is requested when multiple downloads are triggered in quick succession.
23589 
23590   COREWEBVIEW2_PERMISSION_KIND_MULTIPLE_AUTOMATIC_DOWNLOADS,
23591 
23592   /// Indicates permission to read and write to files or folders on the device.
23593   /// Permission is requested when developers use the [File System Access API](https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API)
23594   /// to show the file or folder picker to the end user, and then request
23595   /// "readwrite" permission for the user's selection.
23596 
23597   COREWEBVIEW2_PERMISSION_KIND_FILE_READ_WRITE,
23598 
23599   /// Indicates permission to play audio and video automatically on sites. This
23600   /// permission affects the autoplay attribute and play method of the audio and
23601   /// video HTML elements, and the start method of the Web Audio API. See the
23602   /// [Autoplay guide for media and Web Audio APIs](https://developer.mozilla.org/en-US/docs/Web/Media/Autoplay_guide) for details.
23603 
23604   COREWEBVIEW2_PERMISSION_KIND_AUTOPLAY,
23605 
23606   /// Indicates permission to use fonts on the device. Permission is requested
23607   /// when developers use the [Local Font Access API](https://wicg.github.io/local-font-access/)
23608   /// to query the system fonts available for styling web content.
23609 
23610   COREWEBVIEW2_PERMISSION_KIND_LOCAL_FONTS,
23611 
23612   /// Indicates permission to send and receive system exclusive messages to/from MIDI
23613   /// (Musical Instrument Digital Interface) devices. Permission is requested
23614   /// when developers use the [Web MIDI API](https://developer.mozilla.org/en-US/docs/Web/API/Web_MIDI_API)
23615   /// to request access to system exclusive MIDI messages.
23616   COREWEBVIEW2_PERMISSION_KIND_MIDI_SYSTEM_EXCLUSIVE_MESSAGES,
23617 
23618   /// Indicates permission to open and place windows on the screen. Permission is
23619   /// requested when developers use the [Multi-Screen Window Placement API](https://www.w3.org/TR/window-placement/)
23620   /// to get screen details.
23621   COREWEBVIEW2_PERMISSION_KIND_WINDOW_MANAGEMENT,
23622 }
23623 alias int COREWEBVIEW2_PERMISSION_KIND;
23624 
23625 /// Specifies the response to a permission request.
23626 
23627 @("v1_enum")
23628 enum /+ COREWEBVIEW2_PERMISSION_STATE+/
23629 {
23630 
23631   /// Specifies that the default browser behavior is used, which normally
23632   /// prompt users for decision.
23633 
23634   COREWEBVIEW2_PERMISSION_STATE_DEFAULT,
23635 
23636   /// Specifies that the permission request is granted.
23637 
23638   COREWEBVIEW2_PERMISSION_STATE_ALLOW,
23639 
23640   /// Specifies that the permission request is denied.
23641 
23642   COREWEBVIEW2_PERMISSION_STATE_DENY,
23643 }
23644 alias int COREWEBVIEW2_PERMISSION_STATE;
23645 
23646 /// Indicates the error status values for web navigations.
23647 
23648 @("v1_enum")
23649 enum /+ COREWEBVIEW2_WEB_ERROR_STATUS+/
23650 {
23651 
23652   /// Indicates that an unknown error occurred.
23653 
23654   COREWEBVIEW2_WEB_ERROR_STATUS_UNKNOWN,
23655 
23656   /// Indicates that the SSL certificate common name does not match the web
23657   /// address.
23658 
23659   COREWEBVIEW2_WEB_ERROR_STATUS_CERTIFICATE_COMMON_NAME_IS_INCORRECT,
23660 
23661   /// Indicates that the SSL certificate has expired.
23662 
23663   COREWEBVIEW2_WEB_ERROR_STATUS_CERTIFICATE_EXPIRED,
23664 
23665   /// Indicates that the SSL client certificate contains errors.
23666 
23667   COREWEBVIEW2_WEB_ERROR_STATUS_CLIENT_CERTIFICATE_CONTAINS_ERRORS,
23668 
23669   /// Indicates that the SSL certificate has been revoked.
23670 
23671   COREWEBVIEW2_WEB_ERROR_STATUS_CERTIFICATE_REVOKED,
23672 
23673   /// Indicates that the SSL certificate is not valid.  The certificate may not
23674   /// match the public key pins for the host name, the certificate is signed
23675   /// by an untrusted authority or using a weak sign algorithm, the certificate
23676   /// claimed DNS names violate name constraints, the certificate contains a
23677   /// weak key, the validity period of the certificate is too long, lack of
23678   /// revocation information or revocation mechanism, non-unique host name,
23679   /// lack of certificate transparency information, or the certificate is
23680   /// chained to a
23681   /// [legacy Symantec root](https://security.googleblog.com/2018/03/distrust-of-symantec-pki-immediate.html).
23682 
23683   COREWEBVIEW2_WEB_ERROR_STATUS_CERTIFICATE_IS_INVALID,
23684 
23685   /// Indicates that the host is unreachable.
23686 
23687   COREWEBVIEW2_WEB_ERROR_STATUS_SERVER_UNREACHABLE,
23688 
23689   /// Indicates that the connection has timed out.
23690 
23691   COREWEBVIEW2_WEB_ERROR_STATUS_TIMEOUT,
23692 
23693   /// Indicates that the server returned an invalid or unrecognized response.
23694 
23695   COREWEBVIEW2_WEB_ERROR_STATUS_ERROR_HTTP_INVALID_SERVER_RESPONSE,
23696 
23697   /// Indicates that the connection was stopped.
23698 
23699   COREWEBVIEW2_WEB_ERROR_STATUS_CONNECTION_ABORTED,
23700 
23701   /// Indicates that the connection was reset.
23702 
23703   COREWEBVIEW2_WEB_ERROR_STATUS_CONNECTION_RESET,
23704 
23705   /// Indicates that the Internet connection has been lost.
23706 
23707   COREWEBVIEW2_WEB_ERROR_STATUS_DISCONNECTED,
23708 
23709   /// Indicates that a connection to the destination was not established.
23710 
23711   COREWEBVIEW2_WEB_ERROR_STATUS_CANNOT_CONNECT,
23712 
23713   /// Indicates that the provided host name was not able to be resolved.
23714 
23715   COREWEBVIEW2_WEB_ERROR_STATUS_HOST_NAME_NOT_RESOLVED,
23716 
23717   /// Indicates that the operation was canceled. This status code is also used
23718   /// in the following cases:
23719   /// - When the app cancels a navigation via NavigationStarting event.
23720   /// - For original navigation if the app navigates the WebView2 in a rapid succession
23721   /// away after the load for original navigation commenced, but before it completed.
23722 
23723   COREWEBVIEW2_WEB_ERROR_STATUS_OPERATION_CANCELED,
23724 
23725   /// Indicates that the request redirect failed.
23726 
23727   COREWEBVIEW2_WEB_ERROR_STATUS_REDIRECT_FAILED,
23728 
23729   /// Indicates that an unexpected error occurred.
23730 
23731   COREWEBVIEW2_WEB_ERROR_STATUS_UNEXPECTED_ERROR,
23732 
23733   /// Indicates that user is prompted with a login, waiting on user action.
23734   /// Initial navigation to a login site will always return this even if app provides
23735   /// credential using BasicAuthenticationRequested.
23736   /// HTTP response status code in this case is 401.
23737   /// See status code reference here: https://developer.mozilla.org/docs/Web/HTTP/Status.
23738 
23739   COREWEBVIEW2_WEB_ERROR_STATUS_VALID_AUTHENTICATION_CREDENTIALS_REQUIRED,
23740 
23741   /// Indicates that user lacks proper authentication credentials for a proxy server.
23742   /// HTTP response status code in this case is 407.
23743   /// See status code reference here: https://developer.mozilla.org/docs/Web/HTTP/Status.
23744 
23745   COREWEBVIEW2_WEB_ERROR_STATUS_VALID_PROXY_AUTHENTICATION_REQUIRED,
23746 }
23747 alias int COREWEBVIEW2_WEB_ERROR_STATUS;
23748 
23749 /// Specifies the web resource request contexts.
23750 
23751 @("v1_enum")
23752 enum /+ COREWEBVIEW2_WEB_RESOURCE_CONTEXT+/
23753 {
23754 
23755   /// Specifies all resources.
23756 
23757   COREWEBVIEW2_WEB_RESOURCE_CONTEXT_ALL,
23758 
23759   /// Specifies a document resource.
23760 
23761   COREWEBVIEW2_WEB_RESOURCE_CONTEXT_DOCUMENT,
23762 
23763   /// Specifies a CSS resource.
23764 
23765   COREWEBVIEW2_WEB_RESOURCE_CONTEXT_STYLESHEET,
23766 
23767   /// Specifies an image resource.
23768 
23769   COREWEBVIEW2_WEB_RESOURCE_CONTEXT_IMAGE,
23770 
23771   /// Specifies another media resource such as a video.
23772 
23773   COREWEBVIEW2_WEB_RESOURCE_CONTEXT_MEDIA,
23774 
23775   /// Specifies a font resource.
23776 
23777   COREWEBVIEW2_WEB_RESOURCE_CONTEXT_FONT,
23778 
23779   /// Specifies a script resource.
23780 
23781   COREWEBVIEW2_WEB_RESOURCE_CONTEXT_SCRIPT,
23782 
23783   /// Specifies an XML HTTP request, Fetch and EventSource API communication.
23784 
23785   COREWEBVIEW2_WEB_RESOURCE_CONTEXT_XML_HTTP_REQUEST,
23786 
23787   /// Specifies a Fetch API communication.
23788 
23789   // Note that this isn't working. Fetch API requests are fired as a part
23790   // of COREWEBVIEW2_WEB_RESOURCE_CONTEXT_XML_HTTP_REQUEST.
23791 
23792   COREWEBVIEW2_WEB_RESOURCE_CONTEXT_FETCH,
23793 
23794   /// Specifies a TextTrack resource.
23795 
23796   COREWEBVIEW2_WEB_RESOURCE_CONTEXT_TEXT_TRACK,
23797 
23798   /// Specifies an EventSource API communication.
23799 
23800   // Note that this isn't working. EventSource API requests are fired as a part
23801   // of COREWEBVIEW2_WEB_RESOURCE_CONTEXT_XML_HTTP_REQUEST.
23802 
23803   COREWEBVIEW2_WEB_RESOURCE_CONTEXT_EVENT_SOURCE,
23804 
23805   /// Specifies a WebSocket API communication.
23806 
23807   COREWEBVIEW2_WEB_RESOURCE_CONTEXT_WEBSOCKET,
23808 
23809   /// Specifies a Web App Manifest.
23810 
23811   COREWEBVIEW2_WEB_RESOURCE_CONTEXT_MANIFEST,
23812 
23813   /// Specifies a Signed HTTP Exchange.
23814 
23815   COREWEBVIEW2_WEB_RESOURCE_CONTEXT_SIGNED_EXCHANGE,
23816 
23817   /// Specifies a Ping request.
23818 
23819   COREWEBVIEW2_WEB_RESOURCE_CONTEXT_PING,
23820 
23821   /// Specifies a CSP Violation Report.
23822 
23823   COREWEBVIEW2_WEB_RESOURCE_CONTEXT_CSP_VIOLATION_REPORT,
23824 
23825   /// Specifies an other resource.
23826 
23827   COREWEBVIEW2_WEB_RESOURCE_CONTEXT_OTHER
23828 }
23829 alias int COREWEBVIEW2_WEB_RESOURCE_CONTEXT;
23830 
23831 /// Specifies the reason for moving focus.
23832 
23833 @("v1_enum")
23834 enum /+ COREWEBVIEW2_MOVE_FOCUS_REASON+/
23835 {
23836 
23837   /// Specifies that the code is setting focus into WebView.
23838 
23839   COREWEBVIEW2_MOVE_FOCUS_REASON_PROGRAMMATIC,
23840 
23841   /// Specifies that the focus is moving due to Tab traversal forward.
23842 
23843   COREWEBVIEW2_MOVE_FOCUS_REASON_NEXT,
23844 
23845   /// Specifies that the focus is moving due to Tab traversal backward.
23846 
23847   COREWEBVIEW2_MOVE_FOCUS_REASON_PREVIOUS,
23848 }
23849 alias int COREWEBVIEW2_MOVE_FOCUS_REASON;
23850 
23851 /// Specifies the key event type that triggered an `AcceleratorKeyPressed`
23852 /// event.
23853 
23854 @("v1_enum")
23855 enum /+ COREWEBVIEW2_KEY_EVENT_KIND+/
23856 {
23857 
23858   /// Specifies that the key event type corresponds to window message
23859   /// `WM_KEYDOWN`.
23860 
23861   COREWEBVIEW2_KEY_EVENT_KIND_KEY_DOWN,
23862 
23863   /// Specifies that the key event type corresponds to window message
23864   /// `WM_KEYUP`.
23865 
23866   COREWEBVIEW2_KEY_EVENT_KIND_KEY_UP,
23867 
23868   /// Specifies that the key event type corresponds to window message
23869   /// `WM_SYSKEYDOWN`.
23870 
23871   COREWEBVIEW2_KEY_EVENT_KIND_SYSTEM_KEY_DOWN,
23872 
23873   /// Specifies that the key event type corresponds to window message
23874   /// `WM_SYSKEYUP`.
23875 
23876   COREWEBVIEW2_KEY_EVENT_KIND_SYSTEM_KEY_UP,
23877 }
23878 alias int COREWEBVIEW2_KEY_EVENT_KIND;
23879 
23880 /// Specifies the browser process exit type used in the
23881 /// `ICoreWebView2BrowserProcessExitedEventArgs` interface.
23882 
23883 @("v1_enum")
23884 enum /+ COREWEBVIEW2_BROWSER_PROCESS_EXIT_KIND+/
23885 {
23886 
23887   /// Indicates that the browser process ended normally.
23888 
23889   COREWEBVIEW2_BROWSER_PROCESS_EXIT_KIND_NORMAL,
23890 
23891   /// Indicates that the browser process ended unexpectedly.
23892   /// A `ProcessFailed` event will also be sent to listening WebViews from the
23893   /// `ICoreWebView2Environment` associated to the failed process.
23894 
23895   COREWEBVIEW2_BROWSER_PROCESS_EXIT_KIND_FAILED
23896 }
23897 alias int COREWEBVIEW2_BROWSER_PROCESS_EXIT_KIND;
23898 
23899 /// Contains the information packed into the `LPARAM` sent to a Win32 key
23900 /// event.  For more information about `WM_KEYDOWN`, navigate to
23901 /// [WM_KEYDOWN message](/windows/win32/inputdev/wm-keydown).
23902 
23903 struct COREWEBVIEW2_PHYSICAL_KEY_STATUS
23904 {
23905 
23906   /// Specifies the repeat count for the current message.
23907 
23908   UINT32 RepeatCount;
23909 
23910   /// Specifies the scan code.
23911 
23912   UINT32 ScanCode;
23913 
23914   /// Indicates that the key is an extended key.
23915 
23916   BOOL IsExtendedKey;
23917 
23918   /// Indicates that a menu key is held down (context code).
23919 
23920   BOOL IsMenuKeyDown;
23921 
23922   /// Indicates that the key was held down.
23923 
23924   BOOL WasKeyDown;
23925 
23926   /// Indicates that the key was released.
23927 
23928   BOOL IsKeyReleased;
23929 }
23930 
23931 /// A value representing RGBA color (Red, Green, Blue, Alpha) for WebView2.
23932 /// Each component takes a value from 0 to 255, with 0 being no intensity
23933 /// and 255 being the highest intensity.
23934 
23935 struct COREWEBVIEW2_COLOR
23936 {
23937 
23938   /// Specifies the intensity of the Alpha ie. opacity value. 0 is transparent,
23939   /// 255 is opaque.
23940 
23941   BYTE A;
23942 
23943   /// Specifies the intensity of the Red color.
23944 
23945   BYTE R;
23946 
23947   /// Specifies the intensity of the Green color.
23948 
23949   BYTE G;
23950 
23951   /// Specifies the intensity of the Blue color.
23952 
23953   BYTE B;
23954 }
23955 
23956 /// Mouse event type used by SendMouseInput to convey the type of mouse event
23957 /// being sent to WebView. The values of this enum align with the matching
23958 /// WM_* window messages.
23959 
23960 @("v1_enum")
23961 enum /+ COREWEBVIEW2_MOUSE_EVENT_KIND+/
23962 {
23963 
23964   /// Mouse horizontal wheel scroll event, WM_MOUSEHWHEEL.
23965 
23966   COREWEBVIEW2_MOUSE_EVENT_KIND_HORIZONTAL_WHEEL = 0x020E,
23967 
23968   /// Left button double click mouse event, WM_LBUTTONDBLCLK.
23969 
23970   COREWEBVIEW2_MOUSE_EVENT_KIND_LEFT_BUTTON_DOUBLE_CLICK = 0x0203,
23971 
23972   /// Left button down mouse event, WM_LBUTTONDOWN.
23973 
23974   COREWEBVIEW2_MOUSE_EVENT_KIND_LEFT_BUTTON_DOWN = 0x0201,
23975 
23976   /// Left button up mouse event, WM_LBUTTONUP.
23977 
23978   COREWEBVIEW2_MOUSE_EVENT_KIND_LEFT_BUTTON_UP = 0x0202,
23979 
23980   /// Mouse leave event, WM_MOUSELEAVE.
23981 
23982   COREWEBVIEW2_MOUSE_EVENT_KIND_LEAVE = 0x02A3,
23983 
23984   /// Middle button double click mouse event, WM_MBUTTONDBLCLK.
23985 
23986   COREWEBVIEW2_MOUSE_EVENT_KIND_MIDDLE_BUTTON_DOUBLE_CLICK = 0x0209,
23987 
23988   /// Middle button down mouse event, WM_MBUTTONDOWN.
23989 
23990   COREWEBVIEW2_MOUSE_EVENT_KIND_MIDDLE_BUTTON_DOWN = 0x0207,
23991 
23992   /// Middle button up mouse event, WM_MBUTTONUP.
23993 
23994   COREWEBVIEW2_MOUSE_EVENT_KIND_MIDDLE_BUTTON_UP = 0x0208,
23995 
23996   /// Mouse move event, WM_MOUSEMOVE.
23997 
23998   COREWEBVIEW2_MOUSE_EVENT_KIND_MOVE = 0x0200,
23999 
24000   /// Right button double click mouse event, WM_RBUTTONDBLCLK.
24001 
24002   COREWEBVIEW2_MOUSE_EVENT_KIND_RIGHT_BUTTON_DOUBLE_CLICK = 0x0206,
24003 
24004   /// Right button down mouse event, WM_RBUTTONDOWN.
24005 
24006   COREWEBVIEW2_MOUSE_EVENT_KIND_RIGHT_BUTTON_DOWN = 0x0204,
24007 
24008   /// Right button up mouse event, WM_RBUTTONUP.
24009 
24010   COREWEBVIEW2_MOUSE_EVENT_KIND_RIGHT_BUTTON_UP = 0x0205,
24011 
24012   /// Mouse wheel scroll event, WM_MOUSEWHEEL.
24013 
24014   COREWEBVIEW2_MOUSE_EVENT_KIND_WHEEL = 0x020A,
24015 
24016   /// First or second X button double click mouse event, WM_XBUTTONDBLCLK.
24017 
24018   COREWEBVIEW2_MOUSE_EVENT_KIND_X_BUTTON_DOUBLE_CLICK = 0x020D,
24019 
24020   /// First or second X button down mouse event, WM_XBUTTONDOWN.
24021 
24022   COREWEBVIEW2_MOUSE_EVENT_KIND_X_BUTTON_DOWN = 0x020B,
24023 
24024   /// First or second X button up mouse event, WM_XBUTTONUP.
24025 
24026   COREWEBVIEW2_MOUSE_EVENT_KIND_X_BUTTON_UP = 0x020C,
24027 
24028   /// Mouse Right Button Down event over a nonclient area, WM_NCRBUTTONDOWN.
24029 
24030   COREWEBVIEW2_MOUSE_EVENT_KIND_NON_CLIENT_RIGHT_BUTTON_DOWN = 0x00A4,
24031 
24032   /// Mouse Right Button up event over a nonclient area, WM_NCRBUTTONUP.
24033 
24034   COREWEBVIEW2_MOUSE_EVENT_KIND_NON_CLIENT_RIGHT_BUTTON_UP = 0x00A5,
24035 }
24036 alias int COREWEBVIEW2_MOUSE_EVENT_KIND;
24037 
24038 /// Mouse event virtual keys associated with a COREWEBVIEW2_MOUSE_EVENT_KIND for
24039 /// SendMouseInput. These values can be combined into a bit flag if more than
24040 /// one virtual key is pressed for the event. The values of this enum align
24041 /// with the matching MK_* mouse keys.
24042 
24043 @("v1_enum")
24044 enum /+ COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS+/
24045 {
24046 
24047   /// No additional keys pressed.
24048 
24049   COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS_NONE     = 0x0,
24050 
24051   /// Left mouse button is down, MK_LBUTTON.
24052 
24053   COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS_LEFT_BUTTON  = 0x0001,
24054 
24055   /// Right mouse button is down, MK_RBUTTON.
24056 
24057   COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS_RIGHT_BUTTON  = 0x0002,
24058 
24059   /// SHIFT key is down, MK_SHIFT.
24060 
24061   COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS_SHIFT    = 0x0004,
24062 
24063   /// CTRL key is down, MK_CONTROL.
24064 
24065   COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS_CONTROL  = 0x0008,
24066 
24067   /// Middle mouse button is down, MK_MBUTTON.
24068 
24069   COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS_MIDDLE_BUTTON  = 0x0010,
24070 
24071   /// First X button is down, MK_XBUTTON1
24072 
24073   COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS_X_BUTTON1 = 0x0020,
24074 
24075   /// Second X button is down, MK_XBUTTON2
24076 
24077   COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS_X_BUTTON2 = 0x0040,
24078 }
24079 alias int COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS;
24080 // DEFINE_ENUM_FLAG_OPERATORS(COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS)
24081 
24082 /// Pointer event type used by SendPointerInput to convey the type of pointer
24083 /// event being sent to WebView. The values of this enum align with the
24084 /// matching WM_POINTER* window messages.
24085 
24086 @("v1_enum")
24087 enum /+ COREWEBVIEW2_POINTER_EVENT_KIND+/
24088 {
24089 
24090   /// Corresponds to WM_POINTERACTIVATE.
24091 
24092   COREWEBVIEW2_POINTER_EVENT_KIND_ACTIVATE = 0x024B,
24093 
24094   /// Corresponds to WM_POINTERDOWN.
24095 
24096   COREWEBVIEW2_POINTER_EVENT_KIND_DOWN = 0x0246,
24097 
24098   /// Corresponds to WM_POINTERENTER.
24099 
24100   COREWEBVIEW2_POINTER_EVENT_KIND_ENTER = 0x0249,
24101 
24102   /// Corresponds to WM_POINTERLEAVE.
24103 
24104   COREWEBVIEW2_POINTER_EVENT_KIND_LEAVE = 0x024A,
24105 
24106   /// Corresponds to WM_POINTERUP.
24107 
24108   COREWEBVIEW2_POINTER_EVENT_KIND_UP = 0x0247,
24109 
24110   /// Corresponds to WM_POINTERUPDATE.
24111 
24112   COREWEBVIEW2_POINTER_EVENT_KIND_UPDATE = 0x0245,
24113 }
24114 alias int COREWEBVIEW2_POINTER_EVENT_KIND;
24115 
24116 /// Mode for how the Bounds property is interpreted in relation to the RasterizationScale property.
24117 @("v1_enum")
24118 enum /+ COREWEBVIEW2_BOUNDS_MODE+/
24119 {
24120 
24121   /// Bounds property represents raw pixels. Physical size of Webview is not impacted by RasterizationScale.
24122 
24123   COREWEBVIEW2_BOUNDS_MODE_USE_RAW_PIXELS,
24124 
24125   /// Bounds property represents logical pixels and the RasterizationScale property is used to get the physical size of the WebView.
24126 
24127   COREWEBVIEW2_BOUNDS_MODE_USE_RASTERIZATION_SCALE,
24128 }
24129 alias int COREWEBVIEW2_BOUNDS_MODE;
24130 
24131 /// Specifies the client certificate kind.
24132 @("v1_enum") enum /+ COREWEBVIEW2_CLIENT_CERTIFICATE_KIND+/
24133 {
24134   /// Specifies smart card certificate.
24135   COREWEBVIEW2_CLIENT_CERTIFICATE_KIND_SMART_CARD,
24136   /// Specifies PIN certificate.
24137   COREWEBVIEW2_CLIENT_CERTIFICATE_KIND_PIN,
24138   /// Specifies other certificate.
24139   COREWEBVIEW2_CLIENT_CERTIFICATE_KIND_OTHER,
24140 }
24141 alias int COREWEBVIEW2_CLIENT_CERTIFICATE_KIND;
24142 
24143 /// State of the download operation.
24144 @("v1_enum")
24145 enum /+ COREWEBVIEW2_DOWNLOAD_STATE+/
24146 {
24147   /// The download is in progress.
24148   COREWEBVIEW2_DOWNLOAD_STATE_IN_PROGRESS,
24149   /// The connection with the file host was broken. The `InterruptReason` property
24150   /// can be accessed from `ICoreWebView2DownloadOperation`. See
24151   /// `COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON` for descriptions of kinds of
24152   /// interrupt reasons. Host can check whether an interrupted download can be
24153   /// resumed with the `CanResume` property on the `ICoreWebView2DownloadOperation`.
24154   /// Once resumed, a download is in the `COREWEBVIEW2_DOWNLOAD_STATE_IN_PROGRESS` state.
24155   COREWEBVIEW2_DOWNLOAD_STATE_INTERRUPTED,
24156   /// The download completed successfully.
24157   COREWEBVIEW2_DOWNLOAD_STATE_COMPLETED,
24158 }
24159 alias int COREWEBVIEW2_DOWNLOAD_STATE;
24160 
24161 /// Reason why a download was interrupted.
24162 @("v1_enum")
24163 enum /+ COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON+/
24164 {
24165   COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_NONE,
24166 
24167   /// Generic file error.
24168   COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_FILE_FAILED,
24169   /// Access denied due to security restrictions.
24170   COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_FILE_ACCESS_DENIED,
24171   /// Disk full. User should free some space or choose a different location to
24172   /// store the file.
24173   COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_FILE_NO_SPACE,
24174   /// Result file path with file name is too long.
24175   COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_FILE_NAME_TOO_LONG,
24176   /// File is too large for file system.
24177   COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_FILE_TOO_LARGE,
24178   /// Microsoft Defender Smartscreen detected a virus in the file.
24179   COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_FILE_MALICIOUS,
24180   /// File was in use, too many files opened, or out of memory.
24181   COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_FILE_TRANSIENT_ERROR,
24182   /// File blocked by local policy.
24183   COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_FILE_BLOCKED_BY_POLICY,
24184   /// Security check failed unexpectedly. Microsoft Defender SmartScreen could
24185   /// not scan this file.
24186   COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_FILE_SECURITY_CHECK_FAILED,
24187   /// Seeking past the end of a file in opening a file, as part of resuming an
24188   /// interrupted download. The file did not exist or was not as large as
24189   /// expected. Partially downloaded file was truncated or deleted, and download
24190   /// will be restarted automatically.
24191   COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_FILE_TOO_SHORT,
24192   /// Partial file did not match the expected hash and was deleted. Download
24193   /// will be restarted automatically.
24194   COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_FILE_HASH_MISMATCH,
24195 
24196   /// Generic network error. User can retry the download manually.
24197   COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_NETWORK_FAILED,
24198   /// Network operation timed out.
24199   COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_NETWORK_TIMEOUT,
24200   /// Network connection lost. User can retry the download manually.
24201   COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_NETWORK_DISCONNECTED,
24202   /// Server has gone down. User can retry the download manually.
24203   COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_NETWORK_SERVER_DOWN,
24204   /// Network request invalid because original or redirected URI is invalid, has
24205   /// an unsupported scheme, or is disallowed by network policy.
24206   COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_NETWORK_INVALID_REQUEST,
24207 
24208   /// Generic server error. User can retry the download manually.
24209   COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_SERVER_FAILED,
24210   /// Server does not support range requests.
24211   COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_SERVER_NO_RANGE,
24212   /// Server does not have the requested data.
24213   COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_SERVER_BAD_CONTENT,
24214   /// Server did not authorize access to resource.
24215   COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_SERVER_UNAUTHORIZED,
24216   /// Server certificate problem.
24217   COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_SERVER_CERTIFICATE_PROBLEM,
24218   /// Server access forbidden.
24219   COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_SERVER_FORBIDDEN,
24220   /// Unexpected server response. Responding server may not be intended server.
24221   /// User can retry the download manually.
24222   COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_SERVER_UNEXPECTED_RESPONSE,
24223   /// Server sent fewer bytes than the Content-Length header. Content-length
24224   /// header may be invalid or connection may have closed. Download is treated
24225   /// as complete unless there are
24226   /// [strong validators](https://tools.ietf.org/html/rfc7232#section-2) present
24227   /// to interrupt the download.
24228   COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_SERVER_CONTENT_LENGTH_MISMATCH,
24229   /// Unexpected cross-origin redirect.
24230   COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_SERVER_CROSS_ORIGIN_REDIRECT,
24231 
24232   /// User canceled the download.
24233   COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_USER_CANCELED,
24234   /// User shut down the WebView. Resuming downloads that were interrupted
24235   /// during shutdown is not yet supported.
24236   COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_USER_SHUTDOWN,
24237   /// User paused the download.
24238   COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_USER_PAUSED,
24239 
24240   /// WebView crashed.
24241   COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_DOWNLOAD_PROCESS_CRASHED,
24242 }
24243 alias int COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON;
24244 
24245 /// The orientation for printing, used by the `Orientation` property on
24246 /// `ICoreWebView2PrintSettings`.
24247 @("v1_enum")
24248 enum /+ COREWEBVIEW2_PRINT_ORIENTATION+/
24249 {
24250   /// Print the page(s) in portrait orientation.
24251   COREWEBVIEW2_PRINT_ORIENTATION_PORTRAIT,
24252 
24253   /// Print the page(s) in landscape orientation.
24254   COREWEBVIEW2_PRINT_ORIENTATION_LANDSCAPE,
24255 }
24256 alias int COREWEBVIEW2_PRINT_ORIENTATION;
24257 
24258 /// The default download dialog can be aligned to any of the WebView corners
24259 /// by setting the `DefaultDownloadDialogCornerAlignment` property. The default
24260 /// position is top-right corner.
24261 @("v1_enum")
24262 enum /+ COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT+/
24263 {
24264 
24265   /// Top-left corner of the WebView.
24266   COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT_TOP_LEFT,
24267 
24268   /// Top-right corner of the WebView.
24269   COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT_TOP_RIGHT,
24270 
24271   /// Bottom-left corner of the WebView.
24272   COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT_BOTTOM_LEFT,
24273 
24274   /// Bottom-right corner of the WebView.
24275   COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT_BOTTOM_RIGHT,
24276 }
24277 alias int COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT;
24278 
24279 /// Indicates the process type used in the ICoreWebView2ProcessInfo interface.
24280 @("v1_enum")
24281 enum /+ COREWEBVIEW2_PROCESS_KIND+/
24282 {
24283   /// Indicates the browser process kind.
24284   COREWEBVIEW2_PROCESS_KIND_BROWSER,
24285 
24286   /// Indicates the render process kind.
24287   COREWEBVIEW2_PROCESS_KIND_RENDERER,
24288 
24289   /// Indicates the utility process kind.
24290   COREWEBVIEW2_PROCESS_KIND_UTILITY,
24291 
24292   /// Indicates the sandbox helper process kind.
24293   COREWEBVIEW2_PROCESS_KIND_SANDBOX_HELPER,
24294 
24295   /// Indicates the GPU process kind.
24296   COREWEBVIEW2_PROCESS_KIND_GPU,
24297 
24298   /// Indicates the PPAPI plugin process kind.
24299   COREWEBVIEW2_PROCESS_KIND_PPAPI_PLUGIN,
24300 
24301   /// Indicates the PPAPI plugin broker process kind.
24302   COREWEBVIEW2_PROCESS_KIND_PPAPI_BROKER,
24303 }
24304 alias int COREWEBVIEW2_PROCESS_KIND;
24305 
24306 // PDF toolbar item. This enum must be in sync with ToolBarItem in pdf-store-data-types.ts
24307 /// Specifies the PDF toolbar item types used for the `ICoreWebView2Settings::put_HiddenPdfToolbarItems` method.
24308 @("v1_enum")
24309 enum /+ COREWEBVIEW2_PDF_TOOLBAR_ITEMS+/
24310 {
24311 
24312   /// No item
24313   COREWEBVIEW2_PDF_TOOLBAR_ITEMS_NONE  = 0x0,
24314 
24315   /// The save button
24316   COREWEBVIEW2_PDF_TOOLBAR_ITEMS_SAVE  = 0x0001,
24317 
24318   /// The print button
24319   COREWEBVIEW2_PDF_TOOLBAR_ITEMS_PRINT  = 0x0002,
24320 
24321   /// The save as button
24322   COREWEBVIEW2_PDF_TOOLBAR_ITEMS_SAVE_AS  = 0x0004,
24323 
24324     /// The zoom in button
24325   COREWEBVIEW2_PDF_TOOLBAR_ITEMS_ZOOM_IN  = 0x0008,
24326 
24327   /// The zoom out button
24328   COREWEBVIEW2_PDF_TOOLBAR_ITEMS_ZOOM_OUT  = 0x0010,
24329 
24330   /// The rotate button
24331   COREWEBVIEW2_PDF_TOOLBAR_ITEMS_ROTATE  = 0x0020,
24332 
24333   /// The fit page button
24334   COREWEBVIEW2_PDF_TOOLBAR_ITEMS_FIT_PAGE  = 0x0040,
24335 
24336   /// The page layout button
24337   COREWEBVIEW2_PDF_TOOLBAR_ITEMS_PAGE_LAYOUT  = 0x0080,
24338 
24339   /// The bookmarks button
24340   COREWEBVIEW2_PDF_TOOLBAR_ITEMS_BOOKMARKS  = 0x0100,
24341 
24342   /// The page select button
24343   COREWEBVIEW2_PDF_TOOLBAR_ITEMS_PAGE_SELECTOR  = 0x0200,
24344 
24345   /// The search button
24346   COREWEBVIEW2_PDF_TOOLBAR_ITEMS_SEARCH  = 0x0400,
24347 
24348   /// The full screen button
24349   COREWEBVIEW2_PDF_TOOLBAR_ITEMS_FULL_SCREEN  = 0x0800,
24350 
24351   /// The more settings button
24352   COREWEBVIEW2_PDF_TOOLBAR_ITEMS_MORE_SETTINGS  = 0x1000,
24353 }
24354 alias int COREWEBVIEW2_PDF_TOOLBAR_ITEMS;
24355 // DEFINE_ENUM_FLAG_OPERATORS(COREWEBVIEW2_PDF_TOOLBAR_ITEMS)
24356 
24357 /// Indicates the kind of context for which the context menu was created
24358 /// for the `ICoreWebView2ContextMenuTarget::get_Kind` method.
24359 /// This enum will always represent the active element that caused the context menu request.
24360 /// If there is a selection with multiple images, audio and text, for example, the element that
24361 /// the end user right clicks on within this selection will be the option represented by this enum.
24362 @("v1_enum")
24363 enum /+ COREWEBVIEW2_CONTEXT_MENU_TARGET_KIND+/
24364 {
24365     /// Indicates that the context menu was created for the page without any additional content.
24366     COREWEBVIEW2_CONTEXT_MENU_TARGET_KIND_PAGE,
24367 
24368     /// Indicates that the context menu was created for an image element.
24369     COREWEBVIEW2_CONTEXT_MENU_TARGET_KIND_IMAGE,
24370 
24371     /// Indicates that the context menu was created for selected text.
24372     COREWEBVIEW2_CONTEXT_MENU_TARGET_KIND_SELECTED_TEXT,
24373 
24374     /// Indicates that the context menu was created for an audio element.
24375     COREWEBVIEW2_CONTEXT_MENU_TARGET_KIND_AUDIO,
24376 
24377     /// Indicates that the context menu was created for a video element.
24378     COREWEBVIEW2_CONTEXT_MENU_TARGET_KIND_VIDEO,
24379 }
24380 alias int COREWEBVIEW2_CONTEXT_MENU_TARGET_KIND;
24381 
24382 /// Specifies the menu item kind
24383 /// for the `ICoreWebView2ContextMenuItem::get_Kind` method
24384 @("v1_enum")
24385 enum /+ COREWEBVIEW2_CONTEXT_MENU_ITEM_KIND+/
24386 {
24387     /// Specifies a command menu item kind.
24388     COREWEBVIEW2_CONTEXT_MENU_ITEM_KIND_COMMAND,
24389 
24390     /// Specifies a check box menu item kind. `ContextMenuItem` objects of this kind
24391     /// will need the `IsChecked` property to determine current state of the check box.
24392     COREWEBVIEW2_CONTEXT_MENU_ITEM_KIND_CHECK_BOX,
24393 
24394     /// Specifies a radio button menu item kind. `ContextMenuItem` objects of this kind
24395     /// will need the `IsChecked` property to determine current state of the radio button.
24396     COREWEBVIEW2_CONTEXT_MENU_ITEM_KIND_RADIO,
24397 
24398     /// Specifies a separator menu item kind. `ContextMenuItem` objects of this kind
24399     /// are used to signal a visual separator with no functionality.
24400     COREWEBVIEW2_CONTEXT_MENU_ITEM_KIND_SEPARATOR,
24401 
24402     /// Specifies a submenu menu item kind. `ContextMenuItem` objects of this kind will contain
24403     /// a `ContextMenuItemCollection` of its children `ContextMenuItem` objects.
24404     COREWEBVIEW2_CONTEXT_MENU_ITEM_KIND_SUBMENU,
24405 }
24406 alias int COREWEBVIEW2_CONTEXT_MENU_ITEM_KIND;
24407 
24408 /// An enum to represent the options for WebView2 color scheme: auto, light, or dark.
24409 @("v1_enum")
24410 enum /+ COREWEBVIEW2_PREFERRED_COLOR_SCHEME+/
24411 {
24412     /// Auto color scheme.
24413     COREWEBVIEW2_PREFERRED_COLOR_SCHEME_AUTO,
24414 
24415     /// Light color scheme.
24416     COREWEBVIEW2_PREFERRED_COLOR_SCHEME_LIGHT,
24417 
24418     /// Dark color scheme.
24419     COREWEBVIEW2_PREFERRED_COLOR_SCHEME_DARK
24420 }
24421 alias int COREWEBVIEW2_PREFERRED_COLOR_SCHEME;
24422 
24423 /// Specifies the datatype for the
24424 /// `ICoreWebView2Profile2::ClearBrowsingData` method.
24425 @("v1_enum")
24426 enum /+ COREWEBVIEW2_BROWSING_DATA_KINDS+/
24427 {
24428 
24429     /// Specifies file systems data.
24430     COREWEBVIEW2_BROWSING_DATA_KINDS_FILE_SYSTEMS = 1 << 0,
24431 
24432     /// Specifies data stored by the IndexedDB DOM feature.
24433     COREWEBVIEW2_BROWSING_DATA_KINDS_INDEXED_DB = 1 << 1,
24434 
24435     /// Specifies data stored by the localStorage DOM API.
24436     COREWEBVIEW2_BROWSING_DATA_KINDS_LOCAL_STORAGE = 1 << 2,
24437 
24438     /// Specifies data stored by the Web SQL database DOM API.
24439     COREWEBVIEW2_BROWSING_DATA_KINDS_WEB_SQL = 1 << 3,
24440 
24441     /// Specifies data stored by the CacheStorage DOM API.
24442     COREWEBVIEW2_BROWSING_DATA_KINDS_CACHE_STORAGE = 1 << 4,
24443 
24444     /// Specifies DOM storage data, now and future. This browsing data kind is
24445     /// inclusive of COREWEBVIEW2_BROWSING_DATA_KINDS_FILE_SYSTEMS,
24446     /// COREWEBVIEW2_BROWSING_DATA_KINDS_INDEXED_DB,
24447     /// COREWEBVIEW2_BROWSING_DATA_KINDS_LOCAL_STORAGE,
24448     /// COREWEBVIEW2_BROWSING_DATA_KINDS_WEB_SQL,
24449     /// COREWEBVIEW2_BROWSING_DATA_KINDS_SERVICE_WORKERS,
24450     /// COREWEBVIEW2_BROWSING_DATA_KINDS_CACHE_STORAGE,
24451     /// and some other data kinds not listed yet to keep consistent with
24452     /// [DOM-accessible storage](https://www.w3.org/TR/clear-site-data/#storage).
24453     COREWEBVIEW2_BROWSING_DATA_KINDS_ALL_DOM_STORAGE = 1 << 5,
24454 
24455     /// Specifies HTTP cookies data.
24456     COREWEBVIEW2_BROWSING_DATA_KINDS_COOKIES = 1 << 6,
24457 
24458     /// Specifies all site data, now and future. This browsing data kind
24459     /// is inclusive of COREWEBVIEW2_BROWSING_DATA_KINDS_ALL_DOM_STORAGE and
24460     /// COREWEBVIEW2_BROWSING_DATA_KINDS_COOKIES. New site data types
24461     /// may be added to this data kind in the future.
24462     COREWEBVIEW2_BROWSING_DATA_KINDS_ALL_SITE = 1 << 7,
24463 
24464     /// Specifies disk cache.
24465     COREWEBVIEW2_BROWSING_DATA_KINDS_DISK_CACHE = 1 << 8,
24466 
24467     /// Specifies download history data.
24468     COREWEBVIEW2_BROWSING_DATA_KINDS_DOWNLOAD_HISTORY = 1 << 9,
24469 
24470     /// Specifies general autofill form data.
24471     /// This excludes password information and includes information like:
24472     /// names, street and email addresses, phone numbers, and arbitrary input.
24473     /// This also includes payment data.
24474     COREWEBVIEW2_BROWSING_DATA_KINDS_GENERAL_AUTOFILL = 1 << 10,
24475 
24476     /// Specifies password autosave data.
24477     COREWEBVIEW2_BROWSING_DATA_KINDS_PASSWORD_AUTOSAVE = 1 << 11,
24478 
24479     /// Specifies browsing history data.
24480     COREWEBVIEW2_BROWSING_DATA_KINDS_BROWSING_HISTORY = 1 << 12,
24481 
24482     /// Specifies settings data.
24483     COREWEBVIEW2_BROWSING_DATA_KINDS_SETTINGS = 1 << 13,
24484 
24485     /// Specifies profile data that should be wiped to make it look like a new profile.
24486     /// This does not delete account-scoped data like passwords but will remove access
24487     /// to account-scoped data by signing the user out.
24488     /// Specifies all profile data, now and future. New profile data types may be added
24489     /// to this data kind in the future.
24490     /// This browsing data kind is inclusive of COREWEBVIEW2_BROWSING_DATA_KINDS_ALL_SITE,
24491     /// COREWEBVIEW2_BROWSING_DATA_KINDS_DISK_CACHE,
24492     /// COREWEBVIEW2_BROWSING_DATA_KINDS_DOWNLOAD_HISTORY,
24493     /// COREWEBVIEW2_BROWSING_DATA_KINDS_GENERAL_AUTOFILL,
24494     /// COREWEBVIEW2_BROWSING_DATA_KINDS_PASSWORD_AUTOSAVE,
24495     /// COREWEBVIEW2_BROWSING_DATA_KINDS_BROWSING_HISTORY, and
24496     /// COREWEBVIEW2_BROWSING_DATA_KINDS_SETTINGS.
24497     COREWEBVIEW2_BROWSING_DATA_KINDS_ALL_PROFILE =  1 << 14,
24498 
24499     /// Specifies service workers registered for an origin, and clear will result in
24500     /// termination and deregistration of them.
24501     COREWEBVIEW2_BROWSING_DATA_KINDS_SERVICE_WORKERS = 1 << 15,
24502 }
24503 alias int COREWEBVIEW2_BROWSING_DATA_KINDS;
24504 // DEFINE_ENUM_FLAG_OPERATORS(COREWEBVIEW2_BROWSING_DATA_KINDS)
24505 
24506 /// Specifies the action type when server certificate error is detected to be
24507 /// used in the `ICoreWebView2ServerCertificateErrorDetectedEventArgs`
24508 /// interface.
24509 @("v1_enum") enum /+ COREWEBVIEW2_SERVER_CERTIFICATE_ERROR_ACTION+/
24510 {
24511   /// Indicates to ignore the warning and continue the request with the TLS
24512   /// certificate. This decision is cached for the RequestUri's host and the
24513   /// server certificate in the session.
24514   COREWEBVIEW2_SERVER_CERTIFICATE_ERROR_ACTION_ALWAYS_ALLOW,
24515 
24516   /// Indicates to reject the certificate and cancel the request.
24517   COREWEBVIEW2_SERVER_CERTIFICATE_ERROR_ACTION_CANCEL,
24518 
24519   /// Indicates to display the default TLS interstitial error page to user for
24520   /// page navigations.
24521   /// For others TLS certificate is rejected and the request is cancelled.
24522   COREWEBVIEW2_SERVER_CERTIFICATE_ERROR_ACTION_DEFAULT
24523 }
24524 alias int COREWEBVIEW2_SERVER_CERTIFICATE_ERROR_ACTION;
24525 
24526 /// Specifies the image format to use for favicon.
24527 @("v1_enum")
24528 enum /+ COREWEBVIEW2_FAVICON_IMAGE_FORMAT+/
24529 {
24530     /// Indicates that the PNG image format is used.
24531     COREWEBVIEW2_FAVICON_IMAGE_FORMAT_PNG,
24532 
24533     /// Indicates the JPEG image format is used.
24534     COREWEBVIEW2_FAVICON_IMAGE_FORMAT_JPEG,
24535 }
24536 alias int COREWEBVIEW2_FAVICON_IMAGE_FORMAT;
24537 
24538 /// Specifies the print dialog kind.
24539 @("v1_enum") enum /+ COREWEBVIEW2_PRINT_DIALOG_KIND+/
24540 {
24541   /// Opens the browser print preview dialog.
24542   COREWEBVIEW2_PRINT_DIALOG_KIND_BROWSER,
24543 
24544   /// Opens the system print dialog.
24545   COREWEBVIEW2_PRINT_DIALOG_KIND_SYSTEM,
24546 }
24547 alias int COREWEBVIEW2_PRINT_DIALOG_KIND;
24548 
24549 /// Specifies the duplex option for a print.
24550 @("v1_enum") enum /+ COREWEBVIEW2_PRINT_DUPLEX+/
24551 {
24552   /// The default duplex for a printer.
24553   COREWEBVIEW2_PRINT_DUPLEX_DEFAULT,
24554 
24555   /// Print on only one side of the sheet.
24556   COREWEBVIEW2_PRINT_DUPLEX_ONE_SIDED,
24557 
24558   /// Print on both sides of the sheet, flipped along the long edge.
24559   COREWEBVIEW2_PRINT_DUPLEX_TWO_SIDED_LONG_EDGE,
24560 
24561   /// Print on both sides of the sheet, flipped along the short edge.
24562   COREWEBVIEW2_PRINT_DUPLEX_TWO_SIDED_SHORT_EDGE,
24563 }
24564 alias int COREWEBVIEW2_PRINT_DUPLEX;
24565 
24566 /// Specifies the color mode for a print.
24567 @("v1_enum") enum /+ COREWEBVIEW2_PRINT_COLOR_MODE+/
24568 {
24569   /// The default color mode for a printer.
24570   COREWEBVIEW2_PRINT_COLOR_MODE_DEFAULT,
24571 
24572   /// Indicate that the printed output will be in color.
24573   COREWEBVIEW2_PRINT_COLOR_MODE_COLOR,
24574 
24575   /// Indicate that the printed output will be in shades of gray.
24576   COREWEBVIEW2_PRINT_COLOR_MODE_GRAYSCALE,
24577 }
24578 alias int COREWEBVIEW2_PRINT_COLOR_MODE;
24579 
24580 /// Specifies the collation for a print.
24581 @("v1_enum") enum /+ COREWEBVIEW2_PRINT_COLLATION+/
24582 {
24583   /// The default collation for a printer.
24584   COREWEBVIEW2_PRINT_COLLATION_DEFAULT,
24585 
24586   /// Indicate that the collation has been selected for the printed output.
24587   COREWEBVIEW2_PRINT_COLLATION_COLLATED,
24588 
24589   /// Indicate that the collation has not been selected for the printed output.
24590   COREWEBVIEW2_PRINT_COLLATION_UNCOLLATED,
24591 }
24592 alias int COREWEBVIEW2_PRINT_COLLATION;
24593 
24594 /// Specifies the media size for a print.
24595 @("v1_enum") enum /+ COREWEBVIEW2_PRINT_MEDIA_SIZE+/
24596 {
24597   /// The default media size for a printer.
24598   COREWEBVIEW2_PRINT_MEDIA_SIZE_DEFAULT,
24599 
24600   /// Indicate custom media size that is specific to the printer.
24601   COREWEBVIEW2_PRINT_MEDIA_SIZE_CUSTOM,
24602 }
24603 alias int COREWEBVIEW2_PRINT_MEDIA_SIZE;
24604 
24605 /// Indicates the status for printing.
24606 @("v1_enum") enum /+ COREWEBVIEW2_PRINT_STATUS+/
24607 {
24608   /// Indicates that the print operation is succeeded.
24609   COREWEBVIEW2_PRINT_STATUS_SUCCEEDED,
24610 
24611   /// Indicates that the printer is not available.
24612   COREWEBVIEW2_PRINT_STATUS_PRINTER_UNAVAILABLE,
24613 
24614   /// Indicates that the print operation is failed.
24615   COREWEBVIEW2_PRINT_STATUS_OTHER_ERROR,
24616 }
24617 alias int COREWEBVIEW2_PRINT_STATUS;
24618 
24619 /// Tracking prevention levels.
24620 @("v1_enum") enum /+ COREWEBVIEW2_TRACKING_PREVENTION_LEVEL+/
24621 {
24622   /// Tracking prevention is turned off.
24623   COREWEBVIEW2_TRACKING_PREVENTION_LEVEL_NONE,
24624   /// The least restrictive level of tracking prevention. Set to this level to
24625   /// protect against malicious trackers but allows most other trackers and
24626   /// personalize content and ads.
24627   ///
24628   /// See [Current tracking prevention
24629   /// behavior](/microsoft-edge/web-platform/tracking-prevention#current-tracking-prevention-behavior)
24630   /// for fine-grained information on what is being blocked with this level and
24631   /// can change with different Edge versions.
24632   COREWEBVIEW2_TRACKING_PREVENTION_LEVEL_BASIC,
24633   /// The default level of tracking prevention. Set to this level to
24634   /// protect against social media tracking on top of malicious trackers.
24635   /// Content and ads will likely be less personalized.
24636   ///
24637   /// See [Current tracking prevention
24638   /// behavior](/microsoft-edge/web-platform/tracking-prevention#current-tracking-prevention-behavior)
24639   /// for fine-grained information on what is being blocked with this level and
24640   /// can change with different Edge versions.
24641   COREWEBVIEW2_TRACKING_PREVENTION_LEVEL_BALANCED,
24642   /// The most restrictive level of tracking prevention. Set to this level to
24643   /// protect
24644   /// against malicious trackers and most trackers across sites. Content and ads
24645   /// will likely have minimal personalization.
24646   ///
24647   /// This level blocks the most trackers but could cause some websites to not
24648   /// behave as expected.
24649   ///
24650   /// See [Current tracking prevention
24651   /// behavior](/microsoft-edge/web-platform/tracking-prevention#current-tracking-prevention-behavior)
24652   /// for fine-grained information on what is being blocked with this level and
24653   /// can change with different Edge versions.
24654   COREWEBVIEW2_TRACKING_PREVENTION_LEVEL_STRICT,
24655 }
24656 alias int COREWEBVIEW2_TRACKING_PREVENTION_LEVEL;
24657 
24658 /// Specifies the desired access from script to `CoreWebView2SharedBuffer`.
24659 @("v1_enum")
24660 enum /+ COREWEBVIEW2_SHARED_BUFFER_ACCESS+/
24661 {
24662   /// Script from web page only has read access to the shared buffer.
24663   COREWEBVIEW2_SHARED_BUFFER_ACCESS_READ_ONLY,
24664 
24665   /// Script from web page has read and write access to the shared buffer.
24666   COREWEBVIEW2_SHARED_BUFFER_ACCESS_READ_WRITE
24667 }
24668 alias int COREWEBVIEW2_SHARED_BUFFER_ACCESS;
24669 
24670 /// Specifies memory usage target level of WebView.
24671 @("v1_enum")
24672 enum /+ COREWEBVIEW2_MEMORY_USAGE_TARGET_LEVEL+/
24673 {
24674   /// Specifies normal memory usage target level.
24675   COREWEBVIEW2_MEMORY_USAGE_TARGET_LEVEL_NORMAL,
24676 
24677   /// Specifies low memory usage target level.
24678   /// Used for inactivate WebView for reduced memory consumption.
24679   COREWEBVIEW2_MEMORY_USAGE_TARGET_LEVEL_LOW,
24680 }
24681 alias int COREWEBVIEW2_MEMORY_USAGE_TARGET_LEVEL;
24682 
24683 /// Specifies the navigation kind of each navigation.
24684 @("v1_enum")
24685 enum /+ COREWEBVIEW2_NAVIGATION_KIND+/
24686 {
24687   /// A navigation caused by `CoreWebView2.Reload()`, `location.reload()`, the end user
24688   /// using F5 or other UX, or other reload mechanisms to reload the current document
24689   /// without modifying the navigation history.
24690   COREWEBVIEW2_NAVIGATION_KIND_RELOAD = 0,
24691 
24692   /// A navigation back or forward to a different entry in the session navigation history,
24693   /// like via `CoreWebView2.Back()`, `location.back()`, the end user pressing Alt+Left
24694   /// or other UX, or other mechanisms to navigate back or forward in the current
24695   /// session navigation history.
24696   ///
24697   // Note: This kind doesn't distinguish back or forward, because we can't
24698   // distinguish it from origin source `blink.mojom.NavigationType`.
24699   COREWEBVIEW2_NAVIGATION_KIND_BACK_OR_FORWARD = 1,
24700 
24701   /// A navigation to another document, which can be caused by `CoreWebView2.Navigate()`,
24702   /// `window.location.href = ...`, or other WebView2 or DOM APIs that navigate to a new URI.
24703   COREWEBVIEW2_NAVIGATION_KIND_NEW_DOCUMENT = 2,
24704 }
24705 alias int COREWEBVIEW2_NAVIGATION_KIND;
24706 
24707 /// Indicates the frame type used in the `ICoreWebView2FrameInfo` interface.
24708 @("v1_enum")
24709 enum /+ COREWEBVIEW2_FRAME_KIND+/
24710 {
24711   /// Indicates that the frame is an unknown type frame. We may extend this enum
24712   /// type to identify more frame kinds in the future.
24713   COREWEBVIEW2_FRAME_KIND_UNKNOWN,
24714   /// Indicates that the frame is a primary main frame(webview).
24715   COREWEBVIEW2_FRAME_KIND_MAIN_FRAME,
24716   /// Indicates that the frame is an iframe.
24717   COREWEBVIEW2_FRAME_KIND_IFRAME,
24718   /// Indicates that the frame is an embed element.
24719   COREWEBVIEW2_FRAME_KIND_EMBED,
24720   /// Indicates that the frame is an object element.
24721   COREWEBVIEW2_FRAME_KIND_OBJECT,
24722 }
24723 alias int COREWEBVIEW2_FRAME_KIND;
24724 
24725 // End of enums and structs
24726 
24727 /// WebView2 enables you to host web content using the latest Microsoft Edge
24728 /// browser and web technology.
24729 
24730 const GUID IID_ICoreWebView2 = ICoreWebView2.iid;
24731 
24732 interface ICoreWebView2 : IUnknown
24733 {
24734     static const GUID iid = { 0x76eceacb,0x0462,0x4d94,[ 0xac,0x83,0x42,0x3a,0x67,0x93,0x77,0x5e ] };
24735 
24736   /// The `ICoreWebView2Settings` object contains various modifiable settings
24737   /// for the running WebView.
24738 
24739   @(" propget")
24740 	HRESULT get_Settings(@("out, retval") ICoreWebView2Settings * settings);
24741 
24742   /// The URI of the current top level document.  This value potentially
24743   /// changes as a part of the `SourceChanged` event that runs for some cases
24744   /// such as navigating to a different site or fragment navigations.  It
24745   /// remains the same for other types of navigations such as page refreshes
24746   /// or `history.pushState` with the same URL as the current page.
24747   ///
24748   /// The caller must free the returned string with `CoTaskMemFree`.  See
24749   /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings).
24750   ///
24751   /// \snippet ControlComponent.cpp SourceChanged
24752   @(" propget")
24753 	HRESULT get_Source(@("out, retval") LPWSTR* uri);
24754 
24755   /// Cause a navigation of the top-level document to run to the specified URI.
24756   /// For more information, navigate to [Navigation
24757   /// events](/microsoft-edge/webview2/concepts/navigation-events).
24758   ///
24759   /// \> [!NOTE]\n\> This operation starts a navigation and the corresponding
24760   /// `NavigationStarting` event triggers sometime after `Navigate` runs.
24761   ///
24762   /// \snippet ControlComponent.cpp Navigate
24763   HRESULT Navigate(in LPCWSTR uri);
24764 
24765   /// Initiates a navigation to htmlContent as source HTML of a new document.
24766   /// The `htmlContent` parameter may not be larger than 2 MB (2 * 1024 * 1024 bytes) in total size.
24767   /// The origin of the new page is `about:blank`.
24768   ///
24769   /// ```cpp
24770   ///    SetVirtualHostNameToFolderMapping(
24771   ///        L"appassets.example", L"assets",
24772   ///        COREWEBVIEW2_HOST_RESOURCE_ACCESS_KIND_DENY);
24773   ///
24774   ///    WCHAR c_navString[] = LR"
24775   ///    <head><link rel='stylesheet' href ='http://appassets.example/wv2.css'/></head>
24776   ///    <body>
24777   ///      <img src='http://appassets.example/wv2.png' />
24778   ///      <p><a href='http://appassets.example/winrt_test.txt'>Click me</a></p>
24779   ///    </body>";
24780   ///    m_webView->NavigateToString(c_navString);
24781   /// ```
24782   /// \snippet SettingsComponent.cpp NavigateToString
24783   HRESULT NavigateToString(in LPCWSTR htmlContent);
24784 
24785   /// Add an event handler for the `NavigationStarting` event.
24786   /// `NavigationStarting` runs when the WebView main frame is requesting
24787   /// permission to navigate to a different URI.  Redirects trigger this
24788   /// operation as well, and the navigation id is the same as the original
24789   /// one.
24790   ///
24791   /// Navigations will be blocked until all `NavigationStarting` event handlers
24792   /// return.
24793   ///
24794   /// \snippet SettingsComponent.cpp NavigationStarting
24795   HRESULT add_NavigationStarting(
24796       /+[in]+/ ICoreWebView2NavigationStartingEventHandler eventHandler,
24797       @("out") EventRegistrationToken* token);
24798 
24799   /// Remove an event handler previously added with `add_NavigationStarting`.
24800   HRESULT remove_NavigationStarting(
24801       in EventRegistrationToken token);
24802 
24803   /// Add an event handler for the `ContentLoading` event.  `ContentLoading`
24804   /// triggers before any content is loaded, including scripts added with
24805   /// `AddScriptToExecuteOnDocumentCreated`.  `ContentLoading` does not trigger
24806   /// if a same page navigation occurs (such as through `fragment`
24807   /// navigations or `history.pushState` navigations).  This operation
24808   /// follows the `NavigationStarting` and `SourceChanged` events and precedes
24809   /// the `HistoryChanged` and `NavigationCompleted` events.
24810   HRESULT add_ContentLoading(
24811       /+[in]+/ ICoreWebView2ContentLoadingEventHandler eventHandler,
24812       @("out") EventRegistrationToken* token);
24813 
24814   /// Remove an event handler previously added with `add_ContentLoading`.
24815   HRESULT remove_ContentLoading(
24816       in EventRegistrationToken token);
24817 
24818   /// Add an event handler for the `SourceChanged` event.  `SourceChanged`
24819   /// triggers when the `Source` property changes.  `SourceChanged` runs when
24820   /// navigating to a different site or fragment navigations.  It does not
24821   /// trigger for other types of navigations such as page refreshes or
24822   /// `history.pushState` with the same URL as the current page.
24823   /// `SourceChanged` runs before `ContentLoading` for navigation to a new
24824   /// document.
24825   ///
24826   /// \snippet ControlComponent.cpp SourceChanged
24827   HRESULT add_SourceChanged(
24828       /+[in]+/ ICoreWebView2SourceChangedEventHandler eventHandler,
24829       @("out") EventRegistrationToken* token);
24830 
24831   /// Remove an event handler previously added with `add_SourceChanged`.
24832   HRESULT remove_SourceChanged(
24833       in EventRegistrationToken token);
24834 
24835   /// Add an event handler for the `HistoryChanged` event.  `HistoryChanged` is
24836   /// raised for changes to joint session history, which consists of top-level
24837   /// and manual frame navigations.  Use `HistoryChanged` to verify that the
24838   /// `CanGoBack` or `CanGoForward` value has changed.  `HistoryChanged` also
24839   /// runs for using `GoBack` or `GoForward`.  `HistoryChanged` runs after
24840   /// `SourceChanged` and `ContentLoading`.  `CanGoBack` is false for
24841   /// navigations initiated through ICoreWebView2Frame APIs if there has not yet
24842   /// been a user gesture.
24843   ///
24844   /// \snippet ControlComponent.cpp HistoryChanged
24845   HRESULT add_HistoryChanged(
24846       /+[in]+/ ICoreWebView2HistoryChangedEventHandler eventHandler,
24847       @("out") EventRegistrationToken* token);
24848 
24849   /// Remove an event handler previously added with `add_HistoryChanged`.
24850   HRESULT remove_HistoryChanged(
24851       in EventRegistrationToken token);
24852 
24853   /// Add an event handler for the `NavigationCompleted` event.
24854   /// `NavigationCompleted` runs when the WebView has completely loaded
24855   /// (concurrently when `body.onload` runs) or loading stopped with error.
24856   ///
24857   /// \snippet ControlComponent.cpp NavigationCompleted
24858   HRESULT add_NavigationCompleted(
24859       /+[in]+/ ICoreWebView2NavigationCompletedEventHandler eventHandler,
24860       @("out") EventRegistrationToken* token);
24861 
24862   /// Remove an event handler previously added with `add_NavigationCompleted`.
24863   HRESULT remove_NavigationCompleted(
24864       in EventRegistrationToken token);
24865 
24866   /// Add an event handler for the `FrameNavigationStarting` event.
24867   /// `FrameNavigationStarting` triggers when a child frame in the WebView
24868   /// requests permission to navigate to a different URI.  Redirects trigger
24869   /// this operation as well, and the navigation id is the same as the original
24870   /// one.
24871   ///
24872   /// Navigations will be blocked until all `FrameNavigationStarting` event
24873   /// handlers return.
24874   ///
24875   /// \snippet SettingsComponent.cpp FrameNavigationStarting
24876   HRESULT add_FrameNavigationStarting(
24877       /+[in]+/ ICoreWebView2NavigationStartingEventHandler eventHandler,
24878       @("out") EventRegistrationToken* token);
24879 
24880   /// Remove an event handler previously added with
24881   /// `add_FrameNavigationStarting`.
24882   HRESULT remove_FrameNavigationStarting(
24883       in EventRegistrationToken token);
24884 
24885   /// Add an event handler for the `FrameNavigationCompleted` event.
24886   /// `FrameNavigationCompleted` triggers when a child frame has completely
24887   /// loaded (concurrently when `body.onload` has triggered) or loading stopped with error.
24888   ///
24889   /// \snippet ControlComponent.cpp FrameNavigationCompleted
24890   HRESULT add_FrameNavigationCompleted(
24891       /+[in]+/ ICoreWebView2NavigationCompletedEventHandler eventHandler,
24892       @("out") EventRegistrationToken* token);
24893 
24894   /// Remove an event handler previously added with
24895   /// `add_FrameNavigationCompleted`.
24896   HRESULT remove_FrameNavigationCompleted(
24897       in EventRegistrationToken token);
24898 
24899   /// Add an event handler for the `ScriptDialogOpening` event.
24900   /// `ScriptDialogOpening` runs when a JavaScript dialog (`alert`, `confirm`,
24901   /// `prompt`, or `beforeunload`) displays for the webview.  This event only
24902   /// triggers if the `ICoreWebView2Settings::AreDefaultScriptDialogsEnabled`
24903   /// property is set to `FALSE`.  The `ScriptDialogOpening` event suppresses
24904   /// dialogs or replaces default dialogs with custom dialogs.
24905   ///
24906   /// If a deferral is not taken on the event args, the subsequent scripts are
24907   /// blocked until the event handler returns.  If a deferral is taken, the
24908   /// scripts are blocked until the deferral is completed.
24909   ///
24910   /// \snippet SettingsComponent.cpp ScriptDialogOpening
24911   HRESULT add_ScriptDialogOpening(
24912       /+[in]+/ ICoreWebView2ScriptDialogOpeningEventHandler eventHandler,
24913       @("out") EventRegistrationToken* token);
24914 
24915   /// Remove an event handler previously added with `add_ScriptDialogOpening`.
24916   HRESULT remove_ScriptDialogOpening(
24917       in EventRegistrationToken token);
24918 
24919   /// Add an event handler for the `PermissionRequested` event.
24920   /// `PermissionRequested` runs when content in a WebView requests permission
24921   /// to access some privileged resources.
24922   ///
24923   /// If a deferral is not taken on the event args, the subsequent scripts are
24924   /// blocked until the event handler returns.  If a deferral is taken, the
24925   /// scripts are blocked until the deferral is completed.
24926   ///
24927   /// \snippet SettingsComponent.cpp PermissionRequested0
24928   /// \snippet SettingsComponent.cpp PermissionRequested1
24929   HRESULT add_PermissionRequested(
24930       /+[in]+/ ICoreWebView2PermissionRequestedEventHandler eventHandler,
24931       @("out") EventRegistrationToken* token);
24932 
24933   /// Remove an event handler previously added with `add_PermissionRequested`.
24934   HRESULT remove_PermissionRequested(
24935       in EventRegistrationToken token);
24936 
24937   /// Add an event handler for the `ProcessFailed` event.
24938   /// `ProcessFailed` runs when any of the processes in the
24939   /// [WebView2 Process Group](/microsoft-edge/webview2/concepts/process-model?tabs=csharp#processes-in-the-webview2-runtime)
24940   /// encounters one of the following conditions:
24941   ///
24942   /// Condition | Details
24943   /// ---|---
24944   /// 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.
24945   /// 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.
24946   ///
24947   /// \> [!NOTE]\n\> When the failing process is the browser process, a
24948   /// `ICoreWebView2Environment5::BrowserProcessExited` event will run too.
24949   ///
24950   /// Your application can use `ICoreWebView2ProcessFailedEventArgs` and
24951   /// `ICoreWebView2ProcessFailedEventArgs2` to identify which condition and
24952   /// process the event is for, and to collect diagnostics and handle recovery
24953   /// if necessary. For more details about which cases need to be handled by
24954   /// your application, see `COREWEBVIEW2_PROCESS_FAILED_KIND`.
24955   ///
24956   /// \snippet ProcessComponent.cpp ProcessFailed
24957   HRESULT add_ProcessFailed(
24958       /+[in]+/ ICoreWebView2ProcessFailedEventHandler eventHandler,
24959       @("out") EventRegistrationToken* token);
24960 
24961   /// Remove an event handler previously added with `add_ProcessFailed`.
24962   HRESULT remove_ProcessFailed(
24963       in EventRegistrationToken token);
24964 
24965   /// Add the provided JavaScript to a list of scripts that should be run after
24966   /// the global object has been created, but before the HTML document has
24967   /// been parsed and before any other script included by the HTML document is
24968   /// run.  This method injects a script that runs on all top-level document
24969   /// and child frame page navigations.  This method runs asynchronously, and
24970   /// you must wait for the completion handler to finish before the injected
24971   /// script is ready to run.  When this method completes, the `Invoke` method
24972   /// of the handler is run with the `id` of the injected script.  `id` is a
24973   /// string.  To remove the injected script, use
24974   /// `RemoveScriptToExecuteOnDocumentCreated`.
24975   ///
24976   /// If the method is run in add_NewWindowRequested handler it should be called
24977   /// before the new window is set. If called after setting the NewWindow property, the initial script
24978   /// may or may not apply to the initial navigation and may only apply to the subsequent navigation.
24979   /// For more details see `ICoreWebView2NewWindowRequestedEventArgs::put_NewWindow`.
24980   ///
24981   /// \> [!NOTE]\n\> If an HTML document is running in a sandbox of some kind using
24982   /// [sandbox](https://developer.mozilla.org/docs/Web/HTML/Element/iframe#attr-sandbox)
24983   /// properties or the
24984   /// [Content-Security-Policy](https://developer.mozilla.org/docs/Web/HTTP/Headers/Content-Security-Policy)
24985   /// HTTP header affects the script that runs.  For example, if the
24986   /// `allow-modals` keyword is not set then requests to run the `alert`
24987   /// function are ignored.
24988   ///
24989   /// \snippet ScriptComponent.cpp AddScriptToExecuteOnDocumentCreated
24990   HRESULT AddScriptToExecuteOnDocumentCreated(
24991       in LPCWSTR javaScript,
24992       /+[in]+/ ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandler handler);
24993 
24994   /// Remove the corresponding JavaScript added using
24995   /// `AddScriptToExecuteOnDocumentCreated` with the specified script ID. The
24996   /// script ID should be the one returned by the `AddScriptToExecuteOnDocumentCreated`.
24997   /// Both use `AddScriptToExecuteOnDocumentCreated` and this method in `NewWindowRequested`
24998   /// event handler at the same time sometimes causes trouble.  Since invalid scripts will
24999   /// be ignored, the script IDs you got may not be valid anymore.
25000   HRESULT RemoveScriptToExecuteOnDocumentCreated(in LPCWSTR id);
25001 
25002   /// Run JavaScript code from the javascript parameter in the current
25003   /// top-level document rendered in the WebView.  The result of evaluating
25004   /// the provided JavaScript is used in this parameter.  The result value is
25005   /// a JSON encoded string.  If the result is undefined, contains a reference
25006   /// cycle, or otherwise is not able to be encoded into JSON, then the result
25007   /// is considered to be null, which is encoded in JSON as the string "null".
25008   ///
25009   /// \> [!NOTE]\n\> A function that has no explicit return value returns undefined. If the
25010   /// script that was run throws an unhandled exception, then the result is
25011   /// also "null".  This method is applied asynchronously. If the method is
25012   /// run after the `NavigationStarting` event during a navigation, the script
25013   /// runs in the new document when loading it, around the time
25014   /// `ContentLoading` is run.  This operation executes the script even if
25015   /// `ICoreWebView2Settings::IsScriptEnabled` is set to `FALSE`.
25016   ///
25017   /// \snippet ScriptComponent.cpp ExecuteScript
25018   HRESULT ExecuteScript(
25019       in LPCWSTR javaScript,
25020       /+[in]+/ ICoreWebView2ExecuteScriptCompletedHandler handler);
25021 
25022   /// Capture an image of what WebView is displaying.  Specify the format of
25023   /// the image with the `imageFormat` parameter.  The resulting image binary
25024   /// data is written to the provided `imageStream` parameter.  When
25025   /// `CapturePreview` finishes writing to the stream, the `Invoke` method on
25026   /// the provided `handler` parameter is run.  This method fails if called
25027   /// before the first ContentLoading event.  For example if this is called in
25028   /// the NavigationStarting event for the first navigation it will fail.
25029   /// For subsequent navigations, the method may not fail, but will not capture
25030   /// an image of a given webpage until the ContentLoading event has been fired
25031   /// for it.  Any call to this method prior to that will result in a capture of
25032   /// the page being navigated away from.
25033   ///
25034   /// \snippet FileComponent.cpp CapturePreview
25035   HRESULT CapturePreview(
25036       in COREWEBVIEW2_CAPTURE_PREVIEW_IMAGE_FORMAT imageFormat,
25037       in IStream* imageStream,
25038       /+[in]+/ ICoreWebView2CapturePreviewCompletedHandler handler);
25039 
25040   /// Reload the current page.  This is similar to navigating to the URI of
25041   /// current top level document including all navigation events firing and
25042   /// respecting any entries in the HTTP cache.  But, the back or forward
25043   /// history are not modified.
25044   HRESULT Reload();
25045 
25046   /// Post the specified webMessage to the top level document in this WebView.
25047   /// The main page receives the message by subscribing to the `message` event of the
25048   /// `window.chrome.webview` of the page document.
25049   ///
25050   /// ```cpp
25051   /// window.chrome.webview.addEventListener('message', handler)
25052   /// window.chrome.webview.removeEventListener('message', handler)
25053   /// ```
25054   ///
25055   /// The event args is an instance of `MessageEvent`.  The
25056   /// `ICoreWebView2Settings::IsWebMessageEnabled` setting must be `TRUE` or
25057   /// the web message will not be sent. The `data` property of the event
25058   /// arg is the `webMessage` string parameter parsed as a JSON string into a
25059   /// JavaScript object.  The `source` property of the event arg is a reference
25060   ///  to the `window.chrome.webview` object.  For information about sending
25061   /// messages from the HTML document in the WebView to the host, navigate to
25062   /// [add_WebMessageReceived](/microsoft-edge/webview2/reference/win32/icorewebview2#add_webmessagereceived).
25063   /// The message is delivered asynchronously.  If a navigation occurs before
25064   /// the message is posted to the page, the message is discarded.
25065   ///
25066   /// \snippet ScenarioWebMessage.cpp WebMessageReceived
25067   HRESULT PostWebMessageAsJson(in LPCWSTR webMessageAsJson);
25068 
25069   /// Posts a message that is a simple string rather than a JSON string
25070   /// representation of a JavaScript object.  This behaves in exactly the same
25071   /// manner as `PostWebMessageAsJson`, but the `data` property of the event
25072   /// arg of the `window.chrome.webview` message is a string with the same
25073   /// value as `webMessageAsString`.  Use this instead of
25074   /// `PostWebMessageAsJson` if you want to communicate using simple strings
25075   /// rather than JSON objects.
25076   HRESULT PostWebMessageAsString(in LPCWSTR webMessageAsString);
25077 
25078   /// Add an event handler for the `WebMessageReceived` event.
25079   /// `WebMessageReceived` runs when the
25080   /// `ICoreWebView2Settings::IsWebMessageEnabled` setting is set and the
25081   /// top-level document of the WebView runs
25082   /// `window.chrome.webview.postMessage`.  The `postMessage` function is
25083   /// `void postMessage(object)` where object is any object supported by JSON
25084   /// conversion.
25085   ///
25086   /// \snippet assets\ScenarioWebMessage.html chromeWebView
25087   ///
25088   /// When the page calls `postMessage`, the object parameter is converted to a
25089   /// JSON string and is posted asynchronously to the host process. This will
25090   /// result in the handler's `Invoke` method being called with the JSON string
25091   /// as a parameter.
25092   ///
25093   /// \snippet ScenarioWebMessage.cpp WebMessageReceived
25094   ///
25095   /// If the same page calls `postMessage` multiple times, the corresponding
25096   /// `WebMessageReceived` events are guaranteed to be fired in the same order.
25097   /// However, if multiple frames call `postMessage`, there is no guaranteed
25098   /// order.  In addition, `WebMessageReceived` events caused by calls to
25099   /// `postMessage` are not guaranteed to be sequenced with events caused by DOM
25100   /// APIs.  For example, if the page runs
25101   ///
25102   /// ```javascript
25103   /// chrome.webview.postMessage("message");
25104   /// window.open();
25105   /// ```
25106   ///
25107   /// then the `NewWindowRequested` event might be fired before the
25108   /// `WebMessageReceived` event.  If you need the `WebMessageReceived` event
25109   /// to happen before anything else, then in the `WebMessageReceived` handler
25110   /// you can post a message back to the page and have the page wait until it
25111   /// receives that message before continuing.
25112   HRESULT add_WebMessageReceived(
25113       /+[in]+/ ICoreWebView2WebMessageReceivedEventHandler handler,
25114       @("out") EventRegistrationToken* token);
25115 
25116   /// Remove an event handler previously added with `add_WebMessageReceived`.
25117   HRESULT remove_WebMessageReceived(
25118       in EventRegistrationToken token);
25119 
25120   /// Runs an asynchronous `DevToolsProtocol` method.  For more information
25121   /// about available methods, navigate to
25122   /// [DevTools Protocol Viewer](https://chromedevtools.github.io/devtools-protocol/tot)
25123   /// .  The `methodName` parameter is the full name of the method in the
25124   /// `{domain}.{method}` format.  The `parametersAsJson` parameter is a JSON
25125   /// formatted string containing the parameters for the corresponding method.
25126   /// The `Invoke` method of the `handler` is run when the method
25127   /// asynchronously completes.  `Invoke` is run with the return object of the
25128   /// method as a JSON string.  This function returns E_INVALIDARG if the `methodName` is
25129   /// unknown or the `parametersAsJson` has an error.  In the case of such an error, the
25130   /// `returnObjectAsJson` parameter of the handler will include information
25131   /// about the error.
25132   /// Note even though WebView2 dispatches the CDP messages in the order called,
25133   /// CDP method calls may be processed out of order.
25134   /// If you require CDP methods to run in a particular order, you should wait
25135   /// for the previous method's completed handler to run before calling the
25136   /// next method.
25137   ///
25138   /// \snippet ScriptComponent.cpp CallDevToolsProtocolMethod
25139   HRESULT CallDevToolsProtocolMethod(
25140       in LPCWSTR methodName,
25141       in LPCWSTR parametersAsJson,
25142       /+[in]+/ ICoreWebView2CallDevToolsProtocolMethodCompletedHandler handler);
25143 
25144   /// The process ID of the browser process that hosts the WebView.
25145   @(" propget")
25146 	HRESULT get_BrowserProcessId(@("out, retval") UINT32* value);
25147 
25148   /// `TRUE` if the WebView is able to navigate to a previous page in the
25149   /// navigation history.  If `CanGoBack` changes value, the `HistoryChanged`
25150   /// event runs.
25151   @(" propget")
25152 	HRESULT get_CanGoBack(@("out, retval") BOOL* canGoBack);
25153 
25154   /// `TRUE` if the WebView is able to navigate to a next page in the
25155   /// navigation history.  If `CanGoForward` changes value, the
25156   /// `HistoryChanged` event runs.
25157   @(" propget")
25158 	HRESULT get_CanGoForward(@("out, retval") BOOL* canGoForward);
25159 
25160   /// Navigates the WebView to the previous page in the navigation history.
25161   HRESULT GoBack();
25162 
25163   /// Navigates the WebView to the next page in the navigation history.
25164   HRESULT GoForward();
25165 
25166   /// Get a DevTools Protocol event receiver that allows you to subscribe to a
25167   /// DevTools Protocol event.  The `eventName` parameter is the full name of
25168   /// the event in the format `{domain}.{event}`.  For more information about
25169   /// DevTools Protocol events description and event args, navigate to
25170   /// [DevTools Protocol Viewer](https://chromedevtools.github.io/devtools-protocol/tot).
25171   ///
25172   /// \snippet ScriptComponent.cpp DevToolsProtocolEventReceived
25173   HRESULT GetDevToolsProtocolEventReceiver(
25174       in LPCWSTR eventName,
25175       @("out, retval") ICoreWebView2DevToolsProtocolEventReceiver * receiver);
25176 
25177   /// Stop all navigations and pending resource fetches.  Does not stop scripts.
25178   HRESULT Stop();
25179 
25180   /// Add an event handler for the `NewWindowRequested` event.
25181   /// `NewWindowRequested` runs when content inside the WebView requests to
25182   /// open a new window, such as through `window.open`.  The app can pass a
25183   /// target WebView that is considered the opened window or mark the event as
25184   /// `Handled`, in which case WebView2 does not open a window.
25185   /// If either `Handled` or `NewWindow` properties are not set, the target
25186   /// content will be opened on a popup window.
25187   ///
25188   /// If a deferral is not taken on the event args, scripts that resulted in the
25189   /// new window that are requested are blocked until the event handler returns.
25190   /// If a deferral is taken, then scripts are blocked until the deferral is
25191   /// completed or new window is set.
25192   ///
25193   /// For more details and considerations on the target WebView to be supplied
25194   /// at the opened window, see `ICoreWebView2NewWindowRequestedEventArgs::put_NewWindow`.
25195   ///
25196   /// \snippet AppWindow.cpp NewWindowRequested
25197   HRESULT add_NewWindowRequested(
25198       /+[in]+/ ICoreWebView2NewWindowRequestedEventHandler eventHandler,
25199       @("out") EventRegistrationToken* token);
25200 
25201   /// Remove an event handler previously added with `add_NewWindowRequested`.
25202   HRESULT remove_NewWindowRequested(
25203       in EventRegistrationToken token);
25204 
25205   /// Add an event handler for the `DocumentTitleChanged` event.
25206   /// `DocumentTitleChanged` runs when the `DocumentTitle` property of the
25207   /// WebView changes and may run before or after the `NavigationCompleted`
25208   /// event.
25209   ///
25210   /// \snippet FileComponent.cpp DocumentTitleChanged
25211   HRESULT add_DocumentTitleChanged(
25212       /+[in]+/ ICoreWebView2DocumentTitleChangedEventHandler eventHandler,
25213       @("out") EventRegistrationToken* token);
25214 
25215   /// Remove an event handler previously added with `add_DocumentTitleChanged`.
25216   HRESULT remove_DocumentTitleChanged(
25217       in EventRegistrationToken token);
25218 
25219   /// The title for the current top-level document.  If the document has no
25220   /// explicit title or is otherwise empty, a default that may or may not match
25221   ///  the URI of the document is used.
25222   ///
25223   /// The caller must free the returned string with `CoTaskMemFree`.  See
25224   /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings).
25225   @(" propget")
25226 	HRESULT get_DocumentTitle(@("out, retval") LPWSTR* title);
25227 
25228   /// Add the provided host object to script running in the WebView with the
25229   /// specified name.  Host objects are exposed as host object proxies using
25230   /// `window.chrome.webview.hostObjects.{name}`.  Host object proxies are
25231   /// promises and resolves to an object representing the host object.  The
25232   /// promise is rejected if the app has not added an object with the name.
25233   /// When JavaScript code access a property or method of the object, a promise
25234   ///  is return, which resolves to the value returned from the host for the
25235   /// property or method, or rejected in case of error, for example, no
25236   /// property or method on the object or parameters are not valid.
25237   ///
25238   /// \> [!NOTE]\n\> While simple types, `IDispatch` and array are supported, and
25239   /// `IUnknown` objects that also implement `IDispatch` are treated as `IDispatch`,
25240   /// generic `IUnknown`, `VT_DECIMAL`, or `VT_RECORD` variant is not supported.
25241   /// Remote JavaScript objects like callback functions are represented as an
25242   /// `VT_DISPATCH` `VARIANT` with the object implementing `IDispatch`.  The
25243   /// JavaScript callback method may be invoked using `DISPID_VALUE` for the
25244   /// `DISPID`.  Such callback method invocations will return immediately and will
25245   /// not wait for the JavaScript function to run and so will not provide the return
25246   /// value of the JavaScript function.
25247   /// Nested arrays are supported up to a depth of 3.  Arrays of by
25248   /// reference types are not supported. `VT_EMPTY` and `VT_NULL` are mapped
25249   /// into JavaScript as `null`.  In JavaScript, `null` and undefined are
25250   /// mapped to `VT_EMPTY`.
25251   ///
25252   /// Additionally, all host objects are exposed as
25253   /// `window.chrome.webview.hostObjects.sync.{name}`.  Here the host objects
25254   /// are exposed as synchronous host object proxies. These are not promises
25255   /// and function runtimes or property access synchronously block running
25256   /// script waiting to communicate cross process for the host code to run.
25257   /// Accordingly the result may have reliability issues and it is recommended
25258   /// that you use the promise-based asynchronous
25259   /// `window.chrome.webview.hostObjects.{name}` API.
25260   ///
25261   /// Synchronous host object proxies and asynchronous host object proxies may
25262   /// both use a proxy to the same host object.  Remote changes made by one
25263   /// proxy propagates to any other proxy of that same host object whether
25264   /// the other proxies and synchronous or asynchronous.
25265   ///
25266   /// While JavaScript is blocked on a synchronous run to native code, that
25267   /// native code is unable to run back to JavaScript.  Attempts to do so fail
25268   ///  with `HRESULT_FROM_WIN32(ERROR_POSSIBLE_DEADLOCK)`.
25269   ///
25270   /// Host object proxies are JavaScript Proxy objects that intercept all
25271   /// property get, property set, and method invocations. Properties or methods
25272   ///  that are a part of the Function or Object prototype are run locally.
25273   /// Additionally any property or method in the
25274   /// `chrome.webview.hostObjects.options.forceLocalProperties`
25275   /// array are also run locally.  This defaults to including optional methods
25276   /// that have meaning in JavaScript like `toJSON` and `Symbol.toPrimitive`.
25277   /// Add more to the array as required.
25278   ///
25279   /// The `chrome.webview.hostObjects.cleanupSome` method performs a best
25280   /// effort garbage collection on host object proxies.
25281   ///
25282   /// The `chrome.webview.hostObjects.options` object provides the ability to
25283   /// change some functionality of host objects.
25284   ///
25285   /// Options property | Details
25286   /// ---|---
25287   /// `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.
25288   /// `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.
25289   /// `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.
25290   /// `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.
25291   /// `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.
25292   /// `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.
25293   ///
25294   /// Host object proxies additionally have the following methods which run
25295   /// locally.
25296   ///
25297   /// Method name | Details
25298   /// ---|---
25299   ///`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.
25300   ///`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.
25301   ///`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()`.
25302   ///`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()`.
25303   ///`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.
25304   ///
25305   /// All other property and method invocations (other than the above Remote
25306   /// object proxy methods, `forceLocalProperties` list, and properties on
25307   /// Function and Object prototypes) are run remotely.  Asynchronous host
25308   /// object proxies return a promise representing asynchronous completion of
25309   /// remotely invoking the method, or getting the property.  The promise
25310   /// resolves after the remote operations complete and the promises resolve to
25311   ///  the resulting value of the operation.  Synchronous host object proxies
25312   /// work similarly, but block running JavaScript and wait for the remote
25313   /// operation to complete.
25314   ///
25315   /// Setting a property on an asynchronous host object proxy works slightly
25316   /// differently.  The set returns immediately and the return value is the
25317   /// value that is set.  This is a requirement of the JavaScript Proxy object.
25318   /// If you need to asynchronously wait for the property set to complete, use
25319   /// the `setHostProperty` method which returns a promise as described above.
25320   /// Synchronous object property set property synchronously blocks until the
25321   /// property is set.
25322   ///
25323   /// For example, suppose you have a COM object with the following interface.
25324   ///
25325   /// \snippet HostObjectSample.idl AddHostObjectInterface
25326   ///
25327   /// Add an instance of this interface into your JavaScript with
25328   /// `AddHostObjectToScript`.  In this case, name it `sample`.
25329   ///
25330   /// \snippet ScenarioAddHostObject.cpp AddHostObjectToScript
25331   ///
25332   /// In the HTML document, use the COM object using
25333   /// `chrome.webview.hostObjects.sample`.
25334   /// Note that `CoreWebView2.AddHostObjectToScript` only applies to the
25335   /// top-level document and not to frames. To add host objects to frames use
25336   /// `CoreWebView2Frame.AddHostObjectToScript`.
25337   ///
25338   /// \snippet assets\ScenarioAddHostObject.html HostObjectUsage
25339   ///
25340   /// Exposing host objects to script has security risk.  For more information
25341   /// about best practices, navigate to
25342   /// [Best practices for developing secure WebView2 applications](/microsoft-edge/webview2/concepts/security).
25343   HRESULT AddHostObjectToScript(in LPCWSTR name, in VARIANT* object);
25344 
25345   /// Remove the host object specified by the name so that it is no longer
25346   /// accessible from JavaScript code in the WebView.  While new access
25347   /// attempts are denied, if the object is already obtained by JavaScript code
25348   /// in the WebView, the JavaScript code continues to have access to that
25349   /// object.   Run this method for a name that is already removed or never
25350   /// added fails.
25351   HRESULT RemoveHostObjectFromScript(in LPCWSTR name);
25352 
25353   /// Opens the DevTools window for the current document in the WebView. Does
25354   /// nothing if run when the DevTools window is already open.
25355   HRESULT OpenDevToolsWindow();
25356 
25357   /// Add an event handler for the `ContainsFullScreenElementChanged` event.
25358   /// `ContainsFullScreenElementChanged` triggers when the
25359   /// `ContainsFullScreenElement` property changes.  An HTML element inside the
25360   /// WebView may enter fullscreen to the size of the WebView or leave
25361   /// fullscreen.  This event is useful when, for example, a video element
25362   /// requests to go fullscreen.  The listener of
25363   /// `ContainsFullScreenElementChanged` may resize the WebView in response.
25364   ///
25365   /// \snippet AppWindow.cpp ContainsFullScreenElementChanged
25366   HRESULT add_ContainsFullScreenElementChanged(
25367       /+[in]+/ ICoreWebView2ContainsFullScreenElementChangedEventHandler eventHandler,
25368       @("out") EventRegistrationToken* token);
25369 
25370   /// Remove an event handler previously added with
25371   /// `add_ContainsFullScreenElementChanged`.
25372   HRESULT remove_ContainsFullScreenElementChanged(
25373       in EventRegistrationToken token);
25374 
25375   /// Indicates if the WebView contains a fullscreen HTML element.
25376   @(" propget")
25377 	HRESULT get_ContainsFullScreenElement(
25378       @("out, retval") BOOL* containsFullScreenElement);
25379 
25380   /// Add an event handler for the `WebResourceRequested` event.
25381   /// `WebResourceRequested` runs when the WebView is performing a URL request
25382   /// to a matching URL and resource context filter that was added with
25383   /// `AddWebResourceRequestedFilter`.  At least one filter must be added for
25384   /// the event to run.
25385   ///
25386   /// The web resource requested may be blocked until the event handler returns
25387   /// if a deferral is not taken on the event args.  If a deferral is taken,
25388   /// then the web resource requested is blocked until the deferral is
25389   /// completed.
25390   ///
25391   /// If this event is subscribed in the add_NewWindowRequested handler it should be called
25392   /// after the new window is set. For more details see `ICoreWebView2NewWindowRequestedEventArgs::put_NewWindow`.
25393   ///
25394   /// This event is by default raised for file, http, and https URI schemes.
25395   /// This is also raised for registered custom URI schemes. For more details
25396   /// see `ICoreWebView2CustomSchemeRegistration`.
25397   ///
25398   /// \snippet SettingsComponent.cpp WebResourceRequested0
25399   /// \snippet SettingsComponent.cpp WebResourceRequested1
25400   HRESULT add_WebResourceRequested(
25401     /+[in]+/ ICoreWebView2WebResourceRequestedEventHandler eventHandler,
25402     @("out") EventRegistrationToken* token);
25403 
25404   /// Remove an event handler previously added with `add_WebResourceRequested`.
25405   HRESULT remove_WebResourceRequested(
25406       in EventRegistrationToken token);
25407 
25408   /// Adds a URI and resource context filter for the `WebResourceRequested`
25409   /// event.  A web resource request with a resource context that matches this
25410   /// filter's resource context and a URI that matches this filter's URI
25411   /// wildcard string will be raised via the `WebResourceRequested` event.
25412   ///
25413   /// The `uri` parameter value is a wildcard string matched against the URI
25414   /// of the web resource request. This is a glob style
25415   /// wildcard string in which a `*` matches zero or more characters and a `?`
25416   /// matches exactly one character.
25417   /// These wildcard characters can be escaped using a backslash just before
25418   /// the wildcard character in order to represent the literal `*` or `?`.
25419   ///
25420   /// The matching occurs over the URI as a whole string and not limiting
25421   /// wildcard matches to particular parts of the URI.
25422   /// The wildcard filter is compared to the URI after the URI has been
25423   /// normalized, any URI fragment has been removed, and non-ASCII hostnames
25424   /// have been converted to punycode.
25425   ///
25426   /// Specifying a `nullptr` for the uri is equivalent to an empty string which
25427   /// matches no URIs.
25428   ///
25429   /// For more information about resource context filters, navigate to
25430   /// [COREWEBVIEW2_WEB_RESOURCE_CONTEXT](/microsoft-edge/webview2/reference/win32/webview2-idl#corewebview2_web_resource_context).
25431   ///
25432   /// | URI Filter String | Request URI | Match | Notes |
25433   /// | ---- | ---- | ---- | ---- |
25434   /// | `*` | `https://contoso.com/a/b/c` | Yes | A single * will match all URIs |
25435   /// | `*://contoso.com/*` | `https://contoso.com/a/b/c` | Yes | Matches everything in contoso.com across all schemes |
25436   /// | `*://contoso.com/*` | `https://example.com/?https://contoso.com/` | Yes | But also matches a URI with just the same text anywhere in the URI |
25437   /// | `example` | `https://contoso.com/example` | No | The filter does not perform partial matches |
25438   /// | `*example` | `https://contoso.com/example` | Yes | The filter matches across URI parts  |
25439   /// | `*example` | `https://contoso.com/path/?example` | Yes | The filter matches across URI parts |
25440   /// | `*example` | `https://contoso.com/path/?query#example` | No | The filter is matched against the URI with no fragment |
25441   /// | `*example` | `https://example` | No | The URI is normalized before filter matching so the actual URI used for comparison is `https://example/` |
25442   /// | `*example/` | `https://example` | Yes | Just like above, but this time the filter ends with a / just like the normalized URI |
25443   /// | `https://xn--qei.example/` | `https://&#x2764;.example/` | Yes | Non-ASCII hostnames are normalized to punycode before wildcard comparison |
25444   /// | `https://&#x2764;.example/` | `https://xn--qei.example/` | No | Non-ASCII hostnames are normalized to punycode before wildcard comparison |
25445   HRESULT AddWebResourceRequestedFilter(
25446     in LPCWSTR /*const*/ uri,
25447     in COREWEBVIEW2_WEB_RESOURCE_CONTEXT /*const*/ resourceContext);
25448 
25449   /// Removes a matching WebResource filter that was previously added for the
25450   /// `WebResourceRequested` event.  If the same filter was added multiple
25451   /// times, then it must be removed as many times as it was added for the
25452   /// removal to be effective.  Returns `E_INVALIDARG` for a filter that was
25453   /// never added.
25454   HRESULT RemoveWebResourceRequestedFilter(
25455     in LPCWSTR /*const*/ uri,
25456     in COREWEBVIEW2_WEB_RESOURCE_CONTEXT /*const*/ resourceContext);
25457 
25458   /// Add an event handler for the `WindowCloseRequested` event.
25459   /// `WindowCloseRequested` triggers when content inside the WebView
25460   /// requested to close the window, such as after `window.close` is run.  The
25461   /// app should close the WebView and related app window if that makes sense
25462   /// to the app.
25463   ///
25464   /// \snippet AppWindow.cpp WindowCloseRequested
25465   HRESULT add_WindowCloseRequested(
25466       /+[in]+/ ICoreWebView2WindowCloseRequestedEventHandler eventHandler,
25467       @("out") EventRegistrationToken* token);
25468 
25469   /// Remove an event handler previously added with `add_WindowCloseRequested`.
25470   HRESULT remove_WindowCloseRequested(
25471       in EventRegistrationToken token);
25472 }
25473 
25474 /// A continuation of the ICoreWebView2 interface.
25475 const GUID IID_ICoreWebView2_2 = ICoreWebView2_2.iid;
25476 
25477 interface ICoreWebView2_2 : ICoreWebView2
25478 {
25479     static const GUID iid = { 0x9E8F0CF8,0xE670,0x4B5E,[ 0xB2,0xBC,0x73,0xE0,0x61,0xE3,0x18,0x4C ] };
25480   /// Add an event handler for the WebResourceResponseReceived event.
25481   /// WebResourceResponseReceived is raised when the WebView receives the
25482   /// response for a request for a web resource (any URI resolution performed by
25483   /// the WebView; such as HTTP/HTTPS, file and data requests from redirects,
25484   /// navigations, declarations in HTML, implicit favicon lookups, and fetch API
25485   /// usage in the document). The host app can use this event to view the actual
25486   /// request and response for a web resource. There is no guarantee about the
25487   /// order in which the WebView processes the response and the host app's
25488   /// handler runs. The app's handler will not block the WebView from processing
25489   /// the response.
25490   /// \snippet ScenarioAuthentication.cpp WebResourceResponseReceived
25491   HRESULT add_WebResourceResponseReceived(
25492     /+[in]+/ ICoreWebView2WebResourceResponseReceivedEventHandler eventHandler,
25493     @("out") EventRegistrationToken* token);
25494   /// Remove an event handler previously added with
25495   /// add_WebResourceResponseReceived.
25496   HRESULT remove_WebResourceResponseReceived(
25497     in EventRegistrationToken token);
25498 
25499   /// Navigates using a constructed WebResourceRequest object. This lets you
25500   /// provide post data or additional request headers during navigation.
25501   /// The headers in the WebResourceRequest override headers
25502   /// added by WebView2 runtime except for Cookie headers.
25503   /// Method can only be either "GET" or "POST". Provided post data will only
25504   /// be sent only if the method is "POST" and the uri scheme is HTTP(S).
25505   /// \snippet ScenarioNavigateWithWebResourceRequest.cpp NavigateWithWebResourceRequest
25506   HRESULT NavigateWithWebResourceRequest(/+[in]+/ ICoreWebView2WebResourceRequest request);
25507 
25508   /// Add an event handler for the DOMContentLoaded event.
25509   /// DOMContentLoaded is raised when the initial html document has been parsed.
25510   /// This aligns with the document's DOMContentLoaded event in html.
25511   ///
25512   /// \snippet ScenarioDOMContentLoaded.cpp DOMContentLoaded
25513   HRESULT add_DOMContentLoaded(
25514       /+[in]+/ ICoreWebView2DOMContentLoadedEventHandler eventHandler,
25515       @("out") EventRegistrationToken* token);
25516 
25517   /// Remove an event handler previously added with add_DOMContentLoaded.
25518   HRESULT remove_DOMContentLoaded(
25519       in EventRegistrationToken token);
25520 
25521   /// Gets the cookie manager object associated with this ICoreWebView2.
25522   /// See ICoreWebView2CookieManager.
25523   ///
25524   /// \snippet ScenarioCookieManagement.cpp CookieManager
25525   @(" propget")
25526 	HRESULT get_CookieManager(@("out, retval") ICoreWebView2CookieManager * cookieManager);
25527 
25528   /// Exposes the CoreWebView2Environment used to create this CoreWebView2.
25529   @(" propget")
25530 	HRESULT get_Environment(@("out, retval") ICoreWebView2Environment * environment);
25531 }
25532 
25533 /// A continuation of the ICoreWebView2_2 interface.
25534 const GUID IID_ICoreWebView2_3 = ICoreWebView2_3.iid;
25535 
25536 interface ICoreWebView2_3 : ICoreWebView2_2
25537 {
25538     static const GUID iid = { 0xA0D6DF20,0x3B92,0x416D,[ 0xAA,0x0C,0x43,0x7A,0x9C,0x72,0x78,0x57 ] };
25539   /// An app may call the `TrySuspend` API to have the WebView2 consume less memory.
25540   /// This is useful when a Win32 app becomes invisible, or when a Universal Windows
25541   /// Platform app is being suspended, during the suspended event handler before completing
25542   /// the suspended event.
25543   /// The CoreWebView2Controller's IsVisible property must be false when the API is called.
25544   /// Otherwise, the API fails with `HRESULT_FROM_WIN32(ERROR_INVALID_STATE)`.
25545   /// Suspending is similar to putting a tab to sleep in the Edge browser. Suspending pauses
25546   /// WebView script timers and animations, minimizes CPU usage for the associated
25547   /// browser renderer process and allows the operating system to reuse the memory that was
25548   /// used by the renderer process for other processes.
25549   /// Note that Suspend is best effort and considered completed successfully once the request
25550   /// is sent to browser renderer process. If there is a running script, the script will continue
25551   /// to run and the renderer process will be suspended after that script is done.
25552   /// See [Sleeping Tabs FAQ](https://techcommunity.microsoft.com/t5/articles/sleeping-tabs-faq/m-p/1705434)
25553   /// for conditions that might prevent WebView from being suspended. In those situations,
25554   /// the completed handler will be invoked with isSuccessful as false and errorCode as S_OK.
25555   /// The WebView will be automatically resumed when it becomes visible. Therefore, the
25556   /// app normally does not have to call `Resume` explicitly.
25557   /// The app can call `Resume` and then `TrySuspend` periodically for an invisible WebView so that
25558   /// the invisible WebView can sync up with latest data and the page ready to show fresh content
25559   /// when it becomes visible.
25560   /// All WebView APIs can still be accessed when a WebView is suspended. Some APIs like Navigate
25561   /// will auto resume the WebView. To avoid unexpected auto resume, check `IsSuspended` property
25562   /// before calling APIs that might change WebView state.
25563   ///
25564   /// \snippet ViewComponent.cpp ToggleIsVisibleOnMinimize
25565   ///
25566   /// \snippet ViewComponent.cpp Suspend
25567   ///
25568   HRESULT TrySuspend(/+[in]+/ ICoreWebView2TrySuspendCompletedHandler handler);
25569 
25570   /// Resumes the WebView so that it resumes activities on the web page.
25571   /// This API can be called while the WebView2 controller is invisible.
25572   /// The app can interact with the WebView immediately after `Resume`.
25573   /// WebView will be automatically resumed when it becomes visible.
25574   ///
25575   /// \snippet ViewComponent.cpp ToggleIsVisibleOnMinimize
25576   ///
25577   /// \snippet ViewComponent.cpp Resume
25578   ///
25579   HRESULT Resume();
25580 
25581   /// Whether WebView is suspended.
25582   /// `TRUE` when WebView is suspended, from the time when TrySuspend has completed
25583   ///  successfully until WebView is resumed.
25584   @(" propget")
25585 	HRESULT get_IsSuspended(@("out, retval") BOOL* isSuspended);
25586 
25587   /// Sets a mapping between a virtual host name and a folder path to make available to web sites
25588   /// via that host name.
25589   ///
25590   /// After setting the mapping, documents loaded in the WebView can use HTTP or HTTPS URLs at
25591   /// the specified host name specified by hostName to access files in the local folder specified
25592   /// by folderPath.
25593   ///
25594   /// This mapping applies to both top-level document and iframe navigations as well as subresource
25595   /// references from a document. This also applies to web workers including dedicated/shared worker
25596   /// and service worker, for loading either worker scripts or subresources
25597   /// (importScripts(), fetch(), XHR, etc.) issued from within a worker.
25598   /// For virtual host mapping to work with service worker, please keep the virtual host name
25599   /// mappings consistent among all WebViews sharing the same browser instance. As service worker
25600   /// works independently of WebViews, we merge mappings from all WebViews when resolving virtual
25601   /// host name, inconsistent mappings between WebViews would lead unexpected behavior.
25602   ///
25603   /// Due to a current implementation limitation, media files accessed using virtual host name can be
25604   /// very slow to load.
25605   /// As the resource loaders for the current page might have already been created and running,
25606   /// changes to the mapping might not be applied to the current page and a reload of the page is
25607   /// needed to apply the new mapping.
25608   ///
25609   /// Both absolute and relative paths are supported for folderPath. Relative paths are interpreted
25610   /// as relative to the folder where the exe of the app is in.
25611   ///
25612   /// Note that the folderPath length must not exceed the Windows MAX_PATH limit.
25613   ///
25614   /// accessKind specifies the level of access to resources under the virtual host from other sites.
25615   ///
25616   /// For example, after calling
25617   /// ```cpp
25618   ///    SetVirtualHostNameToFolderMapping(
25619   ///        L"appassets.example", L"assets",
25620   ///        COREWEBVIEW2_HOST_RESOURCE_ACCESS_KIND_DENY);
25621   /// ```
25622   /// navigating to `https://appassets.example/my-local-file.html` will
25623   /// show the content from my-local-file.html in the assets subfolder located on disk under
25624   /// the same path as the app's executable file.
25625   ///
25626   /// DOM elements that want to reference local files will have their host reference virtual host in the source.
25627   /// If there are multiple folders being used, define one unique virtual host per folder.
25628   /// For example, you can embed a local image like this
25629   /// ```cpp
25630   ///    WCHAR c_navString[] = L"<img src=\"http://appassets.example/wv2.png\"/>";
25631   ///    m_webView->NavigateToString(c_navString);
25632   /// ```
25633   /// The example above shows the image wv2.png by resolving the folder mapping above.
25634   ///
25635   /// You should typically choose virtual host names that are never used by real sites.
25636   /// If you own a domain such as example.com, another option is to use a subdomain reserved for
25637   /// the app (like my-app.example.com).
25638   ///
25639   /// [RFC 6761](https://tools.ietf.org/html/rfc6761) has reserved several special-use domain
25640   /// names that are guaranteed to not be used by real sites (for example, .example, .test, and
25641   /// .invalid.)
25642   ///
25643   /// Note that using `.local` as the top-level domain name will work but can cause a delay
25644   /// during navigations. You should avoid using `.local` if you can.
25645   ///
25646   /// Apps should use distinct domain names when mapping folder from different sources that
25647   /// should be isolated from each other. For instance, the app might use app-file.example for
25648   /// files that ship as part of the app, and book1.example might be used for files containing
25649   /// books from a less trusted source that were previously downloaded and saved to the disk by
25650   /// the app.
25651   ///
25652   /// The host name used in the APIs is canonicalized using Chromium's host name parsing logic
25653   /// before being used internally. For more information see [HTML5 2.6 URLs](https://dev.w3.org/html5/spec-LC/urls.html).
25654   ///
25655   /// All host names that are canonicalized to the same string are considered identical.
25656   /// For example, `EXAMPLE.COM` and `example.com` are treated as the same host name.
25657   /// An international host name and its Punycode-encoded host name are considered the same host
25658   /// name. There is no DNS resolution for host name and the trailing '.' is not normalized as
25659   /// part of canonicalization.
25660   ///
25661   /// Therefore `example.com` and `example.com.` are treated as different host names. Similarly,
25662   /// `virtual-host-name` and `virtual-host-name.example.com` are treated as different host names
25663   /// even if the machine has a DNS suffix of `example.com`.
25664   ///
25665   /// Specify the minimal cross-origin access necessary to run the app. If there is not a need to
25666   /// access local resources from other origins, use COREWEBVIEW2_HOST_RESOURCE_ACCESS_KIND_DENY.
25667   ///
25668   /// \snippet AppWindow.cpp AddVirtualHostNameToFolderMapping
25669   ///
25670   /// \snippet AppWindow.cpp LocalUrlUsage
25671   HRESULT SetVirtualHostNameToFolderMapping(
25672       in LPCWSTR hostName,
25673       in LPCWSTR folderPath,
25674       in COREWEBVIEW2_HOST_RESOURCE_ACCESS_KIND accessKind);
25675 
25676   /// Clears a host name mapping for local folder that was added by `SetVirtualHostNameToFolderMapping`.
25677   HRESULT ClearVirtualHostNameToFolderMapping(
25678       in LPCWSTR hostName);
25679 }
25680 
25681 /// A continuation of the ICoreWebView2_3 interface to support FrameCreated and
25682 /// DownloadStarting events.
25683 const GUID IID_ICoreWebView2_4 = ICoreWebView2_4.iid;
25684 
25685 interface ICoreWebView2_4 : ICoreWebView2_3
25686 {
25687     static const GUID iid = { 0x20d02d59,0x6df2,0x42dc,[ 0xbd,0x06,0xf9,0x8a,0x69,0x4b,0x13,0x02 ] };
25688   /// Raised when a new iframe is created.
25689   /// Handle this event to get access to ICoreWebView2Frame objects.
25690   /// Use ICoreWebView2Frame.add_Destroyed to listen for when this iframe goes
25691   /// away.
25692   HRESULT add_FrameCreated(
25693       /+[in]+/ ICoreWebView2FrameCreatedEventHandler  eventHandler,
25694       @("out") EventRegistrationToken * token);
25695 
25696   /// Remove an event handler previously added with add_FrameCreated.
25697   HRESULT remove_FrameCreated(in EventRegistrationToken token);
25698 
25699   /// Add an event handler for the `DownloadStarting` event. This event is
25700   /// raised when a download has begun, blocking the default download dialog,
25701   /// but not blocking the progress of the download.
25702   ///
25703   /// The host can choose to cancel a download, change the result file path,
25704   /// and hide the default download dialog.
25705   /// If the host chooses to cancel the download, the download is not saved, no
25706   /// dialog is shown, and the state is changed to
25707   /// COREWEBVIEW2_DOWNLOAD_STATE_INTERRUPTED with interrupt reason
25708   /// COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_USER_CANCELED. Otherwise, the
25709   /// download is saved to the default path after the event completes,
25710   /// and default download dialog is shown if the host did not choose to hide it.
25711   /// The host can change the visibility of the download dialog using the
25712   /// `Handled` property. If the event is not handled, downloads complete
25713   /// normally with the default dialog shown.
25714   ///
25715   /// \snippet ScenarioCustomDownloadExperience.cpp DownloadStarting
25716   HRESULT add_DownloadStarting(
25717     /+[in]+/ ICoreWebView2DownloadStartingEventHandler eventHandler,
25718     @("out") EventRegistrationToken* token);
25719 
25720   /// Remove an event handler previously added with `add_DownloadStarting`.
25721   HRESULT remove_DownloadStarting(
25722       in EventRegistrationToken token);
25723 }
25724 
25725 /// A continuation of the ICoreWebView2_4 interface to support ClientCertificateRequested
25726 /// event.
25727 const GUID IID_ICoreWebView2_5 = ICoreWebView2_5.iid;
25728 
25729 interface ICoreWebView2_5 : ICoreWebView2_4
25730 {
25731     static const GUID iid = { 0xbedb11b8,0xd63c,0x11eb,[ 0xb8,0xbc,0x02,0x42,0xac,0x13,0x00,0x03 ] };
25732   /// Add an event handler for the ClientCertificateRequested event.
25733   /// The ClientCertificateRequested event is raised when the WebView2
25734   /// is making a request to an HTTP server that needs a client certificate
25735   /// for HTTP authentication.
25736   /// Read more about HTTP client certificates at
25737   /// [RFC 8446 The Transport Layer Security (TLS) Protocol Version 1.3](https://tools.ietf.org/html/rfc8446).
25738   ///
25739   /// With this event you have several options for responding to client certificate requests:
25740   ///
25741   /// Scenario                                                   | Handled | Cancel | SelectedCertificate
25742   /// ---------------------------------------------------------- | ------- | ------ | -------------------
25743   /// Respond to server with a certificate                       | True    | False  | MutuallyTrustedCertificate value
25744   /// Respond to server without certificate                      | True    | False  | null
25745   /// Display default client certificate selection dialog prompt | False   | False  | n/a
25746   /// Cancel the request                                         | n/a     | True   | n/a
25747   ///
25748   /// If you don't handle the event, WebView2 will
25749   /// show the default client certificate selection dialog prompt to user.
25750   ///
25751   /// \snippet SettingsComponent.cpp ClientCertificateRequested1
25752   /// \snippet ScenarioClientCertificateRequested.cpp ClientCertificateRequested2
25753   HRESULT add_ClientCertificateRequested(
25754       /+[in]+/ ICoreWebView2ClientCertificateRequestedEventHandler eventHandler,
25755       @("out") EventRegistrationToken* token);
25756 
25757   /// Remove an event handler previously added with add_ClientCertificateRequested.
25758   HRESULT remove_ClientCertificateRequested(in EventRegistrationToken token);
25759 }
25760 
25761 /// This interface is an extension of `ICoreWebView2_5` that manages opening
25762 /// the browser task manager window.
25763 const GUID IID_ICoreWebView2_6 = ICoreWebView2_6.iid;
25764 
25765 interface ICoreWebView2_6 : ICoreWebView2_5
25766 {
25767     static const GUID iid = { 0x499aadac,0xd92c,0x4589,[ 0x8a,0x75,0x11,0x1b,0xfc,0x16,0x77,0x95 ] };
25768   /// Opens the Browser Task Manager view as a new window in the foreground.
25769   /// If the Browser Task Manager is already open, this will bring it into
25770   /// the foreground. WebView2 currently blocks the Shift+Esc shortcut for
25771   /// opening the task manager. An end user can open the browser task manager
25772   /// manually via the `Browser task manager` entry of the DevTools window's
25773   /// title bar's context menu.
25774   HRESULT OpenTaskManagerWindow();
25775 }
25776 
25777 /// This interface is an extension of `ICoreWebView2_6` that supports printing
25778 /// to PDF.
25779 const GUID IID_ICoreWebView2_7 = ICoreWebView2_7.iid;
25780 
25781 interface ICoreWebView2_7 : ICoreWebView2_6
25782 {
25783     static const GUID iid = { 0x79c24d83,0x09a3,0x45ae,[ 0x94,0x18,0x48,0x7f,0x32,0xa5,0x87,0x40 ] };
25784   /// Print the current page to PDF asynchronously with the provided settings.
25785   /// See `ICoreWebView2PrintSettings` for description of settings. Passing
25786   /// nullptr for `printSettings` results in default print settings used.
25787   ///
25788   /// Use `resultFilePath` to specify the path to the PDF file. The host should
25789   /// provide an absolute path, including file name. If the path
25790   /// points to an existing file, the file will be overwritten. If the path is
25791   /// not valid, the method fails with `E_INVALIDARG`.
25792   ///
25793   /// The async `PrintToPdf` operation completes when the data has been written
25794   /// to the PDF file. At this time the
25795   /// `ICoreWebView2PrintToPdfCompletedHandler` is invoked. If the
25796   /// application exits before printing is complete, the file is not saved.
25797   /// Only one `Printing` operation can be in progress at a time. If
25798   /// `PrintToPdf` is called while a `PrintToPdf` or `PrintToPdfStream` or `Print` or
25799   /// `ShowPrintUI` job is in progress, the completed handler is immediately invoked
25800   /// with `isSuccessful` set to FALSE.
25801   ///
25802   /// \snippet FileComponent.cpp PrintToPdf
25803   HRESULT PrintToPdf(
25804     in LPCWSTR resultFilePath,
25805     /+[in]+/ ICoreWebView2PrintSettings printSettings,
25806     /+[in]+/ ICoreWebView2PrintToPdfCompletedHandler handler);
25807 }
25808 
25809 /// This interface is an extension of `ICoreWebView2_7` that supports media features.
25810 const GUID IID_ICoreWebView2_8 = ICoreWebView2_8.iid;
25811 
25812 interface ICoreWebView2_8 : ICoreWebView2_7
25813 {
25814     static const GUID iid = { 0xE9632730,0x6E1E,0x43AB,[ 0xB7,0xB8,0x7B,0x2C,0x9E,0x62,0xE0,0x94 ] };
25815   /// Adds an event handler for the `IsMutedChanged` event.
25816   /// `IsMutedChanged` is raised when the IsMuted property changes value.
25817   ///
25818   /// \snippet AudioComponent.cpp IsMutedChanged
25819   HRESULT add_IsMutedChanged(
25820       /+[in]+/ ICoreWebView2IsMutedChangedEventHandler eventHandler,
25821       @("out") EventRegistrationToken* token);
25822 
25823   /// Remove an event handler previously added with `add_IsMutedChanged`.
25824   HRESULT remove_IsMutedChanged(
25825       in EventRegistrationToken token);
25826 
25827   /// Indicates whether all audio output from this CoreWebView2 is muted or not.
25828   ///
25829   /// \snippet AudioComponent.cpp ToggleIsMuted
25830   @(" propget")
25831 	HRESULT get_IsMuted(@("out, retval") BOOL* value);
25832 
25833   /// Sets the `IsMuted` property.
25834   ///
25835   /// \snippet AudioComponent.cpp ToggleIsMuted
25836   @(" propput")
25837 	HRESULT put_IsMuted(in BOOL value);
25838 
25839   /// Adds an event handler for the `IsDocumentPlayingAudioChanged` event.
25840   /// `IsDocumentPlayingAudioChanged` is raised when the IsDocumentPlayingAudio property changes value.
25841   ///
25842   /// \snippet AudioComponent.cpp IsDocumentPlayingAudioChanged
25843   HRESULT add_IsDocumentPlayingAudioChanged(
25844       /+[in]+/ ICoreWebView2IsDocumentPlayingAudioChangedEventHandler eventHandler,
25845       @("out") EventRegistrationToken* token);
25846 
25847   /// Remove an event handler previously added with `add_IsDocumentPlayingAudioChanged`.
25848   HRESULT remove_IsDocumentPlayingAudioChanged(
25849       in EventRegistrationToken token);
25850 
25851   /// Indicates whether any audio output from this CoreWebView2 is playing.
25852   /// This property will be true if audio is playing even if IsMuted is true.
25853   ///
25854   /// \snippet AudioComponent.cpp IsDocumentPlayingAudio
25855   @(" propget")
25856 	HRESULT get_IsDocumentPlayingAudio(@("out, retval") BOOL* value);
25857 }
25858 
25859 /// This interface is an extension of `ICoreWebView2_8` that default download
25860 /// dialog positioning and anchoring.
25861 const GUID IID_ICoreWebView2_9 = ICoreWebView2_9.iid;
25862 
25863 interface ICoreWebView2_9 : ICoreWebView2_8
25864 {
25865     static const GUID iid = { 0x4d7b2eab,0x9fdc,0x468d,[ 0xb9,0x98,0xa9,0x26,0x0b,0x5e,0xd6,0x51 ] };
25866   /// Raised when the `IsDefaultDownloadDialogOpen` property changes. This event
25867   /// comes after the `DownloadStarting` event. Setting the `Handled` property
25868   /// on the `DownloadStartingEventArgs` disables the default download dialog
25869   /// and ensures that this event is never raised.
25870   HRESULT add_IsDefaultDownloadDialogOpenChanged(
25871       /+[in]+/ ICoreWebView2IsDefaultDownloadDialogOpenChangedEventHandler handler,
25872       @("out") EventRegistrationToken* token);
25873 
25874   /// Remove an event handler previously added with
25875   /// `add_IsDefaultDownloadDialogOpenChanged`.
25876   HRESULT remove_IsDefaultDownloadDialogOpenChanged(
25877       in EventRegistrationToken token);
25878 
25879   /// `TRUE` if the default download dialog is currently open. The value of this
25880   /// property changes only when the default download dialog is explicitly
25881   /// opened or closed. Hiding the WebView implicitly hides the dialog, but does
25882   /// not change the value of this property.
25883   @(" propget")
25884 	HRESULT get_IsDefaultDownloadDialogOpen(@("out, retval") BOOL* value);
25885 
25886   /// Open the default download dialog. If the dialog is opened before there
25887   /// are recent downloads, the dialog shows all past downloads for the
25888   /// current profile. Otherwise, the dialog shows only the recent downloads
25889   /// with a "See more" button for past downloads. Calling this method raises
25890   /// the `IsDefaultDownloadDialogOpenChanged` event if the dialog was closed.
25891   /// No effect if the dialog is already open.
25892   ///
25893   /// \snippet ViewComponent.cpp ToggleDefaultDownloadDialog
25894   HRESULT OpenDefaultDownloadDialog();
25895 
25896   /// Close the default download dialog. Calling this method raises the
25897   /// `IsDefaultDownloadDialogOpenChanged` event if the dialog was open. No
25898   /// effect if the dialog is already closed.
25899   HRESULT CloseDefaultDownloadDialog();
25900 
25901   /// Get the default download dialog corner alignment.
25902   @(" propget")
25903 	HRESULT get_DefaultDownloadDialogCornerAlignment(
25904       @("out, retval") COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT* value);
25905 
25906   /// Set the default download dialog corner alignment. The dialog can be
25907   /// aligned to any of the WebView corners (see
25908   /// COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT). When the WebView
25909   /// or dialog changes size, the dialog keeps its position relative to the
25910   /// corner. The dialog may become partially or completely outside of the
25911   /// WebView bounds if the WebView is small enough. Set the margin relative to
25912   /// the corner with the `DefaultDownloadDialogMargin` property. The corner
25913   /// alignment and margin should be set during initialization to ensure that
25914   /// they are correctly applied when the layout is first computed, otherwise
25915   /// they will not take effect until the next time the WebView position or size
25916   /// is updated.
25917   ///
25918   /// \snippet ViewComponent.cpp SetDefaultDownloadDialogPosition
25919   @(" propput")
25920 	HRESULT put_DefaultDownloadDialogCornerAlignment(
25921       in COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT value);
25922 
25923   /// Get the default download dialog margin.
25924   @(" propget")
25925 	HRESULT get_DefaultDownloadDialogMargin(@("out, retval") POINT* value);
25926 
25927   /// Set the default download dialog margin relative to the WebView corner
25928   /// specified by `DefaultDownloadDialogCornerAlignment`. The margin is a
25929   /// point that describes the vertical and horizontal distances between the
25930   /// chosen WebView corner and the default download dialog corner nearest to
25931   /// it. Positive values move the dialog towards the center of the WebView from
25932   /// the chosen WebView corner, and negative values move the dialog away from
25933   /// it. Use (0, 0) to align the dialog to the WebView corner with no margin.
25934   /// The corner alignment and margin should be set during initialization to
25935   /// ensure that they are correctly applied when the layout is first computed,
25936   /// otherwise they will not take effect until the next time the WebView
25937   /// position or size is updated.
25938   @(" propput")
25939 	HRESULT put_DefaultDownloadDialogMargin(in POINT value);
25940 }
25941 
25942 /// This interface is an extension of `ICoreWebView2_9` that supports
25943 /// BasicAuthenticationRequested event.
25944 const GUID IID_ICoreWebView2_10 = ICoreWebView2_10.iid;
25945 
25946 interface ICoreWebView2_10 : ICoreWebView2_9
25947 {
25948     static const GUID iid = { 0xb1690564,0x6f5a,0x4983,[ 0x8e,0x48,0x31,0xd1,0x14,0x3f,0xec,0xdb ] };
25949   /// Add an event handler for the BasicAuthenticationRequested event.
25950   /// BasicAuthenticationRequested event is raised when WebView encounters a
25951   /// Basic HTTP Authentication request as described in
25952   /// https://developer.mozilla.org/docs/Web/HTTP/Authentication, a Digest
25953   /// HTTP Authentication request as described in
25954   /// https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Authorization#digest,
25955   /// an NTLM authentication or a Proxy Authentication request.
25956   ///
25957   /// The host can provide a response with credentials for the authentication or
25958   /// cancel the request. If the host sets the Cancel property to false but does not
25959   /// provide either UserName or Password properties on the Response property, then
25960   /// WebView2 will show the default authentication challenge dialog prompt to
25961   /// the user.
25962   ///
25963   /// \snippet ScenarioAuthentication.cpp BasicAuthenticationRequested
25964   HRESULT add_BasicAuthenticationRequested(
25965       /+[in]+/ ICoreWebView2BasicAuthenticationRequestedEventHandler eventHandler,
25966       @("out") EventRegistrationToken* token);
25967 
25968   /// Remove an event handler previously added with add_BasicAuthenticationRequested.
25969   HRESULT remove_BasicAuthenticationRequested(
25970       in EventRegistrationToken token);
25971 }
25972 
25973 /// This interface is an extension of `ICoreWebView2_10` that supports sessionId
25974 /// for CDP method calls and ContextMenuRequested event.
25975 const GUID IID_ICoreWebView2_11 = ICoreWebView2_11.iid;
25976 
25977 interface ICoreWebView2_11 : ICoreWebView2_10
25978 {
25979     static const GUID iid = { 0x0be78e56,0xc193,0x4051,[ 0xb9,0x43,0x23,0xb4,0x60,0xc0,0x8b,0xdb ] };
25980   /// Runs an asynchronous `DevToolsProtocol` method for a specific session of
25981   /// an attached target.
25982   /// There could be multiple `DevToolsProtocol` targets in a WebView.
25983   /// Besides the top level page, iframes from different origin and web workers
25984   /// are also separate targets. Attaching to these targets allows interaction with them.
25985   /// When the DevToolsProtocol is attached to a target, the connection is identified
25986   /// by a sessionId.
25987   /// To use this API, you must set the `flatten` parameter to true when calling
25988   /// `Target.attachToTarget` or `Target.setAutoAttach` `DevToolsProtocol` method.
25989   /// Using `Target.setAutoAttach` is recommended as that would allow you to attach
25990   /// to dedicated worker targets, which are not discoverable via other APIs like
25991   /// `Target.getTargets`.
25992   /// For more information about targets and sessions, navigate to
25993   /// [DevTools Protocol Viewer](https://chromedevtools.github.io/devtools-protocol/tot/Target).
25994   /// For more information about available methods, navigate to
25995   /// [DevTools Protocol Viewer](https://chromedevtools.github.io/devtools-protocol/tot)
25996   /// The `sessionId` parameter is the sessionId for an attached target.
25997   /// nullptr or empty string is treated as the session for the default target for the top page.
25998   /// The `methodName` parameter is the full name of the method in the
25999   /// `{domain}.{method}` format.  The `parametersAsJson` parameter is a JSON
26000   /// formatted string containing the parameters for the corresponding method.
26001   /// The `Invoke` method of the `handler` is run when the method
26002   /// asynchronously completes.  `Invoke` is run with the return object of the
26003   /// method as a JSON string.  This function returns E_INVALIDARG if the `methodName` is
26004   /// unknown or the `parametersAsJson` has an error.  In the case of such an error, the
26005   /// `returnObjectAsJson` parameter of the handler will include information
26006   /// about the error.
26007   ///
26008   /// \snippet ScriptComponent.cpp DevToolsProtocolMethodMultiSession
26009   ///
26010   /// \snippet ScriptComponent.cpp CallDevToolsProtocolMethodForSession
26011   HRESULT CallDevToolsProtocolMethodForSession(
26012       in LPCWSTR sessionId,
26013       in LPCWSTR methodName,
26014       in LPCWSTR parametersAsJson,
26015       /+[in]+/ ICoreWebView2CallDevToolsProtocolMethodCompletedHandler handler);
26016 
26017   /// Add an event handler for the `ContextMenuRequested` event.
26018   /// `ContextMenuRequested` event is raised when a context menu is requested by the user
26019   /// and the content inside WebView hasn't disabled context menus.
26020   /// The host has the option to create their own context menu with the information provided in
26021   /// the event or can add items to or remove items from WebView context menu.
26022   /// If the host doesn't handle the event, WebView will display the default context menu.
26023   ///
26024   /// \snippet SettingsComponent.cpp EnableCustomMenu
26025   HRESULT add_ContextMenuRequested(
26026       /+[in]+/ ICoreWebView2ContextMenuRequestedEventHandler eventHandler,
26027       @("out") EventRegistrationToken* token);
26028 
26029   /// Remove an event handler previously added with `add_ContextMenuRequested`.
26030   HRESULT remove_ContextMenuRequested(
26031       in EventRegistrationToken token);
26032 }
26033 
26034 /// This interface is an extension of `ICoreWebView2_11` that supports
26035 /// StatusBarTextChanged event.
26036 const GUID IID_ICoreWebView2_12 = ICoreWebView2_12.iid;
26037 
26038 interface ICoreWebView2_12 : ICoreWebView2_11
26039 {
26040     static const GUID iid = { 0x35D69927,0xBCFA,0x4566,[ 0x93,0x49,0x6B,0x3E,0x0D,0x15,0x4C,0xAC ] };
26041   /// Add an event handler for the `StatusBarTextChanged` event.
26042   /// `StatusBarTextChanged` fires when the WebView is showing a status message,
26043   /// a URL, or an empty string (an indication to hide the status bar).
26044   /// \snippet SettingsComponent.cpp StatusBarTextChanged
26045   HRESULT add_StatusBarTextChanged(
26046       /+[in]+/ ICoreWebView2StatusBarTextChangedEventHandler eventHandler,
26047       @("out") EventRegistrationToken* token);
26048 
26049   /// Remove an event handler previously added with `add_StatusBarTextChanged`.
26050   HRESULT remove_StatusBarTextChanged(in EventRegistrationToken token);
26051 
26052   /// The status message text.
26053   ///
26054   /// The caller must free the returned string with `CoTaskMemFree`.  See
26055   /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings).
26056   @(" propget")
26057 	HRESULT get_StatusBarText(@("out, retval") LPWSTR* value);
26058 }
26059 
26060 /// This interface is an extension of `ICoreWebView2_12` that supports Profile
26061 /// API.
26062 const GUID IID_ICoreWebView2_13 = ICoreWebView2_13.iid;
26063 
26064 interface ICoreWebView2_13 : ICoreWebView2_12
26065 {
26066     static const GUID iid = { 0xF75F09A8,0x667E,0x4983,[ 0x88,0xD6,0xC8,0x77,0x3F,0x31,0x5E,0x84 ] };
26067   /// The associated `ICoreWebView2Profile` object. If this CoreWebView2 was created with a
26068   /// CoreWebView2ControllerOptions, the CoreWebView2Profile will match those specified options.
26069   /// Otherwise if this CoreWebView2 was created without a CoreWebView2ControllerOptions, then
26070   /// this will be the default CoreWebView2Profile for the corresponding CoreWebView2Environment.
26071   ///
26072   /// \snippet AppWindow.cpp CoreWebView2Profile
26073   @(" propget")
26074 	HRESULT get_Profile(@("out, retval") ICoreWebView2Profile * value);
26075 }
26076 
26077 /// This interface is an extension of `ICoreWebView2_13` that adds
26078 /// ServerCertificate support.
26079 const GUID IID_ICoreWebView2_14 = ICoreWebView2_14.iid;
26080 
26081 interface ICoreWebView2_14 : ICoreWebView2_13
26082 {
26083     static const GUID iid = { 0x6DAA4F10,0x4A90,0x4753,[ 0x88,0x98,0x77,0xC5,0xDF,0x53,0x41,0x65 ] };
26084   /// Add an event handler for the ServerCertificateErrorDetected event.
26085   /// The ServerCertificateErrorDetected event is raised when the WebView2
26086   /// cannot verify server's digital certificate while loading a web page.
26087   ///
26088   /// This event will raise for all web resources and follows the `WebResourceRequested` event.
26089   ///
26090   /// If you don't handle the event, WebView2 will show the default TLS interstitial error page to the user
26091   /// for navigations, and for non-navigations the web request is cancelled.
26092   ///
26093   /// Note that WebView2 before raising `ServerCertificateErrorDetected` raises a `NavigationCompleted` event
26094   /// with `IsSuccess` as FALSE and any of the below WebErrorStatuses that indicate a certificate failure.
26095   ///
26096   /// - COREWEBVIEW2_WEB_ERROR_STATUS_CERTIFICATE_COMMON_NAME_IS_INCORRECT
26097   /// - COREWEBVIEW2_WEB_ERROR_STATUS_CERTIFICATE_EXPIRED
26098   /// - COREWEBVIEW2_WEB_ERROR_STATUS_CLIENT_CERTIFICATE_CONTAINS_ERRORS
26099   /// - COREWEBVIEW2_WEB_ERROR_STATUS_CERTIFICATE_REVOKED
26100   /// - COREWEBVIEW2_WEB_ERROR_STATUS_CERTIFICATE_IS_INVALID
26101   ///
26102   /// For more details see `ICoreWebView2NavigationCompletedEventArgs::get_IsSuccess` and handle
26103   /// ServerCertificateErrorDetected event or show the default TLS interstitial error page to the user
26104   /// according to the app needs.
26105   ///
26106   /// WebView2 caches the response when action is `COREWEBVIEW2_SERVER_CERTIFICATE_ERROR_ACTION_ALWAYS_ALLOW`
26107   /// for the RequestUri's host and the server certificate in the session and the `ServerCertificateErrorDetected`
26108   /// event won't be raised again.
26109   ///
26110   /// To raise the event again you must clear the cache using `ClearServerCertificateErrorActions`.
26111   ///
26112   /// \snippet SettingsComponent.cpp ServerCertificateErrorDetected1
26113   HRESULT add_ServerCertificateErrorDetected(
26114       /+[in]+/ ICoreWebView2ServerCertificateErrorDetectedEventHandler
26115           eventHandler,
26116       @("out") EventRegistrationToken* token);
26117   /// Remove an event handler previously added with add_ServerCertificateErrorDetected.
26118   HRESULT remove_ServerCertificateErrorDetected(in EventRegistrationToken token);
26119 
26120   /// Clears all cached decisions to proceed with TLS certificate errors from the
26121   /// ServerCertificateErrorDetected event for all WebView2's sharing the same session.
26122   HRESULT ClearServerCertificateErrorActions(
26123       /+[in]+/ ICoreWebView2ClearServerCertificateErrorActionsCompletedHandler
26124       handler);
26125 }
26126 
26127 /// Receives `StatusBarTextChanged` events.
26128 const GUID IID_ICoreWebView2StatusBarTextChangedEventHandler = ICoreWebView2StatusBarTextChangedEventHandler.iid;
26129 
26130 interface ICoreWebView2StatusBarTextChangedEventHandler : IUnknown
26131 {
26132     static const GUID iid = { 0xA5E3B0D0,0x10DF,0x4156,[ 0xBF,0xAD,0x3B,0x43,0x86,0x7A,0xCA,0xC6 ] };
26133   /// Called to provide the implementer with the event args for the
26134   /// corresponding event. No event args exist and the `args`
26135   /// parameter is set to `null`.
26136   HRESULT Invoke(
26137       /+[in]+/ ICoreWebView2 sender,
26138       /+[in]+/ IUnknown args);
26139 }
26140 
26141 /// This interface is an extension of `ICoreWebView2_14` that supports status Favicons.
26142 const GUID IID_ICoreWebView2_15 = ICoreWebView2_15.iid;
26143 
26144 interface ICoreWebView2_15 : ICoreWebView2_14
26145 {
26146     static const GUID iid = { 0x517B2D1D,0x7DAE,0x4A66,[ 0xA4,0xF4,0x10,0x35,0x2F,0xFB,0x95,0x18 ] };
26147   /// Add an event handler for the `FaviconChanged` event.
26148   /// The `FaviconChanged` event is raised when the
26149   /// [favicon](https://developer.mozilla.org/docs/Glossary/Favicon)
26150   /// had a different URL then the previous URL.
26151   /// The FaviconChanged event will be raised for first navigating to a new
26152   /// document, whether or not a document declares a Favicon in HTML if the
26153   /// favicon is different from the previous fav icon. The event will
26154   /// be raised again if a favicon is declared in its HTML or has script
26155   /// to set its favicon. The favicon information can then be retrieved with
26156   /// `GetFavicon` and `FaviconUri`.
26157   HRESULT add_FaviconChanged(
26158       /+[in]+/ ICoreWebView2FaviconChangedEventHandler eventHandler,
26159       @("out") EventRegistrationToken* token);
26160 
26161   /// Remove the event handler for `FaviconChanged` event.
26162   HRESULT remove_FaviconChanged(
26163       in EventRegistrationToken token);
26164 
26165   /// Get the current Uri of the favicon as a string.
26166   /// If the value is null, then the return value is `E_POINTER`, otherwise it is `S_OK`.
26167   /// If a page has no favicon then the value is an empty string.
26168   @(" propget")
26169 	HRESULT get_FaviconUri(@("out, retval") LPWSTR* value);
26170 
26171   /// Async function for getting the actual image data of the favicon.
26172   /// The image is copied to the `imageStream` object in `ICoreWebView2GetFaviconCompletedHandler`.
26173   /// If there is no image then no data would be copied into the imageStream.
26174   /// The `format` is the file format to return the image stream.
26175   /// `completedHandler` is executed at the end of the operation.
26176   ///
26177   /// \snippet SettingsComponent.cpp FaviconChanged
26178   HRESULT GetFavicon(
26179         in COREWEBVIEW2_FAVICON_IMAGE_FORMAT format,
26180         /+[in]+/ ICoreWebView2GetFaviconCompletedHandler completedHandler);
26181 }
26182 
26183 /// A continuation of the `ICoreWebView2` interface to support printing.
26184 const GUID IID_ICoreWebView2_16 = ICoreWebView2_16.iid;
26185 
26186 interface ICoreWebView2_16 : ICoreWebView2_15
26187 {
26188     static const GUID iid = { 0x0EB34DC9,0x9F91,0x41E1,[ 0x86,0x39,0x95,0xCD,0x59,0x43,0x90,0x6B ] };
26189   /// Print the current web page asynchronously to the specified printer with the provided settings.
26190   /// See `ICoreWebView2PrintSettings` for description of settings. Passing
26191   /// nullptr for `printSettings` results in default print settings used.
26192   ///
26193   /// The handler will return `errorCode` as `S_OK` and `printStatus` as COREWEBVIEW2_PRINT_STATUS_PRINTER_UNAVAILABLE
26194   /// if `printerName` doesn't match with the name of any installed printers on the user OS. The handler
26195   /// will return `errorCode` as `E_INVALIDARG` and `printStatus` as COREWEBVIEW2_PRINT_STATUS_OTHER_ERROR
26196   /// if the caller provides invalid settings for a given printer.
26197   ///
26198   /// The async `Print` operation completes when it finishes printing to the printer.
26199   /// At this time the `ICoreWebView2PrintCompletedHandler` is invoked.
26200   /// Only one `Printing` operation can be in progress at a time. If `Print` is called while a `Print` or `PrintToPdf`
26201   /// or `PrintToPdfStream` or `ShowPrintUI` job is in progress, the completed handler is immediately invoked
26202   /// with `E_ABORT` and `printStatus` is COREWEBVIEW2_PRINT_STATUS_OTHER_ERROR.
26203   /// This is only for printing operation on one webview.
26204   ///
26205   /// |       errorCode     |      printStatus                              |               Notes                                                                           |
26206   /// | --- | --- | --- |
26207   /// |        S_OK         | COREWEBVIEW2_PRINT_STATUS_SUCCEEDED           | Print operation succeeded.                                                                    |
26208   /// |        S_OK         | COREWEBVIEW2_PRINT_STATUS_PRINTER_UNAVAILABLE | If specified printer is not found or printer status is not available, offline or error state. |
26209   /// |        S_OK         | COREWEBVIEW2_PRINT_STATUS_OTHER_ERROR         | Print operation is failed.                                                                    |
26210   /// |     E_INVALIDARG    | COREWEBVIEW2_PRINT_STATUS_OTHER_ERROR         | If the caller provides invalid settings for the specified printer.                            |
26211   /// |       E_ABORT       | COREWEBVIEW2_PRINT_STATUS_OTHER_ERROR         | Print operation is failed as printing job already in progress.                                |
26212   ///
26213   /// \snippet AppWindow.cpp PrintToPrinter
26214   HRESULT Print(
26215     /+[in]+/ ICoreWebView2PrintSettings printSettings,
26216     /+[in]+/ ICoreWebView2PrintCompletedHandler handler);
26217 
26218   /// Opens the print dialog to print the current web page. See `COREWEBVIEW2_PRINT_DIALOG_KIND`
26219   /// for descriptions of print dialog kinds.
26220   ///
26221   /// Invoking browser or system print dialog doesn't open new print dialog if
26222   /// it is already open.
26223   ///
26224   /// \snippet AppWindow.cpp ShowPrintUI
26225   HRESULT ShowPrintUI(in COREWEBVIEW2_PRINT_DIALOG_KIND printDialogKind);
26226 
26227   /// Provides the Pdf data of current web page asynchronously for the provided settings.
26228   /// Stream will be rewound to the start of the pdf data.
26229   ///
26230   /// See `ICoreWebView2PrintSettings` for description of settings. Passing
26231   /// nullptr for `printSettings` results in default print settings used.
26232   ///
26233   /// The async `PrintToPdfStream` operation completes when it finishes
26234   /// writing to the stream. At this time the `ICoreWebView2PrintToPdfStreamCompletedHandler`
26235   /// is invoked. Only one `Printing` operation can be in progress at a time. If
26236   /// `PrintToPdfStream` is called while a `PrintToPdfStream` or `PrintToPdf` or `Print`
26237   /// or `ShowPrintUI` job is in progress, the completed handler is immediately invoked with `E_ABORT`.
26238   /// This is only for printing operation on one webview.
26239   ///
26240   /// \snippet AppWindow.cpp PrintToPdfStream
26241   HRESULT PrintToPdfStream(/+[in]+/ ICoreWebView2PrintSettings printSettings,
26242                            /+[in]+/ ICoreWebView2PrintToPdfStreamCompletedHandler handler);
26243 }
26244 
26245 /// Receives the result of the `Print` method.
26246 const GUID IID_ICoreWebView2PrintCompletedHandler = ICoreWebView2PrintCompletedHandler.iid;
26247 
26248 interface ICoreWebView2PrintCompletedHandler : IUnknown
26249 {
26250     static const GUID iid = { 0x8FD80075,0xED08,0x42DB,[ 0x85,0x70,0xF5,0xD1,0x49,0x77,0x46,0x1E ] };
26251   /// Provides the result of the corresponding asynchronous method.
26252   HRESULT Invoke(in HRESULT errorCode, in COREWEBVIEW2_PRINT_STATUS printStatus);
26253 }
26254 
26255 /// This interface is an extension of `ICoreWebView2_16` that supports shared buffer based on file mapping.
26256 const GUID IID_ICoreWebView2_17 = ICoreWebView2_17.iid;
26257 
26258 interface ICoreWebView2_17 : ICoreWebView2_16
26259 {
26260     static const GUID iid = { 0x702E75D4,0xFD44,0x434D,[ 0x9D,0x70,0x1A,0x68,0xA6,0xB1,0x19,0x2A ] };
26261   /// Share a shared buffer object with script of the main frame in the WebView.
26262   /// The script will receive a `sharedbufferreceived` event from chrome.webview.
26263   /// The event arg for that event will have the following methods and properties:
26264   ///   `getBuffer()`: return an ArrayBuffer object with the backing content from the shared buffer.
26265   ///   `additionalData`: an object as the result of parsing `additionalDataAsJson` as JSON string.
26266   ///           This property will be `undefined` if `additionalDataAsJson` is nullptr or empty string.
26267   ///   `source`: with a value set as `chrome.webview` object.
26268   /// If a string is provided as `additionalDataAsJson` but it is not a valid JSON string,
26269   /// the API will fail with `E_INVALIDARG`.
26270   /// If `access` is COREWEBVIEW2_SHARED_BUFFER_ACCESS_READ_ONLY, the script will only have read access to the buffer.
26271   /// If the script tries to modify the content in a read only buffer, it will cause an access
26272   /// violation in WebView renderer process and crash the renderer process.
26273   /// If the shared buffer is already closed, the API will fail with `RO_E_CLOSED`.
26274   ///
26275   /// The script code should call `chrome.webview.releaseBuffer` with
26276   /// the shared buffer as the parameter to release underlying resources as soon
26277   /// as it does not need access to the shared buffer any more.
26278   ///
26279   /// The application can post the same shared buffer object to multiple web pages or iframes, or
26280   /// post to the same web page or iframe multiple times. Each `PostSharedBufferToScript` will
26281   /// create a separate ArrayBuffer object with its own view of the memory and is separately
26282   /// released. The underlying shared memory will be released when all the views are released.
26283   ///
26284   /// For example, if we want to send data to script for one time read only consumption.
26285   ///
26286   /// \snippet ScenarioSharedBuffer.cpp OneTimeShareBuffer
26287   ///
26288   /// In the HTML document,
26289   ///
26290   /// \snippet assets\ScenarioSharedBuffer.html ShareBufferScriptCode_1
26291   ///
26292   /// \snippet assets\ScenarioSharedBuffer.html ShareBufferScriptCode_2
26293   ///
26294   /// Sharing a buffer to script has security risk. You should only share buffer with trusted site.
26295   /// If a buffer is shared to a untrusted site, possible sensitive information could be leaked.
26296   /// If a buffer is shared as modifiable by the script and the script modifies it in an unexpected way,
26297   /// it could result in corrupted data that might even crash the application.
26298   ///
26299   HRESULT PostSharedBufferToScript(
26300     /+[in]+/ ICoreWebView2SharedBuffer sharedBuffer,
26301     in COREWEBVIEW2_SHARED_BUFFER_ACCESS access,
26302     in LPCWSTR additionalDataAsJson);
26303 }
26304 
26305 /// Receives the result of the `PrintToPdfStream` method.
26306 /// `errorCode` returns S_OK if the PrintToPdfStream operation succeeded.
26307 /// The printable pdf data is returned in the `pdfStream` object.
26308 const GUID IID_ICoreWebView2PrintToPdfStreamCompletedHandler = ICoreWebView2PrintToPdfStreamCompletedHandler.iid;
26309 
26310 interface ICoreWebView2PrintToPdfStreamCompletedHandler : IUnknown
26311 {
26312     static const GUID iid = { 0x4C9F8229,0x8F93,0x444F,[ 0xA7,0x11,0x2C,0x0D,0xFD,0x63,0x59,0xD5 ] };
26313   /// Provides the result of the corresponding asynchronous method.
26314   HRESULT Invoke(in HRESULT errorCode, in IStream* pdfStream);
26315 }
26316 
26317 /// Settings used by the `Print` method.
26318 const GUID IID_ICoreWebView2PrintSettings2 = ICoreWebView2PrintSettings2.iid;
26319 
26320 interface ICoreWebView2PrintSettings2 : ICoreWebView2PrintSettings
26321 {
26322     static const GUID iid = { 0xCA7F0E1F,0x3484,0x41D1,[ 0x8C,0x1A,0x65,0xCD,0x44,0xA6,0x3F,0x8D ] };
26323   /// Page range to print. Defaults to empty string, which means print all pages.
26324   /// If the Page range is empty string or null, then it applies the default.
26325   ///
26326   /// The PageRanges property is a list of page ranges specifying one or more pages that
26327   /// should be printed separated by commas. Any whitespace between page ranges is ignored.
26328   /// A valid page range is either a single integer identifying the page to print, or a range
26329   /// in the form `[start page]-[last page]` where `start page` and `last page` are integers
26330   /// identifying the first and last inclusive pages respectively to print.
26331   /// Every page identifier is an integer greater than 0 unless wildcards are used (see below examples).
26332   /// The first page is 1.
26333   ///
26334   /// In a page range of the form `[start page]-[last page]` the start page number must be
26335   /// larger than 0 and less than or equal to the document's total page count.
26336   /// If the `start page` is not present, then 1 is used as the `start page`.
26337   /// The `last page` must be larger than the `start page`.
26338   /// If the `last page` is not present, then the document total page count is used as the `last page`.
26339   ///
26340   /// Repeating a page does not print it multiple times. To print multiple times, use the `Copies` property.
26341   ///
26342   /// The pages are always printed in ascending order, even if specified in non-ascending order.
26343   ///
26344   /// If page range is not valid or if a page is greater than document total page count,
26345   /// `ICoreWebView2PrintCompletedHandler` or `ICoreWebView2PrintToPdfStreamCompletedHandler`
26346   /// handler will return `E_INVALIDARG`.
26347   ///
26348   /// The following examples assume a document with 20 total pages.
26349   ///
26350   /// |       Example         |       Result      |               Notes                                              |
26351   /// | --- | --- | --- |
26352   /// | "2"                   |  Page 2           |                                                                  |
26353   /// | "1-4, 9, 3-6, 10, 11" |  Pages 1-6, 9-11  |                                                                  |
26354   /// | "1-4, -6"             |  Pages 1-6        | The "-6" is interpreted as "1-6".                                |
26355   /// | "2-"                  |  Pages 2-20       | The "2-" is interpreted as "pages 2 to the end of the document". |
26356   /// | "4-2, 11, -6"         |  Invalid          | "4-2" is an invalid range.                                       |
26357   /// | "-"                   |  Pages 1-20       | The "-" is interpreted as "page 1 to the end of the document".   |
26358   /// | "1-4dsf, 11"          |  Invalid          |                                                                  |
26359   /// | "2-2"                 |  Page 2           |                                                                  |
26360   ///
26361   /// The caller must free the returned string with `CoTaskMemFree`. See
26362   /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings)
26363   @(" propget")
26364 	HRESULT get_PageRanges(@("out, retval") LPWSTR* value);
26365 
26366   /// Set the `PageRanges` property.
26367   @(" propput")
26368 	HRESULT put_PageRanges(in LPCWSTR value);
26369 
26370   /// Prints multiple pages of a document on a single piece of paper. Choose from 1, 2, 4, 6, 9 or 16.
26371   /// The default value is 1.
26372   @(" propget")
26373 	HRESULT get_PagesPerSide(@("out, retval") INT32* value);
26374 
26375   /// Set the `PagesPerSide` property. Returns `E_INVALIDARG` if an invalid value is
26376   /// provided, and the current value is not changed.
26377   ///
26378   /// Below examples shows print output for PagesPerSide and Duplex.
26379   ///
26380   /// |  PagesPerSide   |    Total pages   | Two-sided printing |              Result                                               |
26381   /// | --- | --- | --- | --- |
26382   /// |      1          |      1           |        -           | 1 page on the front side.                                         |
26383   /// |      2          |      1           |        Yes         | 1 page on the front side.                                         |
26384   /// |      2          |      4           |        -           | 2 pages on the first paper and 2 pages on the next paper.         |
26385   /// |      2          |      4           |        Yes         | 2 pages on the front side and 2 pages on back side.               |
26386   /// |      4          |      4           |        Yes         | 4 pages on the front side.                                        |
26387   /// |      4          |      8           |        Yes         | 4 pages on the front side and 4 pages on the back side.           |
26388   @(" propput")
26389 	HRESULT put_PagesPerSide(in INT32 value);
26390 
26391   /// Number of copies to print. Minimum value is `1` and the maximum copies count is `999`.
26392   /// The default value is 1.
26393   ///
26394   /// This value is ignored in PrintToPdfStream method.
26395   @(" propget")
26396 	HRESULT get_Copies(@("out, retval") INT32* value);
26397 
26398   /// Set the `Copies` property. Returns `E_INVALIDARG` if an invalid value is provided
26399   /// and the current value is not changed.
26400   @(" propput")
26401 	HRESULT put_Copies(in INT32 value);
26402 
26403   /// Printer collation. See `COREWEBVIEW2_PRINT_COLLATION` for descriptions of
26404   /// collation. The default value is `COREWEBVIEW2_PRINT_COLLATION_DEFAULT`.
26405   ///
26406   /// Printing uses default value of printer's collation if an invalid value is provided
26407   /// for the specific printer.
26408   ///
26409   /// This value is ignored in PrintToPdfStream method.
26410   @(" propget")
26411 	HRESULT get_Collation(@("out, retval") COREWEBVIEW2_PRINT_COLLATION* value);
26412 
26413   /// Set the `Collation` property.
26414   @(" propput")
26415 	HRESULT put_Collation(in COREWEBVIEW2_PRINT_COLLATION value);
26416 
26417   /// Printer color mode. See `COREWEBVIEW2_PRINT_COLOR_MODE` for descriptions
26418   /// of color modes. The default value is `COREWEBVIEW2_PRINT_COLOR_MODE_DEFAULT`.
26419   ///
26420   /// Printing uses default value of printer supported color if an invalid value is provided
26421   /// for the specific printer.
26422   @(" propget")
26423 	HRESULT get_ColorMode(@("out, retval") COREWEBVIEW2_PRINT_COLOR_MODE* value);
26424 
26425   /// Set the `ColorMode` property.
26426   @(" propput")
26427 	HRESULT put_ColorMode(in COREWEBVIEW2_PRINT_COLOR_MODE value);
26428 
26429   /// Printer duplex settings. See `COREWEBVIEW2_PRINT_DUPLEX` for descriptions of duplex.
26430   /// The default value is `COREWEBVIEW2_PRINT_DUPLEX_DEFAULT`.
26431   ///
26432   /// Printing uses default value of printer's duplex if an invalid value is provided
26433   /// for the specific printer.
26434   ///
26435   /// This value is ignored in PrintToPdfStream method.
26436   @(" propget")
26437 	HRESULT get_Duplex(@("out, retval") COREWEBVIEW2_PRINT_DUPLEX* value);
26438 
26439   /// Set the `Duplex` property.
26440   @(" propput")
26441 	HRESULT put_Duplex(in COREWEBVIEW2_PRINT_DUPLEX value);
26442 
26443   /// Printer media size. See `COREWEBVIEW2_PRINT_MEDIA_SIZE` for descriptions of media size.
26444   /// The default value is `COREWEBVIEW2_PRINT_MEDIA_SIZE_DEFAULT`.
26445   ///
26446   /// If media size is `COREWEBVIEW2_PRINT_MEDIA_SIZE_CUSTOM`, you should set the `PageWidth`
26447   /// and `PageHeight`.
26448   ///
26449   /// Printing uses default value of printer supported media size if an invalid value is provided
26450   /// for the specific printer.
26451   ///
26452   /// This value is ignored in PrintToPdfStream method.
26453   @(" propget")
26454 	HRESULT get_MediaSize(@("out, retval") COREWEBVIEW2_PRINT_MEDIA_SIZE* value);
26455 
26456   /// Set the `MediaSize` property.
26457   @(" propput")
26458 	HRESULT put_MediaSize(in COREWEBVIEW2_PRINT_MEDIA_SIZE value);
26459 
26460   /// The name of the printer to use. Defaults to empty string.
26461   /// If the printer name is empty string or null, then it prints to the default
26462   /// printer on the user OS.
26463   ///
26464   /// This value is ignored in PrintToPdfStream method.
26465   ///
26466   /// The caller must free the returned string with `CoTaskMemFree`. See
26467   /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings)
26468   @(" propget")
26469 	HRESULT get_PrinterName(@("out, retval") LPWSTR* value);
26470 
26471   /// Set the `PrinterName` property. If provided printer name doesn't match
26472   /// with the name of any installed printers on the user OS,
26473   /// `ICoreWebView2PrintCompletedHandler` handler will return `errorCode` as
26474   /// `S_OK` and `printStatus` as COREWEBVIEW2_PRINT_STATUS_PRINTER_UNAVAILABLE.
26475   ///
26476   /// Use [Enum Printers](/windows/win32/printdocs/enumprinters)
26477   /// to enumerate available printers.
26478   @(" propput")
26479 	HRESULT put_PrinterName(in LPCWSTR value);
26480 }
26481 
26482 /// This interface is an extension of `ICoreWebView2_17` that manages
26483 /// navigation requests to URI schemes registered with the OS.
26484 const GUID IID_ICoreWebView2_18 = ICoreWebView2_18.iid;
26485 
26486 interface ICoreWebView2_18 : ICoreWebView2_17
26487 {
26488     static const GUID iid = { 0x7A626017,0x28BE,0x49B2,[ 0xB8,0x65,0x3B,0xA2,0xB3,0x52,0x2D,0x90 ] };
26489   /// Add an event handler for the `LaunchingExternalUriScheme` event.
26490   /// The `LaunchingExternalUriScheme` event is raised when a navigation request is made to
26491   /// a URI scheme that is registered with the OS.
26492   /// The `LaunchingExternalUriScheme` event handler may suppress the default dialog
26493   /// or replace the default dialog with a custom dialog.
26494   ///
26495   /// If a deferral is not taken on the event args, the external URI scheme launch is
26496   /// blocked until the event handler returns.  If a deferral is taken, the
26497   /// external URI scheme launch is blocked until the deferral is completed.
26498   /// The host also has the option to cancel the URI scheme launch.
26499   ///
26500   /// The `NavigationStarting` and `NavigationCompleted` events will be raised,
26501   /// regardless of whether the `Cancel` property is set to `TRUE` or
26502   /// `FALSE`. The `NavigationCompleted` event will be raised with the `IsSuccess` property
26503   /// set to `FALSE` and the `WebErrorStatus` property set to `ConnectionAborted` regardless of
26504   /// whether the host sets the `Cancel` property on the
26505   /// `ICoreWebView2LaunchingExternalUriSchemeEventArgs`. The `SourceChanged`, `ContentLoading`,
26506   /// and `HistoryChanged` events will not be raised for this navigation to the external URI
26507   /// scheme regardless of the `Cancel` property.
26508   /// The `LaunchingExternalUriScheme` event will be raised after the
26509   /// `NavigationStarting` event and before the `NavigationCompleted` event.
26510   /// The default `CoreWebView2Settings` will also be updated upon navigation to an external
26511   /// URI scheme. If a setting on the `CoreWebView2Settings` interface has been changed,
26512   /// navigating to an external URI scheme will trigger the `CoreWebView2Settings` to update.
26513   ///
26514   /// The WebView2 may not display the default dialog based on user settings, browser settings,
26515   /// and whether the origin is determined as a
26516   /// [trustworthy origin](https://w3c.github.io/webappsec-secure-contexts#
26517   /// potentially-trustworthy-origin); however, the event will still be raised.
26518   ///
26519   /// If the request is initiated by a cross-origin frame without a user gesture,
26520   /// the request will be blocked and the `LaunchingExternalUriScheme` event will not
26521   /// be raised.
26522   /// \snippet SettingsComponent.cpp ToggleLaunchingExternalUriScheme
26523   HRESULT add_LaunchingExternalUriScheme(
26524       /+[in]+/ ICoreWebView2LaunchingExternalUriSchemeEventHandler eventHandler,
26525       @("out") EventRegistrationToken* token);
26526 
26527   /// Remove an event handler previously added with
26528   /// `add_LaunchingExternalUriScheme`.
26529   HRESULT remove_LaunchingExternalUriScheme(
26530       in EventRegistrationToken token);
26531 }
26532 
26533 /// This interface is an extension of `ICoreWebView2_18` that manages memory usage
26534 /// target level.
26535 const GUID IID_ICoreWebView2_19 = ICoreWebView2_19.iid;
26536 
26537 interface ICoreWebView2_19 : ICoreWebView2_18
26538 {
26539     static const GUID iid = { 0x6921F954,0x79B0,0x437F,[ 0xA9,0x97,0xC8,0x58,0x11,0x89,0x7C,0x68 ] };
26540 
26541   /// `MemoryUsageTargetLevel` indicates desired memory consumption level of
26542   /// WebView.
26543   @(" propget")
26544 	HRESULT get_MemoryUsageTargetLevel(
26545       @("out, retval") COREWEBVIEW2_MEMORY_USAGE_TARGET_LEVEL* level);
26546 
26547   /// An app may set `MemoryUsageTargetLevel` to indicate desired memory
26548   /// consumption level of WebView. Scripts will not be impacted and continue
26549   /// to run. This is useful for inactive apps that still want to run scripts
26550   /// and/or keep network connections alive and therefore could not call
26551   /// `TrySuspend` and `Resume` to reduce memory consumption. These apps can
26552   /// set memory usage target level to `COREWEBVIEW2_MEMORY_USAGE_TARGET_LEVEL_LOW`
26553   /// when the app becomes inactive, and set back to
26554   /// `COREWEBVIEW2_MEMORY_USAGE_TARGET_LEVEL_NORMAL` when the app becomes
26555   /// active. It is not necessary to set CoreWebView2Controller's IsVisible
26556   /// property to false when setting the property.
26557   /// It is a best effort operation to change memory usage level, and the
26558   /// API will return before the operation completes.
26559   /// Setting the level to `COREWEBVIEW2_MEMORY_USAGE_TARGET_LEVEL_LOW`
26560   /// could potentially cause memory for some WebView browser processes to be
26561   /// swapped out to disk in some circumstances.
26562   /// It is a best effort to reduce memory usage as much as possible. If a script
26563   /// runs after its related memory has been swapped out, the memory will be swapped
26564   /// back in to ensure the script can still run, but performance might be impacted.
26565   /// Therefore, the app should set the level back to
26566   /// `COREWEBVIEW2_MEMORY_USAGE_TARGET_LEVEL_NORMAL` when the app becomes
26567   /// active again. Setting memory usage target level back to normal will not happen
26568   /// automatically.
26569   /// An app should choose to use either the combination of `TrySuspend` and `Resume`
26570   /// or the combination of setting MemoryUsageTargetLevel to low and normal. It is
26571   /// not advisable to mix them.
26572   /// Trying to set `MemoryUsageTargetLevel` while suspended will be ignored.
26573   /// The `TrySuspend` and `Resume` methods will change the `MemoryUsageTargetLevel`.
26574   /// `TrySuspend` will automatically set `MemoryUsageTargetLevel` to low while
26575   /// `Resume` on suspended WebView will automatically set `MemoryUsageTargetLevel`
26576   /// to normal. Calling `Resume` when the WebView is not suspended would not change
26577   /// `MemoryUsageTargetLevel`.
26578   ///
26579   /// \snippet ViewComponent.cpp MemoryUsageTargetLevel
26580   @(" propput")
26581 	HRESULT put_MemoryUsageTargetLevel(
26582       in COREWEBVIEW2_MEMORY_USAGE_TARGET_LEVEL level);
26583 }
26584 
26585 /// This interface is an extension of `ICoreWebView2_19` that provides the `FrameId` property.
26586 const GUID IID_ICoreWebView2_20 = ICoreWebView2_20.iid;
26587 
26588 interface ICoreWebView2_20 : ICoreWebView2_19
26589 {
26590     static const GUID iid = { 0xb4bc1926,0x7305,0x11ee,[ 0xb9,0x62,0x02,0x42,0xac,0x12,0x00,0x02 ] };
26591   /// The unique identifier of the main frame. It's the same kind of ID as
26592   /// with the `FrameId` in `CoreWebView2Frame` and via `CoreWebView2FrameInfo`.
26593   /// Note that `FrameId` may not be valid if `CoreWebView2` has not done
26594   /// any navigation. It's safe to get this value during or after the first
26595   /// `ContentLoading` event. Otherwise, it could return the invalid frame Id 0.
26596   @(" propget")
26597 	HRESULT get_FrameId(@("out, retval") UINT32* id);
26598 }
26599 
26600 /// Event handler for the `LaunchingExternalUriScheme` event.
26601 const GUID IID_ICoreWebView2LaunchingExternalUriSchemeEventHandler = ICoreWebView2LaunchingExternalUriSchemeEventHandler.iid;
26602 
26603 interface ICoreWebView2LaunchingExternalUriSchemeEventHandler : IUnknown
26604 {
26605     static const GUID iid = { 0x74F712E0,0x8165,0x43A9,[ 0xA1,0x3F,0x0C,0xCE,0x59,0x7E,0x75,0xDF ] };
26606   /// Receives the event args for the corresponding event.
26607   HRESULT Invoke(
26608       /+[in]+/ ICoreWebView2 sender,
26609       /+[in]+/ ICoreWebView2LaunchingExternalUriSchemeEventArgs args);
26610 }
26611 
26612 /// Event args for `LaunchingExternalUriScheme` event.
26613 const GUID IID_ICoreWebView2LaunchingExternalUriSchemeEventArgs = ICoreWebView2LaunchingExternalUriSchemeEventArgs.iid;
26614 
26615 interface ICoreWebView2LaunchingExternalUriSchemeEventArgs : IUnknown
26616 {
26617     static const GUID iid = { 0x07D1A6C3,0x7175,0x4BA1,[ 0x93,0x06,0xE5,0x93,0xCA,0x07,0xE4,0x6C ] };
26618   /// The URI with the external URI scheme to be launched.
26619 
26620   @(" propget")
26621 	HRESULT get_Uri(@("out, retval") LPWSTR* value);
26622 
26623   /// The origin initiating the external URI scheme launch.
26624   /// The origin will be an empty string if the request is initiated by calling
26625   /// `CoreWebView2.Navigate` on the external URI scheme. If a script initiates
26626   /// the navigation, the `InitiatingOrigin` will be the top-level document's
26627   /// `Source`, for example, if `window.location` is set to `"calculator://", the
26628   /// `InitiatingOrigin` will be set to `calculator://`. If the request is initiated
26629   ///  from a child frame, the `InitiatingOrigin` will be the source of that child frame.
26630 
26631   @(" propget")
26632 	HRESULT get_InitiatingOrigin(@("out, retval") LPWSTR* value);
26633 
26634   /// `TRUE` when the external URI scheme request was initiated through a user gesture.
26635   ///
26636   /// \> [!NOTE]\n\> Being initiated through a user gesture does not mean that user intended
26637   /// to access the associated resource.
26638 
26639   @(" propget")
26640 	HRESULT get_IsUserInitiated(@("out, retval") BOOL* value);
26641 
26642   /// The event handler may set this property to `TRUE` to cancel the external URI scheme
26643   /// launch. If set to `TRUE`, the external URI scheme will not be launched, and the default
26644   /// dialog is not displayed. This property can be used to replace the normal
26645   /// handling of launching an external URI scheme.
26646   /// The initial value of the `Cancel` property is `FALSE`.
26647 
26648   @(" propget")
26649 	HRESULT get_Cancel(@("out, retval") BOOL* value);
26650 
26651   /// Sets the `Cancel` property.
26652 
26653   @(" propput")
26654 	HRESULT put_Cancel(in BOOL value);
26655 
26656   /// Returns an `ICoreWebView2Deferral` object.  Use this operation to
26657   /// complete the event at a later time.
26658 
26659   HRESULT GetDeferral(@("out, retval") ICoreWebView2Deferral * value);
26660 }
26661 
26662 /// The caller implements this interface to handle the BasicAuthenticationRequested event.
26663 const GUID IID_ICoreWebView2BasicAuthenticationRequestedEventHandler = ICoreWebView2BasicAuthenticationRequestedEventHandler.iid;
26664 
26665 interface ICoreWebView2BasicAuthenticationRequestedEventHandler : IUnknown
26666 {
26667     static const GUID iid = { 0x58b4d6c2,0x18d4,0x497e,[ 0xb3,0x9b,0x9a,0x96,0x53,0x3f,0xa2,0x78 ] };
26668   /// Called to provide the implementer with the event args for the
26669   /// corresponding event.
26670   HRESULT Invoke(
26671       /+[in]+/ ICoreWebView2 sender,
26672       /+[in]+/ ICoreWebView2BasicAuthenticationRequestedEventArgs args);
26673 }
26674 
26675 /// Implements the interface to receive `IsDefaultDownloadDialogOpenChanged`
26676 /// events.
26677 const GUID IID_ICoreWebView2IsDefaultDownloadDialogOpenChangedEventHandler = ICoreWebView2IsDefaultDownloadDialogOpenChangedEventHandler.iid;
26678 
26679 interface ICoreWebView2IsDefaultDownloadDialogOpenChangedEventHandler : IUnknown
26680 {
26681     static const GUID iid = { 0x3117da26,0xae13,0x438d,[ 0xbd,0x46,0xed,0xbe,0xb2,0xc4,0xce,0x81 ] };
26682   /// Provides the event args for the corresponding event. No event args exist
26683   /// and the `args` parameter is set to `null`.
26684   HRESULT Invoke(/+[in]+/ ICoreWebView2 sender,
26685                  /+[in]+/ IUnknown args);
26686 }
26687 
26688 /// Receives the result of the `PrintToPdf` method. If the print to PDF
26689 /// operation succeeds, `isSuccessful` is true. Otherwise, if the operation
26690 /// failed, `isSuccessful` is set to false. An invalid path returns
26691 /// `E_INVALIDARG`.
26692 const GUID IID_ICoreWebView2PrintToPdfCompletedHandler = ICoreWebView2PrintToPdfCompletedHandler.iid;
26693 
26694 interface ICoreWebView2PrintToPdfCompletedHandler : IUnknown
26695 {
26696     static const GUID iid = { 0xccf1ef04,0xfd8e,0x4d5f,[ 0xb2,0xde,0x09,0x83,0xe4,0x1b,0x8c,0x36 ] };
26697 
26698   /// Provides the result of the corresponding asynchronous method.
26699   HRESULT Invoke(in HRESULT errorCode, BOOL isSuccessful);
26700 }
26701 
26702 /// Settings used by the `PrintToPdf` method.
26703 const GUID IID_ICoreWebView2PrintSettings = ICoreWebView2PrintSettings.iid;
26704 
26705 interface ICoreWebView2PrintSettings : IUnknown
26706 {
26707     static const GUID iid = { 0x377f3721,0xc74e,0x48ca,[ 0x8d,0xb1,0xdf,0x68,0xe5,0x1d,0x60,0xe2 ] };
26708 
26709   /// The orientation can be portrait or landscape. The default orientation is
26710   /// portrait. See `COREWEBVIEW2_PRINT_ORIENTATION`.
26711   @(" propget")
26712 	HRESULT get_Orientation(
26713     @("out, retval") COREWEBVIEW2_PRINT_ORIENTATION* orientation);
26714 
26715   /// Sets the `Orientation` property.
26716   @(" propput")
26717 	HRESULT put_Orientation(
26718       in COREWEBVIEW2_PRINT_ORIENTATION orientation);
26719 
26720   /// The scale factor is a value between 0.1 and 2.0. The default is 1.0.
26721   @(" propget")
26722 	HRESULT get_ScaleFactor(@("out, retval") double* scaleFactor);
26723 
26724   /// Sets the `ScaleFactor` property. Returns `E_INVALIDARG` if an invalid
26725   /// value is provided, and the current value is not changed.
26726   @(" propput")
26727 	HRESULT put_ScaleFactor(in double scaleFactor);
26728 
26729   /// The page width in inches. The default width is 8.5 inches.
26730   @(" propget")
26731 	HRESULT get_PageWidth(@("out, retval") double* pageWidth);
26732 
26733   /// Sets the `PageWidth` property. Returns `E_INVALIDARG` if the page width is
26734   /// less than or equal to zero, and the current value is not changed.
26735   @(" propput")
26736 	HRESULT put_PageWidth(in double pageWidth);
26737 
26738   /// The page height in inches. The default height is 11 inches.
26739   @(" propget")
26740 	HRESULT get_PageHeight(@("out, retval") double* pageHeight);
26741 
26742   /// Sets the `PageHeight` property. Returns `E_INVALIDARG` if the page height
26743   /// is less than or equal to zero, and the current value is not changed.
26744   @(" propput")
26745 	HRESULT put_PageHeight(in double pageHeight);
26746 
26747   /// The top margin in inches. The default is 1 cm, or ~0.4 inches.
26748   @(" propget")
26749 	HRESULT get_MarginTop(@("out, retval") double* marginTop);
26750 
26751   /// Sets the `MarginTop` property. A margin cannot be less than zero.
26752   /// Returns `E_INVALIDARG` if an invalid value is provided, and the current
26753   /// value is not changed.
26754   @(" propput")
26755 	HRESULT put_MarginTop(in double marginTop);
26756 
26757   /// The bottom margin in inches. The default is 1 cm, or ~0.4 inches.
26758   @(" propget")
26759 	HRESULT get_MarginBottom(@("out, retval") double* marginBottom);
26760 
26761   /// Sets the `MarginBottom` property. A margin cannot be less than zero.
26762   /// Returns `E_INVALIDARG` if an invalid value is provided, and the current
26763   /// value is not changed.
26764   @(" propput")
26765 	HRESULT put_MarginBottom(in double marginBottom);
26766 
26767   /// The left margin in inches. The default is 1 cm, or ~0.4 inches.
26768   @(" propget")
26769 	HRESULT get_MarginLeft(@("out, retval") double* marginLeft);
26770 
26771   /// Sets the `MarginLeft` property. A margin cannot be less than zero.
26772   /// Returns `E_INVALIDARG` if an invalid value is provided, and the current
26773   /// value is not changed.
26774   @(" propput")
26775 	HRESULT put_MarginLeft(in double marginLeft);
26776 
26777   /// The right margin in inches. The default is 1 cm, or ~0.4 inches.
26778   @(" propget")
26779 	HRESULT get_MarginRight(@("out, retval") double* marginRight);
26780 
26781   /// Set the `MarginRight` property.A margin cannot be less than zero.
26782   /// Returns `E_INVALIDARG` if an invalid value is provided, and the current
26783   /// value is not changed.
26784   @(" propput")
26785 	HRESULT put_MarginRight(in double marginRight);
26786 
26787   /// `TRUE` if background colors and images should be printed. The default value
26788   /// is `FALSE`.
26789   @(" propget")
26790 	HRESULT get_ShouldPrintBackgrounds(
26791       @("out, retval") BOOL* shouldPrintBackgrounds);
26792 
26793   /// Set the `ShouldPrintBackgrounds` property.
26794   @(" propput")
26795 	HRESULT put_ShouldPrintBackgrounds(in BOOL shouldPrintBackgrounds);
26796 
26797   /// `TRUE` if only the current end user's selection of HTML in the document
26798   /// should be printed. The default value is `FALSE`.
26799   @(" propget")
26800 	HRESULT get_ShouldPrintSelectionOnly(
26801       @("out, retval") BOOL* shouldPrintSelectionOnly);
26802 
26803   /// Set the `ShouldPrintSelectionOnly` property.
26804   @(" propput")
26805 	HRESULT put_ShouldPrintSelectionOnly(
26806       in BOOL shouldPrintSelectionOnly);
26807 
26808   /// `TRUE` if header and footer should be printed. The default value is `FALSE`.
26809   /// The header consists of the date and time of printing, and the title of the
26810   /// page. The footer consists of the URI and page number. The height of the
26811   /// header and footer is 0.5 cm, or ~0.2 inches.
26812   @(" propget")
26813 	HRESULT get_ShouldPrintHeaderAndFooter(
26814       @("out, retval") BOOL* shouldPrintHeaderAndFooter);
26815 
26816   /// Set the `ShouldPrintHeaderAndFooter` property.
26817   @(" propput")
26818 	HRESULT put_ShouldPrintHeaderAndFooter(
26819       in BOOL shouldPrintHeaderAndFooter);
26820 
26821   /// The title in the header if `ShouldPrintHeaderAndFooter` is `TRUE`. The
26822   /// default value is the title of the current document.
26823   ///
26824   /// The caller must free the returned string with `CoTaskMemFree`.  See
26825   /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings).
26826   @(" propget")
26827 	HRESULT get_HeaderTitle(@("out, retval") LPWSTR* headerTitle);
26828 
26829   /// Set the `HeaderTitle` property. If an empty string or null value is
26830   /// provided, no title is shown in the header.
26831   @(" propput")
26832 	HRESULT put_HeaderTitle(in LPCWSTR headerTitle);
26833 
26834   /// The URI in the footer if `ShouldPrintHeaderAndFooter` is `TRUE`. The
26835   /// default value is the current URI.
26836   ///
26837   /// The caller must free the returned string with `CoTaskMemFree`.  See
26838   /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings).
26839   @(" propget")
26840 	HRESULT get_FooterUri(@("out, retval") LPWSTR* footerUri);
26841 
26842   /// Set the `FooterUri` property. If an empty string or null value is
26843   /// provided, no URI is shown in the footer.
26844   @(" propput")
26845 	HRESULT put_FooterUri(in LPCWSTR footerUri);
26846 }
26847 
26848 /// The caller implements this interface to receive the TrySuspend result.
26849 const GUID IID_ICoreWebView2TrySuspendCompletedHandler = ICoreWebView2TrySuspendCompletedHandler.iid;
26850 
26851 interface ICoreWebView2TrySuspendCompletedHandler : IUnknown
26852 {
26853     static const GUID iid = { 0x00F206A7,0x9D17,0x4605,[ 0x91,0xF6,0x4E,0x8E,0x4D,0xE1,0x92,0xE3 ] };
26854 
26855   /// Provides the result of the TrySuspend operation.
26856   /// See [Sleeping Tabs FAQ](https://techcommunity.microsoft.com/t5/articles/sleeping-tabs-faq/m-p/1705434)
26857   /// for conditions that might prevent WebView from being suspended. In those situations,
26858   /// isSuccessful will be false and errorCode is S_OK.
26859   HRESULT Invoke(in HRESULT errorCode, in BOOL isSuccessful);
26860 }
26861 
26862 /// The owner of the `CoreWebView2` object that provides support for resizing,
26863 /// showing and hiding, focusing, and other functionality related to
26864 /// windowing and composition.  The `CoreWebView2Controller` owns the
26865 /// `CoreWebView2`, and if all references to the `CoreWebView2Controller` go
26866 /// away, the WebView is closed.
26867 const GUID IID_ICoreWebView2Controller = ICoreWebView2Controller.iid;
26868 
26869 interface ICoreWebView2Controller : IUnknown
26870 {
26871     static const GUID iid = { 0x4d00c0d1,0x9434,0x4eb6,[ 0x80,0x78,0x86,0x97,0xa5,0x60,0x33,0x4f ] };
26872 
26873   /// The `IsVisible` property determines whether to show or hide the WebView2.
26874   ///   If `IsVisible` is set to `FALSE`, the WebView2 is transparent and is
26875   /// not rendered.   However, this does not affect the window containing the
26876   /// WebView2 (the `HWND` parameter that was passed to
26877   /// `CreateCoreWebView2Controller`).  If you want that window to disappear
26878   /// too, run `ShowWindow` on it directly in addition to modifying the
26879   /// `IsVisible` property.  WebView2 as a child window does not get window
26880   /// messages when the top window is minimized or restored.  For performance
26881   /// reasons, developers should set the `IsVisible` property of the WebView to
26882   /// `FALSE` when the app window is minimized and back to `TRUE` when the app
26883   /// window is restored. The app window does this by handling
26884   /// `SIZE_MINIMIZED and SIZE_RESTORED` command upon receiving `WM_SIZE`
26885   /// message.
26886   ///
26887   /// There are CPU and memory benefits when the page is hidden. For instance,
26888   /// Chromium has code that throttles activities on the page like animations
26889   /// and some tasks are run less frequently. Similarly, WebView2 will
26890   /// purge some caches to reduce memory usage.
26891   ///
26892   /// \snippet ViewComponent.cpp ToggleIsVisible
26893   @(" propget")
26894 	HRESULT get_IsVisible(@("out, retval") BOOL* isVisible);
26895 
26896   /// Sets the `IsVisible` property.
26897   ///
26898   /// \snippet ViewComponent.cpp ToggleIsVisibleOnMinimize
26899   @(" propput")
26900 	HRESULT put_IsVisible(in BOOL isVisible);
26901 
26902   /// The WebView bounds. Bounds are relative to the parent `HWND`.  The app
26903   /// has two ways to position a WebView.
26904   ///
26905   /// *   Create a child `HWND` that is the WebView parent `HWND`.  Position
26906   ///     the window where the WebView should be.  Use `(0, 0)` for the
26907   ///     top-left corner (the offset) of the `Bounds` of the WebView.
26908   /// *   Use the top-most window of the app as the WebView parent HWND.  For
26909   ///     example, to position WebView correctly in the app, set the top-left
26910   ///     corner of the Bound of the WebView.
26911   ///
26912   /// The values of `Bounds` are limited by the coordinate space of the host.
26913 
26914   @(" propget")
26915 	HRESULT get_Bounds(@("out, retval") RECT* bounds);
26916 
26917   /// Sets the `Bounds` property.
26918   ///
26919   /// \snippet ViewComponent.cpp ResizeWebView
26920 
26921   @(" propput")
26922 	HRESULT put_Bounds(in RECT bounds);
26923 
26924   /// The zoom factor for the WebView.
26925   ///
26926   /// \> [!NOTE]\n\> Changing zoom factor may cause `window.innerWidth`,
26927   /// `window.innerHeight`, both, and page layout to change.  A zoom factor
26928   /// that is applied by the host by running `ZoomFactor` becomes the new
26929   /// default zoom for the WebView.  The zoom factor applies across navigations
26930   /// and is the zoom factor WebView is returned to when the user chooses
26931   /// Ctrl+0.  When the zoom factor is changed by the user (resulting in
26932   /// the app receiving `ZoomFactorChanged`), that zoom applies only for the
26933   /// current page.  Any user applied zoom is only for the current page and is
26934   /// reset on a navigation.  Specifying a `zoomFactor` less than or equal to
26935   /// `0` is not allowed.  WebView also has an internal supported zoom factor
26936   /// range.  When a specified zoom factor is out of that range, it is
26937   /// normalized to be within the range, and a `ZoomFactorChanged` event is
26938   /// triggered for the real applied zoom factor.  When the range normalization
26939   /// happens, the `ZoomFactor` property reports the zoom factor specified
26940   /// during the previous modification of the `ZoomFactor` property until the
26941   /// `ZoomFactorChanged` event is received after WebView applies the
26942   /// normalized zoom factor.
26943 
26944   @(" propget")
26945 	HRESULT get_ZoomFactor(@("out, retval") double* zoomFactor);
26946 
26947   /// Sets the `ZoomFactor` property.
26948 
26949   @(" propput")
26950 	HRESULT put_ZoomFactor(in double zoomFactor);
26951 
26952   /// Adds an event handler for the `ZoomFactorChanged` event.
26953   /// `ZoomFactorChanged` runs when the `ZoomFactor` property of the WebView
26954   /// changes.  The event may run because the `ZoomFactor` property was
26955   /// modified, or due to the user manually modifying the zoom.  When it is
26956   /// modified using the `ZoomFactor` property, the internal zoom factor is
26957   /// updated immediately and no `ZoomFactorChanged` event is triggered.
26958   /// WebView associates the last used zoom factor for each site.  It is
26959   /// possible for the zoom factor to change when navigating to a different
26960   /// page.  When the zoom factor changes due to a navigation change, the
26961   /// `ZoomFactorChanged` event runs right after the `ContentLoading` event.
26962   ///
26963   /// \snippet ViewComponent.cpp ZoomFactorChanged
26964 
26965   HRESULT add_ZoomFactorChanged(
26966       /+[in]+/ ICoreWebView2ZoomFactorChangedEventHandler eventHandler,
26967       @("out") EventRegistrationToken* token);
26968 
26969   /// Remove an event handler previously added with `add_ZoomFactorChanged`.
26970 
26971   HRESULT remove_ZoomFactorChanged(
26972       in EventRegistrationToken token);
26973 
26974   /// Updates `Bounds` and `ZoomFactor` properties at the same time.  This
26975   /// operation is atomic from the perspective of the host.  After returning
26976   /// from this function, the `Bounds` and `ZoomFactor` properties are both
26977   /// updated if the function is successful, or neither is updated if the
26978   /// function fails.  If `Bounds` and `ZoomFactor` are both updated by the
26979   /// same scale (for example, `Bounds` and `ZoomFactor` are both doubled),
26980   /// then the page does not display a change in `window.innerWidth` or
26981   /// `window.innerHeight` and the WebView renders the content at the new size
26982   /// and zoom without intermediate renderings.  This function also updates
26983   /// just one of `ZoomFactor` or `Bounds` by passing in the new value for one
26984   /// and the current value for the other.
26985   ///
26986   /// \snippet ViewComponent.cpp SetBoundsAndZoomFactor
26987 
26988   HRESULT SetBoundsAndZoomFactor(in RECT bounds, in double zoomFactor);
26989 
26990   /// Moves focus into WebView.  WebView gets focus and focus is set to
26991   /// correspondent element in the page hosted in the WebView.  For
26992   /// Programmatic reason, focus is set to previously focused element or the
26993   /// default element if no previously focused element exists.  For `Next`
26994   /// reason, focus is set to the first element.  For `Previous` reason, focus
26995   /// is set to the last element.  WebView changes focus through user
26996   /// interaction including selecting into a WebView or Tab into it.  For
26997   /// tabbing, the app runs MoveFocus with Next or Previous to align with Tab
26998   /// and Shift+Tab respectively when it decides the WebView is the next
26999   /// element that may exist in a tab.  Or, the app runs `IsDialogMessage`
27000   /// as part of the associated message loop to allow the platform to auto
27001   /// handle tabbing.  The platform rotates through all windows with
27002   /// `WS_TABSTOP`.  When the WebView gets focus from `IsDialogMessage`, it is
27003   /// internally put the focus on the first or last element for tab and
27004   /// Shift+Tab respectively.
27005   ///
27006   /// \snippet App.cpp MoveFocus0
27007   ///
27008   /// \snippet ControlComponent.cpp MoveFocus1
27009   ///
27010   /// \snippet ControlComponent.cpp MoveFocus2
27011 
27012   HRESULT MoveFocus(in COREWEBVIEW2_MOVE_FOCUS_REASON reason);
27013 
27014   /// Adds an event handler for the `MoveFocusRequested` event.
27015   /// `MoveFocusRequested` runs when user tries to tab out of the WebView.  The
27016   /// focus of the WebView has not changed when this event is run.
27017   ///
27018   /// \snippet ControlComponent.cpp MoveFocusRequested
27019 
27020   HRESULT add_MoveFocusRequested(
27021       /+[in]+/ ICoreWebView2MoveFocusRequestedEventHandler eventHandler,
27022       @("out") EventRegistrationToken* token);
27023 
27024   /// Removes an event handler previously added with `add_MoveFocusRequested`.
27025 
27026   HRESULT remove_MoveFocusRequested(
27027       in EventRegistrationToken token);
27028 
27029   /// Adds an event handler for the `GotFocus` event.  `GotFocus` runs when
27030   /// WebView has focus.
27031 
27032   HRESULT add_GotFocus(
27033       /+[in]+/ ICoreWebView2FocusChangedEventHandler eventHandler,
27034       @("out") EventRegistrationToken* token);
27035 
27036   /// Removes an event handler previously added with `add_GotFocus`.
27037 
27038   HRESULT remove_GotFocus(
27039       in EventRegistrationToken token);
27040 
27041   /// Adds an event handler for the `LostFocus` event.  `LostFocus` runs when
27042   /// WebView loses focus.  In the case where `MoveFocusRequested` event is
27043   /// run, the focus is still on WebView when `MoveFocusRequested` event runs.
27044   /// `LostFocus` only runs afterwards when code of the app or default action
27045   /// of `MoveFocusRequested` event set focus away from WebView.
27046 
27047   HRESULT add_LostFocus(
27048       /+[in]+/ ICoreWebView2FocusChangedEventHandler eventHandler,
27049       @("out") EventRegistrationToken* token);
27050 
27051   /// Removes an event handler previously added with `add_LostFocus`.
27052 
27053   HRESULT remove_LostFocus(
27054       in EventRegistrationToken token);
27055 
27056   /// Adds an event handler for the `AcceleratorKeyPressed` event.
27057   /// `AcceleratorKeyPressed` runs when an accelerator key or key combo is
27058   /// pressed or released while the WebView is focused.  A key is considered an
27059   ///  accelerator if either of the following conditions are true.
27060   ///
27061   /// *   Ctrl or Alt is currently being held.
27062   /// *   The pressed key does not map to a character.
27063   ///
27064   /// A few specific keys are never considered accelerators, such as Shift.
27065   /// The `Escape` key is always considered an accelerator.
27066   ///
27067   /// Auto-repeated key events caused by holding the key down also triggers
27068   /// this event.  Filter out the auto-repeated key events by verifying the
27069   /// `KeyEventLParam` or `PhysicalKeyStatus` event args.
27070   ///
27071   /// In windowed mode, the event handler is run synchronously.  Until you
27072   /// run `Handled()` on the event args or the event handler returns, the
27073   /// browser process is blocked and outgoing cross-process COM requests fail
27074   /// with `RPC_E_CANTCALLOUT_ININPUTSYNCCALL`.  All `CoreWebView2` API methods
27075   /// work, however.
27076   ///
27077   /// In windowless mode, the event handler is run asynchronously.  Further
27078   /// input do not reach the browser until the event handler returns or
27079   /// `Handled()` is run, but the browser process is not blocked, and outgoing
27080   /// COM requests work normally.
27081   ///
27082   /// It is recommended to run `Handled(TRUE)` as early as are able to know
27083   /// that you want to handle the accelerator key.
27084   ///
27085   /// \snippet ControlComponent.cpp AcceleratorKeyPressed
27086 
27087   HRESULT add_AcceleratorKeyPressed(
27088     /+[in]+/ ICoreWebView2AcceleratorKeyPressedEventHandler eventHandler,
27089     @("out") EventRegistrationToken* token);
27090 
27091   /// Removes an event handler previously added with
27092   /// `add_AcceleratorKeyPressed`.
27093 
27094   HRESULT remove_AcceleratorKeyPressed(
27095     in EventRegistrationToken token);
27096 
27097   /// The parent window provided by the app that this WebView is using to
27098   /// render content.  This API initially returns the window passed into
27099   /// `CreateCoreWebView2Controller`.
27100 
27101   @(" propget")
27102 	HRESULT get_ParentWindow(@("out, retval") HWND* parentWindow);
27103 
27104   /// Sets the parent window for the WebView.  This causes the WebView to
27105   /// re-parent the main WebView window to the newly provided window.
27106 
27107   @(" propput")
27108 	HRESULT put_ParentWindow(in HWND parentWindow);
27109 
27110   /// This is a notification separate from `Bounds` that tells WebView that the
27111   ///  main WebView parent (or any ancestor) `HWND` moved.  This is needed
27112   /// for accessibility and certain dialogs in WebView to work correctly.
27113   ///
27114   /// \snippet ViewComponent.cpp NotifyParentWindowPositionChanged
27115 
27116   HRESULT NotifyParentWindowPositionChanged();
27117 
27118   /// Closes the WebView and cleans up the underlying browser instance.
27119   /// Cleaning up the browser instance releases the resources powering the
27120   /// WebView.  The browser instance is shut down if no other WebViews are
27121   /// using it.
27122   ///
27123   /// After running `Close`, most methods will fail and event handlers stop
27124   /// running.  Specifically, the WebView releases the associated references to
27125   /// any associated event handlers when `Close` is run.
27126   ///
27127   /// `Close` is implicitly run when the `CoreWebView2Controller` loses the
27128   /// final reference and is destructed.  But it is best practice to
27129   /// explicitly run `Close` to avoid any accidental cycle of references
27130   /// between the WebView and the app code.  Specifically, if you capture a
27131   /// reference to the WebView in an event handler you create a reference cycle
27132   /// between the WebView and the event handler.  Run `Close` to break the
27133   /// cycle by releasing all event handlers.  But to avoid the situation, it is
27134   /// best to both explicitly run `Close` on the WebView and to not capture a
27135   /// reference to the WebView to ensure the WebView is cleaned up correctly.
27136   /// `Close` is synchronous and won't trigger the `beforeunload` event.
27137   ///
27138   /// \snippet AppWindow.cpp Close
27139   HRESULT Close();
27140 
27141   /// Gets the `CoreWebView2` associated with this `CoreWebView2Controller`.
27142 
27143   @(" propget")
27144 	HRESULT get_CoreWebView2(@("out, retval") ICoreWebView2 * coreWebView2);
27145 }
27146 
27147 /// A continuation of the ICoreWebView2Controller interface.
27148 const GUID IID_ICoreWebView2Controller2 = ICoreWebView2Controller2.iid;
27149 
27150 interface ICoreWebView2Controller2 : ICoreWebView2Controller
27151 {
27152     static const GUID iid = { 0xc979903e,0xd4ca,0x4228,[ 0x92,0xeb,0x47,0xee,0x3f,0xa9,0x6e,0xab ] };
27153   /// The `DefaultBackgroundColor` property is the color WebView renders
27154   /// underneath all web content. This means WebView renders this color when
27155   /// there is no web content loaded such as before the initial navigation or
27156   /// between navigations. This also means web pages with undefined css
27157   /// background properties or background properties containing transparent
27158   /// pixels will render their contents over this color. Web pages with defined
27159   /// and opaque background properties that span the page will obscure the
27160   /// `DefaultBackgroundColor` and display normally. The default value for this
27161   /// property is white to resemble the native browser experience.
27162   ///
27163   /// The Color is specified by the COREWEBVIEW2_COLOR that represents an RGBA
27164   /// value. The `A` represents an Alpha value, meaning
27165   /// `DefaultBackgroundColor` can be transparent. In the case of a transparent
27166   /// `DefaultBackgroundColor` WebView will render hosting app content as the
27167   /// background. This Alpha value is not supported on Windows 7. Any `A` value
27168   /// other than 255 will result in E_INVALIDARG on Windows 7.
27169   /// It is supported on all other WebView compatible platforms.
27170   ///
27171   /// Semi-transparent colors are not currently supported by this API and
27172   /// setting `DefaultBackgroundColor` to a semi-transparent color will fail
27173   /// with E_INVALIDARG. The only supported alpha values are 0 and 255, all
27174   /// other values will result in E_INVALIDARG.
27175   /// `DefaultBackgroundColor` can only be an opaque color or transparent.
27176   ///
27177   /// This value may also be set by using the
27178   /// `WEBVIEW2_DEFAULT_BACKGROUND_COLOR` environment variable. There is a
27179   /// known issue with background color where setting the color by API can
27180   /// still leave the app with a white flicker before the
27181   /// `DefaultBackgroundColor` takes effect. Setting the color via environment
27182   /// variable solves this issue. The value must be a hex value that can
27183   /// optionally prepend a 0x. The value must account for the alpha value
27184   /// which is represented by the first 2 digits. So any hex value fewer than 8
27185   /// digits will assume a prepended 00 to the hex value and result in a
27186   /// transparent color.
27187   /// `get_DefaultBackgroundColor` will return the result of this environment
27188   /// variable if used. This environment variable can only set the
27189   /// `DefaultBackgroundColor` once. Subsequent updates to background color
27190   /// must be done through API call.
27191   ///
27192   /// \snippet ViewComponent.cpp DefaultBackgroundColor
27193   @(" propget")
27194 	HRESULT get_DefaultBackgroundColor(
27195     @("out, retval") COREWEBVIEW2_COLOR* backgroundColor);
27196 
27197   /// Sets the `DefaultBackgroundColor` property.
27198   @(" propput")
27199 	HRESULT put_DefaultBackgroundColor(
27200     in COREWEBVIEW2_COLOR backgroundColor);
27201 }
27202 
27203 /// A continuation of the ICoreWebView2Controller2 interface.
27204 const GUID IID_ICoreWebView2Controller3 = ICoreWebView2Controller3.iid;
27205 
27206 interface ICoreWebView2Controller3 : ICoreWebView2Controller2
27207 {
27208     static const GUID iid = { 0xf9614724,0x5d2b,0x41dc,[ 0xae,0xf7,0x73,0xd6,0x2b,0x51,0x54,0x3b ] };
27209   /// The rasterization scale for the WebView. The rasterization scale is the
27210   /// combination of the monitor DPI scale and text scaling set by the user.
27211   /// This value should be updated when the DPI scale of the app's top level
27212   /// window changes (i.e. monitor DPI scale changes or window changes monitor)
27213   /// or when the text scale factor of the system changes.
27214   ///
27215   /// \snippet AppWindow.cpp DPIChanged
27216   ///
27217   /// \snippet AppWindow.cpp TextScaleChanged1
27218   ///
27219   /// \snippet AppWindow.cpp TextScaleChanged2
27220   ///
27221   /// Rasterization scale applies to the WebView content, as well as
27222   /// popups, context menus, scroll bars, and so on. Normal app scaling
27223   /// scenarios should use the ZoomFactor property or SetBoundsAndZoomFactor
27224   /// API which only scale the rendered HTML content and not popups, context
27225   /// menus, scroll bars, and so on.
27226   ///
27227   /// \snippet ViewComponent.cpp RasterizationScale
27228   @(" propget")
27229 	HRESULT get_RasterizationScale(@("out, retval") double* scale);
27230   /// Set the rasterization scale property.
27231   @(" propput")
27232 	HRESULT put_RasterizationScale(in double scale);
27233 
27234   /// ShouldDetectMonitorScaleChanges property determines whether the WebView
27235   /// attempts to track monitor DPI scale changes. When true, the WebView will
27236   /// track monitor DPI scale changes, update the RasterizationScale property,
27237   /// and raises RasterizationScaleChanged event. When false, the WebView will
27238   /// not track monitor DPI scale changes, and the app must update the
27239   /// RasterizationScale property itself. RasterizationScaleChanged event will
27240   /// never raise when ShouldDetectMonitorScaleChanges is false. Apps that want
27241   /// to set their own rasterization scale should set this property to false to
27242   /// avoid the WebView2 updating the RasterizationScale property to match the
27243   /// monitor DPI scale.
27244   @(" propget")
27245 	HRESULT get_ShouldDetectMonitorScaleChanges(@("out, retval") BOOL* value);
27246   /// Set the ShouldDetectMonitorScaleChanges property.
27247   @(" propput")
27248 	HRESULT put_ShouldDetectMonitorScaleChanges(in BOOL value);
27249 
27250   /// Add an event handler for the RasterizationScaleChanged event.
27251   /// The event is raised when the WebView detects that the monitor DPI scale
27252   /// has changed, ShouldDetectMonitorScaleChanges is true, and the WebView has
27253   /// changed the RasterizationScale property.
27254   ///
27255   /// \snippet ViewComponent.cpp RasterizationScaleChanged
27256   HRESULT add_RasterizationScaleChanged(
27257     /+[in]+/ ICoreWebView2RasterizationScaleChangedEventHandler eventHandler,
27258     @("out") EventRegistrationToken* token);
27259   /// Remove an event handler previously added with
27260   /// add_RasterizationScaleChanged.
27261   HRESULT remove_RasterizationScaleChanged(
27262     in EventRegistrationToken token);
27263 
27264   /// BoundsMode affects how setting the Bounds and RasterizationScale
27265   /// properties work. Bounds mode can either be in COREWEBVIEW2_BOUNDS_MODE_USE_RAW_PIXELS
27266   /// mode or COREWEBVIEW2_BOUNDS_MODE_USE_RASTERIZATION_SCALE mode.
27267   ///
27268   /// When the mode is in COREWEBVIEW2_BOUNDS_MODE_USE_RAW_PIXELS, setting the bounds
27269   /// property will set the size of the WebView in raw screen pixels. Changing
27270   /// the rasterization scale in this mode won't change the raw pixel size of
27271   /// the WebView and will only change the rasterization scale.
27272   ///
27273   /// When the mode is in COREWEBVIEW2_BOUNDS_MODE_USE_RASTERIZATION_SCALE, setting the
27274   /// bounds property will change the logical size of the WebView which can be
27275   /// described by the following equation:
27276   /// ```text
27277   /// Logical size * rasterization scale = Raw Pixel size
27278   /// ```
27279   /// In this case, changing the rasterization scale will keep the logical size
27280   /// the same and change the raw pixel size.
27281   ///
27282   /// \snippet ViewComponent.cpp BoundsMode
27283   @(" propget")
27284 	HRESULT get_BoundsMode(
27285     @("out, retval") COREWEBVIEW2_BOUNDS_MODE* boundsMode);
27286   /// Set the BoundsMode property.
27287   @(" propput")
27288 	HRESULT put_BoundsMode(in COREWEBVIEW2_BOUNDS_MODE boundsMode);
27289 }
27290 
27291 /// This is the ICoreWebView2Controller4 interface.
27292 /// The ICoreWebView2Controller4 provides interface to enable/disable external drop.
27293 const GUID IID_ICoreWebView2Controller4 = ICoreWebView2Controller4.iid;
27294 
27295 interface ICoreWebView2Controller4 : ICoreWebView2Controller3
27296 {
27297     static const GUID iid = { 0x97d418d5,0xa426,0x4e49,[ 0xa1,0x51,0xe1,0xa1,0x0f,0x32,0x7d,0x9e ] };
27298   /// Gets the `AllowExternalDrop` property which is used to configure the
27299   /// capability that dragging objects from outside the bounds of webview2 and
27300   /// dropping into webview2 is allowed or disallowed. The default value is
27301   /// TRUE.
27302   ///
27303   /// \snippet SettingsComponent.cpp ToggleAllowExternalDrop
27304   @(" propget")
27305 	HRESULT get_AllowExternalDrop(@(" out, retval ") BOOL * value);
27306   /// Sets the `AllowExternalDrop` property which is used to configure the
27307   /// capability that dragging objects from outside the bounds of webview2 and
27308   /// dropping into webview2 is allowed or disallowed.
27309   ///
27310   /// \snippet SettingsComponent.cpp ToggleAllowExternalDrop
27311   @(" propput")
27312 	HRESULT put_AllowExternalDrop(in BOOL value);
27313 }
27314 
27315 /// This interface is an extension of the ICoreWebView2Controller interface to
27316 /// support visual hosting. An object implementing the
27317 /// ICoreWebView2CompositionController interface will also implement
27318 /// ICoreWebView2Controller. Callers are expected to use
27319 /// ICoreWebView2Controller for resizing, visibility, focus, and so on, and
27320 /// then use ICoreWebView2CompositionController to connect to a composition
27321 /// tree and provide input meant for the WebView.
27322 const GUID IID_ICoreWebView2CompositionController = ICoreWebView2CompositionController.iid;
27323 
27324 interface ICoreWebView2CompositionController : IUnknown
27325 {
27326     static const GUID iid = { 0x3df9b733,0xb9ae,0x4a15,[ 0x86,0xb4,0xeb,0x9e,0xe9,0x82,0x64,0x69 ] };
27327   /// The RootVisualTarget is a visual in the hosting app's visual tree. This
27328   /// visual is where the WebView will connect its visual tree. The app uses
27329   /// this visual to position the WebView within the app. The app still needs
27330   /// to use the Bounds property to size the WebView. The RootVisualTarget
27331   /// property can be an IDCompositionVisual or a
27332   /// Windows::UI::Composition::ContainerVisual. WebView will connect its visual
27333   /// tree to the provided visual before returning from the property setter. The
27334   /// app needs to commit on its device setting the RootVisualTarget property.
27335   /// The RootVisualTarget property supports being set to nullptr to disconnect
27336   /// the WebView from the app's visual tree.
27337   /// \snippet ViewComponent.cpp SetRootVisualTarget
27338   /// \snippet ViewComponent.cpp BuildDCompTree
27339   @(" propget")
27340 	HRESULT get_RootVisualTarget(@("out, retval") IUnknown * target);
27341   /// Set the RootVisualTarget property.
27342   @(" propput")
27343 	HRESULT put_RootVisualTarget(/+[in]+/ IUnknown target);
27344 
27345   /// If eventKind is COREWEBVIEW2_MOUSE_EVENT_KIND_HORIZONTAL_WHEEL or
27346   /// COREWEBVIEW2_MOUSE_EVENT_KIND_WHEEL, then mouseData specifies the amount of
27347   /// wheel movement. A positive value indicates that the wheel was rotated
27348   /// forward, away from the user; a negative value indicates that the wheel was
27349   /// rotated backward, toward the user. One wheel click is defined as
27350   /// WHEEL_DELTA, which is 120.
27351   /// If eventKind is COREWEBVIEW2_MOUSE_EVENT_KIND_X_BUTTON_DOUBLE_CLICK
27352   /// COREWEBVIEW2_MOUSE_EVENT_KIND_X_BUTTON_DOWN, or
27353   /// COREWEBVIEW2_MOUSE_EVENT_KIND_X_BUTTON_UP, then mouseData specifies which X
27354   /// buttons were pressed or released. This value should be 1 if the first X
27355   /// button is pressed/released and 2 if the second X button is
27356   /// pressed/released.
27357   /// If eventKind is COREWEBVIEW2_MOUSE_EVENT_KIND_LEAVE, then virtualKeys,
27358   /// mouseData, and point should all be zero.
27359   /// If eventKind is any other value, then mouseData should be zero.
27360   /// Point is expected to be in the client coordinate space of the WebView.
27361   /// To track mouse events that start in the WebView and can potentially move
27362   /// outside of the WebView and host application, calling SetCapture and
27363   /// ReleaseCapture is recommended.
27364   /// To dismiss hover popups, it is also recommended to send
27365   /// COREWEBVIEW2_MOUSE_EVENT_KIND_LEAVE messages.
27366   /// \snippet ViewComponent.cpp SendMouseInput
27367   HRESULT SendMouseInput(
27368     in COREWEBVIEW2_MOUSE_EVENT_KIND eventKind,
27369     in COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS virtualKeys,
27370     in UINT32 mouseData,
27371     in POINT point);
27372 
27373   /// SendPointerInput accepts touch or pen pointer input of types defined in
27374   /// COREWEBVIEW2_POINTER_EVENT_KIND. Any pointer input from the system must be
27375   /// converted into an ICoreWebView2PointerInfo first.
27376   HRESULT SendPointerInput(
27377     in COREWEBVIEW2_POINTER_EVENT_KIND eventKind,
27378     /+[in]+/ ICoreWebView2PointerInfo pointerInfo);
27379 
27380   /// The current cursor that WebView thinks it should be. The cursor should be
27381   /// set in WM_SETCURSOR through \::SetCursor or set on the corresponding
27382   /// parent/ancestor HWND of the WebView through \::SetClassLongPtr. The HCURSOR
27383   /// can be freed so CopyCursor/DestroyCursor is recommended to keep your own
27384   /// copy if you are doing more than immediately setting the cursor.
27385   @(" propget")
27386 	HRESULT get_Cursor(@("out, retval") HCURSOR* cursor);
27387 
27388   /// The current system cursor ID reported by the underlying rendering engine
27389   /// for WebView. For example, most of the time, when the cursor is over text,
27390   /// this will return the int value for IDC_IBEAM. The systemCursorId is only
27391   /// valid if the rendering engine reports a default Windows cursor resource
27392   /// value. Navigate to
27393   /// [LoadCursorW](/windows/win32/api/winuser/nf-winuser-loadcursorw) for more
27394   /// details. Otherwise, if custom CSS cursors are being used, this will return
27395   /// 0. To actually use systemCursorId in LoadCursor or LoadImage,
27396   /// MAKEINTRESOURCE must be called on it first.
27397   ///
27398   /// \snippet ViewComponent.cpp SystemCursorId
27399   @(" propget")
27400 	HRESULT get_SystemCursorId(@("out, retval") UINT32* systemCursorId);
27401 
27402   /// Add an event handler for the CursorChanged event.
27403   /// The event is raised when WebView thinks the cursor should be changed. For
27404   /// example, when the mouse cursor is currently the default cursor but is then
27405   /// moved over text, it may try to change to the IBeam cursor.
27406   ///
27407   /// It is expected for the developer to send
27408   /// COREWEBVIEW2_MOUSE_EVENT_KIND_LEAVE messages (in addition to
27409   /// COREWEBVIEW2_MOUSE_EVENT_KIND_MOVE messages) through the SendMouseInput
27410   /// API. This is to ensure that the mouse is actually within the WebView that
27411   /// sends out CursorChanged events.
27412   ///
27413   /// \snippet ViewComponent.cpp CursorChanged
27414   HRESULT add_CursorChanged(
27415       /+[in]+/ ICoreWebView2CursorChangedEventHandler eventHandler,
27416       @("out") EventRegistrationToken* token);
27417   /// Remove an event handler previously added with add_CursorChanged.
27418   HRESULT remove_CursorChanged(
27419       in EventRegistrationToken token);
27420 }
27421 
27422 /// A continuation of the ICoreWebView2CompositionController interface.
27423 const GUID IID_ICoreWebView2CompositionController2 = ICoreWebView2CompositionController2.iid;
27424 
27425 interface ICoreWebView2CompositionController2 : ICoreWebView2CompositionController
27426 {
27427     static const GUID iid = { 0x0b6a3d24,0x49cb,0x4806,[ 0xba,0x20,0xb5,0xe0,0x73,0x4a,0x7b,0x26 ] };
27428   /// Returns the Automation Provider for the WebView. This object implements
27429   /// IRawElementProviderSimple.
27430   @(" propget")
27431 	HRESULT get_AutomationProvider(@("out, retval") IUnknown * provider);
27432 }
27433 
27434 /// This interface is the continuation of the
27435 /// ICoreWebView2CompositionController2 interface to manage drag and drop.
27436 const GUID IID_ICoreWebView2CompositionController3 = ICoreWebView2CompositionController3.iid;
27437 
27438 interface ICoreWebView2CompositionController3 : ICoreWebView2CompositionController2
27439 {
27440     static const GUID iid = { 0x9570570e,0x4d76,0x4361,[ 0x9e,0xe1,0xf0,0x4d,0x0d,0xbd,0xfb,0x1e ] };
27441   /// This function corresponds to [IDropTarget::DragEnter](/windows/win32/api/oleidl/nf-oleidl-idroptarget-dragenter).
27442   ///
27443   /// This function has a dependency on AllowExternalDrop property of
27444   /// CoreWebView2Controller and return E_FAIL to callers to indicate this
27445   /// operation is not allowed if AllowExternalDrop property is set to false.
27446   ///
27447   /// The hosting application must register as an IDropTarget and implement
27448   /// and forward DragEnter calls to this function.
27449   ///
27450   /// point parameter must be modified to include the WebView's offset and be in
27451   /// the WebView's client coordinates (Similar to how SendMouseInput works).
27452   ///
27453   /// \snippet DropTarget.cpp DragEnter
27454   HRESULT DragEnter(
27455       in IDataObject* dataObject,
27456       in DWORD keyState,
27457       in POINT point,
27458       @("out, retval") DWORD* effect);
27459 
27460   /// This function corresponds to [IDropTarget::DragLeave](/windows/win32/api/oleidl/nf-oleidl-idroptarget-dragleave).
27461   ///
27462   /// This function has a dependency on AllowExternalDrop property of
27463   /// CoreWebView2Controller and return E_FAIL to callers to indicate this
27464   /// operation is not allowed if AllowExternalDrop property is set to false.
27465   ///
27466   /// The hosting application must register as an IDropTarget and implement
27467   /// and forward DragLeave calls to this function.
27468   ///
27469   /// \snippet DropTarget.cpp DragLeave
27470   HRESULT DragLeave();
27471 
27472   /// This function corresponds to [IDropTarget::DragOver](/windows/win32/api/oleidl/nf-oleidl-idroptarget-dragover).
27473   ///
27474   /// This function has a dependency on AllowExternalDrop property of
27475   /// CoreWebView2Controller and return E_FAIL to callers to indicate this
27476   /// operation is not allowed if AllowExternalDrop property is set to false.
27477   ///
27478   /// The hosting application must register as an IDropTarget and implement
27479   /// and forward DragOver calls to this function.
27480   ///
27481   /// point parameter must be modified to include the WebView's offset and be in
27482   /// the WebView's client coordinates (Similar to how SendMouseInput works).
27483   ///
27484   /// \snippet DropTarget.cpp DragOver
27485   HRESULT DragOver(
27486       in DWORD keyState,
27487       in POINT point,
27488       @("out, retval") DWORD* effect);
27489 
27490   /// This function corresponds to [IDropTarget::Drop](/windows/win32/api/oleidl/nf-oleidl-idroptarget-drop).
27491   ///
27492   /// This function has a dependency on AllowExternalDrop property of
27493   /// CoreWebView2Controller and return E_FAIL to callers to indicate this
27494   /// operation is not allowed if AllowExternalDrop property is set to false.
27495   ///
27496   /// The hosting application must register as an IDropTarget and implement
27497   /// and forward Drop calls to this function.
27498   ///
27499   /// point parameter must be modified to include the WebView's offset and be in
27500   /// the WebView's client coordinates (Similar to how SendMouseInput works).
27501   ///
27502   /// \snippet DropTarget.cpp Drop
27503   HRESULT Drop(
27504       in IDataObject* dataObject,
27505       in DWORD keyState,
27506       in POINT point,
27507       @("out, retval") DWORD* effect);
27508 }
27509 
27510 /// This interface is used to complete deferrals on event args that support
27511 /// getting deferrals using the `GetDeferral` method.
27512 
27513 const GUID IID_ICoreWebView2Deferral = ICoreWebView2Deferral.iid;
27514 
27515 interface ICoreWebView2Deferral : IUnknown
27516 {
27517     static const GUID iid = { 0xc10e7f7b,0xb585,0x46f0,[ 0xa6,0x23,0x8b,0xef,0xbf,0x3e,0x4e,0xe0 ] };
27518 
27519   /// Completes the associated deferred event.  Complete should only be run
27520   /// once for each deferral taken.
27521 
27522   HRESULT Complete();
27523 }
27524 
27525 /// Defines properties that enable, disable, or modify WebView features.
27526 /// Changes to `IsGeneralAutofillEnabled` and `IsPasswordAutosaveEnabled`
27527 /// apply immediately, while other setting changes made after `NavigationStarting`
27528 /// event do not apply until the next top-level navigation.
27529 
27530 const GUID IID_ICoreWebView2Settings = ICoreWebView2Settings.iid;
27531 
27532 interface ICoreWebView2Settings : IUnknown
27533 {
27534     static const GUID iid = { 0xe562e4f0,0xd7fa,0x43ac,[ 0x8d,0x71,0xc0,0x51,0x50,0x49,0x9f,0x00 ] };
27535 
27536   /// Controls if running JavaScript is enabled in all future navigations in
27537   /// the WebView.  This only affects scripts in the document.  Scripts
27538   /// injected with `ExecuteScript` runs even if script is disabled.
27539   /// The default value is `TRUE`.
27540   ///
27541   /// \snippet SettingsComponent.cpp IsScriptEnabled
27542   @(" propget")
27543 	HRESULT get_IsScriptEnabled(
27544       @("out, retval") BOOL* isScriptEnabled);
27545 
27546   /// Sets the `IsScriptEnabled` property.
27547   @(" propput")
27548 	HRESULT put_IsScriptEnabled(in BOOL isScriptEnabled);
27549 
27550   /// The `IsWebMessageEnabled` property is used when loading a new HTML
27551   /// document.  If set to `TRUE`, communication from the host to the top-level
27552   ///  HTML document of the WebView is allowed using `PostWebMessageAsJson`,
27553   /// `PostWebMessageAsString`, and message event of `window.chrome.webview`.
27554   /// For more information, navigate to PostWebMessageAsJson.  Communication
27555   /// from the top-level HTML document of the WebView to the host is allowed
27556   /// using the postMessage function of `window.chrome.webview` and
27557   /// `add_WebMessageReceived` method.  For more information, navigate to
27558   /// [add_WebMessageReceived](/microsoft-edge/webview2/reference/win32/icorewebview2#add_webmessagereceived).
27559   /// If set to false, then communication is disallowed.  `PostWebMessageAsJson`
27560   /// and `PostWebMessageAsString` fails with `E_ACCESSDENIED` and
27561   /// `window.chrome.webview.postMessage` fails by throwing an instance of an
27562   /// `Error` object. The default value is `TRUE`.
27563   ///
27564   /// \snippet ScenarioWebMessage.cpp IsWebMessageEnabled
27565   @(" propget")
27566 	HRESULT get_IsWebMessageEnabled(
27567       @("out, retval") BOOL* isWebMessageEnabled);
27568 
27569   /// Sets the `IsWebMessageEnabled` property.
27570   @(" propput")
27571 	HRESULT put_IsWebMessageEnabled(in BOOL isWebMessageEnabled);
27572 
27573   /// `AreDefaultScriptDialogsEnabled` is used when loading a new HTML
27574   /// document.  If set to `FALSE`, WebView2 does not render the default JavaScript
27575   /// dialog box (Specifically those displayed by the JavaScript alert,
27576   /// confirm, prompt functions and `beforeunload` event).  Instead, if an
27577   /// event handler is set using `add_ScriptDialogOpening`, WebView sends an
27578   /// event that contains all of the information for the dialog and allow the
27579   /// host app to show a custom UI.
27580   /// The default value is `TRUE`.
27581   @(" propget")
27582 	HRESULT get_AreDefaultScriptDialogsEnabled(
27583       @("out, retval") BOOL* areDefaultScriptDialogsEnabled);
27584 
27585   /// Sets the `AreDefaultScriptDialogsEnabled` property.
27586   @(" propput")
27587 	HRESULT put_AreDefaultScriptDialogsEnabled(
27588       in BOOL areDefaultScriptDialogsEnabled);
27589 
27590   /// `IsStatusBarEnabled` controls whether the status bar is displayed.  The
27591   /// status bar is usually displayed in the lower left of the WebView and
27592   /// shows things such as the URI of a link when the user hovers over it and
27593   /// other information.
27594   /// The default value is `TRUE`.
27595   /// The status bar UI can be altered by web content and should not be considered secure.
27596   @(" propget")
27597 	HRESULT get_IsStatusBarEnabled(@("out, retval") BOOL* isStatusBarEnabled);
27598 
27599   /// Sets the `IsStatusBarEnabled` property.
27600   @(" propput")
27601 	HRESULT put_IsStatusBarEnabled(in BOOL isStatusBarEnabled);
27602 
27603   /// `AreDevToolsEnabled` controls whether the user is able to use the context
27604   /// menu or keyboard shortcuts to open the DevTools window.
27605   /// The default value is `TRUE`.
27606   @(" propget")
27607 	HRESULT get_AreDevToolsEnabled(@("out, retval") BOOL* areDevToolsEnabled);
27608 
27609   /// Sets the `AreDevToolsEnabled` property.
27610   @(" propput")
27611 	HRESULT put_AreDevToolsEnabled(in BOOL areDevToolsEnabled);
27612 
27613   /// The `AreDefaultContextMenusEnabled` property is used to prevent default
27614   /// context menus from being shown to user in WebView.
27615   /// The default value is `TRUE`.
27616   ///
27617   /// \snippet SettingsComponent.cpp DisableContextMenu
27618   @(" propget")
27619 	HRESULT get_AreDefaultContextMenusEnabled(@("out, retval") BOOL* enabled);
27620 
27621   /// Sets the `AreDefaultContextMenusEnabled` property.
27622   @(" propput")
27623 	HRESULT put_AreDefaultContextMenusEnabled(in BOOL enabled);
27624 
27625   /// The `AreHostObjectsAllowed` property is used to control whether host
27626   /// objects are accessible from the page in WebView.
27627   /// The default value is `TRUE`.
27628   ///
27629   /// \snippet SettingsComponent.cpp HostObjectsAccess
27630   @(" propget")
27631 	HRESULT get_AreHostObjectsAllowed(@("out, retval") BOOL* allowed);
27632 
27633   /// Sets the `AreHostObjectsAllowed` property.
27634 
27635   @(" propput")
27636 	HRESULT put_AreHostObjectsAllowed(in BOOL allowed);
27637 
27638   /// The `IsZoomControlEnabled` property is used to prevent the user from
27639   /// impacting the zoom of the WebView.  When disabled, the user is not able
27640   /// to zoom using Ctrl++, Ctrl+-, or Ctrl+mouse wheel, but the zoom
27641   /// is set using `ZoomFactor` API.  The default value is `TRUE`.
27642   ///
27643   /// \snippet SettingsComponent.cpp DisableZoomControl
27644 
27645   @(" propget")
27646 	HRESULT get_IsZoomControlEnabled(@("out, retval") BOOL* enabled);
27647 
27648   /// Sets the `IsZoomControlEnabled` property.
27649 
27650   @(" propput")
27651 	HRESULT put_IsZoomControlEnabled(in BOOL enabled);
27652 
27653   /// The `IsBuiltInErrorPageEnabled` property is used to disable built in
27654   /// error page for navigation failure and render process failure.  When
27655   /// disabled, a blank page is displayed when the related error happens.
27656   /// The default value is `TRUE`.
27657   ///
27658   /// \snippet SettingsComponent.cpp BuiltInErrorPageEnabled
27659   @(" propget")
27660 	HRESULT get_IsBuiltInErrorPageEnabled(@("out, retval") BOOL* enabled);
27661 
27662   /// Sets the `IsBuiltInErrorPageEnabled` property.
27663   @(" propput")
27664 	HRESULT put_IsBuiltInErrorPageEnabled(in BOOL enabled);
27665 }
27666 
27667 /// A continuation of the ICoreWebView2Settings interface that manages the user agent.
27668 
27669 const GUID IID_ICoreWebView2Settings2 = ICoreWebView2Settings2.iid;
27670 
27671 interface ICoreWebView2Settings2 : ICoreWebView2Settings
27672 {
27673     static const GUID iid = { 0xee9a0f68,0xf46c,0x4e32,[ 0xac,0x23,0xef,0x8c,0xac,0x22,0x4d,0x2a ] };
27674   /// Returns the User Agent. The default value is the default User Agent of the
27675   /// Microsoft Edge browser.
27676   ///
27677   /// The caller must free the returned string with `CoTaskMemFree`.  See
27678   /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings).
27679   ///
27680   /// \snippet SettingsComponent.cpp UserAgent
27681   @(" propget")
27682 	HRESULT get_UserAgent(@("out, retval") LPWSTR* userAgent);
27683   /// Sets the `UserAgent` property. This property may be overridden if
27684   /// the User-Agent header is set in a request. If the parameter is empty
27685   /// the User Agent will not be updated and the current User Agent will remain.
27686   /// Returns `HRESULT_FROM_WIN32(ERROR_INVALID_STATE)` if the owning WebView is
27687   /// closed.
27688   @(" propput")
27689 	HRESULT put_UserAgent(in LPCWSTR userAgent);
27690 }
27691 
27692 /// A continuation of the ICoreWebView2Settings interface that manages whether
27693 /// browser accelerator keys are enabled.
27694 const GUID IID_ICoreWebView2Settings3 = ICoreWebView2Settings3.iid;
27695 
27696 interface ICoreWebView2Settings3 : ICoreWebView2Settings2
27697 {
27698     static const GUID iid = { 0xfdb5ab74,0xaf33,0x4854,[ 0x84,0xf0,0x0a,0x63,0x1d,0xeb,0x5e,0xba ] };
27699   /// When this setting is set to FALSE, it disables all accelerator keys that
27700   /// access features specific to a web browser, including but not limited to:
27701   ///  - Ctrl-F and F3 for Find on Page
27702   ///  - Ctrl-P for Print
27703   ///  - Ctrl-R and F5 for Reload
27704   ///  - Ctrl-Plus and Ctrl-Minus for zooming
27705   ///  - Ctrl-Shift-C and F12 for DevTools
27706   ///  - Special keys for browser functions, such as Back, Forward, and Search
27707   ///
27708   /// It does not disable accelerator keys related to movement and text editing,
27709   /// such as:
27710   ///  - Home, End, Page Up, and Page Down
27711   ///  - Ctrl-X, Ctrl-C, Ctrl-V
27712   ///  - Ctrl-A for Select All
27713   ///  - Ctrl-Z for Undo
27714   ///
27715   /// Those accelerator keys will always be enabled unless they are handled in
27716   /// the `AcceleratorKeyPressed` event.
27717   ///
27718   /// This setting has no effect on the `AcceleratorKeyPressed` event.  The event
27719   /// will be fired for all accelerator keys, whether they are enabled or not.
27720   ///
27721   /// The default value for `AreBrowserAcceleratorKeysEnabled` is TRUE.
27722   ///
27723   /// \snippet SettingsComponent.cpp AreBrowserAcceleratorKeysEnabled
27724   @(" propget")
27725 	HRESULT get_AreBrowserAcceleratorKeysEnabled(
27726       @("out, retval") BOOL* areBrowserAcceleratorKeysEnabled);
27727 
27728   /// Sets the `AreBrowserAcceleratorKeysEnabled` property.
27729   @(" propput")
27730 	HRESULT put_AreBrowserAcceleratorKeysEnabled(
27731       in BOOL areBrowserAcceleratorKeysEnabled);
27732 }
27733 
27734 /// A continuation of the ICoreWebView2Settings interface to manage autofill.
27735 const GUID IID_ICoreWebView2Settings4 = ICoreWebView2Settings4.iid;
27736 
27737 interface ICoreWebView2Settings4 : ICoreWebView2Settings3
27738 {
27739     static const GUID iid = { 0xcb56846c,0x4168,0x4d53,[ 0xb0,0x4f,0x03,0xb6,0xd6,0x79,0x6f,0xf2 ] };
27740   /// IsPasswordAutosaveEnabled controls whether autosave for password
27741   /// information is enabled. The IsPasswordAutosaveEnabled property behaves
27742   /// independently of the IsGeneralAutofillEnabled property. When IsPasswordAutosaveEnabled is
27743   /// false, no new password data is saved and no Save/Update Password prompts are displayed.
27744   /// However, if there was password data already saved before disabling this setting,
27745   /// then that password information is auto-populated, suggestions are shown and clicking on
27746   /// one will populate the fields.
27747   /// When IsPasswordAutosaveEnabled is true, password information is auto-populated,
27748   /// suggestions are shown and clicking on one will populate the fields, new data
27749   /// is saved, and a Save/Update Password prompt is displayed.
27750   /// It will take effect immediately after setting.
27751   /// The default value is `FALSE`.
27752   /// This property has the same value as
27753   /// `CoreWebView2Profile.IsPasswordAutosaveEnabled`, and changing one will
27754   /// change the other. All `CoreWebView2`s with the same `CoreWebView2Profile`
27755   /// will share the same value for this property, so for the `CoreWebView2`s
27756   /// with the same profile, their
27757   /// `CoreWebView2Settings.IsPasswordAutosaveEnabled` and
27758   /// `CoreWebView2Profile.IsPasswordAutosaveEnabled` will always have the same
27759   /// value.
27760   ///
27761   /// \snippet SettingsComponent.cpp PasswordAutosaveEnabled
27762   @(" propget")
27763 	HRESULT get_IsPasswordAutosaveEnabled(@("out, retval") BOOL* value);
27764 
27765   /// Set the IsPasswordAutosaveEnabled property.
27766   @(" propput")
27767 	HRESULT put_IsPasswordAutosaveEnabled(in BOOL value);
27768 
27769   /// IsGeneralAutofillEnabled controls whether autofill for information
27770   /// like names, street and email addresses, phone numbers, and arbitrary input
27771   /// is enabled. This excludes password and credit card information. When
27772   /// IsGeneralAutofillEnabled is false, no suggestions appear, and no new information
27773   /// is saved. When IsGeneralAutofillEnabled is true, information is saved, suggestions
27774   /// appear and clicking on one will populate the form fields.
27775   /// It will take effect immediately after setting.
27776   /// The default value is `TRUE`.
27777   /// This property has the same value as
27778   /// `CoreWebView2Profile.IsGeneralAutofillEnabled`, and changing one will
27779   /// change the other. All `CoreWebView2`s with the same `CoreWebView2Profile`
27780   /// will share the same value for this property, so for the `CoreWebView2`s
27781   /// with the same profile, their
27782   /// `CoreWebView2Settings.IsGeneralAutofillEnabled` and
27783   /// `CoreWebView2Profile.IsGeneralAutofillEnabled` will always have the same
27784   /// value.
27785   ///
27786   /// \snippet SettingsComponent.cpp GeneralAutofillEnabled
27787   @(" propget")
27788 	HRESULT get_IsGeneralAutofillEnabled(@("out, retval") BOOL* value);
27789 
27790   /// Set the IsGeneralAutofillEnabled property.
27791   @(" propput")
27792 	HRESULT put_IsGeneralAutofillEnabled(in BOOL value);
27793 }
27794 
27795 /// A continuation of the ICoreWebView2Settings interface to manage pinch zoom.
27796 const GUID IID_ICoreWebView2Settings5 = ICoreWebView2Settings5.iid;
27797 
27798 interface ICoreWebView2Settings5 : ICoreWebView2Settings4
27799 {
27800     static const GUID iid = { 0x183e7052,0x1d03,0x43a0,[ 0xab,0x99,0x98,0xe0,0x43,0xb6,0x6b,0x39 ] };
27801   /// Pinch-zoom, referred to as "Page Scale" zoom, is performed as a post-rendering step,
27802   /// it changes the page scale factor property and scales the surface the web page is
27803   /// rendered onto when user performs a pinch zooming action. It does not change the layout
27804   /// but rather changes the viewport and clips the web content, the content outside of the
27805   /// viewport isn't visible onscreen and users can't reach this content using mouse.
27806   ///
27807   /// The `IsPinchZoomEnabled` property enables or disables the ability of
27808   /// the end user to use a pinching motion on touch input enabled devices
27809   /// to scale the web content in the WebView2. It defaults to `TRUE`.
27810   /// When set to `FALSE`, the end user cannot pinch zoom after the next navigation.
27811   /// Disabling/Enabling `IsPinchZoomEnabled` only affects the end user's ability to use
27812   /// pinch motions and does not change the page scale factor.
27813   /// This API only affects the Page Scale zoom and has no effect on the
27814   /// existing browser zoom properties (`IsZoomControlEnabled` and `ZoomFactor`)
27815   /// or other end user mechanisms for zooming.
27816   ///
27817   /// \snippet SettingsComponent.cpp TogglePinchZoomEnabled
27818   @(" propget")
27819 	HRESULT get_IsPinchZoomEnabled(@("out, retval") BOOL* enabled);
27820   /// Set the `IsPinchZoomEnabled` property
27821   @(" propput")
27822 	HRESULT put_IsPinchZoomEnabled(in BOOL enabled);
27823 }
27824 
27825 /// A continuation of the ICoreWebView2Settings interface to manage swipe navigation.
27826 const GUID IID_ICoreWebView2Settings6 = ICoreWebView2Settings6.iid;
27827 
27828 interface ICoreWebView2Settings6 : ICoreWebView2Settings5
27829 {
27830     static const GUID iid = { 0x11cb3acd,0x9bc8,0x43b8,[ 0x83,0xbf,0xf4,0x07,0x53,0x71,0x4f,0x87 ] };
27831   /// The `IsSwipeNavigationEnabled` property enables or disables the ability of the
27832   /// end user to use swiping gesture on touch input enabled devices to
27833   /// navigate in WebView2. It defaults to `TRUE`.
27834   ///
27835   /// When this property is `TRUE`, then all configured navigation gestures are enabled:
27836   /// 1. Swiping left and right to navigate forward and backward is always configured.
27837   /// 2. Swiping down to refresh is off by default and not exposed via our API currently,
27838   /// it requires the "--pull-to-refresh" option to be included in the additional browser
27839   /// arguments to be configured. (See put_AdditionalBrowserArguments.)
27840   ///
27841   /// When set to `FALSE`, the end user cannot swipe to navigate or pull to refresh.
27842   /// This API only affects the overscrolling navigation functionality and has no
27843   /// effect on the scrolling interaction used to explore the web content shown
27844   /// in WebView2.
27845   ///
27846   /// Disabling/Enabling IsSwipeNavigationEnabled takes effect after the
27847   /// next navigation.
27848   ///
27849   /// \snippet SettingsComponent.cpp ToggleSwipeNavigationEnabled
27850   @(" propget")
27851 	HRESULT get_IsSwipeNavigationEnabled(@("out, retval") BOOL* enabled);
27852   /// Set the `IsSwipeNavigationEnabled` property
27853   @(" propput")
27854 	HRESULT put_IsSwipeNavigationEnabled(in BOOL enabled);
27855 }
27856 
27857 /// A continuation of the ICoreWebView2Settings interface to hide Pdf toolbar items.
27858 const GUID IID_ICoreWebView2Settings7 = ICoreWebView2Settings7.iid;
27859 
27860 interface ICoreWebView2Settings7 : ICoreWebView2Settings6
27861 {
27862     static const GUID iid = { 0x488dc902,0x35ef,0x42d2,[ 0xbc,0x7d,0x94,0xb6,0x5c,0x4b,0xc4,0x9c ] };
27863   /// `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.
27864   /// Changes to this property apply to all CoreWebView2s in the same environment and using the same profile.
27865   /// Changes to this setting apply only after the next navigation.
27866   /// \snippet SettingsComponent.cpp ToggleHidePdfToolbarItems
27867   @(" propget")
27868 	HRESULT get_HiddenPdfToolbarItems(@("out, retval") COREWEBVIEW2_PDF_TOOLBAR_ITEMS* hidden_pdf_toolbar_items);
27869 
27870   /// Set the `HiddenPdfToolbarItems` property.
27871   @(" propput")
27872 	HRESULT put_HiddenPdfToolbarItems(in COREWEBVIEW2_PDF_TOOLBAR_ITEMS hidden_pdf_toolbar_items);
27873 }
27874 
27875 /// A continuation of the ICoreWebView2Settings interface to manage smartscreen.
27876 const GUID IID_ICoreWebView2Settings8 = ICoreWebView2Settings8.iid;
27877 
27878 interface ICoreWebView2Settings8 : ICoreWebView2Settings7
27879 {
27880     static const GUID iid = { 0x9e6b0e8f,0x86ad,0x4e81,[ 0x81,0x47,0xa9,0xb5,0xed,0xb6,0x86,0x50 ] };
27881   /// SmartScreen helps webviews identify reported phishing and malware websites
27882   /// and also helps users make informed decisions about downloads.
27883   /// `IsReputationCheckingRequired` is used to control whether SmartScreen
27884   /// enabled or not. SmartScreen is enabled or disabled for all CoreWebView2s
27885   /// using the same user data folder. If
27886   /// CoreWebView2Setting.IsReputationCheckingRequired is true for any
27887   /// CoreWebView2 using the same user data folder, then SmartScreen is enabled.
27888   /// If CoreWebView2Setting.IsReputationCheckingRequired is false for all
27889   /// CoreWebView2 using the same user data folder, then SmartScreen is
27890   /// disabled. When it is changed, the change will be applied to all WebViews
27891   /// using the same user data folder on the next navigation or download. The
27892   /// default value for `IsReputationCheckingRequired` is true. If the newly
27893   /// created CoreWebview2 does not set SmartScreen to false, when
27894   /// navigating(Such as Navigate(), LoadDataUrl(), ExecuteScript(), etc.), the
27895   /// default value will be applied to all CoreWebview2 using the same user data
27896   /// folder.
27897   /// SmartScreen of WebView2 apps can be controlled by Windows system setting
27898   /// "SmartScreen for Microsoft Edge", specially, for WebView2 in Windows
27899   /// Store apps, SmartScreen is controlled by another Windows system setting
27900   /// "SmartScreen for Microsoft Store apps". When the Windows setting is enabled, the
27901   /// SmartScreen operates under the control of the `IsReputationCheckingRequired`.
27902   /// When the Windows setting is disabled, the SmartScreen will be disabled
27903   /// regardless of the `IsReputationCheckingRequired` value set in WebView2 apps.
27904   /// In other words, under this circumstance the value of
27905   /// `IsReputationCheckingRequired` will be saved but overridden by system setting.
27906   /// Upon re-enabling the Windows setting, the CoreWebview2 will reference the
27907   /// `IsReputationCheckingRequired` to determine the SmartScreen status.
27908   /// \snippet SettingsComponent.cpp ToggleSmartScreen
27909   @(" propget")
27910 	HRESULT get_IsReputationCheckingRequired(@("out, retval") BOOL* value);
27911 
27912   /// Sets whether this webview2 instance needs SmartScreen protection for its content.
27913   /// Set the `IsReputationCheckingRequired` property.
27914   @(" propput")
27915 	HRESULT put_IsReputationCheckingRequired(in BOOL value);
27916 }
27917 
27918 /// Event args for the `ProcessFailed` event.
27919 const GUID IID_ICoreWebView2ProcessFailedEventArgs = ICoreWebView2ProcessFailedEventArgs.iid;
27920 
27921 interface ICoreWebView2ProcessFailedEventArgs : IUnknown
27922 {
27923     static const GUID iid = { 0x8155a9a4,0x1474,0x4a86,[ 0x8c,0xae,0x15,0x1b,0x0f,0xa6,0xb8,0xca ] };
27924 
27925   /// The kind of process failure that has occurred. This is a combination of
27926   /// process kind (for example, browser, renderer, gpu) and failure (exit,
27927   /// unresponsiveness). Renderer processes are further divided in _main frame_
27928   /// renderer (`RenderProcessExited`, `RenderProcessUnresponsive`) and
27929   /// _subframe_ renderer (`FrameRenderProcessExited`). To learn about the
27930   /// conditions under which each failure kind occurs, see
27931   /// `COREWEBVIEW2_PROCESS_FAILED_KIND`.
27932   @(" propget")
27933 	HRESULT get_ProcessFailedKind(
27934       @("out, retval") COREWEBVIEW2_PROCESS_FAILED_KIND* processFailedKind);
27935 }
27936 
27937 /// Receives `ProcessFailed` events.
27938 const GUID IID_ICoreWebView2ProcessFailedEventHandler = ICoreWebView2ProcessFailedEventHandler.iid;
27939 
27940 interface ICoreWebView2ProcessFailedEventHandler : IUnknown
27941 {
27942     static const GUID iid = { 0x79e0aea4,0x990b,0x42d9,[ 0xaa,0x1d,0x0f,0xcc,0x2e,0x5b,0xc7,0xf1 ] };
27943 
27944   /// Provides the event args for the corresponding event.
27945 
27946   HRESULT Invoke(
27947       /+[in]+/ ICoreWebView2 sender,
27948       /+[in]+/ ICoreWebView2ProcessFailedEventArgs args);
27949 }
27950 
27951 /// Implements the interface to receive `ZoomFactorChanged` events.  Use the
27952 /// `ICoreWebView2Controller.ZoomFactor` property to get the modified zoom
27953 /// factor.
27954 
27955 const GUID IID_ICoreWebView2ZoomFactorChangedEventHandler = ICoreWebView2ZoomFactorChangedEventHandler.iid;
27956 
27957 interface ICoreWebView2ZoomFactorChangedEventHandler : IUnknown
27958 {
27959     static const GUID iid = { 0xb52d71d6,0xc4df,0x4543,[ 0xa9,0x0c,0x64,0xa3,0xe6,0x0f,0x38,0xcb ] };
27960 
27961   /// Provides the event args for the corresponding event.  No event args exist
27962   /// and the `args` parameter is set to `null`.
27963 
27964   HRESULT Invoke(/+[in]+/ ICoreWebView2Controller sender, /+[in]+/ IUnknown args);
27965 }
27966 
27967 /// Iterator for a collection of HTTP headers.  For more information, navigate
27968 /// to ICoreWebView2HttpRequestHeaders and ICoreWebView2HttpResponseHeaders.
27969 ///
27970 /// \snippet ScenarioWebViewEventMonitor.cpp HttpRequestHeaderIterator
27971 const GUID IID_ICoreWebView2HttpHeadersCollectionIterator = ICoreWebView2HttpHeadersCollectionIterator.iid;
27972 
27973 interface ICoreWebView2HttpHeadersCollectionIterator : IUnknown
27974 {
27975     static const GUID iid = { 0x0702fc30,0xf43b,0x47bb,[ 0xab,0x52,0xa4,0x2c,0xb5,0x52,0xad,0x9f ] };
27976 
27977   /// Get the name and value of the current HTTP header of the iterator.  If
27978   /// the previous `MoveNext` operation set the `hasNext` parameter to `FALSE`,
27979   /// this method fails.
27980   ///
27981   /// The caller must free the returned strings with `CoTaskMemFree`.  See
27982   /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings).
27983 
27984   HRESULT GetCurrentHeader(@("out") LPWSTR* name,
27985 		@("out") LPWSTR* value);
27986 
27987   /// `TRUE` when the iterator has not run out of headers.  If the collection
27988   /// over which the iterator is iterating is empty or if the iterator has gone
27989   ///  past the end of the collection then this is `FALSE`.
27990 
27991   @(" propget")
27992 	HRESULT get_HasCurrentHeader(@("out, retval") BOOL* hasCurrent);
27993 
27994   /// Move the iterator to the next HTTP header in the collection.
27995   ///
27996   /// \> [!NOTE]\n \> If no more HTTP headers exist, the `hasNext` parameter is set to
27997   /// `FALSE`.  After this occurs the `GetCurrentHeader` method fails.
27998 
27999   HRESULT MoveNext(@("out, retval") BOOL* hasNext);
28000 }
28001 
28002 /// HTTP request headers.  Used to inspect the HTTP request on
28003 /// `WebResourceRequested` event and `NavigationStarting` event.
28004 ///
28005 /// \> [!NOTE]\n\> It is possible to modify the HTTP request from a `WebResourceRequested`
28006 /// event, but not from a `NavigationStarting` event.
28007 const GUID IID_ICoreWebView2HttpRequestHeaders = ICoreWebView2HttpRequestHeaders.iid;
28008 
28009 interface ICoreWebView2HttpRequestHeaders : IUnknown
28010 {
28011     static const GUID iid = { 0xe86cac0e,0x5523,0x465c,[ 0xb5,0x36,0x8f,0xb9,0xfc,0x8c,0x8c,0x60 ] };
28012 
28013   /// Gets the header value matching the name.
28014   ///
28015   /// The caller must free the returned string with `CoTaskMemFree`.  See
28016   /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings).
28017 
28018   HRESULT GetHeader(in LPCWSTR name,
28019 		@("out, retval") LPWSTR* value);
28020 
28021   /// Gets the header value matching the name using an iterator.
28022 
28023   HRESULT GetHeaders(in LPCWSTR name,
28024 		@("out, retval") ICoreWebView2HttpHeadersCollectionIterator * iterator);
28025 
28026   /// Verifies that the headers contain an entry that matches the header name.
28027 
28028   HRESULT Contains(in LPCWSTR name,
28029 		@("out, retval") BOOL* contains);
28030 
28031   /// Adds or updates header that matches the name.
28032 
28033   HRESULT SetHeader(in LPCWSTR name, in LPCWSTR value);
28034 
28035   /// Removes header that matches the name.
28036 
28037   HRESULT RemoveHeader(in LPCWSTR name);
28038 
28039   /// Gets an iterator over the collection of request headers.
28040 
28041   HRESULT GetIterator(
28042       @("out, retval") ICoreWebView2HttpHeadersCollectionIterator * iterator);
28043 }
28044 
28045 /// HTTP response headers.  Used to construct a `WebResourceResponse` for the
28046 /// `WebResourceRequested` event.
28047 const GUID IID_ICoreWebView2HttpResponseHeaders = ICoreWebView2HttpResponseHeaders.iid;
28048 
28049 interface ICoreWebView2HttpResponseHeaders : IUnknown
28050 {
28051     static const GUID iid = { 0x03c5ff5a,0x9b45,0x4a88,[ 0x88,0x1c,0x89,0xa9,0xf3,0x28,0x61,0x9c ] };
28052 
28053   /// Appends header line with name and value.
28054 
28055   HRESULT AppendHeader(in LPCWSTR name, in LPCWSTR value);
28056 
28057   /// Verifies that the headers contain entries that match the header name.
28058 
28059   HRESULT Contains(in LPCWSTR name,
28060 		@("out, retval") BOOL* contains);
28061 
28062   /// Gets the first header value in the collection matching the name.
28063   ///
28064   /// The caller must free the returned string with `CoTaskMemFree`.  See
28065   /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings).
28066 
28067   HRESULT GetHeader(in LPCWSTR name,
28068 		@("out, retval") LPWSTR* value);
28069 
28070   /// Gets the header values matching the name.
28071 
28072   HRESULT GetHeaders(in LPCWSTR name,
28073 		@("out, retval") ICoreWebView2HttpHeadersCollectionIterator * iterator);
28074 
28075   /// Gets an iterator over the collection of entire response headers.
28076 
28077   HRESULT GetIterator(
28078   @("out, retval") ICoreWebView2HttpHeadersCollectionIterator * iterator);
28079 }
28080 
28081 /// An HTTP request used with the `WebResourceRequested` event.
28082 const GUID IID_ICoreWebView2WebResourceRequest = ICoreWebView2WebResourceRequest.iid;
28083 
28084 interface ICoreWebView2WebResourceRequest : IUnknown
28085 {
28086     static const GUID iid = { 0x97055cd4,0x512c,0x4264,[ 0x8b,0x5f,0xe3,0xf4,0x46,0xce,0xa6,0xa5 ] };
28087 
28088   /// The request URI.
28089   ///
28090   /// The caller must free the returned string with `CoTaskMemFree`.  See
28091   /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings).
28092 
28093   @(" propget")
28094 	HRESULT get_Uri(@("out, retval") LPWSTR* uri);
28095 
28096   /// Sets the `Uri` property.
28097 
28098   @(" propput")
28099 	HRESULT put_Uri(in LPCWSTR uri);
28100 
28101   /// The HTTP request method.
28102   ///
28103   /// The caller must free the returned string with `CoTaskMemFree`.  See
28104   /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings).
28105 
28106   @(" propget")
28107 	HRESULT get_Method(@("out, retval") LPWSTR* method);
28108 
28109   /// Sets the `Method` property.
28110 
28111   @(" propput")
28112 	HRESULT put_Method(in LPCWSTR method);
28113 
28114   /// The HTTP request message body as stream.  POST data should be here.  If a
28115   /// stream is set, which overrides the message body, the stream must have
28116   /// all the content data available by the time the `WebResourceRequested`
28117   /// event deferral of this response is completed.  Stream should be agile or
28118   /// be created from a background STA to prevent performance impact to the UI
28119   /// thread.  `Null` means no content data.  `IStream` semantics apply
28120   /// (return `S_OK` to `Read` runs until all data is exhausted).
28121 
28122   @(" propget")
28123 	HRESULT get_Content(@("out, retval") IStream** content);
28124 
28125   /// Sets the `Content` property.
28126 
28127   @(" propput")
28128 	HRESULT put_Content(in IStream* content);
28129 
28130   /// The mutable HTTP request headers
28131 
28132   @(" propget")
28133 	HRESULT get_Headers(@("out, retval") ICoreWebView2HttpRequestHeaders * headers);
28134 }
28135 
28136 /// An HTTP response used with the `WebResourceRequested` event.
28137 const GUID IID_ICoreWebView2WebResourceResponse = ICoreWebView2WebResourceResponse.iid;
28138 
28139 interface ICoreWebView2WebResourceResponse : IUnknown
28140 {
28141     static const GUID iid = { 0xaafcc94f,0xfa27,0x48fd,[ 0x97,0xdf,0x83,0x0e,0xf7,0x5a,0xae,0xc9 ] };
28142 
28143   /// HTTP response content as stream.  Stream must have all the content data
28144   /// available by the time the `WebResourceRequested` event deferral of this
28145   /// response is completed.  Stream should be agile or be created from a
28146   /// background thread to prevent performance impact to the UI thread.  `Null`
28147   ///  means no content data.  `IStream` semantics apply (return `S_OK` to
28148   /// `Read` runs until all data is exhausted).
28149   /// When providing the response data, you should consider relevant HTTP
28150   /// request headers just like an HTTP server would do. For example, if the
28151   /// request was for a video resource in a HTML video element, the request may
28152   /// contain the [Range](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Range)
28153   /// header to request only a part of the video that is streaming. In this
28154   /// case, your response stream should be only the portion of the video
28155   /// specified by the range HTTP request headers and you should set the
28156   /// appropriate
28157   /// [Content-Range](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Range)
28158   /// header in the response.
28159 
28160   @(" propget")
28161 	HRESULT get_Content(@("out, retval") IStream** content);
28162 
28163   /// Sets the `Content` property.
28164 
28165   @(" propput")
28166 	HRESULT put_Content(in IStream* content);
28167 
28168   /// Overridden HTTP response headers.
28169 
28170   @(" propget")
28171 	HRESULT get_Headers(@("out, retval") ICoreWebView2HttpResponseHeaders * headers);
28172 
28173   /// The HTTP response status code.
28174 
28175   @(" propget")
28176 	HRESULT get_StatusCode(@("out, retval") int* statusCode);
28177 
28178   /// Sets the `StatusCode` property.
28179 
28180   @(" propput")
28181 	HRESULT put_StatusCode(in int statusCode);
28182 
28183   /// The HTTP response reason phrase.
28184   ///
28185   /// The caller must free the returned string with `CoTaskMemFree`.  See
28186   /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings).
28187 
28188   @(" propget")
28189 	HRESULT get_ReasonPhrase(@("out, retval") LPWSTR* reasonPhrase);
28190 
28191   /// Sets the `ReasonPhrase` property.
28192 
28193   @(" propput")
28194 	HRESULT put_ReasonPhrase(in LPCWSTR reasonPhrase);
28195 }
28196 
28197 /// Event args for the `NavigationStarting` event.
28198 const GUID IID_ICoreWebView2NavigationStartingEventArgs = ICoreWebView2NavigationStartingEventArgs.iid;
28199 
28200 interface ICoreWebView2NavigationStartingEventArgs : IUnknown
28201 {
28202     static const GUID iid = { 0x5b495469,0xe119,0x438a,[ 0x9b,0x18,0x76,0x04,0xf2,0x5f,0x2e,0x49 ] };
28203 
28204   /// The uri of the requested navigation.
28205   ///
28206   /// The caller must free the returned string with `CoTaskMemFree`.  See
28207   /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings).
28208 
28209   @(" propget")
28210 	HRESULT get_Uri(@("out, retval") LPWSTR* uri);
28211 
28212   /// `TRUE` when the navigation was initiated through a user gesture as
28213   /// opposed to programmatic navigation by page script. Navigations initiated
28214   /// via WebView2 APIs are considered as user initiated.
28215 
28216   @(" propget")
28217 	HRESULT get_IsUserInitiated(@("out, retval") BOOL* isUserInitiated);
28218 
28219   /// `TRUE` when the navigation is redirected.
28220 
28221   @(" propget")
28222 	HRESULT get_IsRedirected(@("out, retval") BOOL* isRedirected);
28223 
28224   /// The HTTP request headers for the navigation.
28225   ///
28226   /// \> [!NOTE]\n\> You are not able to modify the HTTP request headers in a
28227   /// `NavigationStarting` event.
28228 
28229   @(" propget")
28230 	HRESULT get_RequestHeaders(@("out, retval") ICoreWebView2HttpRequestHeaders * requestHeaders);
28231 
28232   /// The host may set this flag to cancel the navigation.  If set, the
28233   /// navigation is not longer present and the content of the current page is
28234   /// intact.  For performance reasons, `GET` HTTP requests may happen, while
28235   /// the host is responding.  You may set cookies and use part of a request
28236   /// for the navigation.  Cancellation for navigation to `about:blank` or
28237   /// frame navigation to `srcdoc` is not supported.  Such attempts are
28238   /// ignored.  A cancelled navigation will fire a `NavigationCompleted` event
28239   /// with a `WebErrorStatus` of
28240   /// `COREWEBVIEW2_WEB_ERROR_STATUS_OPERATION_CANCELED`.
28241 
28242   @(" propget")
28243 	HRESULT get_Cancel(@("out, retval") BOOL* cancel);
28244 
28245   /// Sets the `Cancel` property.
28246 
28247   @(" propput")
28248 	HRESULT put_Cancel(in BOOL cancel);
28249 
28250   /// The ID of the navigation.
28251 
28252   @(" propget")
28253 	HRESULT get_NavigationId(@("out, retval") UINT64* navigationId);
28254 }
28255 
28256 /// The AdditionalAllowedFrameAncestors API that enable developers to provide additional allowed frame ancestors.
28257 const GUID IID_ICoreWebView2NavigationStartingEventArgs2 = ICoreWebView2NavigationStartingEventArgs2.iid;
28258 
28259 interface ICoreWebView2NavigationStartingEventArgs2 : ICoreWebView2NavigationStartingEventArgs
28260 {
28261     static const GUID iid = { 0x9086BE93,0x91AA,0x472D,[ 0xA7,0xE0,0x57,0x9F,0x2B,0xA0,0x06,0xAD ] };
28262 
28263   /// Get additional allowed frame ancestors set by the host app.
28264   ///
28265   /// The caller must free the returned string with `CoTaskMemFree`.  See
28266   /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings).
28267   @(" propget")
28268 	HRESULT get_AdditionalAllowedFrameAncestors(@("out, retval") LPWSTR* value);
28269 
28270   /// The app may set this property to allow a frame to be embedded by additional ancestors besides what is allowed by
28271   /// http header [X-Frame-Options](https://developer.mozilla.org/docs/Web/HTTP/Headers/X-Frame-Options)
28272   /// and [Content-Security-Policy frame-ancestors directive](https://developer.mozilla.org/docs/Web/HTTP/Headers/Content-Security-Policy/frame-ancestors).
28273   /// If set, a frame ancestor is allowed if it is allowed by the additional allowed frame
28274   /// ancestors or original http header from the site.
28275   /// Whether an ancestor is allowed by the additional allowed frame ancestors is done the same way as if the site provided
28276   /// it as the source list of the Content-Security-Policy frame-ancestors directive.
28277   /// For example, if `https://example.com` and `https://www.example.com` are the origins of the top
28278   /// page and intermediate iframes that embed a nested site-embedding iframe, and you fully trust
28279   /// those origins, you should set this property to `https://example.com https://www.example.com`.
28280   /// This property gives the app the ability to use iframe to embed sites that otherwise
28281   /// could not be embedded in an iframe in trusted app pages.
28282   /// This could potentially subject the embedded sites to [Clickjacking](https://en.wikipedia.org/wiki/Clickjacking)
28283   /// attack from the code running in the embedding web page. Therefore, you should only
28284   /// set this property with origins of fully trusted embedding page and any intermediate iframes.
28285   /// Whenever possible, you should use the list of specific origins of the top and intermediate
28286   /// frames instead of wildcard characters for this property.
28287   /// This API is to provide limited support for app scenarios that used to be supported by
28288   /// `<webview>` element in other solutions like JavaScript UWP apps and Electron.
28289   /// You should limit the usage of this property to trusted pages, and specific navigation
28290   /// target url, by checking the `Source` of the WebView2, and `Uri` of the event args.
28291   ///
28292   /// This property is ignored for top level document navigation.
28293   ///
28294   /// \snippet ScriptComponent.cpp AdditionalAllowedFrameAncestors_1
28295   ///
28296   /// \snippet ScriptComponent.cpp AdditionalAllowedFrameAncestors_2
28297   @(" propput")
28298 	HRESULT put_AdditionalAllowedFrameAncestors(in LPCWSTR value);
28299 }
28300 
28301 /// The NavigationKind API that enables developers to get more information about
28302 /// navigation type.
28303 const GUID IID_ICoreWebView2NavigationStartingEventArgs3 = ICoreWebView2NavigationStartingEventArgs3.iid;
28304 
28305 interface ICoreWebView2NavigationStartingEventArgs3 : ICoreWebView2NavigationStartingEventArgs2
28306 {
28307     static const GUID iid = { 0xDDFFE494,0x4942,0x4BD2,[ 0xAB,0x73,0x35,0xB8,0xFF,0x40,0xE1,0x9F ] };
28308 
28309   /// Get the navigation kind of this navigation.
28310   ///
28311   @(" propget")
28312 	HRESULT get_NavigationKind(@("out, retval") COREWEBVIEW2_NAVIGATION_KIND* navigation_kind);
28313 }
28314 
28315 /// Receives `NavigationStarting` events.
28316 const GUID IID_ICoreWebView2NavigationStartingEventHandler = ICoreWebView2NavigationStartingEventHandler.iid;
28317 
28318 interface ICoreWebView2NavigationStartingEventHandler : IUnknown
28319 {
28320     static const GUID iid = { 0x9adbe429,0xf36d,0x432b,[ 0x9d,0xdc,0xf8,0x88,0x1f,0xbd,0x76,0xe3 ] };
28321 
28322   /// Provides the event args for the corresponding event.
28323 
28324   HRESULT Invoke(
28325       /+[in]+/ ICoreWebView2 sender,
28326       /+[in]+/ ICoreWebView2NavigationStartingEventArgs args);
28327 }
28328 
28329 /// Event args for the `ContentLoading` event.
28330 const GUID IID_ICoreWebView2ContentLoadingEventArgs = ICoreWebView2ContentLoadingEventArgs.iid;
28331 
28332 interface ICoreWebView2ContentLoadingEventArgs : IUnknown
28333 {
28334     static const GUID iid = { 0x0c8a1275,0x9b6b,0x4901,[ 0x87,0xad,0x70,0xdf,0x25,0xba,0xfa,0x6e ] };
28335 
28336   /// `TRUE` if the loaded content is an error page.
28337 
28338   @(" propget")
28339 	HRESULT get_IsErrorPage(@("out, retval") BOOL* isErrorPage);
28340 
28341   /// The ID of the navigation.
28342 
28343   @(" propget")
28344 	HRESULT get_NavigationId(@("out, retval") UINT64* navigationId);
28345 }
28346 
28347 /// Receives `ContentLoading` events.
28348 const GUID IID_ICoreWebView2ContentLoadingEventHandler = ICoreWebView2ContentLoadingEventHandler.iid;
28349 
28350 interface ICoreWebView2ContentLoadingEventHandler : IUnknown
28351 {
28352     static const GUID iid = { 0x364471e7,0xf2be,0x4910,[ 0xbd,0xba,0xd7,0x20,0x77,0xd5,0x1c,0x4b ] };
28353 
28354   /// Provides the event args for the corresponding event.
28355 
28356   HRESULT Invoke(/+[in]+/ ICoreWebView2 sender, /+[in]+/ ICoreWebView2ContentLoadingEventArgs args);
28357 }
28358 
28359 /// Event args for the `SourceChanged` event.
28360 const GUID IID_ICoreWebView2SourceChangedEventArgs = ICoreWebView2SourceChangedEventArgs.iid;
28361 
28362 interface ICoreWebView2SourceChangedEventArgs : IUnknown
28363 {
28364     static const GUID iid = { 0x31e0e545,0x1dba,0x4266,[ 0x89,0x14,0xf6,0x38,0x48,0xa1,0xf7,0xd7 ] };
28365 
28366   /// `TRUE` if the page being navigated to is a new document.
28367 
28368   @(" propget")
28369 	HRESULT get_IsNewDocument(@("out, retval") BOOL* isNewDocument);
28370 }
28371 
28372 /// Receives `SourceChanged` events.
28373 const GUID IID_ICoreWebView2SourceChangedEventHandler = ICoreWebView2SourceChangedEventHandler.iid;
28374 
28375 interface ICoreWebView2SourceChangedEventHandler : IUnknown
28376 {
28377     static const GUID iid = { 0x3c067f9f,0x5388,0x4772,[ 0x8b,0x48,0x79,0xf7,0xef,0x1a,0xb3,0x7c ] };
28378 
28379   /// Provides the event args for the corresponding event.
28380 
28381   HRESULT Invoke(/+[in]+/ ICoreWebView2 sender, /+[in]+/ ICoreWebView2SourceChangedEventArgs args);
28382 }
28383 
28384 /// Receives `HistoryChanged` events.
28385 const GUID IID_ICoreWebView2HistoryChangedEventHandler = ICoreWebView2HistoryChangedEventHandler.iid;
28386 
28387 interface ICoreWebView2HistoryChangedEventHandler : IUnknown
28388 {
28389     static const GUID iid = { 0xc79a420c,0xefd9,0x4058,[ 0x92,0x95,0x3e,0x8b,0x4b,0xca,0xb6,0x45 ] };
28390 
28391   /// Provides the event args for the corresponding event.  No event args exist
28392   /// and the `args` parameter is set to `null`.
28393 
28394   HRESULT Invoke(/+[in]+/ ICoreWebView2 sender, /+[in]+/ IUnknown args);
28395 }
28396 
28397 /// Event args for the `ScriptDialogOpening` event.
28398 const GUID IID_ICoreWebView2ScriptDialogOpeningEventArgs = ICoreWebView2ScriptDialogOpeningEventArgs.iid;
28399 
28400 interface ICoreWebView2ScriptDialogOpeningEventArgs : IUnknown
28401 {
28402     static const GUID iid = { 0x7390bb70,0xabe0,0x4843,[ 0x95,0x29,0xf1,0x43,0xb3,0x1b,0x03,0xd6 ] };
28403 
28404   /// The URI of the page that requested the dialog box.
28405   ///
28406   /// The caller must free the returned string with `CoTaskMemFree`.  See
28407   /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings).
28408 
28409   @(" propget")
28410 	HRESULT get_Uri(@("out, retval") LPWSTR* uri);
28411 
28412   /// The kind of JavaScript dialog box.  `alert`, `confirm`, `prompt`, or
28413   /// `beforeunload`.
28414 
28415   @(" propget")
28416 	HRESULT get_Kind(@("out, retval") COREWEBVIEW2_SCRIPT_DIALOG_KIND* kind);
28417 
28418   /// The message of the dialog box.  From JavaScript this is the first
28419   /// parameter passed to `alert`, `confirm`, and `prompt` and is empty for
28420   /// `beforeunload`.
28421   ///
28422   /// The caller must free the returned string with `CoTaskMemFree`.  See
28423   /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings).
28424 
28425   @(" propget")
28426 	HRESULT get_Message(@("out, retval") LPWSTR* message);
28427 
28428   /// The host may run this to respond with **OK** to `confirm`, `prompt`, and
28429   /// `beforeunload` dialogs.  Do not run this method to indicate cancel.
28430   /// From JavaScript, this means that the `confirm` and `beforeunload` function
28431   /// returns `TRUE` if `Accept` is run.  And for the prompt function it returns
28432   /// the value of `ResultText` if `Accept` is run and otherwise returns
28433   /// `FALSE`.
28434 
28435   HRESULT Accept();
28436 
28437   /// The second parameter passed to the JavaScript prompt dialog.
28438   /// The result of the prompt JavaScript function uses this value as the
28439   /// default value.
28440   ///
28441   /// The caller must free the returned string with `CoTaskMemFree`.  See
28442   /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings).
28443 
28444   @(" propget")
28445 	HRESULT get_DefaultText(@("out, retval") LPWSTR* defaultText);
28446 
28447   /// The return value from the JavaScript prompt function if `Accept` is run.
28448   ///  This value is ignored for dialog kinds other than prompt.  If `Accept`
28449   /// is not run, this value is ignored and `FALSE` is returned from prompt.
28450   ///
28451   /// The caller must free the returned string with `CoTaskMemFree`.  See
28452   /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings).
28453 
28454   @(" propget")
28455 	HRESULT get_ResultText(@("out, retval") LPWSTR* resultText);
28456 
28457   /// Sets the `ResultText` property.
28458 
28459   @(" propput")
28460 	HRESULT put_ResultText(in LPCWSTR resultText);
28461 
28462   /// Returns an `ICoreWebView2Deferral` object.  Use this operation to
28463   /// complete the event at a later time.
28464 
28465   HRESULT GetDeferral(@("out, retval") ICoreWebView2Deferral * deferral);
28466 }
28467 
28468 /// Receives `ScriptDialogOpening` events.
28469 const GUID IID_ICoreWebView2ScriptDialogOpeningEventHandler = ICoreWebView2ScriptDialogOpeningEventHandler.iid;
28470 
28471 interface ICoreWebView2ScriptDialogOpeningEventHandler : IUnknown
28472 {
28473     static const GUID iid = { 0xef381bf9,0xafa8,0x4e37,[ 0x91,0xc4,0x8a,0xc4,0x85,0x24,0xbd,0xfb ] };
28474 
28475   /// Provides the event args for the corresponding event.
28476 
28477   HRESULT Invoke(
28478       /+[in]+/ ICoreWebView2 sender,
28479       /+[in]+/ ICoreWebView2ScriptDialogOpeningEventArgs args);
28480 }
28481 
28482 /// Event args for the `NavigationCompleted` event.
28483 const GUID IID_ICoreWebView2NavigationCompletedEventArgs = ICoreWebView2NavigationCompletedEventArgs.iid;
28484 
28485 interface ICoreWebView2NavigationCompletedEventArgs : IUnknown
28486 {
28487     static const GUID iid = { 0x30d68b7d,0x20d9,0x4752,[ 0xa9,0xca,0xec,0x84,0x48,0xfb,0xb5,0xc1 ] };
28488 
28489   /// `TRUE` when the navigation is successful.  `FALSE` for a navigation that
28490   /// ended up in an error page (failures due to no network, DNS lookup
28491   /// failure, HTTP server responds with 4xx), but may also be `FALSE` for
28492   /// additional scenarios such as `window.stop()` run on navigated page.
28493   /// Note that WebView2 will report the navigation as 'unsuccessful' if the load
28494   /// for the navigation did not reach the expected completion for any reason. Such
28495   /// reasons include potentially catastrophic issues such network and certificate
28496   /// issues, but can also be the result of intended actions such as the app canceling a navigation or
28497   /// navigating away before the original navigation completed. Applications should not
28498   /// just rely on this flag, but also consider the reported WebErrorStatus to
28499   /// determine whether the failure is indeed catastrophic in their context.
28500   /// WebErrorStatuses that may indicate a non-catastrophic failure include:
28501   /// - COREWEBVIEW2_WEB_ERROR_STATUS_OPERATION_CANCELED
28502   /// - COREWEBVIEW2_WEB_ERROR_STATUS_VALID_AUTHENTICATION_CREDENTIALS_REQUIRED
28503   /// - COREWEBVIEW2_WEB_ERROR_STATUS_VALID_PROXY_AUTHENTICATION_REQUIRED
28504 
28505   @(" propget")
28506 	HRESULT get_IsSuccess(@("out, retval") BOOL* isSuccess);
28507 
28508   /// The error code if the navigation failed.
28509 
28510   @(" propget")
28511 	HRESULT get_WebErrorStatus(@("out, retval") COREWEBVIEW2_WEB_ERROR_STATUS*
28512       webErrorStatus);
28513 
28514   /// The ID of the navigation.
28515 
28516   @(" propget")
28517 	HRESULT get_NavigationId(@("out, retval") UINT64* navigationId);
28518 }
28519 
28520 /// This is an interface for the StatusCode property of
28521 /// ICoreWebView2NavigationCompletedEventArgs
28522 const GUID IID_ICoreWebView2NavigationCompletedEventArgs2 = ICoreWebView2NavigationCompletedEventArgs2.iid;
28523 
28524 interface ICoreWebView2NavigationCompletedEventArgs2 : ICoreWebView2NavigationCompletedEventArgs
28525 {
28526     static const GUID iid = { 0xFDF8B738,0xEE1E,0x4DB2,[ 0xA3,0x29,0x8D,0x7D,0x7B,0x74,0xD7,0x92 ] };
28527   /// The HTTP status code of the navigation if it involved an HTTP request.
28528   /// For instance, this will usually be 200 if the request was successful, 404
28529   /// if a page was not found, etc.  See
28530   /// https://developer.mozilla.org/docs/Web/HTTP/Status for a list of
28531   /// common status codes.
28532   ///
28533   /// The `HttpStatusCode` property will be 0 in the following cases:
28534   /// * The navigation did not involve an HTTP request.  For instance, if it was
28535   ///   a navigation to a file:// URL, or if it was a same-document navigation.
28536   /// * The navigation failed before a response was received.  For instance, if
28537   ///   the hostname was not found, or if there was a network error.
28538   ///
28539   /// In those cases, you can get more information from the `IsSuccess` and
28540   /// `WebErrorStatus` properties.
28541   ///
28542   /// If the navigation receives a successful HTTP response, but the navigated
28543   /// page calls `window.stop()` before it finishes loading, then
28544   /// `HttpStatusCode` may contain a success code like 200, but `IsSuccess` will
28545   /// be FALSE and `WebErrorStatus` will be
28546   /// `COREWEBVIEW2_WEB_ERROR_STATUS_CONNECTION_ABORTED`.
28547   ///
28548   /// Since WebView2 handles HTTP continuations and redirects automatically, it
28549   /// is unlikely for `HttpStatusCode` to ever be in the 1xx or 3xx ranges.
28550   @(" propget")
28551 	HRESULT get_HttpStatusCode(@("out, retval") int* http_status_code);
28552 }
28553 
28554 /// Receives `NavigationCompleted` events.
28555 const GUID IID_ICoreWebView2NavigationCompletedEventHandler = ICoreWebView2NavigationCompletedEventHandler.iid;
28556 
28557 interface ICoreWebView2NavigationCompletedEventHandler : IUnknown
28558 {
28559     static const GUID iid = { 0xd33a35bf,0x1c49,0x4f98,[ 0x93,0xab,0x00,0x6e,0x05,0x33,0xfe,0x1c ] };
28560 
28561   /// Provides the event args for the corresponding event.
28562 
28563   HRESULT Invoke(
28564       /+[in]+/ ICoreWebView2 sender,
28565       /+[in]+/ ICoreWebView2NavigationCompletedEventArgs args);
28566 }
28567 
28568 /// Event args for the `PermissionRequested` event.
28569 const GUID IID_ICoreWebView2PermissionRequestedEventArgs = ICoreWebView2PermissionRequestedEventArgs.iid;
28570 
28571 interface ICoreWebView2PermissionRequestedEventArgs : IUnknown
28572 {
28573     static const GUID iid = { 0x973ae2ef,0xff18,0x4894,[ 0x8f,0xb2,0x3c,0x75,0x8f,0x04,0x68,0x10 ] };
28574 
28575   /// The origin of the web content that requests the permission.
28576   ///
28577   /// The caller must free the returned string with `CoTaskMemFree`.  See
28578   /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings).
28579 
28580   @(" propget")
28581 	HRESULT get_Uri(@("out, retval") LPWSTR* uri);
28582 
28583   /// The type of the permission that is requested.
28584 
28585   @(" propget")
28586 	HRESULT get_PermissionKind(@("out, retval") COREWEBVIEW2_PERMISSION_KIND* permissionKind);
28587 
28588   /// `TRUE` when the permission request was initiated through a user gesture.
28589   ///
28590   /// \> [!NOTE]\n\> Being initiated through a user gesture does not mean that user intended
28591   /// to access the associated resource.
28592 
28593   @(" propget")
28594 	HRESULT get_IsUserInitiated(@("out, retval") BOOL* isUserInitiated);
28595 
28596   /// The status of a permission request, (for example is the request is granted).
28597   /// The default value is `COREWEBVIEW2_PERMISSION_STATE_DEFAULT`.
28598 
28599   @(" propget")
28600 	HRESULT get_State(@("out, retval") COREWEBVIEW2_PERMISSION_STATE* state);
28601 
28602   /// Sets the `State` property.
28603 
28604   @(" propput")
28605 	HRESULT put_State(in COREWEBVIEW2_PERMISSION_STATE state);
28606 
28607   /// Gets an `ICoreWebView2Deferral` object.  Use the deferral object to make
28608   /// the permission decision at a later time. The deferral only applies to the
28609   /// current request, and does not prevent the `PermissionRequested` event from
28610   /// getting raised for new requests. However, for some permission kinds the
28611   /// WebView will avoid creating a new request if there is a pending request of
28612   /// the same kind.
28613 
28614   HRESULT GetDeferral(@("out, retval") ICoreWebView2Deferral * deferral);
28615 }
28616 
28617 /// Receives `PermissionRequested` events.
28618 const GUID IID_ICoreWebView2PermissionRequestedEventHandler = ICoreWebView2PermissionRequestedEventHandler.iid;
28619 
28620 interface ICoreWebView2PermissionRequestedEventHandler : IUnknown
28621 {
28622     static const GUID iid = { 0x15e1c6a3,0xc72a,0x4df3,[ 0x91,0xd7,0xd0,0x97,0xfb,0xec,0x6b,0xfd ] };
28623 
28624   /// Provides the event args for the corresponding event.
28625 
28626   HRESULT Invoke(
28627       /+[in]+/ ICoreWebView2 sender,
28628       /+[in]+/ ICoreWebView2PermissionRequestedEventArgs args);
28629 }
28630 
28631 /// Receives the result of the `AddScriptToExecuteOnDocumentCreated` method.
28632 const GUID IID_ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandler = ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandler.iid;
28633 
28634 interface ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandler : IUnknown
28635 {
28636     static const GUID iid = { 0xb99369f3,0x9b11,0x47b5,[ 0xbc,0x6f,0x8e,0x78,0x95,0xfc,0xea,0x17 ] };
28637 
28638   /// Provide the completion status and result of the corresponding
28639   /// asynchronous method.
28640 
28641   HRESULT Invoke(in HRESULT errorCode, in LPCWSTR id);
28642 }
28643 
28644 /// Receives the result of the `ExecuteScript` method.
28645 const GUID IID_ICoreWebView2ExecuteScriptCompletedHandler = ICoreWebView2ExecuteScriptCompletedHandler.iid;
28646 
28647 interface ICoreWebView2ExecuteScriptCompletedHandler : IUnknown
28648 {
28649     static const GUID iid = { 0x49511172,0xcc67,0x4bca,[ 0x99,0x23,0x13,0x71,0x12,0xf4,0xc4,0xcc ] };
28650 
28651   /// Provide the implementer with the completion status and result of the
28652   /// corresponding asynchronous method.
28653 
28654   HRESULT Invoke(in HRESULT errorCode, in LPCWSTR resultObjectAsJson);
28655 }
28656 
28657 /// Event args for the `WebResourceRequested` event.
28658 const GUID IID_ICoreWebView2WebResourceRequestedEventArgs = ICoreWebView2WebResourceRequestedEventArgs.iid;
28659 
28660 interface ICoreWebView2WebResourceRequestedEventArgs : IUnknown
28661 {
28662     static const GUID iid = { 0x453e667f,0x12c7,0x49d4,[ 0xbe,0x6d,0xdd,0xbe,0x79,0x56,0xf5,0x7a ] };
28663 
28664   /// The Web resource request.  The request object may be missing some headers
28665   /// that are added by network stack at a later time.
28666 
28667   @(" propget")
28668 	HRESULT get_Request(@("out, retval") ICoreWebView2WebResourceRequest * request);
28669 
28670   /// A placeholder for the web resource response object.  If this object is
28671   /// set, the web resource request is completed with the specified response.
28672 
28673   @(" propget")
28674 	HRESULT get_Response(@("out, retval") ICoreWebView2WebResourceResponse * response);
28675 
28676   /// Sets the `Response` property.  Create an empty web resource response
28677   /// object with `CreateWebResourceResponse` and then modify it to construct
28678   /// the response.
28679 
28680   @(" propput")
28681 	HRESULT put_Response(/+[in]+/ ICoreWebView2WebResourceResponse response);
28682 
28683   /// Obtain an `ICoreWebView2Deferral` object and put the event into a
28684   /// deferred state.  Use the `ICoreWebView2Deferral` object to complete the
28685   /// request at a later time.
28686 
28687   HRESULT GetDeferral(@("out, retval") ICoreWebView2Deferral * deferral);
28688 
28689   /// The web resource request context.
28690 
28691   @(" propget")
28692 	HRESULT get_ResourceContext(@("out, retval") COREWEBVIEW2_WEB_RESOURCE_CONTEXT* context);
28693 }
28694 
28695 /// Runs when a URL request (through network, file, and so on) is made in
28696 /// the webview for a Web resource matching resource context filter and URL
28697 /// specified in `AddWebResourceRequestedFilter`.  The host views and modifies
28698 /// the request or provide a response in a similar pattern to HTTP, in which
28699 /// case the request immediately completed.  This may not contain any request
28700 /// headers that are added by the network stack, such as an `Authorization`
28701 /// header.
28702 const GUID IID_ICoreWebView2WebResourceRequestedEventHandler = ICoreWebView2WebResourceRequestedEventHandler.iid;
28703 
28704 interface ICoreWebView2WebResourceRequestedEventHandler : IUnknown
28705 {
28706     static const GUID iid = { 0xab00b74c,0x15f1,0x4646,[ 0x80,0xe8,0xe7,0x63,0x41,0xd2,0x5d,0x71 ] };
28707 
28708   /// Provides the event args for the corresponding event.
28709 
28710   HRESULT Invoke(
28711       /+[in]+/ ICoreWebView2 sender,
28712       /+[in]+/ ICoreWebView2WebResourceRequestedEventArgs args);
28713 }
28714 
28715 /// Receives the result of the `CapturePreview` method.  The result is written
28716 /// to the stream provided in the `CapturePreview` method.
28717 
28718 const GUID IID_ICoreWebView2CapturePreviewCompletedHandler = ICoreWebView2CapturePreviewCompletedHandler.iid;
28719 
28720 interface ICoreWebView2CapturePreviewCompletedHandler : IUnknown
28721 {
28722     static const GUID iid = { 0x697e05e9,0x3d8f,0x45fa,[ 0x96,0xf4,0x8f,0xfe,0x1e,0xde,0xda,0xf5 ] };
28723 
28724   /// Provides the completion status of the corresponding asynchronous method.
28725 
28726   HRESULT Invoke(in HRESULT errorCode);
28727 }
28728 
28729 /// Receives `GotFocus` and `LostFocus` events.
28730 
28731 const GUID IID_ICoreWebView2FocusChangedEventHandler = ICoreWebView2FocusChangedEventHandler.iid;
28732 
28733 interface ICoreWebView2FocusChangedEventHandler : IUnknown
28734 {
28735     static const GUID iid = { 0x05ea24bd,0x6452,0x4926,[ 0x90,0x14,0x4b,0x82,0xb4,0x98,0x13,0x5d ] };
28736 
28737   /// Provides the event args for the corresponding event.  No event args exist
28738   /// and the `args` parameter is set to `null`.
28739 
28740   HRESULT Invoke(
28741       /+[in]+/ ICoreWebView2Controller sender,
28742       /+[in]+/ IUnknown args);
28743 }
28744 
28745 /// Event args for the `MoveFocusRequested` event.
28746 
28747 const GUID IID_ICoreWebView2MoveFocusRequestedEventArgs = ICoreWebView2MoveFocusRequestedEventArgs.iid;
28748 
28749 interface ICoreWebView2MoveFocusRequestedEventArgs : IUnknown
28750 {
28751     static const GUID iid = { 0x2d6aa13b,0x3839,0x4a15,[ 0x92,0xfc,0xd8,0x8b,0x3c,0x0d,0x9c,0x9d ] };
28752 
28753   /// The reason for WebView to run the `MoveFocusRequested` event.
28754 
28755   @(" propget")
28756 	HRESULT get_Reason(@("out, retval") COREWEBVIEW2_MOVE_FOCUS_REASON* reason);
28757 
28758   /// Indicates whether the event has been handled by the app.  If the app has
28759   /// moved the focus to another desired location, it should set the `Handled`
28760   /// property to `TRUE`.  When the `Handled` property is `FALSE` after the
28761   /// event handler returns, default action is taken.  The default action is to
28762   /// try to find the next tab stop child window in the app and try to move
28763   /// focus to that window.  If no other window exists to move focus, focus is
28764   /// cycled within the web content of the WebView.
28765 
28766   @(" propget")
28767 	HRESULT get_Handled(@("out, retval") BOOL* value);
28768 
28769   /// Sets the `Handled` property.
28770 
28771   @(" propput")
28772 	HRESULT put_Handled(in BOOL value);
28773 }
28774 
28775 /// Receives `MoveFocusRequested` events.
28776 
28777 const GUID IID_ICoreWebView2MoveFocusRequestedEventHandler = ICoreWebView2MoveFocusRequestedEventHandler.iid;
28778 
28779 interface ICoreWebView2MoveFocusRequestedEventHandler : IUnknown
28780 {
28781     static const GUID iid = { 0x69035451,0x6dc7,0x4cb8,[ 0x9b,0xce,0xb2,0xbd,0x70,0xad,0x28,0x9f ] };
28782 
28783   /// Provides the event args for the corresponding event.
28784 
28785   HRESULT Invoke(
28786       /+[in]+/ ICoreWebView2Controller sender,
28787       /+[in]+/ ICoreWebView2MoveFocusRequestedEventArgs args);
28788 }
28789 
28790 /// Event args for the `WebMessageReceived` event.
28791 const GUID IID_ICoreWebView2WebMessageReceivedEventArgs = ICoreWebView2WebMessageReceivedEventArgs.iid;
28792 
28793 interface ICoreWebView2WebMessageReceivedEventArgs : IUnknown
28794 {
28795     static const GUID iid = { 0x0f99a40c,0xe962,0x4207,[ 0x9e,0x92,0xe3,0xd5,0x42,0xef,0xf8,0x49 ] };
28796 
28797   /// The URI of the document that sent this web message.
28798   ///
28799   /// The caller must free the returned string with `CoTaskMemFree`.  See
28800   /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings).
28801 
28802   @(" propget")
28803 	HRESULT get_Source(@("out, retval") LPWSTR* source);
28804 
28805   /// The message posted from the WebView content to the host converted to a
28806   /// JSON string.  Run this operation to communicate using JavaScript objects.
28807   ///
28808   /// For example, the following `postMessage` runs result in the following
28809   /// `WebMessageAsJson` values.
28810   ///
28811   /// ```json
28812   /// postMessage({'a': 'b'})      L"{\"a\": \"b\"}"
28813   /// postMessage(1.2)             L"1.2"
28814   /// postMessage('example')       L"\"example\""
28815   /// ```
28816   ///
28817   /// The caller must free the returned string with `CoTaskMemFree`.  See
28818   /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings).
28819 
28820   @(" propget")
28821 	HRESULT get_WebMessageAsJson(@("out, retval") LPWSTR* webMessageAsJson);
28822 
28823   /// If the message posted from the WebView content to the host is a string
28824   /// type, this method returns the value of that string.  If the message
28825   /// posted is some other kind of JavaScript type this method fails with the
28826   /// following error.
28827   ///
28828   /// ```text
28829   /// E_INVALIDARG
28830   /// ```
28831   ///
28832   /// Run this operation to communicate using simple strings.
28833   ///
28834   /// For example, the following `postMessage` runs result in the following
28835   /// `WebMessageAsString` values.
28836   ///
28837   /// ```json
28838   /// postMessage({'a': 'b'})      E_INVALIDARG
28839   /// postMessage(1.2)             E_INVALIDARG
28840   /// postMessage('example')       L"example"
28841   /// ```
28842   ///
28843   /// The caller must free the returned string with `CoTaskMemFree`.  See
28844   /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings).
28845 
28846   HRESULT TryGetWebMessageAsString(@("out, retval") LPWSTR* webMessageAsString);
28847 }
28848 
28849 /// Receives `WebMessageReceived` events.
28850 const GUID IID_ICoreWebView2WebMessageReceivedEventHandler = ICoreWebView2WebMessageReceivedEventHandler.iid;
28851 
28852 interface ICoreWebView2WebMessageReceivedEventHandler : IUnknown
28853 {
28854     static const GUID iid = { 0x57213f19,0x00e6,0x49fa,[ 0x8e,0x07,0x89,0x8e,0xa0,0x1e,0xcb,0xd2 ] };
28855 
28856   /// Provides the event args for the corresponding event.
28857 
28858   HRESULT Invoke(
28859       /+[in]+/ ICoreWebView2 sender,
28860       /+[in]+/ ICoreWebView2WebMessageReceivedEventArgs args);
28861 }
28862 
28863 /// Event args for the `DevToolsProtocolEventReceived` event.
28864 const GUID IID_ICoreWebView2DevToolsProtocolEventReceivedEventArgs = ICoreWebView2DevToolsProtocolEventReceivedEventArgs.iid;
28865 
28866 interface ICoreWebView2DevToolsProtocolEventReceivedEventArgs : IUnknown
28867 {
28868     static const GUID iid = { 0x653c2959,0xbb3a,0x4377,[ 0x86,0x32,0xb5,0x8a,0xda,0x4e,0x66,0xc4 ] };
28869 
28870   /// The parameter object of the corresponding `DevToolsProtocol` event
28871   /// represented as a JSON string.
28872   ///
28873   /// The caller must free the returned string with `CoTaskMemFree`.  See
28874   /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings).
28875 
28876   @(" propget")
28877 	HRESULT get_ParameterObjectAsJson(@("out, retval") LPWSTR*
28878                                     parameterObjectAsJson);
28879 }
28880 
28881 /// This is a continuation of the `ICoreWebView2DevToolsProtocolEventReceivedEventArgs`
28882 /// interface that provides the session ID of the target where the event originates from.
28883 const GUID IID_ICoreWebView2DevToolsProtocolEventReceivedEventArgs2 = ICoreWebView2DevToolsProtocolEventReceivedEventArgs2.iid;
28884 
28885 interface ICoreWebView2DevToolsProtocolEventReceivedEventArgs2 : ICoreWebView2DevToolsProtocolEventReceivedEventArgs
28886 {
28887     static const GUID iid = { 0x2DC4959D,0x1494,0x4393,[ 0x95,0xBA,0xBE,0xA4,0xCB,0x9E,0xBD,0x1B ] };
28888 
28889   /// The sessionId of the target where the event originates from.
28890   /// Empty string is returned as sessionId if the event comes from the default
28891   /// session for the top page.
28892   ///
28893   /// The caller must free the returned string with `CoTaskMemFree`.  See
28894   /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings).
28895   ///
28896   /// \snippet ScriptComponent.cpp DevToolsProtocolEventReceivedSessionId
28897   @(" propget")
28898 	HRESULT get_SessionId(@("out, retval") LPWSTR* sessionId);
28899 }
28900 
28901 /// Receives `DevToolsProtocolEventReceived` events from the WebView.
28902 const GUID IID_ICoreWebView2DevToolsProtocolEventReceivedEventHandler = ICoreWebView2DevToolsProtocolEventReceivedEventHandler.iid;
28903 
28904 interface ICoreWebView2DevToolsProtocolEventReceivedEventHandler : IUnknown
28905 {
28906     static const GUID iid = { 0xe2fda4be,0x5456,0x406c,[ 0xa2,0x61,0x3d,0x45,0x21,0x38,0x36,0x2c ] };
28907 
28908   /// Provides the event args for the corresponding event.
28909 
28910   HRESULT Invoke(
28911       /+[in]+/ ICoreWebView2 sender,
28912       /+[in]+/ ICoreWebView2DevToolsProtocolEventReceivedEventArgs args);
28913 }
28914 
28915 /// Receives `CallDevToolsProtocolMethod` completion results.
28916 const GUID IID_ICoreWebView2CallDevToolsProtocolMethodCompletedHandler = ICoreWebView2CallDevToolsProtocolMethodCompletedHandler.iid;
28917 
28918 interface ICoreWebView2CallDevToolsProtocolMethodCompletedHandler : IUnknown
28919 {
28920     static const GUID iid = { 0x5c4889f0,0x5ef6,0x4c5a,[ 0x95,0x2c,0xd8,0xf1,0xb9,0x2d,0x05,0x74 ] };
28921 
28922   /// Provides the completion status and result of the corresponding
28923   /// asynchronous method.
28924 
28925   HRESULT Invoke(in HRESULT errorCode, in LPCWSTR returnObjectAsJson);
28926 }
28927 
28928 /// Receives the `CoreWebView2Controller` created using `CreateCoreWebView2Controller`.
28929 
28930 const GUID IID_ICoreWebView2CreateCoreWebView2ControllerCompletedHandler = ICoreWebView2CreateCoreWebView2ControllerCompletedHandler.iid;
28931 
28932 interface ICoreWebView2CreateCoreWebView2ControllerCompletedHandler : IUnknown
28933 {
28934     static const GUID iid = { 0x6c4819f3,0xc9b7,0x4260,[ 0x81,0x27,0xc9,0xf5,0xbd,0xe7,0xf6,0x8c ] };
28935 
28936   /// Provides the completion status and result of the corresponding
28937   /// asynchronous method.
28938 
28939   HRESULT Invoke(HRESULT errorCode, ICoreWebView2Controller createdController);
28940 }
28941 
28942 /// The caller implements this interface to receive the CoreWebView2Controller
28943 /// created via CreateCoreWebView2CompositionController.
28944 const GUID IID_ICoreWebView2CreateCoreWebView2CompositionControllerCompletedHandler = ICoreWebView2CreateCoreWebView2CompositionControllerCompletedHandler.iid;
28945 
28946 interface ICoreWebView2CreateCoreWebView2CompositionControllerCompletedHandler : IUnknown
28947 {
28948     static const GUID iid = { 0x02fab84b,0x1428,0x4fb7,[ 0xad,0x45,0x1b,0x2e,0x64,0x73,0x61,0x84 ] };
28949   /// Called to provide the implementer with the completion status and result
28950   /// of the corresponding asynchronous method call.
28951   HRESULT Invoke(
28952       HRESULT errorCode,
28953       ICoreWebView2CompositionController webView);
28954 }
28955 
28956 /// Event args for the `NewWindowRequested` event.  The event is run when
28957 /// content inside webview requested to a open a new window (through
28958 /// `window.open()` and so on).
28959 const GUID IID_ICoreWebView2NewWindowRequestedEventArgs = ICoreWebView2NewWindowRequestedEventArgs.iid;
28960 
28961 interface ICoreWebView2NewWindowRequestedEventArgs : IUnknown
28962 {
28963     static const GUID iid = { 0x34acb11c,0xfc37,0x4418,[ 0x91,0x32,0xf9,0xc2,0x1d,0x1e,0xaf,0xb9 ] };
28964 
28965   /// The target uri of the new window requested.
28966   ///
28967   /// The caller must free the returned string with `CoTaskMemFree`.  See
28968   /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings).
28969 
28970   @(" propget")
28971 	HRESULT get_Uri(@("out, retval") LPWSTR* uri);
28972 
28973   /// Sets a CoreWebView2 as a result of the NewWindowRequested event. Provides
28974   /// a WebView as the target for a `window.open()` from inside the
28975   /// requesting WebView. If this is set, the top-level window of this WebView
28976   /// is returned as the opened
28977   /// [WindowProxy](https://developer.mozilla.org/en-US/docs/glossary/windowproxy)
28978   /// to the opener script. If this is not set, then `Handled` is checked to
28979   /// determine behavior for NewWindowRequested event.
28980   /// CoreWebView2 provided in the `NewWindow` property must be on the same
28981   /// Environment as the opener WebView and should not have been navigated
28982   /// previously. Don't use methods that cause navigation or interact with the
28983   /// DOM on this CoreWebView2 until the target content has loaded. Setting event
28984   /// handlers, changing Settings properties, or other methods are fine to call.
28985   /// Changes to settings should be made before `put_NewWindow` is called to
28986   /// ensure that those settings take effect for the newly setup WebView. Once the
28987   /// NewWindow is set the underlying web contents of this CoreWebView2 will be
28988   /// replaced and navigated as appropriate for the new window. After setting
28989   /// new window it cannot be changed and error will be return otherwise.
28990   ///
28991   /// The methods which should affect the new web contents like
28992   /// AddScriptToExecuteOnDocumentCreated has to be called and completed before setting NewWindow.
28993   /// Other methods which should affect the new web contents like add_WebResourceRequested have to be called after setting NewWindow.
28994   /// It is best not to use RemoveScriptToExecuteOnDocumentCreated before setting NewWindow, otherwise it may not work for later added scripts.
28995   ///
28996   /// The new WebView must have the same profile as the opener WebView.
28997 
28998   @(" propput")
28999 	HRESULT put_NewWindow(/+[in]+/ ICoreWebView2 newWindow);
29000 
29001   /// Gets the new window.
29002 
29003   @(" propget")
29004 	HRESULT get_NewWindow(@("out, retval") ICoreWebView2 * newWindow);
29005 
29006   /// Sets whether the `NewWindowRequested` event is handled by host.  If this
29007   /// is `FALSE` and no `NewWindow` is set, the WebView opens a popup window
29008   /// and it returns as opened `WindowProxy`.  If set to `TRUE` and no
29009   /// `NewWindow` is set for `window.open`, the opened `WindowProxy` is for an
29010   /// testing window object and no window loads.
29011   /// The default value is `FALSE`.
29012 
29013   @(" propput")
29014 	HRESULT put_Handled(in BOOL handled);
29015 
29016   /// Gets whether the `NewWindowRequested` event is handled by host.
29017 
29018   @(" propget")
29019 	HRESULT get_Handled(@("out, retval") BOOL* handled);
29020 
29021   /// `TRUE` when the new window request was initiated through a user gesture.
29022   /// Examples of user initiated requests are:
29023   ///
29024   /// - Selecting an anchor tag with target
29025   /// - Programmatic window open from a script that directly run as a result of
29026   /// user interaction such as via onclick handlers.
29027   ///
29028   /// Non-user initiated requests are programmatic window opens from a script
29029   /// that are not directly triggered by user interaction, such as those that
29030   /// run while loading a new page or via timers.
29031   /// The Microsoft Edge popup blocker is disabled for WebView so the app is
29032   /// able to use this flag to block non-user initiated popups.
29033 
29034   @(" propget")
29035 	HRESULT get_IsUserInitiated(@("out, retval") BOOL* isUserInitiated);
29036 
29037   /// Obtain an `ICoreWebView2Deferral` object and put the event into a
29038   /// deferred state.  Use the `ICoreWebView2Deferral` object to complete the
29039   /// window open request at a later time.  While this event is deferred the
29040   /// opener window returns a `WindowProxy` to an un-navigated window, which
29041   /// navigates when the deferral is complete.
29042 
29043   HRESULT GetDeferral(@("out, retval") ICoreWebView2Deferral * deferral);
29044 
29045   /// Window features specified by the `window.open`.  The features should be
29046   /// considered for positioning and sizing of new webview windows.
29047 
29048   @(" propget")
29049 	HRESULT get_WindowFeatures(@("out, retval") ICoreWebView2WindowFeatures * value);
29050 }
29051 
29052 /// This is a continuation of the `ICoreWebView2NewWindowRequestedEventArgs` interface.
29053 const GUID IID_ICoreWebView2NewWindowRequestedEventArgs2 = ICoreWebView2NewWindowRequestedEventArgs2.iid;
29054 
29055 interface ICoreWebView2NewWindowRequestedEventArgs2 : ICoreWebView2NewWindowRequestedEventArgs
29056 {
29057     static const GUID iid = { 0xbbc7baed,0x74c6,0x4c92,[ 0xb6,0x3a,0x7f,0x5a,0xea,0xe0,0x3d,0xe3 ] };
29058   /// Gets the name of the new window. This window can be created via `window.open(url, windowName)`,
29059   /// where the windowName parameter corresponds to `Name` property.
29060   /// If no windowName is passed to `window.open`, then the `Name` property
29061   /// will be set to an empty string. Additionally, if window is opened through other means,
29062   /// such as `<a target="windowName">...</a>` or `<iframe name="windowName">...</iframe>`,
29063   /// then the `Name` property will be set accordingly. In the case of target=_blank,
29064   /// the `Name` property will be an empty string.
29065   /// Opening a window via ctrl+clicking a link would result in the `Name` property
29066   /// being set to an empty string.
29067   ///
29068   /// The caller must free the returned string with `CoTaskMemFree`.  See
29069   /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings).
29070   @(" propget")
29071 	HRESULT get_Name(@("out, retval") LPWSTR* value);
29072 }
29073 
29074 /// The window features for a WebView popup window.  The fields match the
29075 /// `windowFeatures` passed to `window.open` as specified in
29076 /// [Window features](https://developer.mozilla.org/docs/Web/API/Window/open#Window_features)
29077 /// on MDN.
29078 ///
29079 /// There is no requirement for you to respect the values.  If your app does
29080 /// not have corresponding UI features (for example, no toolbar) or if all
29081 /// instance of WebView are opened in tabs and do not have distinct size or
29082 /// positions, then your app does not respect the values.  You may want to
29083 /// respect values, but perhaps only some apply to the UI of you app.
29084 /// Accordingly, you may respect all, some, or none of the properties as
29085 /// appropriate for your app.  For all numeric properties, if the value that is
29086 /// passed to `window.open` is outside the range of an unsigned 32bit int, the
29087 /// resulting value is the absolute value of the maximum for unsigned 32bit
29088 /// integer.  If you are not able to parse the value an integer, it is
29089 /// considered `0`.  If the value is a floating point value, it is rounded down
29090 /// to an integer.
29091 ///
29092 /// In runtime versions 98 or later, the values of `ShouldDisplayMenuBar`,
29093 /// `ShouldDisplayStatus`, `ShouldDisplayToolbar`, and `ShouldDisplayScrollBars`
29094 /// will not directly depend on the equivalent fields in the `windowFeatures`
29095 /// string.  Instead, they will all be false if the window is expected to be a
29096 /// popup, and true if it is not.
29097 const GUID IID_ICoreWebView2WindowFeatures = ICoreWebView2WindowFeatures.iid;
29098 
29099 interface ICoreWebView2WindowFeatures : IUnknown
29100 {
29101     static const GUID iid = { 0x5eaf559f,0xb46e,0x4397,[ 0x88,0x60,0xe4,0x22,0xf2,0x87,0xff,0x1e ] };
29102 
29103   /// Specifies left and top values.
29104 
29105   @(" propget")
29106 	HRESULT get_HasPosition(@("out, retval") BOOL* value);
29107 
29108   /// Specifies height and width values.
29109 
29110   @(" propget")
29111 	HRESULT get_HasSize(@("out, retval") BOOL* value);
29112 
29113   /// Specifies the left position of the window.   If `HasPosition` is set to
29114   /// `FALSE`, this field is ignored.
29115 
29116   @(" propget")
29117 	HRESULT get_Left(@("out, retval") UINT32* value);
29118 
29119   /// Specifies the top position of the window.   If `HasPosition` is set to
29120   /// `FALSE`, this field is ignored.
29121 
29122   @(" propget")
29123 	HRESULT get_Top(@("out, retval") UINT32* value);
29124 
29125   /// Specifies the height of the window.  Minimum value is `100`.  If
29126   /// `HasSize` is set to `FALSE`, this field is ignored.
29127 
29128   @(" propget")
29129 	HRESULT get_Height(@("out, retval") UINT32* value);
29130 
29131   /// Specifies the width of the window.  Minimum value is `100`.  If `HasSize`
29132   /// is set to `FALSE`, this field is ignored.
29133 
29134   @(" propget")
29135 	HRESULT get_Width(@("out, retval") UINT32* value);
29136 
29137   /// Indicates that the menu bar is displayed.
29138 
29139   @(" propget")
29140 	HRESULT get_ShouldDisplayMenuBar(@("out, retval") BOOL* value);
29141 
29142   /// Indicates that the status bar is displayed.
29143 
29144   @(" propget")
29145 	HRESULT get_ShouldDisplayStatus(@("out, retval") BOOL* value);
29146 
29147   /// Indicates that the browser toolbar is displayed.
29148 
29149   @(" propget")
29150 	HRESULT get_ShouldDisplayToolbar(@("out, retval") BOOL* value);
29151 
29152   /// Indicates that the scroll bars are displayed.
29153 
29154   @(" propget")
29155 	HRESULT get_ShouldDisplayScrollBars(@("out, retval") BOOL* value);
29156 }
29157 
29158 /// Receives `NewWindowRequested` events.
29159 const GUID IID_ICoreWebView2NewWindowRequestedEventHandler = ICoreWebView2NewWindowRequestedEventHandler.iid;
29160 
29161 interface ICoreWebView2NewWindowRequestedEventHandler : IUnknown
29162 {
29163     static const GUID iid = { 0xd4c185fe,0xc81c,0x4989,[ 0x97,0xaf,0x2d,0x3f,0xa7,0xab,0x56,0x51 ] };
29164 
29165   /// Provides the event args for the corresponding event.
29166 
29167   HRESULT Invoke(
29168       /+[in]+/ ICoreWebView2 sender,
29169       /+[in]+/ ICoreWebView2NewWindowRequestedEventArgs args);
29170 }
29171 
29172 /// Receives `DocumentTitleChanged` events.  Use the `DocumentTitle` property
29173 /// to get the modified title.
29174 
29175 const GUID IID_ICoreWebView2DocumentTitleChangedEventHandler = ICoreWebView2DocumentTitleChangedEventHandler.iid;
29176 
29177 interface ICoreWebView2DocumentTitleChangedEventHandler : IUnknown
29178 {
29179     static const GUID iid = { 0xf5f2b923,0x953e,0x4042,[ 0x9f,0x95,0xf3,0xa1,0x18,0xe1,0xaf,0xd4 ] };
29180 
29181   /// Provides the event args for the corresponding event.  No event args exist
29182   /// and the `args` parameter is set to `null`.
29183 
29184   HRESULT Invoke(/+[in]+/ ICoreWebView2 sender, /+[in]+/ IUnknown args);
29185 }
29186 
29187 /// Event args for the `AcceleratorKeyPressed` event.
29188 
29189 const GUID IID_ICoreWebView2AcceleratorKeyPressedEventArgs = ICoreWebView2AcceleratorKeyPressedEventArgs.iid;
29190 
29191 interface ICoreWebView2AcceleratorKeyPressedEventArgs : IUnknown
29192 {
29193     static const GUID iid = { 0x9f760f8a,0xfb79,0x42be,[ 0x99,0x90,0x7b,0x56,0x90,0x0f,0xa9,0xc7 ] };
29194 
29195   /// The key event type that caused the event to run.
29196 
29197   @(" propget")
29198 	HRESULT get_KeyEventKind(@("out, retval") COREWEBVIEW2_KEY_EVENT_KIND* keyEventKind);
29199 
29200   /// The Win32 virtual key code of the key that was pressed or released.  It
29201   /// is one of the Win32 virtual key constants such as `VK_RETURN` or an
29202   /// (uppercase) ASCII value such as `A`.  Verify whether Ctrl or Alt
29203   /// are pressed by running `GetKeyState(VK_CONTROL)` or
29204   /// `GetKeyState(VK_MENU)`.
29205 
29206   @(" propget")
29207 	HRESULT get_VirtualKey(@("out, retval") UINT* virtualKey);
29208 
29209   /// The `LPARAM` value that accompanied the window message.  For more
29210   /// information, navigate to [WM_KEYDOWN](/windows/win32/inputdev/wm-keydown)
29211   /// and [WM_KEYUP](/windows/win32/inputdev/wm-keyup).
29212 
29213   @(" propget")
29214 	HRESULT get_KeyEventLParam(@("out, retval") INT* lParam);
29215 
29216   /// A structure representing the information passed in the `LPARAM` of the
29217   /// window message.
29218 
29219   @(" propget")
29220 	HRESULT get_PhysicalKeyStatus(
29221       @("out, retval") COREWEBVIEW2_PHYSICAL_KEY_STATUS* physicalKeyStatus);
29222 
29223   /// During `AcceleratorKeyPressedEvent` handler invocation the WebView is
29224   /// blocked waiting for the decision of if the accelerator is handled by the
29225   /// host (or not).  If the `Handled` property is set to `TRUE` then this
29226   /// prevents the WebView from performing the default action for this
29227   /// accelerator key.  Otherwise the WebView performs the default action for
29228   /// the accelerator key.
29229 
29230   @(" propget")
29231 	HRESULT get_Handled(@("out, retval") BOOL* handled);
29232 
29233   /// Sets the `Handled` property.
29234 
29235   @(" propput")
29236 	HRESULT put_Handled(in BOOL handled);
29237 }
29238 
29239 /// This is This is a continuation of the ICoreWebView2AcceleratorKeyPressedEventArgs interface.
29240 const GUID IID_ICoreWebView2AcceleratorKeyPressedEventArgs2 = ICoreWebView2AcceleratorKeyPressedEventArgs2.iid;
29241 
29242 interface ICoreWebView2AcceleratorKeyPressedEventArgs2 : ICoreWebView2AcceleratorKeyPressedEventArgs
29243 {
29244     static const GUID iid = { 0x03b2c8c8,0x7799,0x4e34,[ 0xbd,0x66,0xed,0x26,0xaa,0x85,0xf2,0xbf ] };
29245   /// This property allows developers to enable or disable the browser from handling a specific
29246   /// browser accelerator key such as Ctrl+P or F3, etc.
29247   ///
29248   /// Browser accelerator keys are the keys/key combinations that access features specific to
29249   /// a web browser, including but not limited to:
29250   ///  - Ctrl-F and F3 for Find on Page
29251   ///  - Ctrl-P for Print
29252   ///  - Ctrl-R and F5 for Reload
29253   ///  - Ctrl-Plus and Ctrl-Minus for zooming
29254   ///  - Ctrl-Shift-C and F12 for DevTools
29255   ///  - Special keys for browser functions, such as Back, Forward, and Search
29256   ///
29257   /// This property does not disable accelerator keys related to movement and text editing,
29258   /// such as:
29259   ///  - Home, End, Page Up, and Page Down
29260   ///  - Ctrl-X, Ctrl-C, Ctrl-V
29261   ///  - Ctrl-A for Select All
29262   ///  - Ctrl-Z for Undo
29263   ///
29264   /// The `CoreWebView2Settings.AreBrowserAcceleratorKeysEnabled` API is a convenient setting
29265   /// for developers to disable all the browser accelerator keys together, and sets the default
29266   /// value for the `IsBrowserAcceleratorKeyEnabled` property.
29267   /// By default, `CoreWebView2Settings.AreBrowserAcceleratorKeysEnabled` is `TRUE` and
29268   /// `IsBrowserAcceleratorKeyEnabled` is `TRUE`.
29269   /// When developers change `CoreWebView2Settings.AreBrowserAcceleratorKeysEnabled` setting to `FALSE`,
29270   /// this will change default value for `IsBrowserAcceleratorKeyEnabled` to `FALSE`.
29271   /// If developers want specific keys to be handled by the browser after changing the
29272   /// `CoreWebView2Settings.AreBrowserAcceleratorKeysEnabled` setting to `FALSE`, they need to enable
29273   /// these keys by setting `IsBrowserAcceleratorKeyEnabled` to `TRUE`.
29274   /// This API will give the event arg higher priority over the
29275   /// `CoreWebView2Settings.AreBrowserAcceleratorKeysEnabled` setting when we handle the keys.
29276   ///
29277   /// For browser accelerator keys, when an accelerator key is pressed, the propagation and
29278   /// processing order is:
29279   /// 1. A CoreWebView2Controller.AcceleratorKeyPressed event is raised
29280   /// 2. WebView2 browser feature accelerator key handling
29281   /// 3. Web Content Handling: If the key combination isn't reserved for browser actions,
29282   /// the key event propagates to the web content, where JavaScript event listeners can
29283   /// capture and respond to it.
29284   ///
29285   /// `ICoreWebView2AcceleratorKeyPressedEventArgs` has a `Handled` property, that developers
29286   /// can use to mark a key as handled. When the key is marked as handled anywhere along
29287   /// the path, the event propagation stops, and web content will not receive the key.
29288   /// With `IsBrowserAcceleratorKeyEnabled` property, if developers mark
29289   /// `IsBrowserAcceleratorKeyEnabled` as `FALSE`, the browser will skip the WebView2
29290   /// browser feature accelerator key handling process, but the event propagation
29291   /// continues, and web content will receive the key combination.
29292   ///
29293   /// \snippet ScenarioAcceleratorKeyPressed.cpp IsBrowserAcceleratorKeyEnabled
29294   /// Gets the `IsBrowserAcceleratorKeyEnabled` property.
29295   @(" propget")
29296 	HRESULT get_IsBrowserAcceleratorKeyEnabled(@("out, retval") BOOL* value);
29297 
29298   /// Sets the `IsBrowserAcceleratorKeyEnabled` property.
29299   @(" propput")
29300 	HRESULT put_IsBrowserAcceleratorKeyEnabled(in BOOL value);
29301 }
29302 
29303 /// Receives `AcceleratorKeyPressed` events.
29304 
29305 const GUID IID_ICoreWebView2AcceleratorKeyPressedEventHandler = ICoreWebView2AcceleratorKeyPressedEventHandler.iid;
29306 
29307 interface ICoreWebView2AcceleratorKeyPressedEventHandler : IUnknown
29308 {
29309     static const GUID iid = { 0xb29c7e28,0xfa79,0x41a8,[ 0x8e,0x44,0x65,0x81,0x1c,0x76,0xdc,0xb2 ] };
29310 
29311   /// Provides the event args for the corresponding event.
29312 
29313   HRESULT Invoke(
29314       /+[in]+/ ICoreWebView2Controller sender,
29315       /+[in]+/ ICoreWebView2AcceleratorKeyPressedEventArgs args);
29316 }
29317 
29318 /// Receives `NewBrowserVersionAvailable` events.
29319 const GUID IID_ICoreWebView2NewBrowserVersionAvailableEventHandler = ICoreWebView2NewBrowserVersionAvailableEventHandler.iid;
29320 
29321 interface ICoreWebView2NewBrowserVersionAvailableEventHandler : IUnknown
29322 {
29323     static const GUID iid = { 0xf9a2976e,0xd34e,0x44fc,[ 0xad,0xee,0x81,0xb6,0xb5,0x7c,0xa9,0x14 ] };
29324 
29325   /// Provides the event args for the corresponding event.
29326 
29327   HRESULT Invoke(/+[in]+/ ICoreWebView2Environment sender,
29328                  /+[in]+/ IUnknown args);
29329 }
29330 
29331 /// Receives `BrowserProcessExited` events.
29332 const GUID IID_ICoreWebView2BrowserProcessExitedEventHandler = ICoreWebView2BrowserProcessExitedEventHandler.iid;
29333 
29334 interface ICoreWebView2BrowserProcessExitedEventHandler : IUnknown
29335 {
29336     static const GUID iid = { 0xfa504257,0xa216,0x4911,[ 0xa8,0x60,0xfe,0x88,0x25,0x71,0x28,0x61 ] };
29337   /// Provides the event args for the corresponding event.
29338   HRESULT Invoke(
29339       /+[in]+/ ICoreWebView2Environment sender,
29340       /+[in]+/ ICoreWebView2BrowserProcessExitedEventArgs args);
29341 }
29342 
29343 /// Receives `ContainsFullScreenElementChanged` events.
29344 
29345 const GUID IID_ICoreWebView2ContainsFullScreenElementChangedEventHandler = ICoreWebView2ContainsFullScreenElementChangedEventHandler.iid;
29346 
29347 interface ICoreWebView2ContainsFullScreenElementChangedEventHandler : IUnknown
29348 {
29349     static const GUID iid = { 0xe45d98b1,0xafef,0x45be,[ 0x8b,0xaf,0x6c,0x77,0x28,0x86,0x7f,0x73 ] };
29350 
29351   /// Provides the event args for the corresponding event.  No event args exist
29352   /// and the `args` parameter is set to `null`.
29353 
29354   HRESULT Invoke(/+[in]+/ ICoreWebView2 sender, /+[in]+/ IUnknown args);
29355 }
29356 
29357 /// Receives `WindowCloseRequested` events.
29358 const GUID IID_ICoreWebView2WindowCloseRequestedEventHandler = ICoreWebView2WindowCloseRequestedEventHandler.iid;
29359 
29360 interface ICoreWebView2WindowCloseRequestedEventHandler : IUnknown
29361 {
29362     static const GUID iid = { 0x5c19e9e0,0x092f,0x486b,[ 0xaf,0xfa,0xca,0x82,0x31,0x91,0x30,0x39 ] };
29363 
29364   /// Provides the event args for the corresponding event.  No event args exist
29365   /// and the `args` parameter is set to `null`.
29366 
29367   HRESULT Invoke(/+[in]+/ ICoreWebView2 sender, /+[in]+/ IUnknown args);
29368 }
29369 
29370 /// Receives `WebResourceResponseReceived` events.
29371 const GUID IID_ICoreWebView2WebResourceResponseReceivedEventHandler = ICoreWebView2WebResourceResponseReceivedEventHandler.iid;
29372 
29373 interface ICoreWebView2WebResourceResponseReceivedEventHandler : IUnknown
29374 {
29375     static const GUID iid = { 0x7DE9898A,0x24F5,0x40C3,[ 0xA2,0xDE,0xD4,0xF4,0x58,0xE6,0x98,0x28 ] };
29376   /// Provides the event args for the corresponding event.
29377   HRESULT Invoke(
29378       /+[in]+/ ICoreWebView2 sender,
29379       /+[in]+/ ICoreWebView2WebResourceResponseReceivedEventArgs args);
29380 }
29381 
29382 /// Event args for the `BrowserProcessExited` event.
29383 const GUID IID_ICoreWebView2BrowserProcessExitedEventArgs = ICoreWebView2BrowserProcessExitedEventArgs.iid;
29384 
29385 interface ICoreWebView2BrowserProcessExitedEventArgs : IUnknown
29386 {
29387     static const GUID iid = { 0x1f00663f,0xaf8c,0x4782,[ 0x9c,0xdd,0xdd,0x01,0xc5,0x2e,0x34,0xcb ] };
29388   /// The kind of browser process exit that has occurred.
29389   @(" propget")
29390 	HRESULT get_BrowserProcessExitKind(
29391       @("out, retval") COREWEBVIEW2_BROWSER_PROCESS_EXIT_KIND* browserProcessExitKind);
29392 
29393   /// The process ID of the browser process that has exited.
29394   @(" propget")
29395 	HRESULT get_BrowserProcessId(@("out, retval") UINT32* value);
29396 }
29397 
29398 /// Event args for the WebResourceResponseReceived event.
29399 const GUID IID_ICoreWebView2WebResourceResponseReceivedEventArgs = ICoreWebView2WebResourceResponseReceivedEventArgs.iid;
29400 
29401 interface ICoreWebView2WebResourceResponseReceivedEventArgs : IUnknown
29402 {
29403     static const GUID iid = { 0xD1DB483D,0x6796,0x4B8B,[ 0x80,0xFC,0x13,0x71,0x2B,0xB7,0x16,0xF4 ] };
29404   /// The request object for the web resource, as committed. This includes
29405   /// headers added by the network stack that were not be included during the
29406   /// associated WebResourceRequested event, such as Authentication headers.
29407   /// Modifications to this object have no effect on how the request is
29408   /// processed as it has already been sent.
29409   @(" propget")
29410 	HRESULT get_Request(@("out, retval") ICoreWebView2WebResourceRequest * request);
29411   /// View of the response object received for the web resource.
29412   @(" propget")
29413 	HRESULT get_Response(@("out, retval") ICoreWebView2WebResourceResponseView * response);
29414 }
29415 
29416 /// View of the HTTP representation for a web resource response. The properties
29417 /// of this object are not mutable. This response view is used with the
29418 /// WebResourceResponseReceived event.
29419 const GUID IID_ICoreWebView2WebResourceResponseView = ICoreWebView2WebResourceResponseView.iid;
29420 
29421 interface ICoreWebView2WebResourceResponseView : IUnknown
29422 {
29423     static const GUID iid = { 0x79701053,0x7759,0x4162,[ 0x8F,0x7D,0xF1,0xB3,0xF0,0x84,0x92,0x8D ] };
29424   /// The HTTP response headers as received.
29425   @(" propget")
29426 	HRESULT get_Headers(
29427       @("out, retval") ICoreWebView2HttpResponseHeaders * headers);
29428   /// The HTTP response status code.
29429   @(" propget")
29430 	HRESULT get_StatusCode(@("out, retval") int* statusCode);
29431   /// The HTTP response reason phrase.
29432   ///
29433   /// The caller must free the returned string with `CoTaskMemFree`.  See
29434   /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings).
29435   @(" propget")
29436 	HRESULT get_ReasonPhrase(@("out, retval") LPWSTR* reasonPhrase);
29437 
29438   /// Get the response content asynchronously. The handler will receive the
29439   /// response content stream.
29440   ///
29441   /// This method returns null if content size is more than 123MB or for navigations that become downloads
29442   /// or if response is downloadable content type (e.g., application/octet-stream).
29443   /// See `add_DownloadStarting` event to handle the response.
29444   ///
29445   /// If this method is being called again before a first call has completed,
29446   /// the handler will be invoked at the same time the handlers from prior calls
29447   /// are invoked.
29448   /// If this method is being called after a first call has completed, the
29449   /// handler will be invoked immediately.
29450   /// \snippet ScenarioWebViewEventMonitor.cpp GetContent
29451   HRESULT GetContent(
29452       /+[in]+/ ICoreWebView2WebResourceResponseViewGetContentCompletedHandler handler);
29453 }
29454 
29455 /// Receives the result of the
29456 /// `ICoreWebView2WebResourceResponseView::GetContent` method.
29457 const GUID IID_ICoreWebView2WebResourceResponseViewGetContentCompletedHandler = ICoreWebView2WebResourceResponseViewGetContentCompletedHandler.iid;
29458 
29459 interface ICoreWebView2WebResourceResponseViewGetContentCompletedHandler : IUnknown
29460 {
29461     static const GUID iid = { 0x875738E1,0x9FA2,0x40E3,[ 0x8B,0x74,0x2E,0x89,0x72,0xDD,0x6F,0xE7 ] };
29462   /// Provides the completion status and result of the corresponding
29463   /// asynchronous method call. A failure `errorCode` will be passed if the
29464   /// content failed to load. `E_ABORT` means the response loading was blocked
29465   /// (e.g., by CORS policy); `ERROR_CANCELLED` means the response loading was
29466   /// cancelled. `ERROR_NO_DATA` means the response has no content data,
29467   /// `content` is `null` in this case. Note content (if any) is ignored for
29468   /// redirects, 204 No Content, 205 Reset Content, and HEAD-request responses.
29469   HRESULT Invoke(in HRESULT errorCode, in IStream* content);
29470 }
29471 
29472 /// Event args for the DOMContentLoaded event.
29473 const GUID IID_ICoreWebView2DOMContentLoadedEventArgs = ICoreWebView2DOMContentLoadedEventArgs.iid;
29474 
29475 interface ICoreWebView2DOMContentLoadedEventArgs : IUnknown
29476 {
29477     static const GUID iid = { 0x16B1E21A,0xC503,0x44F2,[ 0x84,0xC9,0x70,0xAB,0xA5,0x03,0x12,0x83 ] };
29478   /// The ID of the navigation which corresponds to other navigation ID properties on other navigation events.
29479   @(" propget")
29480 	HRESULT get_NavigationId(@("out, retval") UINT64* navigationId);
29481 }
29482 
29483 /// Receives `DOMContentLoaded` events.
29484 const GUID IID_ICoreWebView2DOMContentLoadedEventHandler = ICoreWebView2DOMContentLoadedEventHandler.iid;
29485 
29486 interface ICoreWebView2DOMContentLoadedEventHandler : IUnknown
29487 {
29488     static const GUID iid = { 0x4BAC7E9C,0x199E,0x49ED,[ 0x87,0xED,0x24,0x93,0x03,0xAC,0xF0,0x19 ] };
29489   /// Provides the event args for the corresponding event.
29490   HRESULT Invoke(
29491       /+[in]+/ ICoreWebView2 sender,
29492       /+[in]+/ ICoreWebView2DOMContentLoadedEventArgs args);
29493 }
29494 
29495 /// Provides a set of properties that are used to manage an
29496 /// ICoreWebView2Cookie.
29497 ///
29498 /// \snippet ScenarioCookieManagement.cpp CookieObject
29499 const GUID IID_ICoreWebView2Cookie = ICoreWebView2Cookie.iid;
29500 
29501 interface ICoreWebView2Cookie : IUnknown
29502 {
29503     static const GUID iid = { 0xAD26D6BE,0x1486,0x43E6,[ 0xBF,0x87,0xA2,0x03,0x40,0x06,0xCA,0x21 ] };
29504   /// Cookie name.
29505   ///
29506   /// The caller must free the returned string with `CoTaskMemFree`.  See
29507   /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings).
29508   @(" propget")
29509 	HRESULT get_Name(@("out, retval") LPWSTR* name);
29510 
29511   /// Cookie value.
29512   ///
29513   /// The caller must free the returned string with `CoTaskMemFree`.  See
29514   /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings).
29515   @(" propget")
29516 	HRESULT get_Value(@("out, retval") LPWSTR* value);
29517   /// Set the cookie value property.
29518   @(" propput")
29519 	HRESULT put_Value(in LPCWSTR value);
29520 
29521   /// The domain for which the cookie is valid.
29522   /// The default is the host that this cookie has been received from.
29523   /// Note that, for instance, ".bing.com", "bing.com", and "www.bing.com" are
29524   /// considered different domains.
29525   ///
29526   /// The caller must free the returned string with `CoTaskMemFree`.  See
29527   /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings).
29528   @(" propget")
29529 	HRESULT get_Domain(@("out, retval") LPWSTR* domain);
29530 
29531   /// The path for which the cookie is valid. The default is "/", which means
29532   /// this cookie will be sent to all pages on the Domain.
29533   ///
29534   /// The caller must free the returned string with `CoTaskMemFree`.  See
29535   /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings).
29536   @(" propget")
29537 	HRESULT get_Path(@("out, retval") LPWSTR* path);
29538 
29539   /// The expiration date and time for the cookie as the number of seconds since the UNIX epoch.
29540   /// The default is -1.0, which means cookies are session cookies by default.
29541   @(" propget")
29542 	HRESULT get_Expires(@("out, retval") double* expires);
29543   /// Set the Expires property. Cookies are session cookies and will not be
29544   /// persistent if Expires is set to -1.0. NaN, infinity, and any negative
29545   /// value set other than -1.0 is disallowed.
29546   @(" propput")
29547 	HRESULT put_Expires(in double expires);
29548 
29549   /// Whether this cookie is http-only.
29550   /// True if a page script or other active content cannot access this
29551   /// cookie. The default is false.
29552   @(" propget")
29553 	HRESULT get_IsHttpOnly(@("out, retval") BOOL* isHttpOnly);
29554   /// Set the IsHttpOnly property.
29555   @(" propput")
29556 	HRESULT put_IsHttpOnly(in BOOL isHttpOnly);
29557 
29558   /// SameSite status of the cookie which represents the enforcement mode of the cookie.
29559   /// The default is COREWEBVIEW2_COOKIE_SAME_SITE_KIND_LAX.
29560   @(" propget")
29561 	HRESULT get_SameSite(@("out, retval") COREWEBVIEW2_COOKIE_SAME_SITE_KIND* sameSite);
29562   /// Set the SameSite property.
29563   @(" propput")
29564 	HRESULT put_SameSite(in COREWEBVIEW2_COOKIE_SAME_SITE_KIND sameSite);
29565 
29566   /// The security level of this cookie. True if the client is only to return
29567   /// the cookie in subsequent requests if those requests use HTTPS.
29568   /// The default is false.
29569   /// Note that cookie that requests COREWEBVIEW2_COOKIE_SAME_SITE_KIND_NONE but
29570   /// is not marked Secure will be rejected.
29571   @(" propget")
29572 	HRESULT get_IsSecure(@("out, retval") BOOL* isSecure);
29573   /// Set the IsSecure property.
29574   @(" propput")
29575 	HRESULT put_IsSecure(in BOOL isSecure);
29576 
29577   /// Whether this is a session cookie. The default is false.
29578   @(" propget")
29579 	HRESULT get_IsSession(@("out, retval") BOOL* isSession);
29580 }
29581 
29582 /// Creates, adds or updates, gets, or or view the cookies. The changes would
29583 /// apply to the context of the user profile. That is, other WebViews under the
29584 /// same user profile could be affected.
29585 const GUID IID_ICoreWebView2CookieManager = ICoreWebView2CookieManager.iid;
29586 
29587 interface ICoreWebView2CookieManager : IUnknown
29588 {
29589     static const GUID iid = { 0x177CD9E7,0xB6F5,0x451A,[ 0x94,0xA0,0x5D,0x7A,0x3A,0x4C,0x41,0x41 ] };
29590   /// Create a cookie object with a specified name, value, domain, and path.
29591   /// One can set other optional properties after cookie creation.
29592   /// This only creates a cookie object and it is not added to the cookie
29593   /// manager until you call AddOrUpdateCookie.
29594   /// Leading or trailing whitespace(s), empty string, and special characters
29595   /// are not allowed for name.
29596   /// See ICoreWebView2Cookie for more details.
29597   HRESULT CreateCookie(
29598     in LPCWSTR name,
29599     in LPCWSTR value,
29600     in LPCWSTR domain,
29601     in LPCWSTR path,
29602     @("out, retval") ICoreWebView2Cookie * cookie);
29603 
29604   /// Creates a cookie whose params matches those of the specified cookie.
29605   HRESULT CopyCookie(
29606     /+[in]+/ ICoreWebView2Cookie cookieParam,
29607     @("out, retval") ICoreWebView2Cookie * cookie);
29608 
29609   /// Gets a list of cookies matching the specific URI.
29610   /// If uri is empty string or null, all cookies under the same profile are
29611   /// returned.
29612   /// You can modify the cookie objects by calling
29613   /// ICoreWebView2CookieManager::AddOrUpdateCookie, and the changes
29614   /// will be applied to the webview.
29615   /// \snippet ScenarioCookieManagement.cpp GetCookies
29616   HRESULT GetCookies(
29617     in LPCWSTR uri,
29618     /+[in]+/ ICoreWebView2GetCookiesCompletedHandler handler);
29619 
29620   /// Adds or updates a cookie with the given cookie data; may overwrite
29621   /// cookies with matching name, domain, and path if they exist.
29622   /// This method will fail if the domain of the given cookie is not specified.
29623   /// \snippet ScenarioCookieManagement.cpp AddOrUpdateCookie
29624   HRESULT AddOrUpdateCookie(/+[in]+/ ICoreWebView2Cookie cookie);
29625 
29626   /// Deletes a cookie whose name and domain/path pair
29627   /// match those of the specified cookie.
29628   HRESULT DeleteCookie(/+[in]+/ ICoreWebView2Cookie cookie);
29629 
29630   /// Deletes cookies with matching name and uri.
29631   /// Cookie name is required.
29632   /// All cookies with the given name where domain
29633   /// and path match provided URI are deleted.
29634   HRESULT DeleteCookies(in LPCWSTR name, in LPCWSTR uri);
29635 
29636   /// Deletes cookies with matching name and domain/path pair.
29637   /// Cookie name is required.
29638   /// If domain is specified, deletes only cookies with the exact domain.
29639   /// If path is specified, deletes only cookies with the exact path.
29640   HRESULT DeleteCookiesWithDomainAndPath(in LPCWSTR name, in LPCWSTR domain, in LPCWSTR path);
29641 
29642   /// Deletes all cookies under the same profile.
29643   /// This could affect other WebViews under the same user profile.
29644   HRESULT DeleteAllCookies();
29645 }
29646 
29647 /// A list of cookie objects. See `ICoreWebView2Cookie`.
29648 /// \snippet ScenarioCookieManagement.cpp GetCookies
29649 const GUID IID_ICoreWebView2CookieList = ICoreWebView2CookieList.iid;
29650 
29651 interface ICoreWebView2CookieList : IUnknown
29652 {
29653     static const GUID iid = { 0xF7F6F714,0x5D2A,0x43C6,[ 0x95,0x03,0x34,0x6E,0xCE,0x02,0xD1,0x86 ] };
29654   /// The number of cookies contained in the ICoreWebView2CookieList.
29655   @(" propget")
29656 	HRESULT get_Count(@("out, retval") UINT* count);
29657 
29658   /// Gets the cookie object at the given index.
29659   HRESULT GetValueAtIndex(in UINT index,
29660 		@("out, retval") ICoreWebView2Cookie * cookie);
29661 }
29662 
29663 /// Receives the result of the `GetCookies` method.  The result is written to
29664 /// the cookie list provided in the `GetCookies` method call.
29665 const GUID IID_ICoreWebView2GetCookiesCompletedHandler = ICoreWebView2GetCookiesCompletedHandler.iid;
29666 
29667 interface ICoreWebView2GetCookiesCompletedHandler : IUnknown
29668 {
29669     static const GUID iid = { 0x5A4F5069,0x5C15,0x47C3,[ 0x86,0x46,0xF4,0xDE,0x1C,0x11,0x66,0x70 ] };
29670   /// Provides the completion status of the corresponding asynchronous method
29671   /// call.
29672   HRESULT Invoke(HRESULT result, ICoreWebView2CookieList cookieList);
29673 }
29674 
29675 /// Provides access to the client certificate metadata.
29676 const GUID IID_ICoreWebView2ClientCertificate = ICoreWebView2ClientCertificate.iid;
29677 
29678 interface ICoreWebView2ClientCertificate : IUnknown
29679 {
29680     static const GUID iid = { 0xe7188076,0xbcc3,0x11eb,[ 0x85,0x29,0x02,0x42,0xac,0x13,0x00,0x03 ] };
29681   /// Subject of the certificate.
29682   ///
29683   /// The caller must free the returned string with `CoTaskMemFree`. See
29684   /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings).
29685   @(" propget")
29686 	HRESULT get_Subject(@("out, retval") LPWSTR* value);
29687   /// Name of the certificate authority that issued the certificate.
29688   ///
29689   /// The caller must free the returned string with `CoTaskMemFree`. See
29690   /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings).
29691   @(" propget")
29692 	HRESULT get_Issuer(@("out, retval") LPWSTR* value);
29693   /// The valid start date and time for the certificate as the number of seconds since
29694   /// the UNIX epoch.
29695   @(" propget")
29696 	HRESULT get_ValidFrom(@("out, retval") double* value);
29697   /// The valid expiration date and time for the certificate as the number of seconds since
29698   /// the UNIX epoch.
29699   @(" propget")
29700 	HRESULT get_ValidTo(@("out, retval") double* value);
29701   /// Base64 encoding of DER encoded serial number of the certificate.
29702   /// Read more about DER at [RFC 7468 DER]
29703   /// (https://tools.ietf.org/html/rfc7468#appendix-B).
29704   ///
29705   /// The caller must free the returned string with `CoTaskMemFree`. See
29706   /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings).
29707   @(" propget")
29708 	HRESULT get_DerEncodedSerialNumber(@("out, retval") LPWSTR* value);
29709   /// Display name for a certificate.
29710   ///
29711   /// The caller must free the returned string with `CoTaskMemFree`. See
29712   /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings).
29713   @(" propget")
29714 	HRESULT get_DisplayName(@("out, retval") LPWSTR* value);
29715   /// PEM encoded data for the certificate.
29716   /// Returns Base64 encoding of DER encoded certificate.
29717   /// Read more about PEM at [RFC 1421 Privacy Enhanced Mail]
29718   /// (https://tools.ietf.org/html/rfc1421).
29719   ///
29720   /// The caller must free the returned string with `CoTaskMemFree`. See
29721   /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings).
29722   HRESULT ToPemEncoding(@("out, retval") LPWSTR* pemEncodedData);
29723   /// Collection of PEM encoded client certificate issuer chain.
29724   /// In this collection first element is the current certificate followed by
29725   /// intermediate1, intermediate2...intermediateN-1. Root certificate is the
29726   /// last element in collection.
29727   @(" propget")
29728 	HRESULT get_PemEncodedIssuerCertificateChain(@("out, retval")
29729       ICoreWebView2StringCollection * value);
29730   /// Kind of a certificate (eg., smart card, pin, other).
29731   @(" propget")
29732 	HRESULT get_Kind(@("out, retval")
29733       COREWEBVIEW2_CLIENT_CERTIFICATE_KIND* value);
29734 }
29735 
29736 /// A collection of client certificate object.
29737 const GUID IID_ICoreWebView2ClientCertificateCollection = ICoreWebView2ClientCertificateCollection.iid;
29738 
29739 interface ICoreWebView2ClientCertificateCollection : IUnknown
29740 {
29741     static const GUID iid = { 0xef5674d2,0xbcc3,0x11eb,[ 0x85,0x29,0x02,0x42,0xac,0x13,0x00,0x03 ] };
29742   /// The number of client certificates contained in the
29743   /// ICoreWebView2ClientCertificateCollection.
29744   @(" propget")
29745 	HRESULT get_Count(@("out, retval") UINT* value);
29746   /// Gets the certificate object at the given index.
29747   HRESULT GetValueAtIndex(in UINT index,
29748       @("out, retval") ICoreWebView2ClientCertificate * certificate);
29749 }
29750 
29751 /// A collection of strings.
29752 const GUID IID_ICoreWebView2StringCollection = ICoreWebView2StringCollection.iid;
29753 
29754 interface ICoreWebView2StringCollection : IUnknown
29755 {
29756     static const GUID iid = { 0xf41f3f8a,0xbcc3,0x11eb,[ 0x85,0x29,0x02,0x42,0xac,0x13,0x00,0x03 ] };
29757   /// The number of strings contained in ICoreWebView2StringCollection.
29758   @(" propget")
29759 	HRESULT get_Count(@("out, retval") UINT* value);
29760 
29761   /// Gets the value at a given index.
29762   ///
29763   /// The caller must free the returned string with `CoTaskMemFree`.  See
29764   /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings).
29765   HRESULT GetValueAtIndex(in UINT index,
29766 		@("out, retval") LPWSTR* value);
29767 }
29768 
29769 /// An event handler for the `ClientCertificateRequested` event.
29770 const GUID IID_ICoreWebView2ClientCertificateRequestedEventHandler = ICoreWebView2ClientCertificateRequestedEventHandler.iid;
29771 
29772 interface ICoreWebView2ClientCertificateRequestedEventHandler : IUnknown
29773 {
29774     static const GUID iid = { 0xd7175ba2,0xbcc3,0x11eb,[ 0x85,0x29,0x02,0x42,0xac,0x13,0x00,0x03 ] };
29775   /// Provides the event args for the corresponding event.
29776   HRESULT Invoke(/+[in]+/ ICoreWebView2 sender,
29777       /+[in]+/ ICoreWebView2ClientCertificateRequestedEventArgs args);
29778 }
29779 
29780 /// Event args for the `ClientCertificateRequested` event.
29781 const GUID IID_ICoreWebView2ClientCertificateRequestedEventArgs = ICoreWebView2ClientCertificateRequestedEventArgs.iid;
29782 
29783 interface ICoreWebView2ClientCertificateRequestedEventArgs : IUnknown
29784 {
29785     static const GUID iid = { 0xbc59db28,0xbcc3,0x11eb,[ 0x85,0x29,0x02,0x42,0xac,0x13,0x00,0x03 ] };
29786   /// Host name of the server that requested client certificate authentication.
29787   /// Normalization rules applied to the hostname are:
29788   /// * Convert to lowercase characters for ascii characters.
29789   /// * Punycode is used for representing non ascii characters.
29790   /// * Strip square brackets for IPV6 address.
29791   ///
29792   /// The caller must free the returned string with `CoTaskMemFree`. See
29793   /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings).
29794   @(" propget")
29795 	HRESULT get_Host(@("out, retval") LPWSTR* value);
29796 
29797   /// Port of the server that requested client certificate authentication.
29798   @(" propget")
29799 	HRESULT get_Port(@("out, retval") int* value);
29800 
29801   /// Returns true if the server that issued this request is an http proxy.
29802   /// Returns false if the server is the origin server.
29803   @(" propget")
29804 	HRESULT get_IsProxy(@("out, retval") BOOL* value);
29805 
29806   /// Returns the `ICoreWebView2StringCollection`.
29807   /// The collection contains Base64 encoding of DER encoded distinguished names of
29808   /// certificate authorities allowed by the server.
29809   @(" propget")
29810 	HRESULT get_AllowedCertificateAuthorities(@("out, retval")
29811       ICoreWebView2StringCollection * value);
29812 
29813   /// Returns the `ICoreWebView2ClientCertificateCollection` when client
29814   /// certificate authentication is requested. The collection contains mutually
29815   /// trusted CA certificates.
29816   @(" propget")
29817 	HRESULT get_MutuallyTrustedCertificates(@("out, retval")
29818       ICoreWebView2ClientCertificateCollection * value);
29819 
29820   /// Returns the selected certificate.
29821   @(" propget")
29822 	HRESULT get_SelectedCertificate(@("out, retval")
29823       ICoreWebView2ClientCertificate * value);
29824 
29825   /// Sets the certificate to respond to the server.
29826   @(" propput")
29827 	HRESULT put_SelectedCertificate(
29828       /+[in]+/ ICoreWebView2ClientCertificate value);
29829 
29830   /// You may set this flag to cancel the certificate selection. If canceled,
29831   /// the request is aborted regardless of the `Handled` property. By default the
29832   /// value is `FALSE`.
29833   @(" propget")
29834 	HRESULT get_Cancel(@("out, retval") BOOL* value);
29835 
29836   /// Sets the `Cancel` property.
29837   @(" propput")
29838 	HRESULT put_Cancel(in BOOL value);
29839 
29840   /// You may set this flag to `TRUE` to respond to the server with or
29841   /// without a certificate. If this flag is `TRUE` with a `SelectedCertificate`
29842   /// it responds to the server with the selected certificate otherwise respond to the
29843   /// server without a certificate. By default the value of `Handled` and `Cancel` are `FALSE`
29844   /// and display default client certificate selection dialog prompt to allow the user to
29845   /// choose a certificate. The `SelectedCertificate` is ignored unless `Handled` is set `TRUE`.
29846   @(" propget")
29847 	HRESULT get_Handled(@("out, retval") BOOL* value);
29848 
29849   /// Sets the `Handled` property.
29850   @(" propput")
29851 	HRESULT put_Handled(in BOOL value);
29852 
29853   /// Returns an `ICoreWebView2Deferral` object. Use this operation to
29854   /// complete the event at a later time.
29855   HRESULT GetDeferral(@("out, retval") ICoreWebView2Deferral * deferral);
29856 }
29857 
29858 /// This mostly represents a combined win32
29859 /// POINTER_INFO/POINTER_TOUCH_INFO/POINTER_PEN_INFO object. It takes fields
29860 /// from all three and excludes some win32 specific data types like HWND and
29861 /// HANDLE. Note, sourceDevice is taken out but we expect the PointerDeviceRect
29862 /// and DisplayRect to cover the existing use cases of sourceDevice.
29863 /// Another big difference is that any of the point or rect locations are
29864 /// expected to be in WebView physical coordinates. That is, coordinates
29865 /// relative to the WebView and no DPI scaling applied.
29866 //
29867 // The PointerId, PointerFlags, ButtonChangeKind, PenFlags, PenMask, TouchFlags,
29868 // and TouchMask are all #defined flags or enums in the
29869 // POINTER_INFO/POINTER_TOUCH_INFO/POINTER_PEN_INFO structure. We define those
29870 // properties here as UINT32 or INT32 and expect the developer to know how to
29871 // populate those values based on the Windows definitions.
29872 const GUID IID_ICoreWebView2PointerInfo = ICoreWebView2PointerInfo.iid;
29873 
29874 interface ICoreWebView2PointerInfo : IUnknown
29875 {
29876     static const GUID iid = { 0xe6995887,0xd10d,0x4f5d,[ 0x93,0x59,0x4c,0xe4,0x6e,0x4f,0x96,0xb9 ] };
29877   /// Get the PointerKind of the pointer event. This corresponds to the
29878   /// pointerKind property of the POINTER_INFO struct. The values are defined by
29879   /// the POINTER_INPUT_KIND enum in the Windows SDK (winuser.h). Supports
29880   /// PT_PEN and PT_TOUCH.
29881   @(" propget")
29882 	HRESULT get_PointerKind(@("out, retval") DWORD* pointerKind);
29883   /// Set the PointerKind of the pointer event. This corresponds to the
29884   /// pointerKind property of the POINTER_INFO struct. The values are defined by
29885   /// the POINTER_INPUT_KIND enum in the Windows SDK (winuser.h). Supports
29886   /// PT_PEN and PT_TOUCH.
29887   @(" propput")
29888 	HRESULT put_PointerKind(in DWORD pointerKind);
29889 
29890   /// Get the PointerId of the pointer event. This corresponds to the pointerId
29891   /// property of the POINTER_INFO struct as defined in the Windows SDK
29892   /// (winuser.h).
29893   @(" propget")
29894 	HRESULT get_PointerId(@("out, retval") UINT32* pointerId);
29895   /// Set the PointerId of the pointer event. This corresponds to the pointerId
29896   /// property of the POINTER_INFO struct as defined in the Windows SDK
29897   /// (winuser.h).
29898   @(" propput")
29899 	HRESULT put_PointerId(in UINT32 pointerId);
29900 
29901   /// Get the FrameID of the pointer event. This corresponds to the frameId
29902   /// property of the POINTER_INFO struct as defined in the Windows SDK
29903   /// (winuser.h).
29904   @(" propget")
29905 	HRESULT get_FrameId(@("out, retval") UINT32* frameId);
29906   /// Set the FrameID of the pointer event. This corresponds to the frameId
29907   /// property of the POINTER_INFO struct as defined in the Windows SDK
29908   /// (winuser.h).
29909   @(" propput")
29910 	HRESULT put_FrameId(in UINT32 frameId);
29911 
29912   /// Get the PointerFlags of the pointer event. This corresponds to the
29913   /// pointerFlags property of the POINTER_INFO struct. The values are defined
29914   /// by the POINTER_FLAGS constants in the Windows SDK (winuser.h).
29915   @(" propget")
29916 	HRESULT get_PointerFlags(@("out, retval") UINT32* pointerFlags);
29917   /// Set the PointerFlags of the pointer event. This corresponds to the
29918   /// pointerFlags property of the POINTER_INFO struct. The values are defined
29919   /// by the POINTER_FLAGS constants in the Windows SDK (winuser.h).
29920   @(" propput")
29921 	HRESULT put_PointerFlags(in UINT32 pointerFlags);
29922 
29923   /// Get the PointerDeviceRect of the sourceDevice property of the
29924   /// POINTER_INFO struct as defined in the Windows SDK (winuser.h).
29925   @(" propget")
29926 	HRESULT get_PointerDeviceRect(@("out, retval") RECT* pointerDeviceRect);
29927   /// Set the PointerDeviceRect of the sourceDevice property of the
29928   /// POINTER_INFO struct as defined in the Windows SDK (winuser.h).
29929   @(" propput")
29930 	HRESULT put_PointerDeviceRect(in RECT pointerDeviceRect);
29931 
29932   /// Get the DisplayRect of the sourceDevice property of the POINTER_INFO
29933   /// struct as defined in the Windows SDK (winuser.h).
29934   @(" propget")
29935 	HRESULT get_DisplayRect(@("out, retval") RECT* displayRect);
29936   /// Set the DisplayRect of the sourceDevice property of the POINTER_INFO
29937   /// struct as defined in the Windows SDK (winuser.h).
29938   @(" propput")
29939 	HRESULT put_DisplayRect(in RECT displayRect);
29940 
29941   /// Get the PixelLocation of the pointer event. This corresponds to the
29942   /// ptPixelLocation property of the POINTER_INFO struct as defined in the
29943   /// Windows SDK (winuser.h).
29944   @(" propget")
29945 	HRESULT get_PixelLocation(@("out, retval") POINT* pixelLocation);
29946   /// Set the PixelLocation of the pointer event. This corresponds to the
29947   /// ptPixelLocation property of the POINTER_INFO struct as defined in the
29948   /// Windows SDK (winuser.h).
29949   @(" propput")
29950 	HRESULT put_PixelLocation(in POINT pixelLocation);
29951 
29952   /// Get the HimetricLocation of the pointer event. This corresponds to the
29953   /// ptHimetricLocation property of the POINTER_INFO struct as defined in the
29954   /// Windows SDK (winuser.h).
29955   @(" propget")
29956 	HRESULT get_HimetricLocation(@("out, retval") POINT* himetricLocation);
29957   /// Set the HimetricLocation of the pointer event. This corresponds to the
29958   /// ptHimetricLocation property of the POINTER_INFO struct as defined in the
29959   /// Windows SDK (winuser.h).
29960   @(" propput")
29961 	HRESULT put_HimetricLocation(in POINT himetricLocation);
29962 
29963   /// Get the PixelLocationRaw of the pointer event. This corresponds to the
29964   /// ptPixelLocationRaw property of the POINTER_INFO struct as defined in the
29965   /// Windows SDK (winuser.h).
29966   @(" propget")
29967 	HRESULT get_PixelLocationRaw(@("out, retval") POINT* pixelLocationRaw);
29968   /// Set the PixelLocationRaw of the pointer event. This corresponds to the
29969   /// ptPixelLocationRaw property of the POINTER_INFO struct as defined in the
29970   /// Windows SDK (winuser.h).
29971   @(" propput")
29972 	HRESULT put_PixelLocationRaw(in POINT pixelLocationRaw);
29973 
29974   /// Get the HimetricLocationRaw of the pointer event. This corresponds to the
29975   /// ptHimetricLocationRaw property of the POINTER_INFO struct as defined in
29976   /// the Windows SDK (winuser.h).
29977   @(" propget")
29978 	HRESULT get_HimetricLocationRaw(@("out, retval") POINT* himetricLocationRaw);
29979   /// Set the HimetricLocationRaw of the pointer event. This corresponds to the
29980   /// ptHimetricLocationRaw property of the POINTER_INFO struct as defined in
29981   /// the Windows SDK (winuser.h).
29982   @(" propput")
29983 	HRESULT put_HimetricLocationRaw(in POINT himetricLocationRaw);
29984 
29985   /// Get the Time of the pointer event. This corresponds to the dwTime property
29986   /// of the POINTER_INFO struct as defined in the Windows SDK (winuser.h).
29987   @(" propget")
29988 	HRESULT get_Time(@("out, retval") DWORD* time);
29989   /// Set the Time of the pointer event. This corresponds to the dwTime property
29990   /// of the POINTER_INFO struct as defined in the Windows SDK (winuser.h).
29991   @(" propput")
29992 	HRESULT put_Time(in DWORD time);
29993 
29994   /// Get the HistoryCount of the pointer event. This corresponds to the
29995   /// historyCount property of the POINTER_INFO struct as defined in the Windows
29996   /// SDK (winuser.h).
29997   @(" propget")
29998 	HRESULT get_HistoryCount(@("out, retval") UINT32* historyCount);
29999   /// Set the HistoryCount of the pointer event. This corresponds to the
30000   /// historyCount property of the POINTER_INFO struct as defined in the Windows
30001   /// SDK (winuser.h).
30002   @(" propput")
30003 	HRESULT put_HistoryCount(in UINT32 historyCount);
30004 
30005   /// Get the InputData of the pointer event. This corresponds to the InputData
30006   /// property of the POINTER_INFO struct as defined in the Windows SDK
30007   /// (winuser.h).
30008   @(" propget")
30009 	HRESULT get_InputData(@("out, retval") INT32* inputData);
30010   /// Set the InputData of the pointer event. This corresponds to the InputData
30011   /// property of the POINTER_INFO struct as defined in the Windows SDK
30012   /// (winuser.h).
30013   @(" propput")
30014 	HRESULT put_InputData(in INT32 inputData);
30015 
30016   /// Get the KeyStates of the pointer event. This corresponds to the
30017   /// dwKeyStates property of the POINTER_INFO struct as defined in the Windows
30018   /// SDK (winuser.h).
30019   @(" propget")
30020 	HRESULT get_KeyStates(@("out, retval") DWORD* keyStates);
30021   /// Set the KeyStates of the pointer event. This corresponds to the
30022   /// dwKeyStates property of the POINTER_INFO struct as defined in the Windows
30023   /// SDK (winuser.h).
30024   @(" propput")
30025 	HRESULT put_KeyStates(in DWORD keyStates);
30026 
30027   /// Get the PerformanceCount of the pointer event. This corresponds to the
30028   /// PerformanceCount property of the POINTER_INFO struct as defined in the
30029   /// Windows SDK (winuser.h).
30030   @(" propget")
30031 	HRESULT get_PerformanceCount(@("out, retval") UINT64* performanceCount);
30032   /// Set the PerformanceCount of the pointer event. This corresponds to the
30033   /// PerformanceCount property of the POINTER_INFO struct as defined in the
30034   /// Windows SDK (winuser.h).
30035   @(" propput")
30036 	HRESULT put_PerformanceCount(in UINT64 performanceCount);
30037 
30038   /// Get the ButtonChangeKind of the pointer event. This corresponds to the
30039   /// ButtonChangeKind property of the POINTER_INFO struct. The values are
30040   /// defined by the POINTER_BUTTON_CHANGE_KIND enum in the Windows SDK
30041   /// (winuser.h).
30042   @(" propget")
30043 	HRESULT get_ButtonChangeKind(@("out, retval") INT32* buttonChangeKind);
30044   /// Set the ButtonChangeKind of the pointer event. This corresponds to the
30045   /// ButtonChangeKind property of the POINTER_INFO struct. The values are
30046   /// defined by the POINTER_BUTTON_CHANGE_KIND enum in the Windows SDK
30047   /// (winuser.h).
30048   @(" propput")
30049 	HRESULT put_ButtonChangeKind(in INT32 buttonChangeKind);
30050 
30051   // Pen specific attributes
30052 
30053   /// Get the PenFlags of the pointer event. This corresponds to the penFlags
30054   /// property of the POINTER_PEN_INFO struct. The values are defined by the
30055   /// PEN_FLAGS constants in the Windows SDK (winuser.h).
30056   @(" propget")
30057 	HRESULT get_PenFlags(@("out, retval") UINT32* penFLags);
30058   /// Set the PenFlags of the pointer event. This corresponds to the penFlags
30059   /// property of the POINTER_PEN_INFO struct. The values are defined by the
30060   /// PEN_FLAGS constants in the Windows SDK (winuser.h).
30061   @(" propput")
30062 	HRESULT put_PenFlags(in UINT32 penFLags);
30063 
30064   /// Get the PenMask of the pointer event. This corresponds to the penMask
30065   /// property of the POINTER_PEN_INFO struct. The values are defined by the
30066   /// PEN_MASK constants in the Windows SDK (winuser.h).
30067   @(" propget")
30068 	HRESULT get_PenMask(@("out, retval") UINT32* penMask);
30069   /// Set the PenMask of the pointer event. This corresponds to the penMask
30070   /// property of the POINTER_PEN_INFO struct. The values are defined by the
30071   /// PEN_MASK constants in the Windows SDK (winuser.h).
30072   @(" propput")
30073 	HRESULT put_PenMask(in UINT32 penMask);
30074 
30075   /// Get the PenPressure of the pointer event. This corresponds to the pressure
30076   /// property of the POINTER_PEN_INFO struct as defined in the Windows SDK
30077   /// (winuser.h).
30078   @(" propget")
30079 	HRESULT get_PenPressure(@("out, retval") UINT32* penPressure);
30080   /// Set the PenPressure of the pointer event. This corresponds to the pressure
30081   /// property of the POINTER_PEN_INFO struct as defined in the Windows SDK
30082   /// (winuser.h).
30083   @(" propput")
30084 	HRESULT put_PenPressure(in UINT32 penPressure);
30085 
30086   /// Get the PenRotation of the pointer event. This corresponds to the rotation
30087   /// property of the POINTER_PEN_INFO struct as defined in the Windows SDK
30088   /// (winuser.h).
30089   @(" propget")
30090 	HRESULT get_PenRotation(@("out, retval") UINT32* penRotation);
30091   /// Set the PenRotation of the pointer event. This corresponds to the rotation
30092   /// property of the POINTER_PEN_INFO struct as defined in the Windows SDK
30093   /// (winuser.h).
30094   @(" propput")
30095 	HRESULT put_PenRotation(in UINT32 penRotation);
30096 
30097   /// Get the PenTiltX of the pointer event. This corresponds to the tiltX
30098   /// property of the POINTER_PEN_INFO struct as defined in the Windows SDK
30099   /// (winuser.h).
30100   @(" propget")
30101 	HRESULT get_PenTiltX(@("out, retval") INT32* penTiltX);
30102   /// Set the PenTiltX of the pointer event. This corresponds to the tiltX
30103   /// property of the POINTER_PEN_INFO struct as defined in the Windows SDK
30104   /// (winuser.h).
30105   @(" propput")
30106 	HRESULT put_PenTiltX(in INT32 penTiltX);
30107 
30108   /// Get the PenTiltY of the pointer event. This corresponds to the tiltY
30109   /// property of the POINTER_PEN_INFO struct as defined in the Windows SDK
30110   /// (winuser.h).
30111   @(" propget")
30112 	HRESULT get_PenTiltY(@("out, retval") INT32* penTiltY);
30113   /// Set the PenTiltY of the pointer event. This corresponds to the tiltY
30114   /// property of the POINTER_PEN_INFO struct as defined in the Windows SDK
30115   /// (winuser.h).
30116   @(" propput")
30117 	HRESULT put_PenTiltY(in INT32 penTiltY);
30118 
30119   // Touch specific attributes
30120 
30121   /// Get the TouchFlags of the pointer event. This corresponds to the
30122   /// touchFlags property of the POINTER_TOUCH_INFO struct. The values are
30123   /// defined by the TOUCH_FLAGS constants in the Windows SDK (winuser.h).
30124   @(" propget")
30125 	HRESULT get_TouchFlags(@("out, retval") UINT32* touchFlags);
30126   /// Set the TouchFlags of the pointer event. This corresponds to the
30127   /// touchFlags property of the POINTER_TOUCH_INFO struct. The values are
30128   /// defined by the TOUCH_FLAGS constants in the Windows SDK (winuser.h).
30129   @(" propput")
30130 	HRESULT put_TouchFlags(in UINT32 touchFlags);
30131 
30132   /// Get the TouchMask of the pointer event. This corresponds to the
30133   /// touchMask property of the POINTER_TOUCH_INFO struct. The values are
30134   /// defined by the TOUCH_MASK constants in the Windows SDK (winuser.h).
30135   @(" propget")
30136 	HRESULT get_TouchMask(@("out, retval") UINT32* touchMask);
30137   /// Set the TouchMask of the pointer event. This corresponds to the
30138   /// touchMask property of the POINTER_TOUCH_INFO struct. The values are
30139   /// defined by the TOUCH_MASK constants in the Windows SDK (winuser.h).
30140   @(" propput")
30141 	HRESULT put_TouchMask(in UINT32 touchMask);
30142 
30143   /// Get the TouchContact of the pointer event. This corresponds to the
30144   /// rcContact property of the POINTER_TOUCH_INFO struct as defined in the
30145   /// Windows SDK (winuser.h).
30146   @(" propget")
30147 	HRESULT get_TouchContact(@("out, retval") RECT* touchContact);
30148   /// Set the TouchContact of the pointer event. This corresponds to the
30149   /// rcContact property of the POINTER_TOUCH_INFO struct as defined in the
30150   /// Windows SDK (winuser.h).
30151   @(" propput")
30152 	HRESULT put_TouchContact(in RECT touchContact);
30153 
30154   /// Get the TouchContactRaw of the pointer event. This corresponds to the
30155   /// rcContactRaw property of the POINTER_TOUCH_INFO struct as defined in the
30156   /// Windows SDK (winuser.h).
30157   @(" propget")
30158 	HRESULT get_TouchContactRaw(@("out, retval") RECT* touchContactRaw);
30159   /// Set the TouchContactRaw of the pointer event. This corresponds to the
30160   /// rcContactRaw property of the POINTER_TOUCH_INFO struct as defined in the
30161   /// Windows SDK (winuser.h).
30162   @(" propput")
30163 	HRESULT put_TouchContactRaw(in RECT touchContactRaw);
30164 
30165   /// Get the TouchOrientation of the pointer event. This corresponds to the
30166   /// orientation property of the POINTER_TOUCH_INFO struct as defined in the
30167   /// Windows SDK (winuser.h).
30168   @(" propget")
30169 	HRESULT get_TouchOrientation(@("out, retval") UINT32* touchOrientation);
30170   /// Set the TouchOrientation of the pointer event. This corresponds to the
30171   /// orientation property of the POINTER_TOUCH_INFO struct as defined in the
30172   /// Windows SDK (winuser.h).
30173   @(" propput")
30174 	HRESULT put_TouchOrientation(in UINT32 touchOrientation);
30175 
30176   /// Get the TouchPressure of the pointer event. This corresponds to the
30177   /// pressure property of the POINTER_TOUCH_INFO struct as defined in the
30178   /// Windows SDK (winuser.h).
30179   @(" propget")
30180 	HRESULT get_TouchPressure(@("out, retval") UINT32* touchPressure);
30181   /// Set the TouchPressure of the pointer event. This corresponds to the
30182   /// pressure property of the POINTER_TOUCH_INFO struct as defined in the
30183   /// Windows SDK (winuser.h).
30184   @(" propput")
30185 	HRESULT put_TouchPressure(in UINT32 touchPressure);
30186 }
30187 
30188 /// The caller implements this interface to receive CursorChanged events. Use
30189 /// the Cursor property to get the new cursor.
30190 const GUID IID_ICoreWebView2CursorChangedEventHandler = ICoreWebView2CursorChangedEventHandler.iid;
30191 
30192 interface ICoreWebView2CursorChangedEventHandler : IUnknown
30193 {
30194     static const GUID iid = { 0x9da43ccc,0x26e1,0x4dad,[ 0xb5,0x6c,0xd8,0x96,0x1c,0x94,0xc5,0x71 ] };
30195   /// Called to provide the implementer with the event args for the
30196   /// corresponding event. There are no event args and the args
30197   /// parameter will be null.
30198   HRESULT Invoke(/+[in]+/ ICoreWebView2CompositionController sender, /+[in]+/ IUnknown args);
30199 }
30200 
30201 /// Receives `RasterizationScaleChanged` events.  Use the `RasterizationScale`
30202 /// property to get the modified scale.
30203 
30204 const GUID IID_ICoreWebView2RasterizationScaleChangedEventHandler = ICoreWebView2RasterizationScaleChangedEventHandler.iid;
30205 
30206 interface ICoreWebView2RasterizationScaleChangedEventHandler : IUnknown
30207 {
30208     static const GUID iid = { 0x9c98c8b1,0xac53,0x427e,[ 0xa3,0x45,0x30,0x49,0xb5,0x52,0x4b,0xbe ] };
30209   /// Called to provide the implementer with the event args for the
30210   /// corresponding event. There are no event args and the args
30211   /// parameter will be null.
30212   HRESULT Invoke(
30213     /+[in]+/ ICoreWebView2Controller sender,
30214     /+[in]+/ IUnknown args);
30215 }
30216 
30217 /// Represents the WebView2 Environment.  WebViews created from an environment
30218 /// run on the browser process specified with environment parameters and
30219 /// objects created from an environment should be used in the same
30220 /// environment.  Using it in different environments are not guaranteed to be
30221 ///  compatible and may fail.
30222 
30223 const GUID IID_ICoreWebView2Environment = ICoreWebView2Environment.iid;
30224 
30225 interface ICoreWebView2Environment : IUnknown
30226 {
30227     static const GUID iid = { 0xb96d755e,0x0319,0x4e92,[ 0xa2,0x96,0x23,0x43,0x6f,0x46,0xa1,0xfc ] };
30228 
30229   /// Asynchronously create a new WebView.
30230   ///
30231   /// `parentWindow` is the `HWND` in which the WebView should be displayed and
30232   /// from which receive input.  The WebView adds a child window to the
30233   /// provided window before this function returns.  Z-order and other things
30234   /// impacted by sibling window order are affected accordingly.  If you want to
30235   /// move the WebView to a different parent after it has been created, you must
30236   /// call put_ParentWindow to update tooltip positions, accessibility trees,
30237   /// and such.
30238   ///
30239   /// HWND_MESSAGE is a valid parameter for `parentWindow` for an invisible
30240   /// WebView for Windows 8 and above. In this case the window will never
30241   /// become visible. You are not able to reparent the window after you have
30242   /// created the WebView.  This is not supported in Windows 7 or below.
30243   /// Passing this parameter in Windows 7 or below will return
30244   /// ERROR_INVALID_WINDOW_HANDLE in the controller callback.
30245   ///
30246   /// It is recommended that the app set Application User Model ID for the
30247   /// process or the app window.  If none is set, during WebView creation a
30248   /// generated Application User Model ID is set to root window of
30249   /// `parentWindow`.
30250   ///
30251   /// \snippet AppWindow.cpp CreateCoreWebView2Controller
30252   ///
30253   /// It is recommended that the app handles restart manager messages, to
30254   /// gracefully restart it in the case when the app is using the WebView2
30255   /// Runtime from a certain installation and that installation is being
30256   /// uninstalled.  For example, if a user installs a version of the WebView2
30257   /// Runtime and opts to use another version of the WebView2 Runtime for
30258   /// testing the app, and then uninstalls the 1st version of the WebView2
30259   /// Runtime without closing the app, the app restarts to allow
30260   /// un-installation to succeed.
30261   ///
30262   /// \snippet AppWindow.cpp RestartManager
30263   ///
30264   /// The app should retry `CreateCoreWebView2Controller` upon failure, unless the
30265   /// error code is `HRESULT_FROM_WIN32(ERROR_INVALID_STATE)`.
30266   /// When the app retries `CreateCoreWebView2Controller` upon failure, it is
30267   /// recommended that the app restarts from creating a new WebView2
30268   /// Environment.  If a WebView2 Runtime update happens, the version
30269   /// associated with a WebView2 Environment may have been removed and causing
30270   /// the object to no longer work.  Creating a new WebView2 Environment works
30271   /// since it uses the latest version.
30272   ///
30273   /// WebView creation fails with `HRESULT_FROM_WIN32(ERROR_INVALID_STATE)` if a
30274   /// running instance using the same user data folder exists, and the Environment
30275   /// objects have different `EnvironmentOptions`.  For example, if a WebView was
30276   /// created with one language, an attempt to create a WebView with a different
30277   /// language using the same user data folder will fail.
30278   ///
30279   /// The creation will fail with `E_ABORT` if `parentWindow` is destroyed
30280   /// before the creation is finished.  If this is caused by a call to
30281   /// `DestroyWindow`, the creation completed handler will be invoked before
30282   /// `DestroyWindow` returns, so you can use this to cancel creation and clean
30283   /// up resources synchronously when quitting a thread.
30284   ///
30285   /// In rare cases the creation can fail with `E_UNEXPECTED` if runtime does not have
30286   /// permissions to the user data folder.
30287 
30288   HRESULT CreateCoreWebView2Controller(
30289     HWND parentWindow,
30290     ICoreWebView2CreateCoreWebView2ControllerCompletedHandler handler);
30291 
30292   /// Create a new web resource response object.  The `headers` parameter is
30293   /// the raw response header string delimited by newline.  It is also possible
30294   /// to create this object with null headers string and then use the
30295   /// `ICoreWebView2HttpResponseHeaders` to construct the headers line by line.
30296   /// For more information about other parameters, navigate to
30297   /// [ICoreWebView2WebResourceResponse](/microsoft-edge/webview2/reference/win32/icorewebview2webresourceresponse).
30298   ///
30299   /// \snippet SettingsComponent.cpp WebResourceRequested0
30300   /// \snippet SettingsComponent.cpp WebResourceRequested1
30301   HRESULT CreateWebResourceResponse(
30302     in IStream* content,
30303     in int statusCode,
30304     in LPCWSTR reasonPhrase,
30305     in LPCWSTR headers,
30306     @("out, retval") ICoreWebView2WebResourceResponse * response);
30307 
30308   /// The browser version info of the current `ICoreWebView2Environment`,
30309   /// including channel name if it is not the WebView2 Runtime.  It matches the
30310   /// format of the `GetAvailableCoreWebView2BrowserVersionString` API.
30311   /// Channel names are `beta`, `dev`, and `canary`.
30312   ///
30313   /// The caller must free the returned string with `CoTaskMemFree`.  See
30314   /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings).
30315   ///
30316   /// \snippet AppWindow.cpp GetBrowserVersionString
30317   @(" propget")
30318 	HRESULT get_BrowserVersionString(@("out, retval") LPWSTR* versionInfo);
30319 
30320   /// Add an event handler for the `NewBrowserVersionAvailable` event.
30321   /// `NewBrowserVersionAvailable` runs when a newer version of the WebView2
30322   /// Runtime is installed and available using WebView2.  To use the newer
30323   /// version of the browser you must create a new environment and WebView.
30324   /// The event only runs for new version from the same WebView2 Runtime from
30325   /// which the code is running. When not running with installed WebView2
30326   /// Runtime, no event is run.
30327   ///
30328   /// Because a user data folder is only able to be used by one browser
30329   /// process at a time, if you want to use the same user data folder in the
30330   /// WebView using the new version of the browser, you must close the
30331   /// environment and instance of WebView that are using the older version of
30332   /// the browser first.  Or simply prompt the user to restart the app.
30333   ///
30334   /// \snippet AppWindow.cpp NewBrowserVersionAvailable
30335   HRESULT add_NewBrowserVersionAvailable(
30336       /+[in]+/ ICoreWebView2NewBrowserVersionAvailableEventHandler eventHandler,
30337       @("out") EventRegistrationToken* token);
30338 
30339   /// Remove an event handler previously added with `add_NewBrowserVersionAvailable`.
30340   HRESULT remove_NewBrowserVersionAvailable(
30341       in EventRegistrationToken token);
30342 }
30343 
30344 /// A continuation of the ICoreWebView2Environment interface.
30345 const GUID IID_ICoreWebView2Environment2 = ICoreWebView2Environment2.iid;
30346 
30347 interface ICoreWebView2Environment2 : ICoreWebView2Environment
30348 {
30349     static const GUID iid = { 0x41F3632B,0x5EF4,0x404F,[ 0xAD,0x82,0x2D,0x60,0x6C,0x5A,0x9A,0x21 ] };
30350   /// Create a new web resource request object.
30351   /// URI parameter must be absolute URI.
30352   /// The headers string is the raw request header string delimited by CRLF
30353   /// (optional in last header).
30354   /// It's also possible to create this object with null headers string
30355   /// and then use the ICoreWebView2HttpRequestHeaders to construct the headers
30356   /// line by line.
30357   /// For information on other parameters see ICoreWebView2WebResourceRequest.
30358   ///
30359   /// \snippet ScenarioNavigateWithWebResourceRequest.cpp NavigateWithWebResourceRequest
30360   HRESULT CreateWebResourceRequest(in LPCWSTR uri,
30361                                    in LPCWSTR method,
30362                                    in IStream* postData,
30363                                    in LPCWSTR headers,
30364                                    @("out, retval") ICoreWebView2WebResourceRequest * request);
30365 }
30366 
30367 /// A continuation of the ICoreWebView2Environment2 interface.
30368 const GUID IID_ICoreWebView2Environment3 = ICoreWebView2Environment3.iid;
30369 
30370 interface ICoreWebView2Environment3 : ICoreWebView2Environment2
30371 {
30372     static const GUID iid = { 0x80a22ae3,0xbe7c,0x4ce2,[ 0xaf,0xe1,0x5a,0x50,0x05,0x6c,0xde,0xeb ] };
30373   /// Asynchronously create a new WebView for use with visual hosting.
30374   ///
30375   /// parentWindow is the HWND in which the app will connect the visual tree of
30376   /// the WebView. This will be the HWND that the app will receive pointer/
30377   /// mouse input meant for the WebView (and will need to use SendMouseInput/
30378   /// SendPointerInput to forward). If the app moves the WebView visual tree to
30379   /// underneath a different window, then it needs to call put_ParentWindow to
30380   /// update the new parent HWND of the visual tree.
30381   ///
30382   /// HWND_MESSAGE is not a valid parameter for `parentWindow` for visual hosting.
30383   /// The underlying implementation of supporting HWND_MESSAGE would break
30384   /// accessibility for visual hosting. This is supported in windowed
30385   /// WebViews - see CreateCoreWebView2Controller.
30386   ///
30387   /// Use put_RootVisualTarget on the created CoreWebView2CompositionController to
30388   /// provide a visual to host the browser's visual tree.
30389   ///
30390   /// It is recommended that the application set Application User Model ID for
30391   /// the process or the application window. If none is set, during WebView
30392   /// creation a generated Application User Model ID is set to root window of
30393   /// parentWindow.
30394   /// \snippet AppWindow.cpp CreateCoreWebView2Controller
30395   ///
30396   /// It is recommended that the application handles restart manager messages
30397   /// so that it can be restarted gracefully in the case when the app is using
30398   /// Edge for WebView from a certain installation and that installation is
30399   /// being uninstalled. For example, if a user installs Edge from Dev channel
30400   /// and opts to use Edge from that channel for testing the app, and then
30401   /// uninstalls Edge from that channel without closing the app, the app will
30402   /// be restarted to allow uninstallation of the dev channel to succeed.
30403   /// \snippet AppWindow.cpp RestartManager
30404   ///
30405   /// The app should retry `CreateCoreWebView2CompositionController` upon failure,
30406   /// unless the error code is `HRESULT_FROM_WIN32(ERROR_INVALID_STATE)`.
30407   /// When the app retries `CreateCoreWebView2CompositionController`
30408   /// upon failure, it is recommended that the app restarts from creating a new
30409   /// WebView2 Environment.  If a WebView2 Runtime update happens, the version
30410   /// associated with a WebView2 Environment may have been removed and causing
30411   /// the object to no longer work.  Creating a new WebView2 Environment works
30412   /// since it uses the latest version.
30413   ///
30414   /// WebView creation fails with `HRESULT_FROM_WIN32(ERROR_INVALID_STATE)` if a
30415   /// running instance using the same user data folder exists, and the Environment
30416   /// objects have different `EnvironmentOptions`.  For example, if a WebView was
30417   /// created with one language, an attempt to create a WebView with a different
30418   /// language using the same user data folder will fail.
30419   ///
30420   /// The creation will fail with `E_ABORT` if `parentWindow` is destroyed
30421   /// before the creation is finished.  If this is caused by a call to
30422   /// `DestroyWindow`, the creation completed handler will be invoked before
30423   /// `DestroyWindow` returns, so you can use this to cancel creation and clean
30424   /// up resources synchronously when quitting a thread.
30425   ///
30426   /// In rare cases the creation can fail with `E_UNEXPECTED` if runtime does not have
30427   /// permissions to the user data folder.
30428   ///
30429   /// CreateCoreWebView2CompositionController is supported in the following versions of Windows:
30430   ///
30431   /// - Windows 11
30432   /// - Windows 10
30433   /// - Windows Server 2019
30434   /// - Windows Server 2016
30435   ///
30436   HRESULT CreateCoreWebView2CompositionController(
30437       HWND parentWindow,
30438       ICoreWebView2CreateCoreWebView2CompositionControllerCompletedHandler handler);
30439 
30440   /// Create an empty ICoreWebView2PointerInfo. The returned
30441   /// ICoreWebView2PointerInfo needs to be populated with all of the relevant
30442   /// info before calling SendPointerInput.
30443   HRESULT CreateCoreWebView2PointerInfo(
30444     @("out, retval") ICoreWebView2PointerInfo * pointerInfo);
30445 }
30446 
30447 /// A continuation of the ICoreWebView2Environment3 interface.
30448 const GUID IID_ICoreWebView2Environment4 = ICoreWebView2Environment4.iid;
30449 
30450 interface ICoreWebView2Environment4 : ICoreWebView2Environment3
30451 {
30452     static const GUID iid = { 0x20944379,0x6dcf,0x41d6,[ 0xa0,0xa0,0xab,0xc0,0xfc,0x50,0xde,0x0d ] };
30453   /// Returns the Automation Provider for the WebView that matches the provided
30454   /// window. Host apps are expected to implement
30455   /// IRawElementProviderHwndOverride. When GetOverrideProviderForHwnd is
30456   /// called, the app can pass the HWND to GetAutomationProviderForWindow to
30457   /// find the matching WebView Automation Provider.
30458   HRESULT GetAutomationProviderForWindow(in HWND hwnd,
30459                                          @("out, retval") IUnknown * provider);
30460 }
30461 
30462 /// A continuation of the `ICoreWebView2Environment4` interface that supports
30463 /// the `BrowserProcessExited` event.
30464 const GUID IID_ICoreWebView2Environment5 = ICoreWebView2Environment5.iid;
30465 
30466 interface ICoreWebView2Environment5 : ICoreWebView2Environment4
30467 {
30468     static const GUID iid = { 0x319e423d,0xe0d7,0x4b8d,[ 0x92,0x54,0xae,0x94,0x75,0xde,0x9b,0x17 ] };
30469   /// Add an event handler for the `BrowserProcessExited` event.
30470   /// The `BrowserProcessExited` event is raised when the collection of WebView2
30471   /// Runtime processes for the browser process of this environment terminate
30472   /// due to browser process failure or normal shutdown (for example, when all
30473   /// associated WebViews are closed), after all resources have been released
30474   /// (including the user data folder). To learn about what these processes are,
30475   /// go to [Process model](/microsoft-edge/webview2/concepts/process-model).
30476   ///
30477   /// A handler added with this method is called until removed with
30478   /// `remove_BrowserProcessExited`, even if a new browser process is bound to
30479   /// this environment after earlier `BrowserProcessExited` events are raised.
30480   ///
30481   /// Multiple app processes can share a browser process by creating their webviews
30482   /// from a `ICoreWebView2Environment` with the same user data folder. When the entire
30483   /// collection of WebView2Runtime processes for the browser process exit, all
30484   /// associated `ICoreWebView2Environment` objects receive the `BrowserProcessExited`
30485   /// event. Multiple processes sharing the same browser process need to coordinate
30486   /// their use of the shared user data folder to avoid race conditions and
30487   /// unnecessary waits. For example, one process should not clear the user data
30488   /// folder at the same time that another process recovers from a crash by recreating
30489   /// its WebView controls; one process should not block waiting for the event if
30490   /// other app processes are using the same browser process (the browser process will
30491   /// not exit until those other processes have closed their webviews too).
30492   ///
30493   /// Note this is an event from the `ICoreWebView2Environment3` interface, not
30494   /// the `ICoreWebView2` one. The difference between `BrowserProcessExited` and
30495   /// `ICoreWebView2`'s `ProcessFailed` is that `BrowserProcessExited` is
30496   /// raised for any **browser process** exit (expected or unexpected, after all
30497   /// associated processes have exited too), while `ProcessFailed` is raised for
30498   /// **unexpected** process exits of any kind (browser, render, GPU, and all
30499   /// other types), or for main frame **render process** unresponsiveness. To
30500   /// learn more about the WebView2 Process Model, go to
30501   /// [Process model](/microsoft-edge/webview2/concepts/process-model).
30502   ///
30503   /// In the case the browser process crashes, both `BrowserProcessExited` and
30504   /// `ProcessFailed` events are raised, but the order is not guaranteed. These
30505   /// events are intended for different scenarios. It is up to the app to
30506   /// coordinate the handlers so they do not try to perform reliability recovery
30507   /// while also trying to move to a new WebView2 Runtime version or remove the
30508   /// user data folder.
30509   ///
30510   /// \snippet AppWindow.cpp Close
30511   HRESULT add_BrowserProcessExited(
30512       /+[in]+/ ICoreWebView2BrowserProcessExitedEventHandler eventHandler,
30513       @("out") EventRegistrationToken* token);
30514 
30515   /// Remove an event handler previously added with `add_BrowserProcessExited`.
30516   HRESULT remove_BrowserProcessExited(in EventRegistrationToken token);
30517 }
30518 
30519 /// This interface is an extension of the ICoreWebView2Environment that supports
30520 /// creating print settings for printing to PDF.
30521 const GUID IID_ICoreWebView2Environment6 = ICoreWebView2Environment6.iid;
30522 
30523 interface ICoreWebView2Environment6 : ICoreWebView2Environment5
30524 {
30525     static const GUID iid = { 0xe59ee362,0xacbd,0x4857,[ 0x9a,0x8e,0xd3,0x64,0x4d,0x94,0x59,0xa9 ] };
30526     /// Creates the `ICoreWebView2PrintSettings` used by the `PrintToPdf`
30527     /// method.
30528     HRESULT CreatePrintSettings(
30529         @("out, retval") ICoreWebView2PrintSettings * printSettings);
30530 }
30531 
30532 /// This interface is an extension of the ICoreWebView2Environment. An object
30533 /// implementing the ICoreWebView2Environment7 interface will also
30534 /// implement ICoreWebView2Environment.
30535 const GUID IID_ICoreWebView2Environment7 = ICoreWebView2Environment7.iid;
30536 
30537 interface ICoreWebView2Environment7 : ICoreWebView2Environment6
30538 {
30539     static const GUID iid = { 0x43C22296,0x3BBD,0x43A4,[ 0x9C,0x00,0x5C,0x0D,0xF6,0xDD,0x29,0xA2 ] };
30540   /// Returns the user data folder that all CoreWebView2's created from this
30541   /// environment are using.
30542   /// This could be either the value passed in by the developer when creating
30543   /// the environment object or the calculated one for default handling.  It
30544   /// will always be an absolute path.
30545   ///
30546   /// The caller must free the returned string with `CoTaskMemFree`.  See
30547   /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings).
30548   ///
30549   /// \snippet AppWindow.cpp GetUserDataFolder
30550   @(" propget")
30551 	HRESULT get_UserDataFolder(@(" out, retval ") LPWSTR * value);
30552 }
30553 
30554 /// A continuation of the `ICoreWebView2Environment7` interface that supports
30555 /// the `ProcessInfosChanged` event.
30556 const GUID IID_ICoreWebView2Environment8 = ICoreWebView2Environment8.iid;
30557 
30558 interface ICoreWebView2Environment8 : ICoreWebView2Environment7
30559 {
30560     static const GUID iid = { 0xD6EB91DD,0xC3D2,0x45E5,[ 0xBD,0x29,0x6D,0xC2,0xBC,0x4D,0xE9,0xCF ] };
30561   /// Adds an event handler for the `ProcessInfosChanged` event.
30562   ///
30563   /// \snippet ProcessComponent.cpp ProcessInfosChanged
30564   /// \snippet ProcessComponent.cpp ProcessInfosChanged1
30565   HRESULT add_ProcessInfosChanged(
30566       /+[in]+/ ICoreWebView2ProcessInfosChangedEventHandler eventHandler,
30567       @("out") EventRegistrationToken* token);
30568 
30569   /// Remove an event handler previously added with `add_ProcessInfosChanged`.
30570   HRESULT remove_ProcessInfosChanged(
30571       in EventRegistrationToken token);
30572 
30573   /// Returns the `ICoreWebView2ProcessInfoCollection`
30574   /// Provide a list of all process using same user data folder except for crashpad process.
30575   HRESULT GetProcessInfos(@("out, retval")ICoreWebView2ProcessInfoCollection * value);
30576 }
30577 
30578 /// Provides a set of properties for a process in the `ICoreWebView2Environment`.
30579 const GUID IID_ICoreWebView2ProcessInfo = ICoreWebView2ProcessInfo.iid;
30580 
30581 interface ICoreWebView2ProcessInfo : IUnknown
30582 {
30583     static const GUID iid = { 0x84FA7612,0x3F3D,0x4FBF,[ 0x88,0x9D,0xFA,0xD0,0x00,0x49,0x2D,0x72 ] };
30584 
30585   /// The process id of the process.
30586   @(" propget")
30587 	HRESULT get_ProcessId(@("out, retval") INT32* value);
30588 
30589   /// The kind of the process.
30590   @(" propget")
30591 	HRESULT get_Kind(@("out, retval") COREWEBVIEW2_PROCESS_KIND* kind);
30592 }
30593 
30594 /// A continuation of the ICoreWebView2Environment interface for
30595 /// creating CoreWebView2 ContextMenuItem objects.
30596 const GUID IID_ICoreWebView2Environment9 = ICoreWebView2Environment9.iid;
30597 
30598 interface ICoreWebView2Environment9 : ICoreWebView2Environment8
30599 {
30600     static const GUID iid = { 0xf06f41bf,0x4b5a,0x49d8,[ 0xb9,0xf6,0xfa,0x16,0xcd,0x29,0xf2,0x74 ] };
30601   /// Create a custom `ContextMenuItem` object to insert into the WebView context menu.
30602   /// CoreWebView2 will rewind the icon stream before decoding.
30603   /// There is a limit of 1000 active custom context menu items at a given time.
30604   /// Attempting to create more before deleting existing ones will fail with
30605   /// ERROR_NOT_ENOUGH_QUOTA.
30606   /// It is recommended to reuse ContextMenuItems across ContextMenuRequested events
30607   /// for performance.
30608   /// The returned ContextMenuItem object's `IsEnabled` property will default to `TRUE`
30609   /// and `IsChecked` property will default to `FALSE`. A `CommandId` will be assigned
30610   /// to the ContextMenuItem object that's unique across active custom context menu items,
30611   /// but command ID values of deleted ContextMenuItems can be reassigned.
30612   HRESULT CreateContextMenuItem(
30613       in LPCWSTR label,
30614       in IStream* iconStream,
30615       in COREWEBVIEW2_CONTEXT_MENU_ITEM_KIND kind,
30616       @("out, retval") ICoreWebView2ContextMenuItem * item);
30617 }
30618 
30619 /// This interface is used to create `ICoreWebView2ControllerOptions` object, which
30620 /// can be passed as a parameter in `CreateCoreWebView2ControllerWithOptions` and
30621 /// `CreateCoreWebView2CompositionControllerWithOptions` function for multiple profiles support.
30622 /// The profile will be created on disk or opened when calling `CreateCoreWebView2ControllerWithOptions` or
30623 /// `CreateCoreWebView2CompositionControllerWithOptions` no matter InPrivate mode is enabled or not, and
30624 /// it will be released in memory when the corresponding controller is closed but still remain on disk.
30625 /// If you create a WebView2Controller with {ProfileName="name", InPrivate=false} and then later create another
30626 /// one with {ProfileName="name", InPrivate=true}, these two controllers using the same profile would be allowed to
30627 /// run at the same time.
30628 /// As WebView2 is built on top of Edge browser, it follows Edge's behavior pattern. To create an InPrivate WebView,
30629 /// we gets an off-the-record profile (an InPrivate profile) from a regular profile, then create the WebView with the
30630 /// off-the-record profile.
30631 ///
30632 /// \snippet AppWindow.cpp CreateControllerWithOptions
30633 const GUID IID_ICoreWebView2Environment10 = ICoreWebView2Environment10.iid;
30634 
30635 interface ICoreWebView2Environment10 : ICoreWebView2Environment9
30636 {
30637     static const GUID iid = { 0xee0eb9df,0x6f12,0x46ce,[ 0xb5,0x3f,0x3f,0x47,0xb9,0xc9,0x28,0xe0 ] };
30638   /// Create a new ICoreWebView2ControllerOptions to be passed as a parameter of
30639   /// CreateCoreWebView2ControllerWithOptions and CreateCoreWebView2CompositionControllerWithOptions.
30640   /// The 'options' is settable and in it the default value for profile name is the empty string,
30641   /// and the default value for IsInPrivateModeEnabled is false.
30642   /// Also the profile name can be reused.
30643   HRESULT CreateCoreWebView2ControllerOptions(
30644       @("out, retval") ICoreWebView2ControllerOptions * options);
30645 
30646   /// Create a new WebView with options.
30647   HRESULT CreateCoreWebView2ControllerWithOptions(
30648       in HWND parentWindow,
30649       /+[in]+/ ICoreWebView2ControllerOptions options,
30650       /+[in]+/ ICoreWebView2CreateCoreWebView2ControllerCompletedHandler handler);
30651 
30652   /// Create a new WebView in visual hosting mode with options.
30653   HRESULT CreateCoreWebView2CompositionControllerWithOptions(
30654       in HWND parentWindow,
30655       /+[in]+/ ICoreWebView2ControllerOptions options,
30656       /+[in]+/ ICoreWebView2CreateCoreWebView2CompositionControllerCompletedHandler handler);
30657 }
30658 
30659 /// A list containing process id and corresponding process type.
30660 const GUID IID_ICoreWebView2ProcessInfoCollection = ICoreWebView2ProcessInfoCollection.iid;
30661 
30662 interface ICoreWebView2ProcessInfoCollection : IUnknown
30663 {
30664     static const GUID iid = { 0x402B99CD,0xA0CC,0x4FA5,[ 0xB7,0xA5,0x51,0xD8,0x6A,0x1D,0x23,0x39 ] };
30665   /// The number of process contained in the ICoreWebView2ProcessInfoCollection.
30666   @(" propget")
30667 	HRESULT get_Count(@("out, retval") UINT* count);
30668 
30669   /// Gets the `ICoreWebView2ProcessInfo` located in the `ICoreWebView2ProcessInfoCollection`
30670   /// at the given index.
30671   HRESULT GetValueAtIndex(in UINT32 index,
30672                           @("out, retval") ICoreWebView2ProcessInfo * processInfo);
30673 }
30674 
30675 /// An event handler for the `ProcessInfosChanged` event.
30676 const GUID IID_ICoreWebView2ProcessInfosChangedEventHandler = ICoreWebView2ProcessInfosChangedEventHandler.iid;
30677 
30678 interface ICoreWebView2ProcessInfosChangedEventHandler : IUnknown
30679 {
30680     static const GUID iid = { 0xF4AF0C39,0x44B9,0x40E9,[ 0x8B,0x11,0x04,0x84,0xCF,0xB9,0xE0,0xA1 ] };
30681   /// Provides the event args for the corresponding event.  No event args exist
30682   /// and the `args` parameter is set to `null`.
30683   HRESULT Invoke(/+[in]+/ ICoreWebView2Environment sender, /+[in]+/ IUnknown args);
30684 }
30685 
30686 /// Options used to create WebView2 Environment.  A default implementation is
30687 /// provided in `WebView2EnvironmentOptions.h`.
30688 ///
30689 /// \snippet AppWindow.cpp CreateCoreWebView2EnvironmentWithOptions
30690 
30691 const GUID IID_ICoreWebView2EnvironmentOptions = ICoreWebView2EnvironmentOptions.iid;
30692 
30693 interface ICoreWebView2EnvironmentOptions : IUnknown
30694 {
30695     static const GUID iid = { 0x2fde08a8,0x1e9a,0x4766,[ 0x8c,0x05,0x95,0xa9,0xce,0xb9,0xd1,0xc5 ] };
30696 
30697   /// Changes the behavior of the WebView.  The arguments are passed to the
30698   /// browser process as part of the command.  For more information about
30699   /// using command-line switches with Chromium browser processes, navigate to
30700   /// [Run Chromium with Flags](https://www.chromium.org/developers/how-tos/run-chromium-with-flags).
30701   /// The value appended to a switch is appended to the browser process, for
30702   /// example, in `--edge-webview-switches=xxx` the value is `xxx`.  If you
30703   /// specify a switch that is important to WebView functionality, it is
30704   /// ignored, for example, `--user-data-dir`.  Specific features are disabled
30705   /// internally and blocked from being enabled.  If a switch is specified
30706   /// multiple times, only the last instance is used.
30707   ///
30708   /// \> [!NOTE]\n\> A merge of the different values of the same switch is not attempted,
30709   /// except for disabled and enabled features. The features specified by
30710   /// `--enable-features` and `--disable-features` are merged with simple
30711   /// logic.\n\> *   The features is the union of the specified features
30712   /// and built-in features.  If a feature is disabled, it is removed from the
30713   /// enabled features list.
30714   ///
30715   /// If you specify command-line switches and use the
30716   /// `additionalBrowserArguments` parameter, the `--edge-webview-switches`
30717   /// value takes precedence and is processed last.  If a switch fails to
30718   /// parse, the switch is ignored.  The default state for the operation is
30719   /// to run the browser process with no extra flags.
30720   ///
30721   /// The caller must free the returned string with `CoTaskMemFree`.  See
30722   /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings).
30723   @(" propget")
30724 	HRESULT get_AdditionalBrowserArguments(@("out, retval") LPWSTR* value);
30725 
30726   /// Sets the `AdditionalBrowserArguments` property.
30727   ///
30728   /// Please note that calling this API twice will replace the previous value
30729   /// rather than appending to it. If there are multiple switches, there
30730   /// should be a space in between them. The one exception is if multiple
30731   /// features are being enabled/disabled for a single switch, in which
30732   /// case the features should be comma-seperated.
30733   /// Ex. "--disable-features=feature1,feature2 --some-other-switch --do-something"
30734   @(" propput")
30735 	HRESULT put_AdditionalBrowserArguments(in LPCWSTR value);
30736 
30737   /// The default display language for WebView.  It applies to browser UI such as
30738   /// context menu and dialogs.  It also applies to the `accept-languages` HTTP
30739   ///  header that WebView sends to websites. The intended locale value is in the
30740   /// format of BCP 47 Language Tags. More information can be found from
30741   /// [IETF BCP47](https://www.ietf.org/rfc/bcp/bcp47.html).
30742   ///
30743   /// The caller must free the returned string with `CoTaskMemFree`.  See
30744   /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings).
30745   @(" propget")
30746 	HRESULT get_Language(@("out, retval") LPWSTR* value);
30747 
30748   /// Sets the `Language` property.
30749   @(" propput")
30750 	HRESULT put_Language(in LPCWSTR value);
30751 
30752   /// Specifies the version of the WebView2 Runtime binaries required to be
30753   /// compatible with your app.  This defaults to the WebView2 Runtime version
30754   /// that corresponds with the version of the SDK the app is using.  The
30755   /// format of this value is the same as the format of the
30756   /// `BrowserVersionString` property and other `BrowserVersion` values.  Only
30757   /// the version part of the `BrowserVersion` value is respected.  The channel
30758   ///  suffix, if it exists, is ignored.  The version of the WebView2 Runtime
30759   /// binaries actually used may be different from the specified
30760   /// `TargetCompatibleBrowserVersion`.  The binaries are only guaranteed to be
30761   /// compatible.  Verify the actual version on the `BrowserVersionString`
30762   /// property on the `ICoreWebView2Environment`.
30763   ///
30764   /// The caller must free the returned string with `CoTaskMemFree`.  See
30765   /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings).
30766   @(" propget")
30767 	HRESULT get_TargetCompatibleBrowserVersion(@("out, retval") LPWSTR* value);
30768 
30769   /// Sets the `TargetCompatibleBrowserVersion` property.
30770   @(" propput")
30771 	HRESULT put_TargetCompatibleBrowserVersion(in LPCWSTR value);
30772 
30773   /// The `AllowSingleSignOnUsingOSPrimaryAccount` property is used to enable
30774   /// single sign on with Azure Active Directory (AAD) and personal Microsoft
30775   /// Account (MSA) resources inside WebView. All AAD accounts, connected to
30776   /// Windows and shared for all apps, are supported. For MSA, SSO is only enabled
30777   /// for the account associated for Windows account login, if any.
30778   /// Default is disabled. Universal Windows Platform apps must also declare
30779   /// `enterpriseCloudSSO`
30780   /// [Restricted capabilities](/windows/uwp/packaging/app-capability-declarations\#restricted-capabilities)
30781   /// for the single sign on (SSO) to work.
30782   @(" propget")
30783 	HRESULT get_AllowSingleSignOnUsingOSPrimaryAccount(@("out, retval") BOOL* allow);
30784 
30785   /// Sets the `AllowSingleSignOnUsingOSPrimaryAccount` property.
30786   @(" propput")
30787 	HRESULT put_AllowSingleSignOnUsingOSPrimaryAccount(in BOOL allow);
30788 }
30789 
30790 /// Additional options used to create WebView2 Environment.  A default implementation is
30791 /// provided in `WebView2EnvironmentOptions.h`.
30792 ///
30793 /// \snippet AppWindow.cpp CreateCoreWebView2EnvironmentWithOptions
30794 
30795 // Note: ICoreWebView2EnvironmentOptions* interfaces derive from IUnknown to make moving
30796 // the API from experimental to public smoothier. These interfaces are mostly internal to
30797 // WebView's own code. Normal apps just use the objects we provided and never interact
30798 // with the interfaces. Advanced apps might implement their own options object. In that
30799 // case, it is also easier for them to implement the interface if it is derived from IUnknown.
30800 const GUID IID_ICoreWebView2EnvironmentOptions2 = ICoreWebView2EnvironmentOptions2.iid;
30801 
30802 interface ICoreWebView2EnvironmentOptions2 : IUnknown
30803 {
30804     static const GUID iid = { 0xFF85C98A,0x1BA7,0x4A6B,[ 0x90,0xC8,0x2B,0x75,0x2C,0x89,0xE9,0xE2 ] };
30805 
30806   /// Whether other processes can create WebView2 from WebView2Environment created with the
30807   /// same user data folder and therefore sharing the same WebView browser process instance.
30808   /// Default is FALSE.
30809   @(" propget")
30810 	HRESULT get_ExclusiveUserDataFolderAccess(@("out, retval") BOOL* value);
30811 
30812   /// Sets the `ExclusiveUserDataFolderAccess` property.
30813   /// The `ExclusiveUserDataFolderAccess` property specifies that the WebView environment
30814   /// obtains exclusive access to the user data folder.
30815   /// If the user data folder is already being used by another WebView environment with a
30816   /// different value for `ExclusiveUserDataFolderAccess` property, the creation of a WebView2Controller
30817   /// using the environment object will fail with `HRESULT_FROM_WIN32(ERROR_INVALID_STATE)`.
30818   /// When set as TRUE, no other WebView can be created from other processes using WebView2Environment
30819   /// objects with the same UserDataFolder. This prevents other processes from creating WebViews
30820   /// which share the same browser process instance, since sharing is performed among
30821   /// WebViews that have the same UserDataFolder. When another process tries to create a
30822   /// WebView2Controller from an WebView2Environment object created with the same user data folder,
30823   /// it will fail with `HRESULT_FROM_WIN32(ERROR_INVALID_STATE)`.
30824   @(" propput")
30825 	HRESULT put_ExclusiveUserDataFolderAccess(in BOOL value);
30826 }
30827 
30828 /// Additional options used to create WebView2 Environment to manage crash
30829 /// reporting.
30830 const GUID IID_ICoreWebView2EnvironmentOptions3 = ICoreWebView2EnvironmentOptions3.iid;
30831 
30832 interface ICoreWebView2EnvironmentOptions3 : IUnknown
30833 {
30834     static const GUID iid = { 0x4A5C436E,0xA9E3,0x4A2E,[ 0x89,0xC3,0x91,0x0D,0x35,0x13,0xF5,0xCC ] };
30835   /// When `IsCustomCrashReportingEnabled` is set to `TRUE`, Windows won't send crash data to Microsoft endpoint.
30836   /// `IsCustomCrashReportingEnabled` is default to be `FALSE`, in this case, WebView will respect OS consent.
30837   @(" propget")
30838 	HRESULT get_IsCustomCrashReportingEnabled(@("out, retval") BOOL* value);
30839 
30840   /// Sets the `IsCustomCrashReportingEnabled` property.
30841   @(" propput")
30842 	HRESULT put_IsCustomCrashReportingEnabled(in BOOL value);
30843 }
30844 
30845 /// Additional options used to create WebView2 Environment that manages custom scheme registration.
30846 const GUID IID_ICoreWebView2EnvironmentOptions4 = ICoreWebView2EnvironmentOptions4.iid;
30847 
30848 interface ICoreWebView2EnvironmentOptions4 : IUnknown
30849 {
30850     static const GUID iid = { 0xac52d13f,0x0d38,0x475a,[ 0x9d,0xca,0x87,0x65,0x80,0xd6,0x79,0x3e ] };
30851   /// Array of custom scheme registrations. The returned
30852   /// ICoreWebView2CustomSchemeRegistration pointers must be released, and the
30853   /// array itself must be deallocated with CoTaskMemFree.
30854   HRESULT GetCustomSchemeRegistrations(
30855       @("out") UINT32* count,
30856       @("out") ICoreWebView2CustomSchemeRegistration ** schemeRegistrations);
30857   /// Set the array of custom scheme registrations to be used.
30858   /// \snippet AppWindow.cpp CoreWebView2CustomSchemeRegistration
30859   HRESULT SetCustomSchemeRegistrations(
30860       in UINT32 count,
30861       /+[in]+/ ICoreWebView2CustomSchemeRegistration * schemeRegistrations);
30862 }
30863 
30864 /// Additional options used to create WebView2 Environment to manage tracking
30865 /// prevention.
30866 const GUID IID_ICoreWebView2EnvironmentOptions5 = ICoreWebView2EnvironmentOptions5.iid;
30867 
30868 interface ICoreWebView2EnvironmentOptions5 : IUnknown
30869 {
30870     static const GUID iid = { 0x0AE35D64,0xC47F,0x4464,[ 0x81,0x4E,0x25,0x9C,0x34,0x5D,0x15,0x01 ] };
30871   /// The `EnableTrackingPrevention` property is used to enable/disable tracking prevention
30872   /// feature in WebView2. This property enable/disable tracking prevention for all the
30873   /// WebView2's created in the same environment. By default this feature is enabled to block
30874   /// potentially harmful trackers and trackers from sites that aren't visited before and set to
30875   /// `COREWEBVIEW2_TRACKING_PREVENTION_LEVEL_BALANCED` or whatever value was last changed/persisted
30876   /// on the profile.
30877   ///
30878   /// You can set this property to false to disable the tracking prevention feature if the app only
30879   /// renders content in the WebView2 that is known to be safe. Disabling this feature when creating
30880   /// environment also improves runtime performance by skipping related code.
30881   ///
30882   /// You shouldn't disable this property if WebView2 is being used as a "full browser" with arbitrary
30883   /// navigation and should protect end user privacy.
30884   ///
30885   /// There is `ICoreWebView2Profile3::PreferredTrackingPreventionLevel` property to control levels of
30886   /// tracking prevention of the WebView2's associated with a same profile. However, you can also disable
30887   /// tracking prevention later using `ICoreWebView2Profile3::PreferredTrackingPreventionLevel` property and
30888   /// `COREWEBVIEW2_TRACKING_PREVENTION_LEVEL_NONE` value but that doesn't improves runtime performance.
30889   ///
30890   /// See `ICoreWebView2Profile3::PreferredTrackingPreventionLevel` for more details.
30891   ///
30892   /// Tracking prevention protects users from online tracking by restricting the ability of trackers to
30893   /// access browser-based storage as well as the network. See [Tracking prevention](/microsoft-edge/web-platform/tracking-prevention).
30894   @(" propget")
30895 	HRESULT get_EnableTrackingPrevention(@("out, retval") BOOL* value);
30896   /// Sets the `EnableTrackingPrevention` property.
30897   @(" propput")
30898 	HRESULT put_EnableTrackingPrevention(in BOOL value);
30899 }
30900 
30901 /// Additional options used to create WebView2 Environment to manage browser extensions.
30902 const GUID IID_ICoreWebView2EnvironmentOptions6 = ICoreWebView2EnvironmentOptions6.iid;
30903 
30904 interface ICoreWebView2EnvironmentOptions6 : IUnknown
30905 {
30906     static const GUID iid = { 0x57D29CC3,0xC84F,0x42A0,[ 0xB0,0xE2,0xEF,0xFB,0xD5,0xE1,0x79,0xDE ] };
30907   /// When `AreBrowserExtensionsEnabled` is set to `TRUE`, new extensions can be added to user
30908   /// profile and used. `AreBrowserExtensionsEnabled` is default to be `FALSE`, in this case,
30909   /// new extensions can't be installed, and already installed extension won't be
30910   /// available to use in user profile.
30911   /// If connecting to an already running environment with a different value for `AreBrowserExtensionsEnabled`
30912   /// property, it will fail with `HRESULT_FROM_WIN32(ERROR_INVALID_STATE)`.
30913   /// See `ICoreWebView2BrowserExtension` for Extensions API details.
30914   @(" propget")
30915 	HRESULT get_AreBrowserExtensionsEnabled(@("out, retval") BOOL* value);
30916   /// Sets the `AreBrowserExtensionsEnabled` property.
30917   @(" propput")
30918 	HRESULT put_AreBrowserExtensionsEnabled(in BOOL value);
30919 }
30920 
30921 /// A continuation of the ICoreWebView2Environment interface for
30922 /// getting the crash dump folder path.
30923 const GUID IID_ICoreWebView2Environment11 = ICoreWebView2Environment11.iid;
30924 
30925 interface ICoreWebView2Environment11 : ICoreWebView2Environment10
30926 {
30927     static const GUID iid = { 0xF0913DC6,0xA0EC,0x42EF,[ 0x98,0x05,0x91,0xDF,0xF3,0xA2,0x96,0x6A ] };
30928   /// `FailureReportFolderPath` returns the path of the folder where minidump files are written.
30929   /// Whenever a WebView2 process crashes, a crash dump file will be created in the crash dump folder.
30930   /// The crash dump format is minidump files. Please see
30931   /// [Minidump Files documentation](/windows/win32/debug/minidump-files) for detailed information.
30932   /// Normally when a single child process fails, a minidump will be generated and written to disk,
30933   /// then the `ProcessFailed` event is raised. But for unexpected crashes, a minidump file might not be generated
30934   /// at all, despite whether `ProcessFailed` event is raised. If there are multiple
30935   /// process failures at once, multiple minidump files could be generated. Thus `FailureReportFolderPath`
30936   /// could contain old minidump files that are not associated with a specific `ProcessFailed` event.
30937   /// \snippet AppWindow.cpp GetFailureReportFolder
30938   @(" propget")
30939 	HRESULT get_FailureReportFolderPath(@("out, retval") LPWSTR* value);
30940 }
30941 
30942 /// A continuation of the ICoreWebView2Environment interface for creating shared buffer object.
30943 const GUID IID_ICoreWebView2Environment12 = ICoreWebView2Environment12.iid;
30944 
30945 interface ICoreWebView2Environment12 : ICoreWebView2Environment11
30946 {
30947     static const GUID iid = { 0xF503DB9B,0x739F,0x48DD,[ 0xB1,0x51,0xFD,0xFC,0xF2,0x53,0xF5,0x4E ] };
30948   /// Create a shared memory based buffer with the specified size in bytes.
30949   /// The buffer can be shared with web contents in WebView by calling
30950   /// `PostSharedBufferToScript` on `CoreWebView2` or `CoreWebView2Frame` object.
30951   /// Once shared, the same content of the buffer will be accessible from both
30952   /// the app process and script in WebView. Modification to the content will be visible
30953   /// to all parties that have access to the buffer.
30954   /// The shared buffer is presented to the script as ArrayBuffer. All JavaScript APIs
30955   /// that work for ArrayBuffer including Atomics APIs can be used on it.
30956   /// There is currently a limitation that only size less than 2GB is supported.
30957   HRESULT CreateSharedBuffer(
30958     in UINT64 size,
30959     @("out, retval") ICoreWebView2SharedBuffer * shared_buffer);
30960 }
30961 
30962 /// Receives the `WebView2Environment` created using
30963 /// `CreateCoreWebView2Environment`.
30964 const GUID IID_ICoreWebView2CreateCoreWebView2EnvironmentCompletedHandler = ICoreWebView2CreateCoreWebView2EnvironmentCompletedHandler.iid;
30965 
30966 interface ICoreWebView2CreateCoreWebView2EnvironmentCompletedHandler : IUnknown
30967 {
30968     static const GUID iid = { 0x4e8a3389,0xc9d8,0x4bd2,[ 0xb6,0xb5,0x12,0x4f,0xee,0x6c,0xc1,0x4d ] };
30969 
30970   /// Provides the completion status and result of the corresponding
30971   /// asynchronous method.
30972 
30973   HRESULT Invoke(HRESULT errorCode, ICoreWebView2Environment createdEnvironment);
30974 }
30975 
30976 /// A Receiver is created for a particular DevTools Protocol event and allows
30977 /// you to subscribe and unsubscribe from that event.  Obtained from the
30978 /// WebView object using `GetDevToolsProtocolEventReceiver`.
30979 const GUID IID_ICoreWebView2DevToolsProtocolEventReceiver = ICoreWebView2DevToolsProtocolEventReceiver.iid;
30980 
30981 interface ICoreWebView2DevToolsProtocolEventReceiver : IUnknown
30982 {
30983     static const GUID iid = { 0xb32ca51a,0x8371,0x45e9,[ 0x93,0x17,0xaf,0x02,0x1d,0x08,0x03,0x67 ] };
30984 
30985   /// Subscribe to a `DevToolsProtocol` event.  The `Invoke` method of the
30986   /// `handler` runs whenever the corresponding `DevToolsProtocol` event runs.
30987   /// `Invoke` runs with an event args object containing the parameter object
30988   /// of the DevTools Protocol event as a JSON string.
30989   ///
30990   /// \snippet ScriptComponent.cpp DevToolsProtocolEventReceived
30991 
30992   HRESULT add_DevToolsProtocolEventReceived(
30993       /+[in]+/ ICoreWebView2DevToolsProtocolEventReceivedEventHandler handler,
30994       @("out") EventRegistrationToken* token);
30995 
30996   /// Remove an event handler previously added with
30997   /// `add_DevToolsProtocolEventReceived`.
30998 
30999   HRESULT remove_DevToolsProtocolEventReceived(
31000       in EventRegistrationToken token);
31001 }
31002 
31003 /// A continuation of the ICoreWebView2Environment interface for getting process
31004 /// with associated information.
31005 const GUID IID_ICoreWebView2Environment13 = ICoreWebView2Environment13.iid;
31006 
31007 interface ICoreWebView2Environment13 : ICoreWebView2Environment12
31008 {
31009     static const GUID iid = { 0xaf641f58,0x72b2,0x11ee,[ 0xb9,0x62,0x02,0x42,0xac,0x12,0x00,0x02 ] };
31010   /// Gets a snapshot collection of `ProcessExtendedInfo`s corresponding to all
31011   /// currently running processes associated with this `CoreWebView2Environment`
31012   /// excludes crashpad process.
31013   /// This provides the same list of `ProcessInfo`s as what's provided in
31014   /// `GetProcessInfos`, but additionally provides a list of associated `FrameInfo`s
31015   /// which are actively running (showing or hiding UI elements) in the renderer
31016   /// process. See `AssociatedFrameInfos` for more information.
31017   ///
31018   /// \snippet ProcessComponent.cpp GetProcessExtendedInfos
31019   HRESULT GetProcessExtendedInfos(/+[in]+/ ICoreWebView2GetProcessExtendedInfosCompletedHandler handler);
31020 }
31021 
31022 /// Receives the result of the `GetProcessExtendedInfos` method.
31023 /// The result is written to the collection of `ProcessExtendedInfo`s provided
31024 /// in the `GetProcessExtendedInfos` method call.
31025 const GUID IID_ICoreWebView2GetProcessExtendedInfosCompletedHandler = ICoreWebView2GetProcessExtendedInfosCompletedHandler.iid;
31026 
31027 interface ICoreWebView2GetProcessExtendedInfosCompletedHandler : IUnknown
31028 {
31029     static const GUID iid = { 0xf45e55aa,0x3bc2,0x11ee,[ 0xbe,0x56,0x02,0x42,0xac,0x12,0x00,0x02 ] };
31030   /// Provides the process extended info list for the `GetProcessExtendedInfos`.
31031   HRESULT Invoke(in HRESULT errorCode, /+[in]+/ ICoreWebView2ProcessExtendedInfoCollection value);
31032 }
31033 
31034 /// Provides process with associated extended information in the `ICoreWebView2Environment`.
31035 const GUID IID_ICoreWebView2ProcessExtendedInfo = ICoreWebView2ProcessExtendedInfo.iid;
31036 
31037 interface ICoreWebView2ProcessExtendedInfo : IUnknown
31038 {
31039     static const GUID iid = { 0xaf4c4c2e,0x45db,0x11ee,[ 0xbe,0x56,0x02,0x42,0xac,0x12,0x00,0x02 ] };
31040   /// The process info of the current process.
31041   @(" propget")
31042 	HRESULT get_ProcessInfo(
31043     @("out, retval") ICoreWebView2ProcessInfo * processInfo);
31044 
31045   /// The collection of associated `FrameInfo`s which are actively running
31046   /// (showing or hiding UI elements) in this renderer process. `AssociatedFrameInfos`
31047   /// will only be populated when this `CoreWebView2ProcessExtendedInfo`
31048   /// corresponds to a renderer process. Non-renderer processes will always
31049   /// have an empty `AssociatedFrameInfos`. The `AssociatedFrameInfos` may
31050   /// also be empty for renderer processes that have no active frames.
31051   ///
31052   /// \snippet ProcessComponent.cpp AssociatedFrameInfos
31053   @(" propget")
31054 	HRESULT get_AssociatedFrameInfos(
31055     @("out, retval") ICoreWebView2FrameInfoCollection * frames);
31056 }
31057 
31058 /// A list containing processInfo and associated extended information.
31059 const GUID IID_ICoreWebView2ProcessExtendedInfoCollection = ICoreWebView2ProcessExtendedInfoCollection.iid;
31060 
31061 interface ICoreWebView2ProcessExtendedInfoCollection : IUnknown
31062 {
31063     static const GUID iid = { 0x32efa696,0x407a,0x11ee,[ 0xbe,0x56,0x02,0x42,0xac,0x12,0x00,0x02 ] };
31064   /// The number of process contained in the `ICoreWebView2ProcessExtendedInfoCollection`.
31065   @(" propget")
31066 	HRESULT get_Count(@("out, retval") UINT* count);
31067 
31068   /// Gets the `ICoreWebView2ProcessExtendedInfo` located in the
31069   /// `ICoreWebView2ProcessExtendedInfoCollection` at the given index.
31070   HRESULT GetValueAtIndex(in UINT32 index,
31071                           @("out, retval") ICoreWebView2ProcessExtendedInfo * processInfo);
31072 }
31073 
31074 /// ICoreWebView2Frame provides direct access to the iframes information.
31075 /// You can get an ICoreWebView2Frame by handling the ICoreWebView2_4::add_FrameCreated event.
31076 const GUID IID_ICoreWebView2Frame = ICoreWebView2Frame.iid;
31077 
31078 interface ICoreWebView2Frame : IUnknown
31079 {
31080     static const GUID iid = { 0xf1131a5e,0x9ba9,0x11eb,[ 0xa8,0xb3,0x02,0x42,0xac,0x13,0x00,0x03 ] };
31081   /// The name of the iframe from the iframe html tag declaring it.
31082   /// You can access this property even if the iframe is destroyed.
31083   ///
31084   /// The caller must free the returned string with `CoTaskMemFree`.  See
31085   /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings).
31086   @(" propget")
31087 	HRESULT get_Name(@(" out, retval ") LPWSTR * name);
31088   /// Raised when the iframe changes its window.name property.
31089   HRESULT add_NameChanged(
31090       /+[in]+/ ICoreWebView2FrameNameChangedEventHandler  eventHandler,
31091       @("out") EventRegistrationToken * token);
31092   /// Remove an event handler previously added with add_NameChanged.
31093   HRESULT remove_NameChanged(in EventRegistrationToken token);
31094 
31095   /// Add the provided host object to script running in the iframe with the
31096   /// specified name for the list of the specified origins. The host object
31097   /// will be accessible for this iframe only if the iframe's origin during
31098   /// access matches one of the origins which are passed. The provided origins
31099   /// will be normalized before comparing to the origin of the document.
31100   /// So the scheme name is made lower case, the host will be punycode decoded
31101   /// as appropriate, default port values will be removed, and so on.
31102   /// This means the origin's host may be punycode encoded or not and will match
31103   /// regardless. If list contains malformed origin the call will fail.
31104   /// The method can be called multiple times in a row without calling
31105   /// RemoveHostObjectFromScript for the same object name. It will replace
31106   /// the previous object with the new object and new list of origins.
31107   /// List of origins will be treated as following:
31108   /// 1. empty list - call will succeed and object will be added for the iframe
31109   /// but it will not be exposed to any origin;
31110   /// 2. list with origins - during access to host object from iframe the
31111   /// origin will be checked that it belongs to this list;
31112   /// 3. list with "*" element - host object will be available for iframe for
31113   /// all origins. We suggest not to use this feature without understanding
31114   /// security implications of giving access to host object from from iframes
31115   /// with unknown origins.
31116   /// 4. list with "file://" element - host object will be available for iframes
31117   /// loaded via file protocol.
31118   /// Calling this method fails if it is called after the iframe is destroyed.
31119   /// \snippet ScenarioAddHostObject.cpp AddHostObjectToScriptWithOrigins
31120   /// For more information about host objects navigate to
31121   /// ICoreWebView2::AddHostObjectToScript.
31122   HRESULT AddHostObjectToScriptWithOrigins(
31123       in LPCWSTR name,
31124       in VARIANT * object,
31125       in UINT32 originsCount,
31126       @(" size_is (originsCount)") in LPCWSTR * origins);
31127   /// Remove the host object specified by the name so that it is no longer
31128   /// accessible from JavaScript code in the iframe. While new access
31129   /// attempts are denied, if the object is already obtained by JavaScript code
31130   /// in the iframe, the JavaScript code continues to have access to that
31131   /// object. Calling this method for a name that is already removed or was
31132   /// never added fails. If the iframe is destroyed this method will return fail
31133   /// also.
31134   HRESULT RemoveHostObjectFromScript(in LPCWSTR name);
31135 
31136   /// The Destroyed event is raised when the iframe corresponding
31137   /// to this CoreWebView2Frame object is removed or the document
31138   /// containing that iframe is destroyed.
31139   HRESULT add_Destroyed(
31140       /+[in]+/ ICoreWebView2FrameDestroyedEventHandler  eventHandler,
31141       @("out") EventRegistrationToken * token);
31142   /// Remove an event handler previously added with add_Destroyed.
31143   HRESULT remove_Destroyed(in EventRegistrationToken token);
31144   /// Check whether a frame is destroyed. Returns true during
31145   /// the Destroyed event.
31146   HRESULT IsDestroyed(@(" out, retval ") BOOL * destroyed);
31147 }
31148 
31149 /// A continuation of the ICoreWebView2Frame interface with navigation events,
31150 /// executing script and posting web messages.
31151 const GUID IID_ICoreWebView2Frame2 = ICoreWebView2Frame2.iid;
31152 
31153 interface ICoreWebView2Frame2 : ICoreWebView2Frame
31154 {
31155     static const GUID iid = { 0x7a6a5834,0xd185,0x4dbf,[ 0xb6,0x3f,0x4a,0x9b,0xc4,0x31,0x07,0xd4 ] };
31156   /// Add an event handler for the `NavigationStarting` event.
31157   /// A frame navigation will raise a `NavigationStarting` event and
31158   /// a `CoreWebView2.FrameNavigationStarting` event. All of the
31159   /// `FrameNavigationStarting` event handlers for the current frame will be
31160   /// run before the `NavigationStarting` event handlers. All of the event handlers
31161   /// share a common `NavigationStartingEventArgs` object. Whichever event handler is
31162   /// last to change the `NavigationStartingEventArgs.Cancel` property will
31163   /// decide if the frame navigation will be cancelled. Redirects raise this
31164   /// event as well, and the navigation id is the same as the original one.
31165   ///
31166   /// Navigations will be blocked until all `NavigationStarting` and
31167   /// `CoreWebView2.FrameNavigationStarting` event handlers return.
31168   HRESULT add_NavigationStarting(
31169       /+[in]+/ ICoreWebView2FrameNavigationStartingEventHandler eventHandler,
31170       @("out") EventRegistrationToken* token);
31171 
31172   /// Remove an event handler previously added with `add_NavigationStarting`.
31173   HRESULT remove_NavigationStarting(
31174       in EventRegistrationToken token);
31175 
31176   /// Add an event handler for the `ContentLoading` event.  `ContentLoading`
31177   /// triggers before any content is loaded, including scripts added with
31178   /// `AddScriptToExecuteOnDocumentCreated`.  `ContentLoading` does not trigger
31179   /// if a same page navigation occurs (such as through `fragment`
31180   /// navigations or `history.pushState` navigations).  This operation
31181   /// follows the `NavigationStarting` and precedes `NavigationCompleted` events.
31182   HRESULT add_ContentLoading(
31183       /+[in]+/ ICoreWebView2FrameContentLoadingEventHandler  eventHandler,
31184       @("out") EventRegistrationToken* token);
31185 
31186   /// Remove an event handler previously added with `add_ContentLoading`.
31187   HRESULT remove_ContentLoading(
31188       in EventRegistrationToken token);
31189 
31190   /// Add an event handler for the `NavigationCompleted` event.
31191   /// `NavigationCompleted` runs when the CoreWebView2Frame has completely
31192   /// loaded (concurrently when `body.onload` runs) or loading stopped with error.
31193   HRESULT add_NavigationCompleted(
31194       /+[in]+/ ICoreWebView2FrameNavigationCompletedEventHandler
31195           eventHandler,
31196       @("out") EventRegistrationToken* token);
31197 
31198   /// Remove an event handler previously added with `add_NavigationCompleted`.
31199   HRESULT remove_NavigationCompleted(
31200       in EventRegistrationToken token);
31201 
31202   /// Add an event handler for the DOMContentLoaded event.
31203   /// DOMContentLoaded is raised when the iframe html document has been parsed.
31204   /// This aligns with the document's DOMContentLoaded event in html.
31205   HRESULT add_DOMContentLoaded(
31206       /+[in]+/ ICoreWebView2FrameDOMContentLoadedEventHandler  eventHandler,
31207       @("out") EventRegistrationToken* token);
31208   /// Remove an event handler previously added with add_DOMContentLoaded.
31209   HRESULT remove_DOMContentLoaded(
31210       in EventRegistrationToken token);
31211 
31212   /// Run JavaScript code from the javascript parameter in the current frame.
31213   /// The result of evaluating the provided JavaScript is passed to the completion handler.
31214   /// The result value is a JSON encoded string. If the result is undefined,
31215   /// contains a reference cycle, or otherwise is not able to be encoded into
31216   /// JSON, then the result is considered to be null, which is encoded
31217   /// in JSON as the string "null".
31218   ///
31219   /// \> [!NOTE]\n\> A function that has no explicit return value returns undefined. If the
31220   /// script that was run throws an unhandled exception, then the result is
31221   /// also "null". This method is applied asynchronously. If the method is
31222   /// run before `ContentLoading`, the script will not be executed
31223   /// and the string "null" will be returned.
31224   /// This operation executes the script even if `ICoreWebView2Settings::IsScriptEnabled` is
31225   /// set to `FALSE`.
31226   ///
31227   /// \snippet ScenarioDOMContentLoaded.cpp ExecuteScriptFrame
31228   HRESULT ExecuteScript(
31229       in LPCWSTR javaScript,
31230       /+[in]+/ ICoreWebView2ExecuteScriptCompletedHandler handler);
31231 
31232   /// Posts the specified webMessage to the frame.
31233   /// The frame receives the message by subscribing to the `message` event of
31234   /// the `window.chrome.webview` of the frame document.
31235   ///
31236   /// ```cpp
31237   /// window.chrome.webview.addEventListener('message', handler)
31238   /// window.chrome.webview.removeEventListener('message', handler)
31239   /// ```
31240   ///
31241   /// The event args is an instances of `MessageEvent`. The
31242   /// `ICoreWebView2Settings::IsWebMessageEnabled` setting must be `TRUE` or
31243   /// the message will not be sent. The `data` property of the event
31244   /// args is the `webMessage` string parameter parsed as a JSON string into a
31245   /// JavaScript object. The `source` property of the event args is a reference
31246   /// to the `window.chrome.webview` object.  For information about sending
31247   /// messages from the HTML document in the WebView to the host, navigate to
31248   /// [add_WebMessageReceived](/microsoft-edge/webview2/reference/win32/icorewebview2#add_webmessagereceived).
31249   /// The message is delivered asynchronously. If a navigation occurs before the
31250   /// message is posted to the page, the message is discarded.
31251   HRESULT PostWebMessageAsJson(in LPCWSTR webMessageAsJson);
31252 
31253   /// Posts a message that is a simple string rather than a JSON string
31254   /// representation of a JavaScript object. This behaves in exactly the same
31255   /// manner as `PostWebMessageAsJson`, but the `data` property of the event
31256   /// args of the `window.chrome.webview` message is a string with the same
31257   /// value as `webMessageAsString`. Use this instead of
31258   /// `PostWebMessageAsJson` if you want to communicate using simple strings
31259   /// rather than JSON objects.
31260   HRESULT PostWebMessageAsString(in LPCWSTR webMessageAsString);
31261 
31262   /// Add an event handler for the `WebMessageReceived` event.
31263   /// `WebMessageReceived` runs when the
31264   /// `ICoreWebView2Settings::IsWebMessageEnabled` setting is set and the
31265   /// frame document runs `window.chrome.webview.postMessage`.
31266   /// The `postMessage` function is `void postMessage(object)`
31267   /// where object is any object supported by JSON conversion.
31268   ///
31269   /// \snippet assets\ScenarioWebMessage.html chromeWebView
31270   ///
31271   /// When the frame calls `postMessage`, the object parameter is converted to a
31272   /// JSON string and is posted asynchronously to the host process. This will
31273   /// result in the handlers `Invoke` method being called with the JSON string
31274   /// as its parameter.
31275   ///
31276   /// \snippet ScenarioWebMessage.cpp WebMessageReceivedIFrame
31277   HRESULT add_WebMessageReceived(
31278       /+[in]+/ ICoreWebView2FrameWebMessageReceivedEventHandler
31279           handler,
31280       @("out") EventRegistrationToken * token);
31281 
31282   /// Remove an event handler previously added with `add_WebMessageReceived`.
31283   HRESULT remove_WebMessageReceived(in EventRegistrationToken token);
31284 }
31285 
31286 /// Receives `FrameCreated` event.
31287 const GUID IID_ICoreWebView2FrameCreatedEventHandler = ICoreWebView2FrameCreatedEventHandler.iid;
31288 
31289 interface ICoreWebView2FrameCreatedEventHandler : IUnknown
31290 {
31291     static const GUID iid = { 0x38059770,0x9baa,0x11eb,[ 0xa8,0xb3,0x02,0x42,0xac,0x13,0x00,0x03 ] };
31292   /// Provides the result for the iframe created event.
31293   HRESULT Invoke(/+[in]+/ ICoreWebView2  sender,
31294                  /+[in]+/ ICoreWebView2FrameCreatedEventArgs  args);
31295 }
31296 
31297 /// Receives `FrameNameChanged` event.
31298 const GUID IID_ICoreWebView2FrameNameChangedEventHandler = ICoreWebView2FrameNameChangedEventHandler.iid;
31299 
31300 interface ICoreWebView2FrameNameChangedEventHandler : IUnknown
31301 {
31302     static const GUID iid = { 0x435c7dc8,0x9baa,0x11eb,[ 0xa8,0xb3,0x02,0x42,0xac,0x13,0x00,0x03 ] };
31303   /// Provides the result for the iframe name changed event.
31304   /// No event args exist and the `args` parameter is set to `null`.
31305   HRESULT Invoke(/+[in]+/ ICoreWebView2Frame  sender, /+[in]+/ IUnknown  args);
31306 }
31307 
31308 /// Receives `NavigationStarting` events for iframe.
31309 const GUID IID_ICoreWebView2FrameNavigationStartingEventHandler = ICoreWebView2FrameNavigationStartingEventHandler.iid;
31310 
31311 interface ICoreWebView2FrameNavigationStartingEventHandler : IUnknown
31312 {
31313     static const GUID iid = { 0xe79908bf,0x2d5d,0x4968,[ 0x83,0xdb,0x26,0x3f,0xea,0x2c,0x1d,0xa3 ] };
31314   /// Provides the event args for the corresponding event.
31315   HRESULT Invoke(
31316       /+[in]+/ ICoreWebView2Frame sender,
31317       /+[in]+/ ICoreWebView2NavigationStartingEventArgs args);
31318 }
31319 
31320 /// Receives `ContentLoading` events for iframe.
31321 const GUID IID_ICoreWebView2FrameContentLoadingEventHandler = ICoreWebView2FrameContentLoadingEventHandler.iid;
31322 
31323 interface ICoreWebView2FrameContentLoadingEventHandler : IUnknown
31324 {
31325     static const GUID iid = { 0x0d6156f2,0xd332,0x49a7,[ 0x9e,0x03,0x7d,0x8f,0x2f,0xee,0xee,0x54 ] };
31326   /// Provides the event args for the corresponding event.
31327   HRESULT Invoke(
31328       /+[in]+/ ICoreWebView2Frame sender,
31329       /+[in]+/ ICoreWebView2ContentLoadingEventArgs args);
31330 }
31331 
31332 /// Receives `NavigationCompleted` events for iframe.
31333 const GUID IID_ICoreWebView2FrameNavigationCompletedEventHandler = ICoreWebView2FrameNavigationCompletedEventHandler.iid;
31334 
31335 interface ICoreWebView2FrameNavigationCompletedEventHandler : IUnknown
31336 {
31337     static const GUID iid = { 0x609302ad,0x0e36,0x4f9a,[ 0xa2,0x10,0x6a,0x45,0x27,0x28,0x42,0xa9 ] };
31338   /// Provides the event args for the corresponding event.
31339   HRESULT Invoke(
31340       /+[in]+/ ICoreWebView2Frame sender,
31341       /+[in]+/ ICoreWebView2NavigationCompletedEventArgs args);
31342 }
31343 
31344 /// Receives `DOMContentLoaded` events for iframe.
31345 const GUID IID_ICoreWebView2FrameDOMContentLoadedEventHandler = ICoreWebView2FrameDOMContentLoadedEventHandler.iid;
31346 
31347 interface ICoreWebView2FrameDOMContentLoadedEventHandler : IUnknown
31348 {
31349     static const GUID iid = { 0x38d9520d,0x340f,0x4d1e,[ 0xa7,0x75,0x43,0xfc,0xe9,0x75,0x36,0x83 ] };
31350   /// Provides the event args for the corresponding event.
31351   HRESULT Invoke(
31352       /+[in]+/ ICoreWebView2Frame sender,
31353       /+[in]+/ ICoreWebView2DOMContentLoadedEventArgs args);
31354 }
31355 
31356 /// Receives `WebMessageReceived` events for iframe.
31357 const GUID IID_ICoreWebView2FrameWebMessageReceivedEventHandler = ICoreWebView2FrameWebMessageReceivedEventHandler.iid;
31358 
31359 interface ICoreWebView2FrameWebMessageReceivedEventHandler : IUnknown
31360 {
31361     static const GUID iid = { 0xe371e005,0x6d1d,0x4517,[ 0x93,0x4b,0xa8,0xf1,0x62,0x9c,0x62,0xa5 ] };
31362   /// Provides the event args for the corresponding event.
31363   HRESULT Invoke(
31364       /+[in]+/ ICoreWebView2Frame sender,
31365       /+[in]+/ ICoreWebView2WebMessageReceivedEventArgs args);
31366 }
31367 
31368 /// Event args for the `FrameCreated` events.
31369 const GUID IID_ICoreWebView2FrameCreatedEventArgs = ICoreWebView2FrameCreatedEventArgs.iid;
31370 
31371 interface ICoreWebView2FrameCreatedEventArgs : IUnknown
31372 {
31373     static const GUID iid = { 0x4d6e7b5e,0x9baa,0x11eb,[ 0xa8,0xb3,0x02,0x42,0xac,0x13,0x00,0x03 ] };
31374   /// The frame which was created.
31375   @(" propget")
31376 	HRESULT get_Frame(@(" out, retval ") ICoreWebView2Frame *frame);
31377 }
31378 
31379 /// Receives `FrameDestroyed` event.
31380 const GUID IID_ICoreWebView2FrameDestroyedEventHandler = ICoreWebView2FrameDestroyedEventHandler.iid;
31381 
31382 interface ICoreWebView2FrameDestroyedEventHandler : IUnknown
31383 {
31384     static const GUID iid = { 0x59dd7b4c,0x9baa,0x11eb,[ 0xa8,0xb3,0x02,0x42,0xac,0x13,0x00,0x03 ] };
31385   /// Provides the result for the iframe destroyed event.
31386   /// No event args exist and the `args` parameter is set to `null`.
31387   HRESULT Invoke(/+[in]+/ ICoreWebView2Frame  sender, /+[in]+/ IUnknown  args);
31388 }
31389 
31390 /// Add an event handler for the `DownloadStarting` event.
31391 const GUID IID_ICoreWebView2DownloadStartingEventHandler = ICoreWebView2DownloadStartingEventHandler.iid;
31392 
31393 interface ICoreWebView2DownloadStartingEventHandler : IUnknown
31394 {
31395     static const GUID iid = { 0xefedc989,0xc396,0x41ca,[ 0x83,0xf7,0x07,0xf8,0x45,0xa5,0x57,0x24 ] };
31396   /// Provides the event args for the corresponding event.
31397   HRESULT Invoke(
31398       /+[in]+/ ICoreWebView2 sender,
31399       /+[in]+/ ICoreWebView2DownloadStartingEventArgs args);
31400 }
31401 
31402 /// Event args for the `DownloadStarting` event.
31403 const GUID IID_ICoreWebView2DownloadStartingEventArgs = ICoreWebView2DownloadStartingEventArgs.iid;
31404 
31405 interface ICoreWebView2DownloadStartingEventArgs : IUnknown
31406 {
31407     static const GUID iid = { 0xe99bbe21,0x43e9,0x4544,[ 0xa7,0x32,0x28,0x27,0x64,0xea,0xfa,0x60 ] };
31408   /// Returns the `ICoreWebView2DownloadOperation` for the download that
31409   /// has started.
31410   @(" propget")
31411 	HRESULT get_DownloadOperation(
31412       @("out, retval") ICoreWebView2DownloadOperation * downloadOperation);
31413 
31414   /// The host may set this flag to cancel the download. If canceled, the
31415   /// download save dialog is not displayed regardless of the
31416   /// `Handled` property.
31417   @(" propget")
31418 	HRESULT get_Cancel(@("out, retval") BOOL* cancel);
31419 
31420   /// Sets the `Cancel` property.
31421   @(" propput")
31422 	HRESULT put_Cancel(in BOOL cancel);
31423 
31424   /// The path to the file. If setting the path, the host should ensure that it
31425   /// is an absolute path, including the file name, and that the path does not
31426   /// point to an existing file. If the path points to an existing file, the
31427   /// file will be overwritten. If the directory does not exist, it is created.
31428   ///
31429   /// The caller must free the returned string with `CoTaskMemFree`.  See
31430   /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings).
31431   @(" propget")
31432 	HRESULT get_ResultFilePath(@("out, retval") LPWSTR* resultFilePath);
31433 
31434   /// Sets the `ResultFilePath` property.
31435   @(" propput")
31436 	HRESULT put_ResultFilePath(in LPCWSTR resultFilePath);
31437 
31438   /// The host may set this flag to `TRUE` to hide the default download dialog
31439   /// for this download. The download will progress as normal if it is not
31440   /// canceled, there will just be no default UI shown. By default the value is
31441   /// `FALSE` and the default download dialog is shown.
31442   @(" propget")
31443 	HRESULT get_Handled(@("out, retval") BOOL* handled);
31444 
31445   /// Sets the `Handled` property.
31446   @(" propput")
31447 	HRESULT put_Handled(in BOOL handled);
31448 
31449   /// Returns an `ICoreWebView2Deferral` object.  Use this operation to
31450   /// complete the event at a later time.
31451   HRESULT GetDeferral(@("out, retval") ICoreWebView2Deferral * deferral);
31452 }
31453 
31454 /// Implements the interface to receive `BytesReceivedChanged` event.  Use the
31455 /// `ICoreWebView2DownloadOperation.BytesReceived` property to get the received
31456 /// bytes count.
31457 const GUID IID_ICoreWebView2BytesReceivedChangedEventHandler = ICoreWebView2BytesReceivedChangedEventHandler.iid;
31458 
31459 interface ICoreWebView2BytesReceivedChangedEventHandler : IUnknown
31460 {
31461     static const GUID iid = { 0x828e8ab6,0xd94c,0x4264,[ 0x9c,0xef,0x52,0x17,0x17,0x0d,0x62,0x51 ] };
31462   /// Provides the event args for the corresponding event. No event args exist
31463   /// and the `args` parameter is set to `null`.
31464   HRESULT Invoke(
31465       /+[in]+/ ICoreWebView2DownloadOperation sender, /+[in]+/ IUnknown args);
31466 }
31467 
31468 /// Implements the interface to receive `EstimatedEndTimeChanged` event. Use the
31469 /// `ICoreWebView2DownloadOperation.EstimatedEndTime` property to get the new
31470 /// estimated end time.
31471 const GUID IID_ICoreWebView2EstimatedEndTimeChangedEventHandler = ICoreWebView2EstimatedEndTimeChangedEventHandler.iid;
31472 
31473 interface ICoreWebView2EstimatedEndTimeChangedEventHandler : IUnknown
31474 {
31475     static const GUID iid = { 0x28f0d425,0x93fe,0x4e63,[ 0x9f,0x8d,0x2a,0xee,0xc6,0xd3,0xba,0x1e ] };
31476   /// Provides the event args for the corresponding event. No event args exist
31477   /// and the `args` parameter is set to `null`.
31478   HRESULT Invoke(
31479       /+[in]+/ ICoreWebView2DownloadOperation sender, /+[in]+/ IUnknown args);
31480 }
31481 
31482 /// Implements the interface to receive `StateChanged` event. Use the
31483 /// `ICoreWebView2DownloadOperation.State` property to get the current state,
31484 /// which can be in progress, interrupted, or completed. Use the
31485 /// `ICoreWebView2DownloadOperation.InterruptReason` property to get the
31486 /// interrupt reason if the download is interrupted.
31487 const GUID IID_ICoreWebView2StateChangedEventHandler = ICoreWebView2StateChangedEventHandler.iid;
31488 
31489 interface ICoreWebView2StateChangedEventHandler : IUnknown
31490 {
31491     static const GUID iid = { 0x81336594,0x7ede,0x4ba9,[ 0xbf,0x71,0xac,0xf0,0xa9,0x5b,0x58,0xdd ] };
31492   /// Provides the event args for the corresponding event. No event args exist
31493   /// and the `args` parameter is set to `null`.
31494   HRESULT Invoke(
31495       /+[in]+/ ICoreWebView2DownloadOperation sender, /+[in]+/ IUnknown args);
31496 }
31497 
31498 /// Represents a download operation. Gives access to the download's metadata
31499 /// and supports a user canceling, pausing, or resuming the download.
31500 const GUID IID_ICoreWebView2DownloadOperation = ICoreWebView2DownloadOperation.iid;
31501 
31502 interface ICoreWebView2DownloadOperation : IUnknown
31503 {
31504     static const GUID iid = { 0x3d6b6cf2,0xafe1,0x44c7,[ 0xa9,0x95,0xc6,0x51,0x17,0x71,0x43,0x36 ] };
31505   /// Add an event handler for the `BytesReceivedChanged` event.
31506   ///
31507   /// \snippet ScenarioCustomDownloadExperience.cpp BytesReceivedChanged
31508   HRESULT add_BytesReceivedChanged(
31509     /+[in]+/ ICoreWebView2BytesReceivedChangedEventHandler eventHandler,
31510     @("out") EventRegistrationToken* token);
31511 
31512   /// Remove an event handler previously added with `add_BytesReceivedChanged`.
31513   HRESULT remove_BytesReceivedChanged(
31514       in EventRegistrationToken token);
31515 
31516   /// Add an event handler for the `EstimatedEndTimeChanged` event.
31517   HRESULT add_EstimatedEndTimeChanged(
31518     /+[in]+/ ICoreWebView2EstimatedEndTimeChangedEventHandler eventHandler,
31519     @("out") EventRegistrationToken* token);
31520 
31521   /// Remove an event handler previously added with `add_EstimatedEndTimeChanged`.
31522   HRESULT remove_EstimatedEndTimeChanged(
31523       in EventRegistrationToken token);
31524 
31525   /// Add an event handler for the `StateChanged` event.
31526   ///
31527   /// \snippet ScenarioCustomDownloadExperience.cpp StateChanged
31528   HRESULT add_StateChanged(
31529     /+[in]+/ ICoreWebView2StateChangedEventHandler eventHandler,
31530     @("out") EventRegistrationToken* token);
31531 
31532   /// Remove an event handler previously added with `add_StateChanged`.
31533   HRESULT remove_StateChanged(
31534       in EventRegistrationToken token);
31535 
31536   /// The URI of the download.
31537   ///
31538   /// The caller must free the returned string with `CoTaskMemFree`.  See
31539   /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings).
31540   @(" propget")
31541 	HRESULT get_Uri(@("out, retval") LPWSTR* uri);
31542 
31543   /// The Content-Disposition header value from the download's HTTP response.
31544   ///
31545   /// The caller must free the returned string with `CoTaskMemFree`.  See
31546   /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings).
31547   @(" propget")
31548 	HRESULT get_ContentDisposition(@("out, retval") LPWSTR* contentDisposition);
31549 
31550   /// MIME type of the downloaded content.
31551   ///
31552   /// The caller must free the returned string with `CoTaskMemFree`.  See
31553   /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings).
31554   @(" propget")
31555 	HRESULT get_MimeType(@("out, retval") LPWSTR* mimeType);
31556 
31557   /// The expected size of the download in total number of bytes based on the
31558   /// HTTP Content-Length header. Returns -1 if the size is unknown.
31559   @(" propget")
31560 	HRESULT get_TotalBytesToReceive(@("out, retval") INT64* totalBytesToReceive);
31561 
31562   /// The number of bytes that have been written to the download file.
31563   @(" propget")
31564 	HRESULT get_BytesReceived(@("out, retval") INT64* bytesReceived);
31565 
31566   /// The estimated end time in [ISO 8601 Date and Time Format](https://www.iso.org/iso-8601-date-and-time-format.html).
31567   ///
31568   /// The caller must free the returned string with `CoTaskMemFree`.  See
31569   /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings).
31570   @(" propget")
31571 	HRESULT get_EstimatedEndTime(@("out, retval") LPWSTR* estimatedEndTime);
31572 
31573   /// The absolute path to the download file, including file name. Host can change
31574   /// this from `ICoreWebView2DownloadStartingEventArgs`.
31575   ///
31576   /// The caller must free the returned string with `CoTaskMemFree`.  See
31577   /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings).
31578   @(" propget")
31579 	HRESULT get_ResultFilePath(@("out, retval") LPWSTR* resultFilePath);
31580 
31581   /// The state of the download. A download can be in progress, interrupted, or
31582   /// completed. See `COREWEBVIEW2_DOWNLOAD_STATE` for descriptions of states.
31583   @(" propget")
31584 	HRESULT get_State(@("out, retval") COREWEBVIEW2_DOWNLOAD_STATE* downloadState);
31585 
31586   /// The reason why connection with file host was broken.
31587   @(" propget")
31588 	HRESULT get_InterruptReason(
31589       @("out, retval") COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON* interruptReason);
31590 
31591   /// Cancels the download. If canceled, the default download dialog shows
31592   /// that the download was canceled. Host should set the `Cancel` property from
31593   /// `ICoreWebView2SDownloadStartingEventArgs` if the download should be
31594   /// canceled without displaying the default download dialog.
31595   HRESULT Cancel();
31596 
31597   /// Pauses the download. If paused, the default download dialog shows that the
31598   /// download is paused. No effect if download is already paused. Pausing a
31599   /// download changes the state to `COREWEBVIEW2_DOWNLOAD_STATE_INTERRUPTED`
31600   /// with `InterruptReason` set to `COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_USER_PAUSED`.
31601   HRESULT Pause();
31602 
31603   /// Resumes a paused download. May also resume a download that was interrupted
31604   /// for another reason, if `CanResume` returns true. Resuming a download changes
31605   /// the state from `COREWEBVIEW2_DOWNLOAD_STATE_INTERRUPTED` to
31606   /// `COREWEBVIEW2_DOWNLOAD_STATE_IN_PROGRESS`.
31607   HRESULT Resume();
31608 
31609   /// Returns true if an interrupted download can be resumed. Downloads with
31610   /// the following interrupt reasons may automatically resume without you
31611   /// calling any methods:
31612   /// `COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_SERVER_NO_RANGE`,
31613   /// `COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_FILE_HASH_MISMATCH`,
31614   /// `COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_FILE_TOO_SHORT`.
31615   /// In these cases download progress may be restarted with `BytesReceived`
31616   /// reset to 0.
31617   @(" propget")
31618 	HRESULT get_CanResume(@("out, retval") BOOL* canResume);
31619 }
31620 
31621 /// A continuation of the `ICoreWebView2ProcessFailedEventArgs` interface.
31622 const GUID IID_ICoreWebView2ProcessFailedEventArgs2 = ICoreWebView2ProcessFailedEventArgs2.iid;
31623 
31624 interface ICoreWebView2ProcessFailedEventArgs2 : ICoreWebView2ProcessFailedEventArgs
31625 {
31626     static const GUID iid = { 0x4dab9422,0x46fa,0x4c3e,[ 0xa5,0xd2,0x41,0xd2,0x07,0x1d,0x36,0x80 ] };
31627 
31628   /// The reason for the process failure. Some of the reasons are only
31629   /// applicable to specific values of
31630   /// `ICoreWebView2ProcessFailedEventArgs::ProcessFailedKind`, and the
31631   /// following `ProcessFailedKind` values always return the indicated reason
31632   /// value:
31633   ///
31634   /// ProcessFailedKind | Reason
31635   /// ---|---
31636   /// COREWEBVIEW2_PROCESS_FAILED_KIND_BROWSER_PROCESS_EXITED | COREWEBVIEW2_PROCESS_FAILED_REASON_UNEXPECTED
31637   /// COREWEBVIEW2_PROCESS_FAILED_KIND_RENDER_PROCESS_UNRESPONSIVE | COREWEBVIEW2_PROCESS_FAILED_REASON_UNRESPONSIVE
31638   ///
31639   /// For other `ProcessFailedKind` values, the reason may be any of the reason
31640   /// values. To learn about what these values mean, see
31641   /// `COREWEBVIEW2_PROCESS_FAILED_REASON`.
31642   @(" propget")
31643 	HRESULT get_Reason(
31644       @("out, retval") COREWEBVIEW2_PROCESS_FAILED_REASON* reason);
31645 
31646   /// The exit code of the failing process, for telemetry purposes. The exit
31647   /// code is always `STILL_ACTIVE` (`259`) when `ProcessFailedKind` is
31648   /// `COREWEBVIEW2_PROCESS_FAILED_KIND_RENDER_PROCESS_UNRESPONSIVE`.
31649   @(" propget")
31650 	HRESULT get_ExitCode(
31651       @("out, retval") int* exitCode);
31652 
31653   /// Description of the process assigned by the WebView2 Runtime. This is a
31654   /// technical English term appropriate for logging or development purposes,
31655   /// and not localized for the end user. It applies to utility processes (for
31656   /// example, "Audio Service", "Video Capture") and plugin processes (for
31657   /// example, "Flash"). The returned `processDescription` is empty if the
31658   /// WebView2 Runtime did not assign a description to the process.
31659   ///
31660   /// The caller must free the returned string with `CoTaskMemFree`.  See
31661   /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings).
31662   @(" propget")
31663 	HRESULT get_ProcessDescription(
31664       @("out, retval") LPWSTR* processDescription);
31665 
31666   /// The collection of `FrameInfo`s for frames in the `ICoreWebView2` that were
31667   /// being rendered by the failed process. The content in these frames is
31668   /// replaced with an error page.
31669   /// This is only available when `ProcessFailedKind` is
31670   /// `COREWEBVIEW2_PROCESS_FAILED_KIND_FRAME_RENDER_PROCESS_EXITED`;
31671   /// `frames` is `null` for all other process failure kinds, including the case
31672   /// in which the failed process was the renderer for the main frame and
31673   /// subframes within it, for which the failure kind is
31674   /// `COREWEBVIEW2_PROCESS_FAILED_KIND_RENDER_PROCESS_EXITED`.
31675   @(" propget")
31676 	HRESULT get_FrameInfosForFailedProcess(
31677       @("out, retval") ICoreWebView2FrameInfoCollection * frames);
31678 }
31679 
31680 /// Collection of `FrameInfo`s (name and source). Used to list the affected
31681 /// frames' info when a frame-only render process failure occurs in the
31682 /// `ICoreWebView2`.
31683 const GUID IID_ICoreWebView2FrameInfoCollection = ICoreWebView2FrameInfoCollection.iid;
31684 
31685 interface ICoreWebView2FrameInfoCollection : IUnknown
31686 {
31687     static const GUID iid = { 0x8f834154,0xd38e,0x4d90,[ 0xaf,0xfb,0x68,0x00,0xa7,0x27,0x28,0x39 ] };
31688 
31689   /// Gets an iterator over the collection of `FrameInfo`s.
31690 
31691   HRESULT GetIterator(
31692       @("out, retval") ICoreWebView2FrameInfoCollectionIterator * iterator);
31693 }
31694 
31695 /// Iterator for a collection of `FrameInfo`s. For more info, see
31696 /// `ICoreWebView2ProcessFailedEventArgs2` and
31697 /// `ICoreWebView2FrameInfoCollection`.
31698 const GUID IID_ICoreWebView2FrameInfoCollectionIterator = ICoreWebView2FrameInfoCollectionIterator.iid;
31699 
31700 interface ICoreWebView2FrameInfoCollectionIterator : IUnknown
31701 {
31702     static const GUID iid = { 0x1bf89e2d,0x1b2b,0x4629,[ 0xb2,0x8f,0x05,0x09,0x9b,0x41,0xbb,0x03 ] };
31703 
31704   /// `TRUE` when the iterator has not run out of `FrameInfo`s.  If the
31705   /// collection over which the iterator is iterating is empty or if the
31706   /// iterator has gone past the end of the collection, then this is `FALSE`.
31707 
31708   @(" propget")
31709 	HRESULT get_HasCurrent(@("out, retval") BOOL* hasCurrent);
31710 
31711   /// Get the current `ICoreWebView2FrameInfo` of the iterator.
31712   /// Returns `HRESULT_FROM_WIN32(ERROR_INVALID_INDEX)` if HasCurrent is
31713   /// `FALSE`.
31714 
31715   HRESULT GetCurrent(@("out, retval") ICoreWebView2FrameInfo * frameInfo);
31716 
31717   /// Move the iterator to the next `FrameInfo` in the collection.
31718 
31719   HRESULT MoveNext(@("out, retval") BOOL* hasNext);
31720 }
31721 
31722 /// Provides a set of properties for a frame in the `ICoreWebView2`.
31723 const GUID IID_ICoreWebView2FrameInfo = ICoreWebView2FrameInfo.iid;
31724 
31725 interface ICoreWebView2FrameInfo : IUnknown
31726 {
31727     static const GUID iid = { 0xda86b8a1,0xbdf3,0x4f11,[ 0x99,0x55,0x52,0x8c,0xef,0xa5,0x97,0x27 ] };
31728 
31729   /// The name attribute of the frame, as in `<iframe name="frame-name" ...>`.
31730   /// The returned string is empty when the frame has no name attribute.
31731   ///
31732   /// The caller must free the returned string with `CoTaskMemFree`.  See
31733   /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings).
31734 
31735   @(" propget")
31736 	HRESULT get_Name(@("out, retval") LPWSTR* name);
31737 
31738   /// The URI of the document in the frame.
31739   ///
31740   /// The caller must free the returned string with `CoTaskMemFree`.  See
31741   /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings).
31742 
31743   @(" propget")
31744 	HRESULT get_Source(@("out, retval") LPWSTR* source);
31745 }
31746 
31747 /// A continuation of the ICoreWebView2FrameInfo interface that provides
31748 /// `ParentFrameInfo`, `FrameId` and `FrameKind` properties.
31749 const GUID IID_ICoreWebView2FrameInfo2 = ICoreWebView2FrameInfo2.iid;
31750 
31751 interface ICoreWebView2FrameInfo2 : ICoreWebView2FrameInfo
31752 {
31753     static const GUID iid = { 0x56f85cfa,0x72c4,0x11ee,[ 0xb9,0x62,0x02,0x42,0xac,0x12,0x00,0x02 ] };
31754   /// This parent frame's `FrameInfo`. `ParentFrameInfo` will only be
31755   /// populated when obtained via calling
31756   ///`CoreWebView2ProcessExtendedInfo.AssociatedFrameInfos`.
31757   /// `CoreWebView2FrameInfo` objects obtained via `CoreWebView2.ProcessFailed` will
31758   /// always have a `null` `ParentFrameInfo`. This property is also `null` for the
31759   /// main frame in the WebView2 which has no parent frame.
31760   /// Note that this `ParentFrameInfo` could be out of date as it's a snapshot.
31761   @(" propget")
31762 	HRESULT get_ParentFrameInfo(@("out, retval") ICoreWebView2FrameInfo * frameInfo);
31763   /// The unique identifier of the frame associated with the current `FrameInfo`.
31764   /// It's the same kind of ID as with the `FrameId` in `CoreWebView2` and via
31765   /// `CoreWebView2Frame`. `FrameId` will only be populated (non-zero) when obtained
31766   /// calling `CoreWebView2ProcessExtendedInfo.AssociatedFrameInfos`.
31767   /// `CoreWebView2FrameInfo` objects obtained via `CoreWebView2.ProcessFailed` will
31768   /// always have an invalid frame Id 0.
31769   /// Note that this `FrameId` could be out of date as it's a snapshot.
31770   /// If there's WebView2 created or destroyed or `FrameCreated/FrameDestroyed` events
31771   /// after the asynchronous call `CoreWebView2Environment.GetProcessExtendedInfos`
31772   /// starts, you may want to call asynchronous method again to get the updated `FrameInfo`s.
31773   @(" propget")
31774 	HRESULT get_FrameId(@("out, retval") UINT32* id);
31775   /// The frame kind of the frame. `FrameKind` will only be populated when
31776   /// obtained calling `CoreWebView2ProcessExtendedInfo.AssociatedFrameInfos`.
31777   /// `CoreWebView2FrameInfo` objects obtained via `CoreWebView2.ProcessFailed`
31778   /// will always have the default value `COREWEBVIEW2_FRAME_KIND_UNKNOWN`.
31779   /// Note that this `FrameKind` could be out of date as it's a snapshot.
31780   @(" propget")
31781 	HRESULT get_FrameKind(@("out, retval") COREWEBVIEW2_FRAME_KIND* kind);
31782 }
31783 
31784 /// Represents a Basic HTTP authentication response that contains a user name
31785 /// and a password as according to RFC7617 (https://tools.ietf.org/html/rfc7617)
31786 const GUID IID_ICoreWebView2BasicAuthenticationResponse = ICoreWebView2BasicAuthenticationResponse.iid;
31787 
31788 interface ICoreWebView2BasicAuthenticationResponse : IUnknown
31789 {
31790     static const GUID iid = { 0x07023f7d,0x2d77,0x4d67,[ 0x90,0x40,0x6e,0x7d,0x42,0x8c,0x6a,0x40 ] };
31791   /// User name provided for authentication.
31792   ///
31793   /// The caller must free the returned string with `CoTaskMemFree`.  See
31794   /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings).
31795   @(" propget")
31796 	HRESULT get_UserName(@("out, retval") LPWSTR* userName);
31797   /// Set user name property
31798   @(" propput")
31799 	HRESULT put_UserName(in LPCWSTR userName);
31800 
31801   /// Password provided for authentication.
31802   ///
31803   /// The caller must free the returned string with `CoTaskMemFree`.  See
31804   /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings).
31805   @(" propget")
31806 	HRESULT get_Password(@("out, retval") LPWSTR* password);
31807   /// Set password property
31808   @(" propput")
31809 	HRESULT put_Password(in LPCWSTR password);
31810 }
31811 
31812 /// Event args for the BasicAuthenticationRequested event. Will contain the
31813 /// request that led to the HTTP authorization challenge, the challenge
31814 /// and allows the host to provide authentication response or cancel the request.
31815 const GUID IID_ICoreWebView2BasicAuthenticationRequestedEventArgs = ICoreWebView2BasicAuthenticationRequestedEventArgs.iid;
31816 
31817 interface ICoreWebView2BasicAuthenticationRequestedEventArgs : IUnknown
31818 {
31819     static const GUID iid = { 0xef05516f,0xd897,0x4f9e,[ 0xb6,0x72,0xd8,0xe2,0x30,0x7a,0x3f,0xb0 ] };
31820   /// The URI that led to the authentication challenge. For proxy authentication
31821   /// requests, this will be the URI of the proxy server.
31822   ///
31823   /// The caller must free the returned string with `CoTaskMemFree`.  See
31824   /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings).
31825   @(" propget")
31826 	HRESULT get_Uri(@("out, retval") LPWSTR* value);
31827 
31828   /// The authentication challenge string
31829   ///
31830   /// The caller must free the returned string with `CoTaskMemFree`.  See
31831   /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings).
31832   @(" propget")
31833 	HRESULT get_Challenge(@("out, retval") LPWSTR* challenge);
31834 
31835   /// Response to the authentication request with credentials. This object will be populated by the app
31836   /// if the host would like to provide authentication credentials.
31837   @(" propget")
31838 	HRESULT get_Response(@("out, retval") ICoreWebView2BasicAuthenticationResponse * response);
31839 
31840   /// Cancel the authentication request. False by default.
31841   /// If set to true, Response will be ignored.
31842   @(" propget")
31843 	HRESULT get_Cancel(@("out, retval") BOOL* cancel);
31844   /// Set the Cancel property.
31845   @(" propput")
31846 	HRESULT put_Cancel(in BOOL cancel);
31847 
31848   /// Returns an `ICoreWebView2Deferral` object. Use this deferral to
31849   /// defer the decision to show the Basic Authentication dialog.
31850   HRESULT GetDeferral(@("out, retval") ICoreWebView2Deferral * deferral);
31851 }
31852 
31853 /// Implements the interface to receive `IsDocumentPlayingAudioChanged` events.  Use the
31854 /// IsDocumentPlayingAudio property to get the audio playing state.
31855 const GUID IID_ICoreWebView2IsDocumentPlayingAudioChangedEventHandler = ICoreWebView2IsDocumentPlayingAudioChangedEventHandler.iid;
31856 
31857 interface ICoreWebView2IsDocumentPlayingAudioChangedEventHandler : IUnknown
31858 {
31859     static const GUID iid = { 0x5DEF109A,0x2F4B,0x49FA,[ 0xB7,0xF6,0x11,0xC3,0x9E,0x51,0x33,0x28 ] };
31860   /// Provides the event args for the corresponding event.  No event args exist
31861   /// and the `args` parameter is set to `null`.
31862   HRESULT Invoke(/+[in]+/ ICoreWebView2 sender, /+[in]+/ IUnknown args);
31863 }
31864 
31865 /// Implements the interface to receive `IsMutedChanged` events.  Use the
31866 /// IsMuted property to get the mute state.
31867 const GUID IID_ICoreWebView2IsMutedChangedEventHandler = ICoreWebView2IsMutedChangedEventHandler.iid;
31868 
31869 interface ICoreWebView2IsMutedChangedEventHandler : IUnknown
31870 {
31871     static const GUID iid = { 0x57D90347,0xCD0E,0x4952,[ 0xA4,0xA2,0x74,0x83,0xA2,0x75,0x6F,0x08 ] };
31872   /// Provides the event args for the corresponding event.  No event args exist
31873   /// and the `args` parameter is set to `null`.
31874   HRESULT Invoke(/+[in]+/ ICoreWebView2 sender, /+[in]+/ IUnknown args);
31875 }
31876 
31877 /// This is an extension of the ICoreWebView2Frame interface that supports PermissionRequested
31878 const GUID IID_ICoreWebView2Frame3 = ICoreWebView2Frame3.iid;
31879 
31880 interface ICoreWebView2Frame3 : ICoreWebView2Frame2
31881 {
31882     static const GUID iid = { 0xb50d82cc,0xcc28,0x481d,[ 0x96,0x14,0xcb,0x04,0x88,0x95,0xe6,0xa0 ] };
31883   /// Add an event handler for the `PermissionRequested` event.
31884   /// `PermissionRequested` is raised when content in an iframe any of its
31885   /// descendant iframes requests permission to privileged resources.
31886   ///
31887   /// This relates to the `PermissionRequested` event on the `CoreWebView2`.
31888   /// Both these events will be raised in the case of an iframe requesting
31889   /// permission. The `CoreWebView2Frame`'s event handlers will be invoked
31890   /// before the event handlers on the `CoreWebView2`. If the `Handled` property
31891   /// of the `PermissionRequestedEventArgs` is set to TRUE within the
31892   /// `CoreWebView2Frame` event handler, then the event will not be
31893   /// raised on the `CoreWebView2`, and it's event handlers will not be invoked.
31894   ///
31895   /// In the case of nested iframes, the 'PermissionRequested' event will
31896   /// be raised from the top level iframe.
31897   ///
31898   /// If a deferral is not taken on the event args, the subsequent scripts are
31899   /// blocked until the event handler returns.  If a deferral is taken, the
31900   /// scripts are blocked until the deferral is completed.
31901   ///
31902   /// \snippet ScenarioIFrameDevicePermission.cpp PermissionRequested0
31903   /// \snippet ScenarioIFrameDevicePermission.cpp PermissionRequested1
31904   HRESULT add_PermissionRequested(
31905       /+[in]+/ ICoreWebView2FramePermissionRequestedEventHandler handler,
31906       @("out") EventRegistrationToken* token);
31907 
31908   /// Remove an event handler previously added with `add_PermissionRequested`
31909   HRESULT remove_PermissionRequested(
31910       in EventRegistrationToken token);
31911 }
31912 
31913 /// This is an extension of the ICoreWebView2Frame interface that supports shared buffer based on file mapping.
31914 const GUID IID_ICoreWebView2Frame4 = ICoreWebView2Frame4.iid;
31915 
31916 interface ICoreWebView2Frame4 : ICoreWebView2Frame3
31917 {
31918     static const GUID iid = { 0x188782DC,0x92AA,0x4732,[ 0xAB,0x3C,0xFC,0xC5,0x9F,0x6F,0x68,0xB9 ] };
31919   /// Share a shared buffer object with script of the iframe in the WebView.
31920   /// The script will receive a `sharedbufferreceived` event from chrome.webview.
31921   /// The event arg for that event will have the following methods and properties:
31922   ///   `getBuffer()`: return an ArrayBuffer object with the backing content from the shared buffer.
31923   ///   `additionalData`: an object as the result of parsing `additionalDataAsJson` as JSON string.
31924   ///           This property will be `undefined` if `additionalDataAsJson` is nullptr or empty string.
31925   ///   `source`: with a value set as `chrome.webview` object.
31926   /// If a string is provided as `additionalDataAsJson` but it is not a valid JSON string,
31927   /// the API will fail with `E_INVALIDARG`.
31928   /// If `access` is COREWEBVIEW2_SHARED_BUFFER_ACCESS_READ_ONLY, the script will only have read access to the buffer.
31929   /// If the script tries to modify the content in a read only buffer, it will cause an access
31930   /// violation in WebView renderer process and crash the renderer process.
31931   /// If the shared buffer is already closed, the API will fail with `RO_E_CLOSED`.
31932   ///
31933   /// The script code should call `chrome.webview.releaseBuffer` with
31934   /// the shared buffer as the parameter to release underlying resources as soon
31935   /// as it does not need access to the shared buffer any more.
31936   ///
31937   /// The application can post the same shared buffer object to multiple web pages or iframes, or
31938   /// post to the same web page or iframe multiple times. Each `PostSharedBufferToScript` will
31939   /// create a separate ArrayBuffer object with its own view of the memory and is separately
31940   /// released. The underlying shared memory will be released when all the views are released.
31941   ///
31942   /// For example, if we want to send data to script for one time read only consumption.
31943   ///
31944   /// \snippet ScenarioSharedBuffer.cpp OneTimeShareBuffer
31945   ///
31946   /// In the HTML document,
31947   ///
31948   /// \snippet assets\ScenarioSharedBuffer.html ShareBufferScriptCode_1
31949   ///
31950   /// \snippet assets\ScenarioSharedBuffer.html ShareBufferScriptCode_2
31951   ///
31952   /// Sharing a buffer to script has security risk. You should only share buffer with trusted site.
31953   /// If a buffer is shared to a untrusted site, possible sensitive information could be leaked.
31954   /// If a buffer is shared as modifiable by the script and the script modifies it in an unexpected way,
31955   /// it could result in corrupted data that might even crash the application.
31956   HRESULT PostSharedBufferToScript(
31957     /+[in]+/ ICoreWebView2SharedBuffer sharedBuffer,
31958     in COREWEBVIEW2_SHARED_BUFFER_ACCESS access,
31959     in LPCWSTR additionalDataAsJson);
31960 }
31961 
31962 /// This is an extension of the ICoreWebView2Frame interface that provides the `FrameId` property.
31963 const GUID IID_ICoreWebView2Frame5 = ICoreWebView2Frame5.iid;
31964 
31965 interface ICoreWebView2Frame5 : ICoreWebView2Frame4
31966 {
31967     static const GUID iid = { 0x99d199c4,0x7305,0x11ee,[ 0xb9,0x62,0x02,0x42,0xac,0x12,0x00,0x02 ] };
31968   /// The unique identifier of the current frame. It's the same kind of ID as
31969   /// with the `FrameId` in `CoreWebView2` and via `CoreWebView2FrameInfo`.
31970   @(" propget")
31971 	HRESULT get_FrameId(@("out, retval") UINT32* id);
31972 }
31973 
31974 /// Receives `PermissionRequested` events for iframes.
31975 const GUID IID_ICoreWebView2FramePermissionRequestedEventHandler = ICoreWebView2FramePermissionRequestedEventHandler.iid;
31976 
31977 interface ICoreWebView2FramePermissionRequestedEventHandler : IUnknown
31978 {
31979     static const GUID iid = { 0x845d0edd,0x8bd8,0x429b,[ 0x99,0x15,0x48,0x21,0x78,0x9f,0x23,0xe9 ] };
31980   /// Provides the event args for the corresponding event.
31981   HRESULT Invoke(
31982       /+[in]+/ ICoreWebView2Frame sender,
31983       /+[in]+/ ICoreWebView2PermissionRequestedEventArgs2 args);
31984 }
31985 
31986 /// This is a continuation of the `ICoreWebView2PermissionRequestedEventArgs` interface.
31987 const GUID IID_ICoreWebView2PermissionRequestedEventArgs2 = ICoreWebView2PermissionRequestedEventArgs2.iid;
31988 
31989 interface ICoreWebView2PermissionRequestedEventArgs2 : ICoreWebView2PermissionRequestedEventArgs
31990 {
31991     static const GUID iid = { 0x74d7127f,0x9de6,0x4200,[ 0x87,0x34,0x42,0xd6,0xfb,0x4f,0xf7,0x41 ] };
31992   /// By default, both the `PermissionRequested` event handlers on the
31993   /// `CoreWebView2Frame` and the `CoreWebView2` will be invoked, with the
31994   /// `CoreWebView2Frame` event handlers invoked first. The host may
31995   /// set this flag to `TRUE` within the `CoreWebView2Frame` event handlers
31996   /// to prevent the remaining `CoreWebView2` event handlers from being invoked.
31997   ///
31998   /// If a deferral is taken on the event args, then you must synchronously
31999   /// set `Handled` to TRUE prior to taking your deferral to prevent the
32000   /// `CoreWebView2`s event handlers from being invoked.
32001   @(" propget")
32002 	HRESULT get_Handled(@("out, retval") BOOL* handled);
32003 
32004   /// Sets the `Handled` property.
32005   @(" propput")
32006 	HRESULT put_Handled(in BOOL handled);
32007 }
32008 
32009 /// Represents a context menu item of a context menu displayed by WebView.
32010 const GUID IID_ICoreWebView2ContextMenuItem = ICoreWebView2ContextMenuItem.iid;
32011 
32012 interface ICoreWebView2ContextMenuItem : IUnknown
32013 {
32014     static const GUID iid = { 0x7aed49e3,0xa93f,0x497a,[ 0x81,0x1c,0x74,0x9c,0x6b,0x6b,0x6c,0x65 ] };
32015   /// Gets the unlocalized name for the `ContextMenuItem`. Use this to
32016   /// distinguish between context menu item types. This will be the English
32017   /// label of the menu item in lower camel case. For example, the "Save as"
32018   /// menu item will be "saveAs". Extension menu items will be "extension",
32019   /// custom menu items will be "custom" and spellcheck items will be
32020   /// "spellCheck".
32021   /// Some example context menu item names are:
32022   /// - "saveAs"
32023   /// - "copyImage"
32024   /// - "openLinkInNewWindow"
32025   /// - "cut"
32026   /// - "copy"
32027   /// - "paste"
32028   ///
32029   /// The caller must free the returned string with `CoTaskMemFree`.  See
32030   /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings).
32031   @(" propget")
32032 	HRESULT get_Name(@("out, retval") LPWSTR* value);
32033 
32034   /// Gets the localized label for the `ContextMenuItem`. Will contain an
32035   /// ampersand for characters to be used as keyboard accelerator.
32036   ///
32037   /// The caller must free the returned string with `CoTaskMemFree`.  See
32038   /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings).
32039   @(" propget")
32040 	HRESULT get_Label(@("out, retval") LPWSTR* value);
32041 
32042   /// Gets the Command ID for the `ContextMenuItem`. Use this to report the
32043   /// `SelectedCommandId` in `ContextMenuRequested` event.
32044   @(" propget")
32045 	HRESULT get_CommandId(@("out, retval") INT32* value);
32046 
32047   /// Gets the localized keyboard shortcut for this ContextMenuItem. It will be
32048   /// the empty string if there is no keyboard shortcut. This is text intended
32049   /// to be displayed to the end user to show the keyboard shortcut. For example
32050   /// this property is Ctrl+Shift+I for the "Inspect" `ContextMenuItem`.
32051   ///
32052   /// The caller must free the returned string with `CoTaskMemFree`.  See
32053   /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings).
32054   @(" propget")
32055 	HRESULT get_ShortcutKeyDescription(@("out, retval") LPWSTR* value);
32056 
32057   /// Gets the Icon for the `ContextMenuItem` in PNG, Bitmap or SVG formats in the form of an IStream.
32058   /// Stream will be rewound to the start of the image data.
32059   @(" propget")
32060 	HRESULT get_Icon(@("out, retval") IStream** value);
32061 
32062   /// Gets the `ContextMenuItem` kind.
32063   @(" propget")
32064 	HRESULT get_Kind(@("out, retval") COREWEBVIEW2_CONTEXT_MENU_ITEM_KIND* value);
32065 
32066   /// Sets the enabled property of the `ContextMenuItem`. Must only be used in the case of a
32067   /// custom context menu item. The default value for this is `TRUE`.
32068   @(" propput")
32069 	HRESULT put_IsEnabled(in BOOL value);
32070 
32071   /// Gets the enabled property of the `ContextMenuItem`.
32072   @(" propget")
32073 	HRESULT get_IsEnabled(@("out, retval") BOOL* value);
32074 
32075   /// Sets the checked property of the `ContextMenuItem`. Must only be used for custom context
32076   /// menu items that are of kind Check box or Radio.
32077   @(" propput")
32078 	HRESULT put_IsChecked(in BOOL value);
32079 
32080   /// Gets the checked property of the `ContextMenuItem`, used if the kind is Check box or Radio.
32081   @(" propget")
32082 	HRESULT get_IsChecked(@("out, retval") BOOL* value);
32083 
32084   /// Gets the list of children menu items through a `ContextMenuItemCollection`
32085   /// if the kind is Submenu. If the kind is not submenu, will return null.
32086   @(" propget")
32087 	HRESULT get_Children(@("out, retval") ICoreWebView2ContextMenuItemCollection * value);
32088 
32089   /// Add an event handler for the `CustomItemSelected` event.
32090   /// `CustomItemSelected` event is raised when the user selects this `ContextMenuItem`.
32091   /// Will only be raised for end developer created context menu items
32092   HRESULT add_CustomItemSelected(
32093       /+[in]+/ ICoreWebView2CustomItemSelectedEventHandler eventHandler,
32094       @("out") EventRegistrationToken* token);
32095 
32096   /// Remove an event handler previously added with `add_CustomItemSelected`.
32097   HRESULT remove_CustomItemSelected(
32098       in EventRegistrationToken token);
32099 }
32100 
32101 /// Represents a collection of `ContextMenuItem` objects. Used to get, remove and add
32102 /// `ContextMenuItem` objects at the specified index.
32103 const GUID IID_ICoreWebView2ContextMenuItemCollection = ICoreWebView2ContextMenuItemCollection.iid;
32104 
32105 interface ICoreWebView2ContextMenuItemCollection : IUnknown
32106 {
32107     static const GUID iid = { 0xf562a2f5,0xc415,0x45cf,[ 0xb9,0x09,0xd4,0xb7,0xc1,0xe2,0x76,0xd3 ] };
32108   /// Gets the number of `ContextMenuItem` objects contained in the `ContextMenuItemCollection`.
32109   @(" propget")
32110 	HRESULT get_Count(@("out, retval") UINT32* value);
32111 
32112   /// Gets the `ContextMenuItem` at the specified index.
32113   HRESULT GetValueAtIndex(in UINT32 index,
32114       @("out, retval") ICoreWebView2ContextMenuItem * value);
32115 
32116   /// Removes the `ContextMenuItem` at the specified index.
32117   HRESULT RemoveValueAtIndex(in UINT32 index);
32118 
32119   /// Inserts the `ContextMenuItem` at the specified index.
32120   HRESULT InsertValueAtIndex(
32121       in UINT32 index,
32122         /+[in]+/ ICoreWebView2ContextMenuItem value);
32123 }
32124 
32125 /// Receives `ContextMenuRequested` events.
32126 const GUID IID_ICoreWebView2ContextMenuRequestedEventHandler = ICoreWebView2ContextMenuRequestedEventHandler.iid;
32127 
32128 interface ICoreWebView2ContextMenuRequestedEventHandler : IUnknown
32129 {
32130     static const GUID iid = { 0x04d3fe1d,0xab87,0x42fb,[ 0xa8,0x98,0xda,0x24,0x1d,0x35,0xb6,0x3c ] };
32131   /// Called to provide the event args when a context menu is requested on a
32132   /// WebView element.
32133   HRESULT Invoke(
32134       /+[in]+/ ICoreWebView2 sender,
32135       /+[in]+/ ICoreWebView2ContextMenuRequestedEventArgs args);
32136 }
32137 
32138 /// Raised to notify the host that the end user selected a custom
32139 /// `ContextMenuItem`. `CustomItemSelected` event is raised on the specific
32140 /// `ContextMenuItem` that the end user selected.
32141 const GUID IID_ICoreWebView2CustomItemSelectedEventHandler = ICoreWebView2CustomItemSelectedEventHandler.iid;
32142 
32143 interface ICoreWebView2CustomItemSelectedEventHandler : IUnknown
32144 {
32145     static const GUID iid = { 0x49e1d0bc,0xfe9e,0x4481,[ 0xb7,0xc2,0x32,0x32,0x4a,0xa2,0x19,0x98 ] };
32146   /// Provides the event args for the corresponding event. No event args exist
32147   /// and the `args` parameter is set to `null`.
32148   HRESULT Invoke(
32149       /+[in]+/ ICoreWebView2ContextMenuItem sender, /+[in]+/ IUnknown args);
32150 }
32151 
32152 /// Represents the information regarding the context menu target.
32153 /// Includes the context selected and the appropriate data used for the actions of a context menu.
32154 const GUID IID_ICoreWebView2ContextMenuTarget = ICoreWebView2ContextMenuTarget.iid;
32155 
32156 interface ICoreWebView2ContextMenuTarget : IUnknown
32157 {
32158     static const GUID iid = { 0xb8611d99,0xeed6,0x4f3f,[ 0x90,0x2c,0xa1,0x98,0x50,0x2a,0xd4,0x72 ] };
32159   /// Gets the kind of context that the user selected.
32160   @(" propget")
32161 	HRESULT get_Kind(@("out, retval") COREWEBVIEW2_CONTEXT_MENU_TARGET_KIND* value);
32162 
32163   /// Returns TRUE if the context menu is requested on an editable component.
32164   @(" propget")
32165 	HRESULT get_IsEditable(@("out, retval") BOOL* value);
32166 
32167   /// Returns TRUE if the context menu was requested on the main frame and
32168   /// FALSE if invoked on another frame.
32169   @(" propget")
32170 	HRESULT get_IsRequestedForMainFrame(@("out, retval") BOOL* value);
32171 
32172   /// Gets the uri of the page.
32173   ///
32174   /// The caller must free the returned string with `CoTaskMemFree`.  See
32175   /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings).
32176   @(" propget")
32177 	HRESULT get_PageUri(@("out, retval") LPWSTR* value);
32178 
32179   /// Gets the uri of the frame. Will match the PageUri if `IsRequestedForMainFrame` is TRUE.
32180   ///
32181   /// The caller must free the returned string with `CoTaskMemFree`.  See
32182   /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings).
32183   @(" propget")
32184 	HRESULT get_FrameUri(@("out, retval") LPWSTR* value);
32185 
32186   /// Returns TRUE if the context menu is requested on HTML containing an anchor tag.
32187   @(" propget")
32188 	HRESULT get_HasLinkUri(@("out, retval") BOOL* value);
32189 
32190   /// Gets the uri of the link (if `HasLinkUri` is TRUE, null otherwise).
32191   ///
32192   /// The caller must free the returned string with `CoTaskMemFree`.  See
32193   /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings).
32194   @(" propget")
32195 	HRESULT get_LinkUri(@("out, retval") LPWSTR* value);
32196 
32197   /// Returns TRUE if the context menu is requested on text element that contains an anchor tag.
32198   @(" propget")
32199 	HRESULT get_HasLinkText(@("out, retval") BOOL* value);
32200 
32201   /// Gets the text of the link (if `HasLinkText` is TRUE, null otherwise).
32202   ///
32203   /// The caller must free the returned string with `CoTaskMemFree`.  See
32204   /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings).
32205   @(" propget")
32206 	HRESULT get_LinkText(@("out, retval") LPWSTR * value);
32207 
32208   /// Returns TRUE if the context menu is requested on HTML containing a source uri.
32209   @(" propget")
32210 	HRESULT get_HasSourceUri(@("out, retval") BOOL* value);
32211 
32212   /// Gets the active source uri of element (if `HasSourceUri` is TRUE, null otherwise).
32213   ///
32214   /// The caller must free the returned string with `CoTaskMemFree`.  See
32215   /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings).
32216   @(" propget")
32217 	HRESULT get_SourceUri(@("out, retval") LPWSTR* value);
32218 
32219   /// Returns TRUE if the context menu is requested on a selection.
32220   @(" propget")
32221 	HRESULT get_HasSelection(@("out, retval") BOOL* value);
32222 
32223   /// Gets the selected text (if `HasSelection` is TRUE, null otherwise).
32224   ///
32225   /// The caller must free the returned string with `CoTaskMemFree`.  See
32226   /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings).
32227   @(" propget")
32228 	HRESULT get_SelectionText(@("out, retval") LPWSTR* value);
32229 }
32230 
32231 /// Event args for the `ContextMenuRequested` event. Will contain the selection information
32232 /// and a collection of all of the default context menu items that the WebView
32233 /// would show. Allows the app to draw its own context menu or add/remove
32234 /// from the default context menu.
32235 const GUID IID_ICoreWebView2ContextMenuRequestedEventArgs = ICoreWebView2ContextMenuRequestedEventArgs.iid;
32236 
32237 interface ICoreWebView2ContextMenuRequestedEventArgs : IUnknown
32238 {
32239     static const GUID iid = { 0xa1d309ee,0xc03f,0x11eb,[ 0x85,0x29,0x02,0x42,0xac,0x13,0x00,0x03 ] };
32240   /// Gets the collection of `ContextMenuItem` objects.
32241   /// See `ICoreWebView2ContextMenuItemCollection` for more details.
32242   @(" propget")
32243 	HRESULT get_MenuItems(@("out, retval") ICoreWebView2ContextMenuItemCollection * value);
32244 
32245   /// Gets the target information associated with the requested context menu.
32246   /// See `ICoreWebView2ContextMenuTarget` for more details.
32247   @(" propget")
32248 	HRESULT get_ContextMenuTarget(@("out, retval") ICoreWebView2ContextMenuTarget * value);
32249 
32250   /// Gets the coordinates where the context menu request occurred in relation to the upper
32251   /// left corner of the WebView bounds.
32252   @(" propget")
32253 	HRESULT get_Location(@("out, retval") POINT* value);
32254 
32255   /// Sets the selected context menu item's command ID. When this is set,
32256   /// WebView will execute the selected command. This
32257   /// value should always be obtained via the selected `ContextMenuItem`'s `CommandId` property.
32258   /// The default value is -1 which means that no selection occurred. The app can
32259   /// also report the selected command ID for a custom context menu item, which
32260   /// will cause the `CustomItemSelected` event to be fired for the custom item, however
32261   /// while command IDs for each custom context menu item is unique
32262   /// during a ContextMenuRequested event, CoreWebView2 may reassign command ID
32263   /// values of deleted custom ContextMenuItems to new objects and the command
32264   /// ID assigned to the same custom item can be different between each app runtime.
32265   @(" propput")
32266 	HRESULT put_SelectedCommandId(in INT32 value);
32267 
32268   /// Gets the selected CommandId.
32269   @(" propget")
32270 	HRESULT get_SelectedCommandId(@("out, retval") INT32* value);
32271 
32272   /// Sets whether the `ContextMenuRequested` event is handled by host after
32273   /// the event handler completes or if there is a deferral then after the deferral is completed.
32274   /// If `Handled` is set to TRUE then WebView will not display a context menu and will instead
32275   /// use the `SelectedCommandId` property to indicate which, if any, context menu item command to invoke.
32276   /// If after the event handler or deferral completes `Handled` is set to FALSE then WebView
32277   /// will display a context menu based on the contents of the `MenuItems` property.
32278   /// The default value is FALSE.
32279   @(" propput")
32280 	HRESULT put_Handled(in BOOL value);
32281 
32282   /// Gets whether the `ContextMenuRequested` event is handled by host.
32283   @(" propget")
32284 	HRESULT get_Handled(@("out, retval") BOOL* value);
32285 
32286   /// Returns an `ICoreWebView2Deferral` object. Use this operation to
32287   /// complete the event when the custom context menu is closed.
32288   HRESULT GetDeferral(@("out, retval") ICoreWebView2Deferral * deferral);
32289 }
32290 
32291 /// This interface is used to manage profile options that created by 'CreateCoreWebView2ControllerOptions'.
32292 ///
32293 /// \snippet AppWindow.cpp CreateControllerWithOptions
32294 const GUID IID_ICoreWebView2ControllerOptions = ICoreWebView2ControllerOptions.iid;
32295 
32296 interface ICoreWebView2ControllerOptions : IUnknown
32297 {
32298     static const GUID iid = { 0x12aae616,0x8ccb,0x44ec,[ 0xbc,0xb3,0xeb,0x18,0x31,0x88,0x16,0x35 ] };
32299   /// `ProfileName` property is to specify a profile name, which is only allowed to contain
32300   /// the following ASCII characters. It has a maximum length of 64 characters excluding the null-terminator.
32301   /// It is ASCII case insensitive.
32302   ///
32303   /// * alphabet characters: a-z and A-Z
32304   /// * digit characters: 0-9
32305   /// * and '#', '@', '$', '(', ')', '+', '-', '_', '~', '.', ' ' (space).
32306   ///
32307   /// Note: the text must not end with a period '.' or ' ' (space). And, although upper-case letters are
32308   /// allowed, they're treated just as lower-case counterparts because the profile name will be mapped to
32309   /// the real profile directory path on disk and Windows file system handles path names in a case-insensitive way.
32310   ///
32311   /// The caller must free the returned string with `CoTaskMemFree`.  See
32312   /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings).
32313   @(" propget")
32314 	HRESULT get_ProfileName(@("out, retval") LPWSTR* value);
32315   /// Sets the `ProfileName` property.
32316   @(" propput")
32317 	HRESULT put_ProfileName(in LPCWSTR value);
32318 
32319   /// `IsInPrivateModeEnabled` property is to enable/disable InPrivate mode.
32320   @(" propget")
32321 	HRESULT get_IsInPrivateModeEnabled(@("out, retval") BOOL* value);
32322   /// Sets the `IsInPrivateModeEnabled` property.
32323   @(" propput")
32324 	HRESULT put_IsInPrivateModeEnabled(in BOOL value);
32325 }
32326 
32327 /// Provides a set of properties to configure a Profile object.
32328 ///
32329 /// \snippet AppWindow.cpp OnCreateCoreWebView2ControllerCompleted
32330 const GUID IID_ICoreWebView2Profile = ICoreWebView2Profile.iid;
32331 
32332 interface ICoreWebView2Profile : IUnknown
32333 {
32334     static const GUID iid = { 0x79110ad3,0xcd5d,0x4373,[ 0x8b,0xc3,0xc6,0x06,0x58,0xf1,0x7a,0x5f ] };
32335   /// Name of the profile.
32336   ///
32337   /// The caller must free the returned string with `CoTaskMemFree`.  See
32338   /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings).
32339   @(" propget")
32340 	HRESULT get_ProfileName(@("out, retval") LPWSTR* value);
32341 
32342   /// InPrivate mode is enabled or not.
32343   @(" propget")
32344 	HRESULT get_IsInPrivateModeEnabled(@("out, retval") BOOL* value);
32345 
32346   /// Full path of the profile directory.
32347   ///
32348   /// The caller must free the returned string with `CoTaskMemFree`.  See
32349   /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings).
32350   @(" propget")
32351 	HRESULT get_ProfilePath(@("out, retval") LPWSTR* value);
32352 
32353   /// Gets the `DefaultDownloadFolderPath` property. The default value is the
32354   /// system default download folder path for the user.
32355   ///
32356   /// The caller must free the returned string with `CoTaskMemFree`.  See
32357   /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings).
32358   @(" propget")
32359 	HRESULT get_DefaultDownloadFolderPath(@("out, retval") LPWSTR* value);
32360 
32361   /// Sets the `DefaultDownloadFolderPath` property. The default download folder
32362   /// path is persisted in the user data folder across sessions. The value
32363   /// should be an absolute path to a folder that the user and application can
32364   /// write to. Returns `E_INVALIDARG` if the value is invalid, and the default
32365   /// download folder path is not changed. Otherwise the path is changed
32366   /// immediately. If the directory does not yet exist, it is created at the
32367   /// time of the next download. If the host application does not have
32368   /// permission to create the directory, then the user is prompted to provide a
32369   /// new path through the Save As dialog. The user can override the default
32370   /// download folder path for a given download by choosing a different path in
32371   /// the Save As dialog.
32372   @(" propput")
32373 	HRESULT put_DefaultDownloadFolderPath(in LPCWSTR value);
32374 
32375   /// The PreferredColorScheme property sets the overall color scheme of the
32376   /// WebView2s associated with this profile. This sets the color scheme for
32377   /// WebView2 UI like dialogs, prompts, and context menus by setting the
32378   /// media feature `prefers-color-scheme` for websites to respond to.
32379   ///
32380   /// The default value for this is COREWEBVIEW2_PREFERRED_COLOR_AUTO,
32381   /// which will follow whatever theme the OS is currently set to.
32382   ///
32383   /// \snippet ViewComponent.cpp SetPreferredColorScheme
32384   /// Returns the value of the `PreferredColorScheme` property.
32385   @(" propget")
32386 	HRESULT get_PreferredColorScheme(
32387     @("out, retval") COREWEBVIEW2_PREFERRED_COLOR_SCHEME* value);
32388 
32389   /// Sets the `PreferredColorScheme` property.
32390   @(" propput")
32391 	HRESULT put_PreferredColorScheme(
32392     in COREWEBVIEW2_PREFERRED_COLOR_SCHEME value);
32393 }
32394 
32395 /// Provides access to the certificate metadata.
32396 const GUID IID_ICoreWebView2Certificate = ICoreWebView2Certificate.iid;
32397 
32398 interface ICoreWebView2Certificate : IUnknown
32399 {
32400     static const GUID iid = { 0xC5FB2FCE,0x1CAC,0x4AEE,[ 0x9C,0x79,0x5E,0xD0,0x36,0x2E,0xAA,0xE0 ] };
32401   /// Subject of the certificate.
32402   ///
32403   /// The caller must free the returned string with `CoTaskMemFree`. See
32404   /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings).
32405   @(" propget")
32406 	HRESULT get_Subject(@("out, retval") LPWSTR* value);
32407   /// Name of the certificate authority that issued the certificate.
32408   ///
32409   /// The caller must free the returned string with `CoTaskMemFree`. See
32410   /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings).
32411   @(" propget")
32412 	HRESULT get_Issuer(@("out, retval") LPWSTR* value);
32413   /// The valid start date and time for the certificate as the number of seconds since
32414   /// the UNIX epoch.
32415   @(" propget")
32416 	HRESULT get_ValidFrom(@("out, retval") double* value);
32417   /// The valid expiration date and time for the certificate as the number of seconds since
32418   /// the UNIX epoch.
32419   @(" propget")
32420 	HRESULT get_ValidTo(@("out, retval") double* value);
32421   /// Base64 encoding of DER encoded serial number of the certificate.
32422   /// Read more about DER at [RFC 7468 DER]
32423   /// (https://tools.ietf.org/html/rfc7468#appendix-B).
32424   ///
32425   /// The caller must free the returned string with `CoTaskMemFree`. See
32426   /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings).
32427   @(" propget")
32428 	HRESULT get_DerEncodedSerialNumber(@("out, retval") LPWSTR* value);
32429   /// Display name for a certificate.
32430   ///
32431   /// The caller must free the returned string with `CoTaskMemFree`. See
32432   /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings)
32433   @(" propget")
32434 	HRESULT get_DisplayName(@("out, retval") LPWSTR* value);
32435   /// PEM encoded data for the certificate.
32436   /// Returns Base64 encoding of DER encoded certificate.
32437   /// Read more about PEM at [RFC 1421 Privacy Enhanced Mail]
32438   /// (https://tools.ietf.org/html/rfc1421).
32439   ///
32440   /// The caller must free the returned string with `CoTaskMemFree`. See
32441   /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings)
32442   HRESULT ToPemEncoding(@("out, retval") LPWSTR* pemEncodedData);
32443   /// Collection of PEM encoded certificate issuer chain.
32444   /// In this collection first element is the current certificate followed by
32445   /// intermediate1, intermediate2...intermediateN-1. Root certificate is the
32446   /// last element in collection.
32447   @(" propget")
32448 	HRESULT get_PemEncodedIssuerCertificateChain(@("out, retval")
32449       ICoreWebView2StringCollection * value);
32450 }
32451 
32452 /// An event handler for the `ServerCertificateErrorDetected` event.
32453 const GUID IID_ICoreWebView2ServerCertificateErrorDetectedEventHandler = ICoreWebView2ServerCertificateErrorDetectedEventHandler.iid;
32454 
32455 interface ICoreWebView2ServerCertificateErrorDetectedEventHandler : IUnknown
32456 {
32457     static const GUID iid = { 0x969B3A26,0xD85E,0x4795,[ 0x81,0x99,0xFE,0xF5,0x73,0x44,0xDA,0x22 ] };
32458   /// Provides the event args for the corresponding event.
32459   HRESULT Invoke(/+[in]+/ ICoreWebView2 sender,
32460       /+[in]+/ ICoreWebView2ServerCertificateErrorDetectedEventArgs
32461                      args);
32462 }
32463 
32464 /// Event args for the `ServerCertificateErrorDetected` event.
32465 const GUID IID_ICoreWebView2ServerCertificateErrorDetectedEventArgs = ICoreWebView2ServerCertificateErrorDetectedEventArgs.iid;
32466 
32467 interface ICoreWebView2ServerCertificateErrorDetectedEventArgs : IUnknown
32468 {
32469     static const GUID iid = { 0x012193ED,0x7C13,0x48FF,[ 0x96,0x9D,0xA8,0x4C,0x1F,0x43,0x2A,0x14 ] };
32470   /// The TLS error code for the invalid certificate.
32471   @(" propget")
32472 	HRESULT get_ErrorStatus(@("out, retval") COREWEBVIEW2_WEB_ERROR_STATUS* value);
32473 
32474   /// URI associated with the request for the invalid certificate.
32475   ///
32476   /// The caller must free the returned string with `CoTaskMemFree`.  See
32477   /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings).
32478   @(" propget")
32479 	HRESULT get_RequestUri(@("out, retval") LPWSTR* value);
32480 
32481   /// Returns the server certificate.
32482   @(" propget")
32483 	HRESULT get_ServerCertificate(@("out, retval") ICoreWebView2Certificate * value);
32484 
32485   /// The action of the server certificate error detection.
32486   /// The default value is `COREWEBVIEW2_SERVER_CERTIFICATE_ERROR_ACTION_DEFAULT`.
32487   @(" propget")
32488 	HRESULT get_Action(@("out, retval") COREWEBVIEW2_SERVER_CERTIFICATE_ERROR_ACTION* value);
32489 
32490   /// Sets the `Action` property.
32491   @(" propput")
32492 	HRESULT put_Action(in COREWEBVIEW2_SERVER_CERTIFICATE_ERROR_ACTION value);
32493 
32494   /// Returns an `ICoreWebView2Deferral` object. Use this operation to
32495   /// complete the event at a later time.
32496   HRESULT GetDeferral(@("out, retval") ICoreWebView2Deferral * deferral);
32497 }
32498 
32499 /// Receives the result of the `ClearServerCertificateErrorActions` method.
32500 const GUID IID_ICoreWebView2ClearServerCertificateErrorActionsCompletedHandler = ICoreWebView2ClearServerCertificateErrorActionsCompletedHandler.iid;
32501 
32502 interface ICoreWebView2ClearServerCertificateErrorActionsCompletedHandler : IUnknown
32503 {
32504     static const GUID iid = { 0x3B40AAC6,0xACFE,0x4FFD,[ 0x82,0x11,0xF6,0x07,0xB9,0x6E,0x2D,0x5B ] };
32505   /// Provides the result of the corresponding asynchronous method.
32506   HRESULT Invoke(in HRESULT errorCode);
32507 }
32508 
32509 /// Profile2 interface.
32510 ///
32511 const GUID IID_ICoreWebView2Profile2 = ICoreWebView2Profile2.iid;
32512 
32513 interface ICoreWebView2Profile2 : ICoreWebView2Profile
32514 {
32515     static const GUID iid = { 0xfa740d4b,0x5eae,0x4344,[ 0xa8,0xad,0x74,0xbe,0x31,0x92,0x53,0x97 ] };
32516 
32517   /// Clear browsing data based on a data type. This method takes two parameters,
32518   /// the first being a mask of one or more `COREWEBVIEW2_BROWSING_DATA_KINDS`. OR
32519   /// operation(s) can be applied to multiple `COREWEBVIEW2_BROWSING_DATA_KINDS` to
32520   /// create a mask representing those data types. The browsing data kinds that are
32521   /// supported are listed below. These data kinds follow a hierarchical structure in
32522   /// which nested bullet points are included in their parent bullet point's data kind.
32523   /// Ex: All DOM storage is encompassed in all site data which is encompassed in
32524   /// all profile data.
32525   /// * All Profile
32526   ///   * All Site Data
32527   ///     * All DOM Storage: File Systems, Indexed DB, Local Storage, Web SQL, Cache
32528   ///         Storage
32529   ///     * Cookies
32530   ///   * Disk Cache
32531   ///   * Download History
32532   ///   * General Autofill
32533   ///   * Password Autosave
32534   ///   * Browsing History
32535   ///   * Settings
32536   /// The completed handler will be invoked when the browsing data has been cleared and
32537   /// will indicate if the specified data was properly cleared. In the case in which
32538   /// the operation is interrupted and the corresponding data is not fully cleared
32539   /// the handler will return `E_ABORT` and otherwise will return `S_OK`.
32540   /// Because this is an asynchronous operation, code that is dependent on the cleared
32541   /// data must be placed in the callback of this operation.
32542   /// If the WebView object is closed before the clear browsing data operation
32543   /// has completed, the handler will be released, but not invoked. In this case
32544   /// the clear browsing data operation may or may not be completed.
32545   /// ClearBrowsingData clears the `dataKinds` regardless of timestamp.
32546 
32547   HRESULT ClearBrowsingData(
32548       in COREWEBVIEW2_BROWSING_DATA_KINDS dataKinds,
32549       /+[in]+/ ICoreWebView2ClearBrowsingDataCompletedHandler handler);
32550 
32551   /// ClearBrowsingDataInTimeRange behaves like ClearBrowsingData except that it
32552   /// takes in two additional parameters for the start and end time for which it
32553   /// should clear the data between.  The `startTime` and `endTime`
32554   /// parameters correspond to the number of seconds since the UNIX epoch.
32555   /// `startTime` is inclusive while `endTime` is exclusive, therefore the data will
32556   /// be cleared between [startTime, endTime).
32557 
32558   HRESULT ClearBrowsingDataInTimeRange(
32559       in COREWEBVIEW2_BROWSING_DATA_KINDS dataKinds,
32560       in double startTime,
32561       in double endTime,
32562       /+[in]+/ ICoreWebView2ClearBrowsingDataCompletedHandler handler);
32563 
32564   /// ClearBrowsingDataAll behaves like ClearBrowsingData except that it
32565   /// clears the entirety of the data associated with the profile it is called on.
32566   /// It clears the data regardless of timestamp.
32567   ///
32568   /// \snippet AppWindow.cpp ClearBrowsingData
32569 
32570   HRESULT ClearBrowsingDataAll(
32571     /+[in]+/ ICoreWebView2ClearBrowsingDataCompletedHandler handler);
32572 }
32573 
32574 /// The caller implements this interface to receive the ClearBrowsingData result.
32575 const GUID IID_ICoreWebView2ClearBrowsingDataCompletedHandler = ICoreWebView2ClearBrowsingDataCompletedHandler.iid;
32576 
32577 interface ICoreWebView2ClearBrowsingDataCompletedHandler : IUnknown
32578 {
32579     static const GUID iid = { 0xe9710a06,0x1d1d,0x49b2,[ 0x82,0x34,0x22,0x6f,0x35,0x84,0x6a,0xe5 ] };
32580 
32581   /// Provide the completion status of the corresponding asynchronous method.
32582   HRESULT Invoke(in HRESULT errorCode);
32583 }
32584 
32585 /// This is an extension of the ICoreWebView2Profile interface to control levels of tracking prevention.
32586 const GUID IID_ICoreWebView2Profile3 = ICoreWebView2Profile3.iid;
32587 
32588 interface ICoreWebView2Profile3 : ICoreWebView2Profile2
32589 {
32590     static const GUID iid = { 0xB188E659,0x5685,0x4E05,[ 0xBD,0xBA,0xFC,0x64,0x0E,0x0F,0x19,0x92 ] };
32591   /// The `PreferredTrackingPreventionLevel` property allows you to control levels of tracking prevention for WebView2
32592   /// which are associated with a profile. This level would apply to the context of the profile. That is, all WebView2s
32593   /// sharing the same profile will be affected and also the value is persisted in the user data folder.
32594   ///
32595   /// See `COREWEBVIEW2_TRACKING_PREVENTION_LEVEL` for descriptions of levels.
32596   ///
32597   /// If tracking prevention feature is enabled when creating the WebView2 environment, you can also disable tracking
32598   /// prevention later using this property and `COREWEBVIEW2_TRACKING_PREVENTION_LEVEL_NONE` value but that doesn't
32599   /// improves runtime performance.
32600   ///
32601   /// There is `ICoreWebView2EnvironmentOptions5::EnableTrackingPrevention` property to enable/disable tracking prevention feature
32602   /// for all the WebView2's created in the same environment. If enabled, `PreferredTrackingPreventionLevel` is set to
32603   /// `COREWEBVIEW2_TRACKING_PREVENTION_LEVEL_BALANCED` by default for all the WebView2's and profiles created in the same
32604   /// environment or is set to the level whatever value was last changed/persisted to the profile. If disabled
32605   /// `PreferredTrackingPreventionLevel` is not respected by WebView2. If `PreferredTrackingPreventionLevel` is set when the
32606   /// feature is disabled, the property value get changed and persisted but it will takes effect only if
32607   /// `ICoreWebView2EnvironmentOptions5::EnableTrackingPrevention` is true.
32608   ///
32609   /// See `ICoreWebView2EnvironmentOptions5::EnableTrackingPrevention` for more details.
32610   /// \snippet SettingsComponent.cpp SetTrackingPreventionLevel
32611   @(" propget")
32612 	HRESULT get_PreferredTrackingPreventionLevel(
32613       @("out, retval") COREWEBVIEW2_TRACKING_PREVENTION_LEVEL* value);
32614   /// Set the `PreferredTrackingPreventionLevel` property.
32615   ///
32616   /// If `ICoreWebView2EnvironmentOptions5::EnableTrackingPrevention` is false, this property will be changed and persisted
32617   /// to the profile but the WebView2 ignores the level silently.
32618   @(" propput")
32619 	HRESULT put_PreferredTrackingPreventionLevel(
32620       in COREWEBVIEW2_TRACKING_PREVENTION_LEVEL value);
32621 }
32622 
32623 /// This interface is a handler for when the `Favicon` is changed.
32624 /// The sender is the ICoreWebView2 object the top-level document of
32625 /// which has changed favicon and the eventArgs is nullptr. Use the
32626 /// FaviconUri property and GetFavicon method to obtain the favicon
32627 /// data. The second argument is always null.
32628 /// For more information see `add_FaviconChanged`.
32629 const GUID IID_ICoreWebView2FaviconChangedEventHandler = ICoreWebView2FaviconChangedEventHandler.iid;
32630 
32631 interface ICoreWebView2FaviconChangedEventHandler : IUnknown
32632 {
32633     static const GUID iid = { 0x2913DA94,0x833D,0x4DE0,[ 0x8D,0xCA,0x90,0x0F,0xC5,0x24,0xA1,0xA4 ] };
32634   /// Called to notify the favicon changed. The event args are always null.
32635   HRESULT Invoke(
32636       /+[in]+/ ICoreWebView2 sender,
32637       /+[in]+/ IUnknown args);
32638 }
32639 
32640 /// This interface is a handler for the completion of the population of
32641 /// `imageStream`.
32642 /// `errorCode` returns S_OK if the API succeeded.
32643 /// The image is returned in the `faviconStream` object. If there is no image
32644 /// then no data would be copied into the imageStream.
32645 /// For more details, see the `GetFavicon` API.
32646 const GUID IID_ICoreWebView2GetFaviconCompletedHandler = ICoreWebView2GetFaviconCompletedHandler.iid;
32647 
32648 interface ICoreWebView2GetFaviconCompletedHandler : IUnknown
32649 {
32650     static const GUID iid = { 0xA2508329,0x7DA8,0x49D7,[ 0x8C,0x05,0xFA,0x12,0x5E,0x4A,0xEE,0x8D ] };
32651   /// Called to notify the favicon has been retrieved.
32652   HRESULT Invoke(
32653       in HRESULT errorCode,
32654       in IStream* faviconStream);
32655 }
32656 
32657 /// Represents the registration of a custom scheme with the
32658 /// CoreWebView2Environment.
32659 /// This allows the WebView2 app to be able to handle WebResourceRequested
32660 /// event for requests with the specified scheme and be able to navigate the
32661 /// WebView2 to the custom scheme. Once the environment is created, the
32662 /// registrations are valid and immutable throughout the lifetime of the
32663 /// associated WebView2s' browser process and any WebView2 environments
32664 /// sharing the browser process must be created with identical custom scheme
32665 /// registrations, otherwise the environment creation will fail.
32666 /// Any further attempts to register the same scheme will fail during environment creation.
32667 /// The URIs of registered custom schemes will be treated similar to http
32668 /// URIs for their origins.
32669 /// They will have tuple origins for URIs with host and opaque origins for
32670 /// URIs without host as specified in
32671 /// [7.5 Origin - HTML Living Standard](https://html.spec.whatwg.org/multipage/origin.html)
32672 ///
32673 /// Example:
32674 /// `custom-scheme-with-host://hostname/path/to/resource` has origin of
32675 /// `custom-scheme-with-host://hostname`.
32676 /// `custom-scheme-without-host:path/to/resource` has origin of
32677 /// `custom-scheme-without-host:path/to/resource`.
32678 /// For WebResourceRequested event, the cases of request URIs and filter URIs
32679 /// with custom schemes will be normalized according to generic URI syntax
32680 /// rules. Any non-ASCII characters will be preserved.
32681 /// The registered custom schemes also participate in
32682 /// [CORS](https://developer.mozilla.org/docs/Web/HTTP/CORS) and
32683 /// adheres to [CSP](https://developer.mozilla.org/docs/Web/HTTP/CSP).
32684 /// The app needs to set the appropriate access headers in its
32685 /// WebResourceRequested event handler to allow CORS requests.
32686 /// \snippet AppWindow.cpp CoreWebView2CustomSchemeRegistration
32687 const GUID IID_ICoreWebView2CustomSchemeRegistration = ICoreWebView2CustomSchemeRegistration.iid;
32688 
32689 interface ICoreWebView2CustomSchemeRegistration : IUnknown
32690 {
32691     static const GUID iid = { 0xd60ac92c,0x37a6,0x4b26,[ 0xa3,0x9e,0x95,0xcf,0xe5,0x90,0x47,0xbb ] };
32692   /// The name of the custom scheme to register.
32693   @(" propget")
32694 	HRESULT get_SchemeName(@("out, retval") LPWSTR* schemeName);
32695 
32696   /// Whether the sites with this scheme will be treated as a
32697   /// [Secure Context](https://developer.mozilla.org/docs/Web/Security/Secure_Contexts)
32698   /// like an HTTPS site. This flag is only effective when HasAuthorityComponent
32699   /// is also set to `true`.
32700   /// `false` by default.
32701   @(" propget")
32702 	HRESULT get_TreatAsSecure(@("out, retval") BOOL* treatAsSecure);
32703   /// Set if the scheme will be treated as a Secure Context.
32704   @(" propput")
32705 	HRESULT put_TreatAsSecure(in BOOL value);
32706 
32707   /// List of origins that are allowed to issue requests with the custom
32708   /// scheme, such as XHRs and subresource requests that have an Origin header.
32709   /// The origin of any request (requests that have the
32710   /// [Origin header](https://developer.mozilla.org/docs/Web/HTTP/Headers/Origin))
32711   /// to the custom scheme URI needs to be in this list. No-origin requests
32712   /// are requests that do not have an Origin header, such as link
32713   /// navigations, embedded images and are always allowed.
32714   /// Note: POST requests always contain an Origin header, therefore
32715   /// AllowedOrigins must be set for even for same origin POST requests.
32716   /// Note that cross-origin restrictions still apply.
32717   /// From any opaque origin (Origin header is null), no cross-origin requests
32718   /// are allowed.
32719   /// If the list is empty, no cross-origin request to this scheme is
32720   /// allowed.
32721   /// Origins are specified as a string in the format of
32722   /// scheme://host:port.
32723   /// The origins are string pattern matched with `*` (matches 0 or more
32724   /// characters) and `?` (matches 0 or 1 character) wildcards just like
32725   /// the URI matching in the
32726   /// [AddWebResourceRequestedFilter API](/dotnet/api/microsoft.web.webview2.core.corewebview2.addwebresourcerequestedfilter).
32727   /// For example, "http://*.example.com:80".
32728   /// Here's a set of examples of what is allowed and not:
32729   ///
32730   /// | Request URI | Originating URL | AllowedOrigins | Allowed |
32731   /// | -- | -- | -- | -- |
32732   /// | `custom-scheme:request` | `https://www.example.com` | {"https://www.example.com"} | Yes |
32733   /// | `custom-scheme:request` | `https://www.example.com` | {"https://*.example.com"} | Yes |
32734   /// | `custom-scheme:request` | `https://www.example.com` | {"https://www.example2.com"} | No |
32735   /// | `custom-scheme-with-authority://host/path` | `custom-scheme-with-authority://host2` | {""} | No |
32736   /// | `custom-scheme-with-authority://host/path` | `custom-scheme-with-authority2://host` | {"custom-scheme-with-authority2://*"} | Yes |
32737   /// | `custom-scheme-without-authority:path` | custom-scheme-without-authority:path2 | {"custom-scheme-without-authority:*"} | No |
32738   /// | `custom-scheme-without-authority:path` | custom-scheme-without-authority:path2 | {"*"} | Yes |
32739   ///
32740   /// The returned strings and the array itself must be deallocated with
32741   /// CoTaskMemFree.
32742   HRESULT GetAllowedOrigins(
32743     @("out") UINT32* allowedOriginsCount,
32744     @("out") LPWSTR** allowedOrigins);
32745   /// Set the array of origins that are allowed to use the scheme.
32746   HRESULT SetAllowedOrigins(
32747     in UINT32 allowedOriginsCount,
32748     in LPCWSTR* allowedOrigins);
32749 
32750   /// Set this property to `true` if the URIs with this custom
32751   /// scheme will have an authority component (a host for custom schemes).
32752   /// Specifically, if you have a URI of the following form you should set the
32753   /// `HasAuthorityComponent` value as listed.
32754   ///
32755   /// | URI | Recommended HasAuthorityComponent value |
32756   /// | -- | -- |
32757   /// | `custom-scheme-with-authority://host/path` | `true` |
32758   /// | `custom-scheme-without-authority:path` | `false` |
32759   ///
32760   /// When this property is set to `true`, the URIs with this scheme will be
32761   /// interpreted as having a
32762   /// [scheme and host](https://html.spec.whatwg.org/multipage/origin.html#concept-origin-tuple)
32763   /// origin similar to an http URI. Note that the port and user
32764   /// information are never included in the computation of origins for
32765   /// custom schemes.
32766   /// If this property is set to `false`, URIs with this scheme will have an
32767   /// [opaque origin](https://html.spec.whatwg.org/multipage/origin.html#concept-origin-opaque)
32768   /// similar to a data URI.
32769   /// This property is `false` by default.
32770   ///
32771   /// Note: For custom schemes registered as having authority component,
32772   /// navigations to URIs without authority of such custom schemes will fail.
32773   /// However, if the content inside WebView2 references
32774   /// a subresource with a URI that does not have
32775   /// an authority component, but of a custom scheme that is registered as
32776   /// having authority component, the URI will be interpreted as a relative path
32777   /// as specified in [RFC3986](https://www.rfc-editor.org/rfc/rfc3986).
32778   /// For example, `custom-scheme-with-authority:path` will be interpreted
32779   /// as `custom-scheme-with-authority://host/path`.
32780   /// However, this behavior cannot be guaranteed to remain in future
32781   /// releases so it is recommended not to rely on this behavior.
32782   @(" propget")
32783 	HRESULT get_HasAuthorityComponent(@("out, retval") BOOL* hasAuthorityComponent);
32784 
32785   /// Get has authority component.
32786   @(" propput")
32787 	HRESULT put_HasAuthorityComponent(in BOOL  hasAuthorityComponent);
32788 }
32789 
32790 /// This is a continuation of the `ICoreWebView2PermissionRequestedEventArgs2`
32791 /// interface.
32792 const GUID IID_ICoreWebView2PermissionRequestedEventArgs3 = ICoreWebView2PermissionRequestedEventArgs3.iid;
32793 
32794 interface ICoreWebView2PermissionRequestedEventArgs3 :
32795     ICoreWebView2PermissionRequestedEventArgs2
32796 {
32797     static const GUID iid = { 0xe61670bc,0x3dce,0x4177,[ 0x86,0xd2,0xc6,0x29,0xae,0x3c,0xb6,0xac ] };
32798   /// The permission state set from the `PermissionRequested` event is saved in
32799   /// the profile by default; it persists across sessions and becomes the new
32800   /// default behavior for future `PermissionRequested` events. Browser
32801   /// heuristics can affect whether the event continues to be raised when the
32802   /// state is saved in the profile. Set the `SavesInProfile` property to
32803   /// `FALSE` to not persist the state beyond the current request, and to
32804   /// continue to receive `PermissionRequested`
32805   /// events for this origin and permission kind.
32806   @(" propget")
32807 	HRESULT get_SavesInProfile(@("out, retval") BOOL* value);
32808 
32809   /// Sets the `SavesInProfile` property.
32810   @(" propput")
32811 	HRESULT put_SavesInProfile(in BOOL value);
32812 }
32813 
32814 /// The caller implements this interface to handle the result of
32815 /// `SetPermissionState`.
32816 const GUID IID_ICoreWebView2SetPermissionStateCompletedHandler = ICoreWebView2SetPermissionStateCompletedHandler.iid;
32817 
32818 interface ICoreWebView2SetPermissionStateCompletedHandler : IUnknown
32819 {
32820     static const GUID iid = { 0xfc77fb30,0x9c9e,0x4076,[ 0xb8,0xc7,0x76,0x44,0xa7,0x03,0xca,0x1b ] };
32821   /// Provide the completion status of the corresponding asynchronous method.
32822   HRESULT Invoke(in HRESULT errorCode);
32823 }
32824 
32825 /// The caller implements this interface to handle the result of
32826 /// `GetNonDefaultPermissionSettings`.
32827 const GUID IID_ICoreWebView2GetNonDefaultPermissionSettingsCompletedHandler = ICoreWebView2GetNonDefaultPermissionSettingsCompletedHandler.iid;
32828 
32829 interface ICoreWebView2GetNonDefaultPermissionSettingsCompletedHandler : IUnknown
32830 {
32831     static const GUID iid = { 0x38274481,0xa15c,0x4563,[ 0x94,0xcf,0x99,0x0e,0xdc,0x9a,0xeb,0x95 ] };
32832   /// Provides the permission setting collection for the requested permission kind.
32833   HRESULT Invoke(in HRESULT errorCode,
32834       /+[in]+/ ICoreWebView2PermissionSettingCollectionView collectionView);
32835 }
32836 
32837 /// This is the ICoreWebView2Profile interface for the permission management APIs.
32838 const GUID IID_ICoreWebView2Profile4 = ICoreWebView2Profile4.iid;
32839 
32840 interface ICoreWebView2Profile4 : ICoreWebView2Profile3
32841 {
32842     static const GUID iid = { 0x8F4ae680,0x192e,0x4eC8,[ 0x83,0x3a,0x21,0xcf,0xad,0xae,0xf6,0x28 ] };
32843   /// Sets permission state for the given permission kind and origin
32844   /// asynchronously. The change persists across sessions until it is changed by
32845   /// another call to `SetPermissionState`, or by setting the `State` property
32846   /// in `PermissionRequestedEventArgs`. Setting the state to
32847   /// `COREWEBVIEW2_PERMISSION_STATE_DEFAULT` will erase any state saved in the
32848   /// profile and restore the default behavior.
32849   /// The origin should have a valid scheme and host (e.g. "https://www.example.com"),
32850   /// otherwise the method fails with `E_INVALIDARG`. Additional URI parts like
32851   /// path and fragment are ignored. For example, "https://wwww.example.com/app1/index.html/"
32852   /// is treated the same as "https://wwww.example.com". See the
32853   /// [MDN origin definition](https://developer.mozilla.org/en-US/docs/Glossary/Origin)
32854   /// for more details.
32855   ///
32856   /// \snippet ScenarioPermissionManagement.cpp SetPermissionState
32857   HRESULT SetPermissionState(
32858         in COREWEBVIEW2_PERMISSION_KIND permissionKind,
32859         in LPCWSTR origin,
32860         in COREWEBVIEW2_PERMISSION_STATE state,
32861         /+[in]+/ ICoreWebView2SetPermissionStateCompletedHandler completedHandler);
32862 
32863   /// Invokes the handler with a collection of all nondefault permission settings.
32864   /// Use this method to get the permission state set in the current and previous
32865   /// sessions.
32866   ///
32867   /// \snippet ScenarioPermissionManagement.cpp GetNonDefaultPermissionSettings
32868   HRESULT GetNonDefaultPermissionSettings(
32869       /+[in]+/ ICoreWebView2GetNonDefaultPermissionSettingsCompletedHandler completedHandler);
32870 }
32871 
32872 /// Read-only collection of `PermissionSetting`s (origin, kind, and state). Used to list
32873 /// the nondefault permission settings on the profile that are persisted across
32874 /// sessions.
32875 const GUID IID_ICoreWebView2PermissionSettingCollectionView = ICoreWebView2PermissionSettingCollectionView.iid;
32876 
32877 interface ICoreWebView2PermissionSettingCollectionView : IUnknown
32878 {
32879     static const GUID iid = { 0xf5596f62,0x3de5,0x47b1,[ 0x91,0xe8,0xa4,0x10,0x4b,0x59,0x6b,0x96 ] };
32880   /// Gets the `ICoreWebView2PermissionSetting` at the specified index.
32881   HRESULT GetValueAtIndex(
32882       in UINT32 index,
32883       @("out, retval") ICoreWebView2PermissionSetting * permissionSetting);
32884 
32885   /// The number of `ICoreWebView2PermissionSetting`s in the collection.
32886   @(" propget")
32887 	HRESULT get_Count(@("out, retval") UINT32* value);
32888 }
32889 
32890 /// Provides a set of properties for a permission setting.
32891 const GUID IID_ICoreWebView2PermissionSetting = ICoreWebView2PermissionSetting.iid;
32892 
32893 interface ICoreWebView2PermissionSetting : IUnknown
32894 {
32895     static const GUID iid = { 0x792b6eca,0x5576,0x421c,[ 0x91,0x19,0x74,0xeb,0xb3,0xa4,0xff,0xb3 ] };
32896   /// The kind of the permission setting. See `COREWEBVIEW2_PERMISSION_KIND` for
32897   /// more details.
32898   @(" propget")
32899 	HRESULT get_PermissionKind(
32900       @("out, retval") COREWEBVIEW2_PERMISSION_KIND* value);
32901 
32902   /// The origin of the permission setting.
32903   @(" propget")
32904 	HRESULT get_PermissionOrigin(@("out, retval") LPWSTR* value);
32905 
32906   /// The state of the permission setting.
32907   @(" propget")
32908 	HRESULT get_PermissionState(
32909       @("out, retval") COREWEBVIEW2_PERMISSION_STATE* value);
32910 }
32911 
32912 /// This is the interface in ControllerOptions for ScriptLocale.
32913 const GUID IID_ICoreWebView2ControllerOptions2 = ICoreWebView2ControllerOptions2.iid;
32914 
32915 interface ICoreWebView2ControllerOptions2 : ICoreWebView2ControllerOptions
32916 {
32917     static const GUID iid = { 0x06c991d8,0x9e7e,0x11ed,[ 0xa8,0xfc,0x02,0x42,0xac,0x12,0x00,0x02 ] };
32918   /// The default locale for the WebView2.  It sets the default locale for all
32919   /// Intl JavaScript APIs and other JavaScript APIs that depend on it, namely
32920   /// `Intl.DateTimeFormat()` which affects string formatting like
32921   /// in the time/date formats. Example: `Intl.DateTimeFormat().format(new Date())`
32922   /// The intended locale value is in the format of
32923   /// BCP 47 Language Tags. More information can be found from
32924   /// [IETF BCP47](https://www.ietf.org/rfc/bcp/bcp47.html).
32925   ///
32926   /// This property sets the locale for a CoreWebView2Environment used to create the
32927   /// WebView2ControllerOptions object, which is passed as a parameter in
32928   /// `CreateCoreWebView2ControllerWithOptions`.
32929   ///
32930   /// Changes to the ScriptLocale property apply to renderer processes created after
32931   /// the change. Any existing renderer processes will continue to use the previous
32932   /// ScriptLocale value. To ensure changes are applied to all renderer process,
32933   /// close and restart the CoreWebView2Environment and all associated WebView2 objects.
32934   ///
32935   /// The default value for ScriptLocale will depend on the WebView2 language
32936   /// and OS region. If the language portions of the WebView2 language and OS region
32937   /// match, then it will use the OS region. Otherwise, it will use the WebView2
32938   /// language.
32939   ///
32940   /// | OS Region | WebView2 Language | Default WebView2 ScriptLocale |
32941   /// |-----------|-------------------|-------------------------------|
32942   /// | en-GB     | en-US             | en-GB                         |
32943   /// | es-MX     | en-US             | en-US                         |
32944   /// | en-US     | en-GB             | en-US                         |
32945   ///
32946   /// You can set the ScriptLocale to the empty string to get the default ScriptLocale value.
32947   ///
32948   /// Use OS specific APIs to determine the OS region to use with this property
32949   /// if you want to match the OS. For example:
32950   ///
32951   /// Win32 C++:
32952   /// ```cpp
32953   ///   wchar_t osLocale[LOCALE_NAME_MAX_LENGTH] = {0};
32954   ///   GetUserDefaultLocaleName(osLocale, LOCALE_NAME_MAX_LENGTH);
32955   /// ```
32956   ///
32957   /// The caller must free the returned string with `CoTaskMemFree`.  See
32958   /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings).
32959   /// \snippet AppWindow.cpp ScriptLocaleSetting
32960   @(" propget")
32961 	HRESULT get_ScriptLocale(@("out, retval") LPWSTR* locale);
32962   /// Sets the `ScriptLocale` property.
32963   @(" propput")
32964 	HRESULT put_ScriptLocale(in LPCWSTR locale);
32965 }
32966 
32967 /// The shared buffer object that is created by [CreateSharedBuffer](/microsoft-edge/webview2/reference/win32/icorewebview2environment12#createsharedbuffer).
32968 /// The object is presented to script as ArrayBuffer when posted to script with
32969 /// [PostSharedBufferToScript](/microsoft-edge/webview2/reference/win32/icorewebview2_17#postsharedbuffertoscript).
32970 const GUID IID_ICoreWebView2SharedBuffer = ICoreWebView2SharedBuffer.iid;
32971 
32972 interface ICoreWebView2SharedBuffer : IUnknown
32973 {
32974     static const GUID iid = { 0xB747A495,0x0C6F,0x449E,[ 0x97,0xB8,0x2F,0x81,0xE9,0xD6,0xAB,0x43 ] };
32975   /// The size of the shared buffer in bytes.
32976   @(" propget")
32977 	HRESULT get_Size(@("out, retval") UINT64* value);
32978 
32979   /// The memory address of the shared buffer.
32980   @(" propget")
32981 	HRESULT get_Buffer(@("out, retval") BYTE** value);
32982 
32983   /// Get an IStream object that can be used to access the shared buffer.
32984   HRESULT OpenStream(@("out, retval") IStream** value);
32985 
32986   /// Returns a handle to the file mapping object that backs this shared buffer.
32987   /// The returned handle is owned by the shared buffer object. You should not
32988   /// call CloseHandle on it.
32989   /// Normal app should use `Buffer` or `OpenStream` to get memory address
32990   /// or IStream object to access the buffer.
32991   /// For advanced scenarios, you could use file mapping APIs to obtain other views
32992   /// or duplicate this handle to another application process and create a view from
32993   /// the duplicated handle in that process to access the buffer from that separate process.
32994   @(" propget")
32995 	HRESULT get_FileMappingHandle(@("out, retval") HANDLE* value);
32996 
32997   /// Release the backing shared memory. The application should call this API when no
32998   /// access to the buffer is needed any more, to ensure that the underlying resources
32999   /// are released timely even if the shared buffer object itself is not released due to
33000   /// some leaked reference.
33001   /// After the shared buffer is closed, the buffer address and file mapping handle previously
33002   /// obtained becomes invalid and cannot be used anymore. Accessing properties of the object
33003   /// will fail with `RO_E_CLOSED`. Operations like Read or Write on the IStream objects returned
33004   /// from `OpenStream` will fail with `RO_E_CLOSED`. `PostSharedBufferToScript` will also
33005   /// fail with `RO_E_CLOSED`.
33006   ///
33007   /// The script code should call `chrome.webview.releaseBuffer` with
33008   /// the shared buffer as the parameter to release underlying resources as soon
33009   /// as it does not need access the shared buffer any more.
33010   /// When script tries to access the buffer after calling `chrome.webview.releaseBuffer`,
33011   /// JavaScript `TypeError` exception will be raised complaining about accessing a
33012   /// detached ArrayBuffer, the same exception when trying to access a transferred ArrayBuffer.
33013   ///
33014   /// Closing the buffer object on native side doesn't impact access from Script and releasing
33015   /// the buffer from script doesn't impact access to the buffer from native side.
33016   /// The underlying shared memory will be released by the OS when both native and script side
33017   /// release the buffer.
33018   HRESULT Close();
33019 }
33020 
33021 /// Representation of a DOM
33022 /// [File](https://developer.mozilla.org/en-US/docs/Web/API/File) object
33023 /// passed via WebMessage. You can use this object to obtain the path of a
33024 /// File dropped on WebView2.
33025 /// \snippet ScenarioDragDrop.cpp DroppedFilePath
33026 const GUID IID_ICoreWebView2File = ICoreWebView2File.iid;
33027 
33028 interface ICoreWebView2File : IUnknown
33029 {
33030     static const GUID iid = { 0xf2c19559,0x6bc1,0x4583,[ 0xa7,0x57,0x90,0x02,0x1b,0xe9,0xaf,0xec ] };
33031   /// Get the absolute file path.
33032   @(" propget")
33033 	HRESULT get_Path(@("out, retval") LPWSTR* path);
33034 }
33035 
33036 /// Read-only collection of generic objects.
33037 const GUID IID_ICoreWebView2ObjectCollectionView = ICoreWebView2ObjectCollectionView.iid;
33038 
33039 interface ICoreWebView2ObjectCollectionView : IUnknown
33040 {
33041     static const GUID iid = { 0x0f36fd87,0x4f69,0x4415,[ 0x98,0xda,0x88,0x8f,0x89,0xfb,0x9a,0x33 ] };
33042   /// Gets the number of items in the collection.
33043   @(" propget")
33044 	HRESULT get_Count(@("out, retval") UINT32* value);
33045 
33046   /// Gets the object at the specified index. Cast the object to the native type
33047   /// to access its specific properties.
33048   HRESULT GetValueAtIndex(in UINT32 index,
33049       @("out, retval") IUnknown * value);
33050 }
33051 
33052 /// Extension of WebMessageReceivedEventArgs to provide access to additional
33053 /// WebMessage objects.
33054 const GUID IID_ICoreWebView2WebMessageReceivedEventArgs2 = ICoreWebView2WebMessageReceivedEventArgs2.iid;
33055 
33056 interface ICoreWebView2WebMessageReceivedEventArgs2 : ICoreWebView2WebMessageReceivedEventArgs
33057 {
33058     static const GUID iid = { 0x06fc7ab7,0xc90c,0x4297,[ 0x93,0x89,0x33,0xca,0x01,0xcf,0x6d,0x5e ] };
33059   /// Additional received WebMessage objects. To pass `additionalObjects` via
33060   /// WebMessage to the app, use the
33061   /// `chrome.webview.postMessageWithAdditionalObjects` content API.
33062   /// Any DOM object type that can be natively representable that has been
33063   /// passed in to `additionalObjects` parameter will be accessible here.
33064   /// Currently a WebMessage object can be the `ICoreWebView2File` type.
33065   /// Entries in the collection can be `nullptr` if `null` or `undefined` was
33066   /// passed.
33067   @(" propget")
33068 	HRESULT get_AdditionalObjects(
33069       @("out, retval") ICoreWebView2ObjectCollectionView * value);
33070 }
33071 
33072 /// This is the ICoreWebView2Profile interface for cookie manager.
33073 const GUID IID_ICoreWebView2Profile5 = ICoreWebView2Profile5.iid;
33074 
33075 interface ICoreWebView2Profile5 : ICoreWebView2Profile4
33076 {
33077     static const GUID iid = { 0x2EE5B76E,0x6E80,0x4DF2,[ 0xBC,0xD3,0xD4,0xEC,0x33,0x40,0xA0,0x1B ] };
33078   /// Get the cookie manager for the profile. All CoreWebView2s associated with this
33079   /// profile share the same cookie values. Changes to cookies in this cookie manager apply to all
33080   /// CoreWebView2s associated with this profile.
33081   /// See ICoreWebView2CookieManager.
33082   ///
33083   /// \snippet ScenarioCookieManagement.cpp CookieManagerProfile
33084   @(" propget")
33085 	HRESULT get_CookieManager(@("out, retval") ICoreWebView2CookieManager * cookieManager);
33086 }
33087 
33088 /// Interfaces in profile for managing password-autosave and general-autofill.
33089 const GUID IID_ICoreWebView2Profile6 = ICoreWebView2Profile6.iid;
33090 
33091 interface ICoreWebView2Profile6 : ICoreWebView2Profile5
33092 {
33093     static const GUID iid = { 0xBD82FA6A,0x1D65,0x4C33,[ 0xB2,0xB4,0x03,0x93,0x02,0x0C,0xC6,0x1B ] };
33094   /// IsPasswordAutosaveEnabled controls whether autosave for password
33095   /// information is enabled. The IsPasswordAutosaveEnabled property behaves
33096   /// independently of the IsGeneralAutofillEnabled property. When IsPasswordAutosaveEnabled is
33097   /// false, no new password data is saved and no Save/Update Password prompts are displayed.
33098   /// However, if there was password data already saved before disabling this setting,
33099   /// then that password information is auto-populated, suggestions are shown and clicking on
33100   /// one will populate the fields.
33101   /// When IsPasswordAutosaveEnabled is true, password information is auto-populated,
33102   /// suggestions are shown and clicking on one will populate the fields, new data
33103   /// is saved, and a Save/Update Password prompt is displayed.
33104   /// It will take effect immediately after setting.
33105   /// The default value is `FALSE`.
33106   /// This property has the same value as
33107   /// `CoreWebView2Settings.IsPasswordAutosaveEnabled`, and changing one will
33108   /// change the other. All `CoreWebView2`s with the same `CoreWebView2Profile`
33109   /// will share the same value for this property, so for the `CoreWebView2`s
33110   /// with the same profile, their
33111   /// `CoreWebView2Settings.IsPasswordAutosaveEnabled` and
33112   /// `CoreWebView2Profile.IsPasswordAutosaveEnabled` will always have the same
33113   /// value.
33114   ///
33115   /// \snippet SettingsComponent.cpp ToggleProfilePasswordAutosaveEnabled
33116   @(" propget")
33117 	HRESULT get_IsPasswordAutosaveEnabled(@("out, retval") BOOL* value);
33118 
33119   /// Set the IsPasswordAutosaveEnabled property.
33120   @(" propput")
33121 	HRESULT put_IsPasswordAutosaveEnabled(in BOOL value);
33122 
33123   /// IsGeneralAutofillEnabled controls whether autofill for information
33124   /// like names, street and email addresses, phone numbers, and arbitrary input
33125   /// is enabled. This excludes password and credit card information. When
33126   /// IsGeneralAutofillEnabled is false, no suggestions appear, and no new information
33127   /// is saved. When IsGeneralAutofillEnabled is true, information is saved, suggestions
33128   /// appear and clicking on one will populate the form fields.
33129   /// It will take effect immediately after setting.
33130   /// The default value is `TRUE`.
33131   /// This property has the same value as
33132   /// `CoreWebView2Settings.IsGeneralAutofillEnabled`, and changing one will
33133   /// change the other. All `CoreWebView2`s with the same `CoreWebView2Profile`
33134   /// will share the same value for this property, so for the `CoreWebView2`s
33135   /// with the same profile, their
33136   /// `CoreWebView2Settings.IsGeneralAutofillEnabled` and
33137   /// `CoreWebView2Profile.IsGeneralAutofillEnabled` will always have the same
33138   /// value.
33139   ///
33140   /// \snippet SettingsComponent.cpp ToggleProfileGeneralAutofillEnabled
33141   @(" propget")
33142 	HRESULT get_IsGeneralAutofillEnabled(@("out, retval") BOOL* value);
33143 
33144   /// Set the IsGeneralAutofillEnabled property.
33145   @(" propput")
33146 	HRESULT put_IsGeneralAutofillEnabled(in BOOL value);
33147 }
33148 
33149 /// This is a continuation of the `ICoreWebView2NewWindowRequestedEventArgs` interface.
33150 const GUID IID_ICoreWebView2NewWindowRequestedEventArgs3 = ICoreWebView2NewWindowRequestedEventArgs3.iid;
33151 
33152 interface ICoreWebView2NewWindowRequestedEventArgs3 : ICoreWebView2NewWindowRequestedEventArgs2
33153 {
33154     static const GUID iid = { 0x842bed3c,0x6ad6,0x4dd9,[ 0xb9,0x38,0x28,0xc9,0x66,0x67,0xad,0x66 ] };
33155   /// The frame info of the frame where the new window request originated. The
33156   /// `OriginalSourceFrameInfo` is a snapshot of frame information at the time when the
33157   /// new window was requested. See `ICoreWebView2FrameInfo` for details on frame
33158   /// properties.
33159   @(" propget")
33160 	HRESULT get_OriginalSourceFrameInfo(
33161       @("out, retval") ICoreWebView2FrameInfo * frameInfo);
33162 }
33163 
33164 /// Interfaces in profile for managing browser extensions.
33165 const GUID IID_ICoreWebView2Profile7 = ICoreWebView2Profile7.iid;
33166 
33167 interface ICoreWebView2Profile7 : ICoreWebView2Profile6
33168 {
33169     static const GUID iid = { 0x7b4c7906,0xa1aa,0x4cb4,[ 0xb7,0x23,0xdb,0x09,0xf8,0x13,0xd5,0x41 ] };
33170     /// Adds the [browser extension](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions)
33171     /// using the extension path for unpacked extensions from the local device. Extension is
33172     /// running right after installation.
33173     /// The extension folder path is the topmost folder of an unpacked browser extension and
33174     /// contains the browser extension manifest file.
33175     /// If the `extensionFolderPath` is an invalid path or doesn't contain the extension manifest.json
33176     /// file, this function will return `ERROR_FILE_NOT_FOUND` to callers.
33177     /// Installed extension will default `IsEnabled` to true.
33178     /// When `AreBrowserExtensionsEnabled` is `FALSE`, `AddBrowserExtension` will fail and return
33179     /// HRESULT `ERROR_NOT_SUPPORTED`.
33180     /// During installation, the content of the extension is not copied to the user data folder.
33181     /// Once the extension is installed, changing the content of the extension will cause the
33182     /// extension to be removed from the installed profile.
33183     /// When an extension is added the extension is persisted in the corresponding profile. The
33184     /// extension will still be installed the next time you use this profile.
33185     /// When an extension is installed from a folder path, adding the same extension from the same
33186     /// folder path means reinstalling this extension. When two extensions with the same Id are
33187     /// installed, only the later installed extension will be kept.
33188     ///
33189     /// Extensions that are designed to include any UI interactions (e.g. icon, badge, pop up, etc.)
33190     /// can be loaded and used but will have missing UI entry points due to the lack of browser
33191     /// UI elements to host these entry points in WebView2.
33192     ///
33193     /// The following summarizes the possible error values that can be returned from
33194     /// `AddBrowserExtension` and a description of why these errors occur.
33195     ///
33196     /// Error value                                     | Description
33197     /// ----------------------------------------------- | --------------------------
33198     /// `HRESULT_FROM_WIN32(ERROR_NOT_SUPPORTED)`       | Extensions are disabled.
33199     /// `HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND)`      | Cannot find `manifest.json` file or it is not a valid extension manifest.
33200     /// `E_ACCESSDENIED`                                | Cannot load extension with file or directory name starting with \"_\", reserved for use by the system.
33201     /// `E_FAIL`                                        | Extension failed to install with other unknown reasons.
33202     HRESULT AddBrowserExtension(in LPCWSTR extensionFolderPath, /+[in]+/ ICoreWebView2ProfileAddBrowserExtensionCompletedHandler handler);
33203     /// Gets a snapshot of the set of extensions installed at the time `GetBrowserExtensions` is
33204     /// called. If an extension is installed or uninstalled after `GetBrowserExtensions` completes,
33205     /// the list returned by `GetBrowserExtensions` remains the same.
33206     /// When `AreBrowserExtensionsEnabled` is `FALSE`, `GetBrowserExtensions` won't return any
33207     /// extensions on current user profile.
33208     HRESULT GetBrowserExtensions(/+[in]+/ ICoreWebView2ProfileGetBrowserExtensionsCompletedHandler handler);
33209 }
33210 
33211 /// Provides a set of properties for managing an Extension, which includes
33212 /// an ID, name, and whether it is enabled or not, and the ability to Remove
33213 /// the Extension, and enable or disable it.
33214 const GUID IID_ICoreWebView2BrowserExtension = ICoreWebView2BrowserExtension.iid;
33215 
33216 interface ICoreWebView2BrowserExtension : IUnknown
33217 {
33218     static const GUID iid = { 0x7EF7FFA0,0xFAC5,0x462C,[ 0xB1,0x89,0x3D,0x9E,0xDB,0xE5,0x75,0xDA ] };
33219     /// This is the browser extension's ID. This is the same browser extension ID returned by
33220     /// the browser extension API [`chrome.runtime.id`](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/runtime/id).
33221     /// Please see that documentation for more details on how the ID is generated.
33222     /// After an extension is removed, calling `Id` will return the id of the extension that is removed.
33223     /// The caller must free the returned string with `CoTaskMemFree`.  See
33224     /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings).
33225     @(" propget")
33226 	HRESULT get_Id(@("out, retval") LPWSTR* value);
33227     /// This is the browser extension's name. This value is defined in this browser extension's
33228     /// manifest.json file. If manifest.json define extension's localized name, this value will
33229     /// be the localized version of the name.
33230     /// Please see [Manifest.json name](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/name)
33231     /// for more details.
33232     /// After an extension is removed, calling `Name` will return the name of the extension that is removed.
33233     /// The caller must free the returned string with `CoTaskMemFree`.  See
33234     /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings).
33235     @(" propget")
33236 	HRESULT get_Name(@("out, retval") LPWSTR* value);
33237     /// Removes this browser extension from its WebView2 Profile. The browser extension is removed
33238     /// immediately including from all currently running HTML documents associated with this
33239     /// WebView2 Profile. The removal is persisted and future uses of this profile will not have this
33240     /// extension installed. After an extension is removed, calling `Remove` again will cause an exception.
33241     HRESULT Remove(/+[in]+/ ICoreWebView2BrowserExtensionRemoveCompletedHandler handler);
33242     /// If `isEnabled` is true then the Extension is enabled and running in WebView instances.
33243     /// If it is false then the Extension is disabled and not running in WebView instances.
33244     /// When a Extension is first installed, `IsEnable` are default to be `TRUE`.
33245     /// `isEnabled` is persisted per profile.
33246     /// After an extension is removed, calling `isEnabled` will return the value at the time it was removed.
33247     @(" propget")
33248 	HRESULT get_IsEnabled(@("out, retval") BOOL* value);
33249     /// Sets whether this browser extension is enabled or disabled. This change applies immediately
33250     /// to the extension in all HTML documents in all WebView2s associated with this profile.
33251     /// After an extension is removed, calling `Enable` will not change the value of `IsEnabled`.
33252     HRESULT Enable(in BOOL isEnabled, /+[in]+/ ICoreWebView2BrowserExtensionEnableCompletedHandler handler);
33253 }
33254 
33255 /// The caller implements this interface to receive the result of removing
33256 /// the browser Extension from the Profile.
33257 const GUID IID_ICoreWebView2BrowserExtensionRemoveCompletedHandler = ICoreWebView2BrowserExtensionRemoveCompletedHandler.iid;
33258 
33259 interface ICoreWebView2BrowserExtensionRemoveCompletedHandler : IUnknown
33260 {
33261     static const GUID iid = { 0x8E41909A,0x9B18,0x4BB1,[ 0x8C,0xDF,0x93,0x0F,0x46,0x7A,0x50,0xBE ] };
33262     /// Provides the result of the browser extension Remove operation.
33263     HRESULT Invoke(in HRESULT errorCode);
33264 }
33265 
33266 /// The caller implements this interface to receive the result of setting the
33267 /// browser Extension as enabled or disabled. If enabled, the browser Extension is
33268 /// running in WebView instances. If disabled, the browser Extension is not running in WebView instances.
33269 const GUID IID_ICoreWebView2BrowserExtensionEnableCompletedHandler = ICoreWebView2BrowserExtensionEnableCompletedHandler.iid;
33270 
33271 interface ICoreWebView2BrowserExtensionEnableCompletedHandler : IUnknown
33272 {
33273     static const GUID iid = { 0x30C186CE,0x7FAD,0x421F,[ 0xA3,0xBC,0xA8,0xEA,0xF0,0x71,0xDD,0xB8 ] };
33274     /// Provides the result of the browser extension enable operation.
33275     HRESULT Invoke(in HRESULT errorCode);
33276 }
33277 
33278 /// Provides a set of properties for managing browser Extension Lists from user profile. This
33279 /// includes the number of browser Extensions in the list, and the ability to get an browser
33280 /// Extension from the list at a particular index.
33281 const GUID IID_ICoreWebView2BrowserExtensionList = ICoreWebView2BrowserExtensionList.iid;
33282 
33283 interface ICoreWebView2BrowserExtensionList : IUnknown
33284 {
33285     static const GUID iid = { 0x2EF3D2DC,0xBD5F,0x4F4D,[ 0x90,0xAF,0xFD,0x67,0x79,0x8F,0x0C,0x2F ] };
33286     /// The number of browser Extensions in the list.
33287     @(" propget")
33288 	HRESULT get_Count(@("out, retval") UINT* count);
33289     /// Gets the browser Extension located in the browser Extension List at the given index.
33290     HRESULT GetValueAtIndex(in UINT index,
33291 		@("out, retval") ICoreWebView2BrowserExtension * extension);
33292 }
33293 
33294 /// The caller implements this interface to receive the result of
33295 /// getting the browser Extensions.
33296 const GUID IID_ICoreWebView2ProfileGetBrowserExtensionsCompletedHandler = ICoreWebView2ProfileGetBrowserExtensionsCompletedHandler.iid;
33297 
33298 interface ICoreWebView2ProfileGetBrowserExtensionsCompletedHandler : IUnknown
33299 {
33300     static const GUID iid = { 0xFCE16A1C,0xF107,0x4601,[ 0x8B,0x75,0xFC,0x49,0x40,0xAE,0x25,0xD0 ] };
33301     /// Provides the browser extension list for the requested user profile.
33302     HRESULT Invoke(in HRESULT errorCode, /+[in]+/ ICoreWebView2BrowserExtensionList extensionList);
33303 }
33304 
33305 /// The caller implements this interface to receive the result
33306 /// of loading an browser Extension.
33307 const GUID IID_ICoreWebView2ProfileAddBrowserExtensionCompletedHandler = ICoreWebView2ProfileAddBrowserExtensionCompletedHandler.iid;
33308 
33309 interface ICoreWebView2ProfileAddBrowserExtensionCompletedHandler : IUnknown
33310 {
33311     static const GUID iid = { 0xDF1AAB27,0x82B9,0x4AB6,[ 0xAA,0xE8,0x01,0x7A,0x49,0x39,0x8C,0x14 ] };
33312     /// Provides the result of the `AddBrowserExtension` operation.g
33313     HRESULT Invoke(in HRESULT errorCode, /+[in]+/ ICoreWebView2BrowserExtension extension);
33314 }
33315 
33316 /// This is the profile interface that manages profile
33317 /// deletion.
33318 const GUID IID_ICoreWebView2Profile8 = ICoreWebView2Profile8.iid;
33319 
33320 interface ICoreWebView2Profile8 : ICoreWebView2Profile7
33321 {
33322     static const GUID iid = { 0xfbf70c2f,0xeb1f,0x4383,[ 0x85,0xa0,0x16,0x3e,0x92,0x04,0x40,0x11 ] };
33323   /// After the API is called, the profile will be marked for deletion. The
33324   /// local profile's directory will be deleted at browser process exit. If it
33325   /// fails to delete, because something else is holding the files open,
33326   /// WebView2 will try to delete the profile at all future browser process
33327   /// starts until successful.
33328   /// The corresponding CoreWebView2s will be closed and the
33329   /// CoreWebView2Profile.Deleted event will be raised. See
33330   /// `CoreWebView2Profile.Deleted` for more information.
33331   /// If you try to create a new profile with the same name as an existing
33332   /// profile that has been marked as deleted but hasn't yet been deleted,
33333   /// profile creation will fail with HRESULT_FROM_WIN32(ERROR_DELETE_PENDING).
33334   ///
33335   /// \snippet SettingsComponent.cpp DeleteProfile
33336   HRESULT Delete();
33337 
33338   /// Add an event handler for the `Deleted` event. The `Deleted` event is
33339   /// raised when the profile is marked for deletion. When this event is
33340   /// raised, the CoreWebView2Profile and its corresponding CoreWebView2s have
33341   /// been closed, and cannot be used anymore.
33342   ///
33343   /// \snippet AppWindow.cpp ProfileDeleted
33344   HRESULT add_Deleted(
33345       /+[in]+/ ICoreWebView2ProfileDeletedEventHandler eventHandler,
33346       @("out") EventRegistrationToken* token);
33347 
33348   /// Removes an event handler previously added with `add_Deleted`.
33349   HRESULT remove_Deleted(
33350       in EventRegistrationToken token);
33351 }
33352 
33353 /// Receives the `CoreWebView2Profile.Deleted` event.
33354 const GUID IID_ICoreWebView2ProfileDeletedEventHandler = ICoreWebView2ProfileDeletedEventHandler.iid;
33355 
33356 interface ICoreWebView2ProfileDeletedEventHandler : IUnknown
33357 {
33358     static const GUID iid = { 0xDF35055D,0x772E,0x4DBE,[ 0xB7,0x43,0x5F,0xBF,0x74,0xA2,0xB2,0x58 ] };
33359   /// Called to provide the implementer with the event args for the
33360   /// profile deleted event. No event args exist and the `args`
33361   /// parameter is set to `null`.
33362   HRESULT Invoke(
33363       /+[in]+/ ICoreWebView2Profile sender,
33364       /+[in]+/ IUnknown args);
33365 }
33366 
33367 // End of interfaces
33368 
33369 /// DLL export to create a WebView2 environment with a custom version of
33370 /// WebView2 Runtime, user data folder, and with or without additional options.
33371 ///
33372 /// When WebView2 experimental APIs are used, make sure to provide a valid `environmentOptions`
33373 /// so that WebView2 runtime knows which version of the SDK that the app is using. Otherwise,
33374 /// WebView2 runtime assumes that the version of the SDK being used is the latest
33375 /// version known to it, which might not be the version of the SDK being used.
33376 /// This wrong SDK version assumption could result in some experimental APIs not being available.
33377 ///
33378 /// The WebView2 environment and all other WebView2 objects are single threaded
33379 ///  and have dependencies on Windows components that require COM to be
33380 /// initialized for a single-threaded apartment.  The app is expected to run
33381 /// `CoInitializeEx` before running `CreateCoreWebView2EnvironmentWithOptions`.
33382 ///
33383 /// ```text
33384 /// CoInitializeEx(nullptr, COINIT_APARTMENTTHREADED);
33385 /// ```
33386 ///
33387 /// If `CoInitializeEx` did not run or previously ran with
33388 /// `COINIT_MULTITHREADED`, `CreateCoreWebView2EnvironmentWithOptions` fails
33389 /// with one of the following errors.
33390 ///
33391 /// ```text
33392 /// CO_E_NOTINITIALIZED -  if CoInitializeEx was not called
33393 /// RPC_E_CHANGED_MODE  -  if CoInitializeEx was previously called with
33394 ///                        COINIT_MULTITHREADED
33395 /// ```
33396 ///
33397 ///
33398 /// Use `browserExecutableFolder` to specify whether WebView2 controls use a
33399 /// fixed or installed version of the WebView2 Runtime that exists on a user
33400 /// machine.  To use a fixed version of the WebView2 Runtime, pass the
33401 /// folder path that contains the fixed version of the WebView2 Runtime to
33402 /// `browserExecutableFolder`. BrowserExecutableFolder supports both relative
33403 ///  (to the application's executable) and absolute files paths.
33404 /// To create WebView2 controls that use the
33405 /// installed version of the WebView2 Runtime that exists on user machines,
33406 /// pass a `null` or empty string to `browserExecutableFolder`.  In this
33407 /// scenario, the API tries to find a compatible version of the WebView2
33408 /// Runtime that is installed on the user machine (first at the machine level,
33409 ///  and then per user) using the selected channel preference.  The path of
33410 /// fixed version of the WebView2 Runtime should not contain
33411 /// `\Edge\Application\`. When such a path is used, the API fails
33412 /// with `HRESULT_FROM_WIN32(ERROR_NOT_SUPPORTED)`.
33413 ///
33414 /// The default channel search order is the WebView2 Runtime, Beta, Dev, and
33415 /// Canary.  When an override `WEBVIEW2_RELEASE_CHANNEL_PREFERENCE` environment
33416 ///  variable or applicable `releaseChannelPreference` registry value is set to
33417 ///  `1`, the channel search order is reversed.
33418 ///
33419 /// You may specify the `userDataFolder` to change the default user data
33420 /// folder location for WebView2.  The path is either an absolute file path
33421 /// or a relative file path that is interpreted as relative to the compiled
33422 /// code for the current process.  For UWP apps, the default user data
33423 /// folder is the app data folder for the package.  For non-UWP apps, the
33424 /// default user data (`{Executable File Name}.WebView2`) folder is
33425 /// created in the same directory next to the compiled code for the app.
33426 /// WebView2 creation fails if the compiled code is running in a directory in
33427 /// which the process does not have permission to create a new directory.  The
33428 /// app is responsible to clean up the associated user data folder when it
33429 /// is done.
33430 ///
33431 /// \> [!NOTE]\n\> As a browser process may be shared among WebViews, WebView creation fails
33432 /// with `HRESULT_FROM_WIN32(ERROR_INVALID_STATE)` if the specified options
33433 /// does not match the options of the WebViews that are currently running in
33434 /// the shared browser process.
33435 ///
33436 /// `environmentCreatedHandler` is the handler result to the async operation
33437 /// that contains the `WebView2Environment` that was created.
33438 ///
33439 /// The `browserExecutableFolder`, `userDataFolder` and
33440 /// `additionalBrowserArguments` of the `environmentOptions` may be overridden
33441 /// by values either specified in environment variables or in the registry.
33442 ///
33443 /// When creating a `WebView2Environment` the following environment variables
33444 /// are verified.
33445 ///
33446 /// ```text
33447 /// WEBVIEW2_BROWSER_EXECUTABLE_FOLDER
33448 /// WEBVIEW2_USER_DATA_FOLDER
33449 /// WEBVIEW2_ADDITIONAL_BROWSER_ARGUMENTS
33450 /// WEBVIEW2_RELEASE_CHANNEL_PREFERENCE
33451 /// ```
33452 ///
33453 /// If you find an override environment variable, use the
33454 /// `browserExecutableFolder` and `userDataFolder` values as replacements for
33455 /// the corresponding values in `CreateCoreWebView2EnvironmentWithOptions`
33456 /// parameters.  If `additionalBrowserArguments` is specified in environment
33457 /// variable or in the registry, it is appended to the corresponding values in
33458 /// `CreateCoreWebView2EnvironmentWithOptions` parameters.
33459 ///
33460 /// While not strictly overrides, additional environment variables may be set.
33461 ///
33462 /// ```text
33463 /// WEBVIEW2_WAIT_FOR_SCRIPT_DEBUGGER
33464 /// ```
33465 ///
33466 /// When found with a non-empty value, this indicates that the WebView is being
33467 ///  launched under a script debugger.  In this case, the WebView issues a
33468 /// `Page.waitForDebugger` CDP command that runs the script inside the WebView
33469 /// to pause on launch, until a debugger issues a corresponding
33470 /// `Runtime.runIfWaitingForDebugger` CDP command to resume the runtime.
33471 ///
33472 /// \> [!NOTE]\n\> The following environment variable does not have a registry key
33473 /// equivalent: `WEBVIEW2_WAIT_FOR_SCRIPT_DEBUGGER`.
33474 ///
33475 /// When found with a non-empty value, it indicates that the WebView is being
33476 /// launched under a script debugger that also supports host apps that use
33477 /// multiple WebViews.  The value is used as the identifier for a named pipe
33478 /// that is opened and written to when a new WebView is created by the host
33479 /// app.  The payload should match the payload of the `remote-debugging-port`
33480 /// JSON target and an external debugger may use it to attach to a specific
33481 /// WebView instance.  The format of the pipe created by the debugger should be
33482 /// `\\.\pipe\WebView2\Debugger\{app_name}\{pipe_name}`, where the following
33483 /// are true.
33484 ///
33485 /// *   `{app_name}` is the host app exe file name, for example,
33486 ///     `WebView2Example.exe`
33487 /// *   `{pipe_name}` is the value set for `WEBVIEW2_PIPE_FOR_SCRIPT_DEBUGGER`
33488 ///
33489 /// To enable debugging of the targets identified by the JSON, you must set the
33490 ///  `WEBVIEW2_ADDITIONAL_BROWSER_ARGUMENTS` environment variable to send
33491 /// `--remote-debugging-port={port_num}`, where the following is true.
33492 ///
33493 /// *   `{port_num}` is the port on which the CDP server binds.
33494 ///
33495 /// \> [!WARNING]\n\> If you set both `WEBVIEW2_PIPE_FOR_SCRIPT_DEBUGGER` and
33496 /// `WEBVIEW2_ADDITIONAL_BROWSER_ARGUMENTS` environment variables, the
33497 /// WebViews hosted in your app and associated contents may exposed to 3rd
33498 /// party apps such as debuggers.
33499 ///
33500 /// \> [!NOTE]\n\> The following environment variable does not have a registry key
33501 /// equivalent: `WEBVIEW2_PIPE_FOR_SCRIPT_DEBUGGER`.
33502 ///
33503 /// If none of those environment variables exist, then the registry is examined
33504 /// next.  The following registry values are verified.
33505 ///
33506 /// ```text
33507 /// [{Root}]\Software\Policies\Microsoft\Edge\WebView2\BrowserExecutableFolder
33508 /// "{AppId}"=""
33509 ///
33510 /// [{Root}]\Software\Policies\Microsoft\Edge\WebView2\ReleaseChannelPreference
33511 /// "{AppId}"=""
33512 ///
33513 /// [{Root}]\Software\Policies\Microsoft\Edge\WebView2\AdditionalBrowserArguments
33514 /// "{AppId}"=""
33515 ///
33516 /// [{Root}]\Software\Policies\Microsoft\Edge\WebView2\UserDataFolder
33517 /// "{AppId}"=""
33518 /// ```
33519 ///
33520 /// Use a group policy under **Administrative Templates** >
33521 /// **Microsoft Edge WebView2** to configure `browserExecutableFolder` and
33522 /// `releaseChannelPreference`.
33523 ///
33524 /// In the unlikely scenario where some instances of WebView are open during a
33525 /// browser update, the deletion of the previous WebView2 Runtime may be
33526 /// blocked.  To avoid running out of disk space, a new WebView creation fails
33527 /// with `HRESULT_FROM_WIN32(ERROR_DISK_FULL)` if it detects that too many
33528 /// previous WebView2 Runtime versions exist.
33529 ///
33530 /// The default maximum number of WebView2 Runtime versions allowed is `20`.
33531 /// To override the maximum number of the previous WebView2 Runtime versions
33532 /// allowed, set the value of the following environment variable.
33533 ///
33534 /// ```text
33535 /// COREWEBVIEW2_MAX_INSTANCES
33536 /// ```
33537 ///
33538 /// If the Webview depends upon an installed WebView2 Runtime version and it is
33539 /// uninstalled, any subsequent creation fails with
33540 /// `HRESULT_FROM_WIN32(ERROR_PRODUCT_UNINSTALLED)`.
33541 ///
33542 /// First verify with Root as `HKLM` and then `HKCU`.  `AppId` is first set to
33543 /// the Application User Model ID of the process, then if no corresponding
33544 /// registry key, the `AppId` is set to the compiled code name of the process,
33545 /// or if that is not a registry key then `*`.  If an override registry key is
33546 /// found, use the `browserExecutableFolder` and `userDataFolder` registry
33547 /// values as replacements and append `additionalBrowserArguments` registry
33548 /// values for the corresponding values in
33549 /// `CreateCoreWebView2EnvironmentWithOptions` parameters.
33550 ///
33551 /// The following summarizes the possible error values that can be returned from
33552 /// `CreateCoreWebView2EnvironmentWithOptions` and a description of why these
33553 /// errors occur.
33554 ///
33555 /// Error value                                     | Description
33556 /// ----------------------------------------------- | --------------------------
33557 /// `CO_E_NOTINITIALIZED`                           | CoInitializeEx was not called.
33558 /// `RPC_E_CHANGED_MODE`                            | CoInitializeEx was previously called with COINIT_MULTITHREADED.
33559 /// `HRESULT_FROM_WIN32(ERROR_NOT_SUPPORTED)`       | *\\Edge\\Application* path used in browserExecutableFolder.
33560 /// `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.
33561 /// `HRESULT_FROM_WIN32(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 `HRESULT_FROM_WIN32(ERROR_DISK_FULL)` if it detects that too many previous WebView2 Runtime versions exist.
33562 /// `HRESULT_FROM_WIN32(ERROR_PRODUCT_UNINSTALLED)` | If the Webview depends upon an installed WebView2 Runtime version and it is uninstalled.
33563 /// `HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND)`      | Could not find Edge installation.
33564 /// `HRESULT_FROM_WIN32(ERROR_FILE_EXISTS)`         | User data folder cannot be created because a file with the same name already exists.
33565 /// `E_ACCESSDENIED`                                | Unable to create user data folder, Access Denied.
33566 /// `E_FAIL`                                        | Edge runtime unable to start.
33567 
33568 extern(Windows) HRESULT CreateCoreWebView2EnvironmentWithOptions(PCWSTR browserExecutableFolder, PCWSTR userDataFolder, ICoreWebView2EnvironmentOptions environmentOptions, ICoreWebView2CreateCoreWebView2EnvironmentCompletedHandler environmentCreatedHandler);
33569 
33570 /// Creates an evergreen WebView2 Environment using the installed WebView2
33571 /// Runtime version.  This is equivalent to running
33572 /// `CreateCoreWebView2EnvironmentWithOptions` with `nullptr` for
33573 /// `browserExecutableFolder`, `userDataFolder`, `additionalBrowserArguments`.
33574 /// For more information, navigate to
33575 /// `CreateCoreWebView2EnvironmentWithOptions`.
33576 
33577 extern(Windows) HRESULT CreateCoreWebView2Environment(ICoreWebView2CreateCoreWebView2EnvironmentCompletedHandler environmentCreatedHandler);
33578 
33579 /// Get the browser version info including channel name if it is not the
33580 /// WebView2 Runtime.  Channel names are Beta, Dev, and Canary.
33581 /// If an override exists for the `browserExecutableFolder` or the channel
33582 /// preference, the override is used.  If an override is not specified, then
33583 /// the parameter value passed to
33584 /// `GetAvailableCoreWebView2BrowserVersionString` is used.
33585 /// Returns `HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND)` if it fails to find an
33586 /// installed WebView2 runtime or non-stable Microsoft Edge installation.
33587 ///
33588 /// The caller must free the returned string with `CoTaskMemFree`.  See
33589 /// [API Conventions](/microsoft-edge/webview2/concepts/win32-api-conventions#strings).
33590 
33591 extern(Windows) HRESULT GetAvailableCoreWebView2BrowserVersionString(PCWSTR browserExecutableFolder, LPWSTR* versionInfo);
33592 
33593 /// This method is for anyone want to compare version correctly to determine
33594 /// which version is newer, older or same.  Use it to determine whether
33595 /// to use webview2 or certain feature based upon version.  Sets the value of
33596 /// result to `-1`, `0` or `1` if `version1` is less than, equal or greater
33597 /// than `version2` respectively.  Returns `E_INVALIDARG` if it fails to parse
33598 /// any of the version strings or any input parameter is `null`.  Directly use
33599 /// the `versionInfo` obtained from
33600 /// `GetAvailableCoreWebView2BrowserVersionString` with input, channel
33601 /// information is ignored.
33602 
33603 extern(Windows) HRESULT CompareBrowserVersions(PCWSTR version1, PCWSTR version2, int* result);
33604 
33605 }
33606 }
33607 }