1diff --git a/BUILD.gn b/BUILD.gn 2index e1f11bc6e2..cf3f6a2457 100644 3--- a/BUILD.gn 4+++ b/BUILD.gn 5@@ -96,6 +96,10 @@ group("gn_all") { 6 "//url:url_unittests", 7 ] 8 9+ deps += [ 10+ "//ohos_nweb:libnweb_adapter", 11+ ] 12+ 13 if (!is_component_build) { 14 deps += [ "//third_party/abseil-cpp:absl_tests" ] 15 } 16diff --git a/base/base_paths_ohos.cc b/base/base_paths_ohos.cc 17index 2e507f8c9d..ec03cd53d7 100644 18--- a/base/base_paths_ohos.cc 19+++ b/base/base_paths_ohos.cc 20@@ -1,4 +1,4 @@ 21-// Copyright (c) 2022 The Chromium Authors. All rights reserved. 22+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 23 // Use of this source code is governed by a BSD-style license that can be 24 // found in the LICENSE file. 25 26diff --git a/base/base_paths_ohos.h b/base/base_paths_ohos.h 27index b85158a319..0b24760f85 100644 28--- a/base/base_paths_ohos.h 29+++ b/base/base_paths_ohos.h 30@@ -1,4 +1,4 @@ 31-// Copyright (c) 2022 The Chromium Authors. All rights reserved. 32+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 33 // Use of this source code is governed by a BSD-style license that can be 34 // found in the LICENSE file. 35 36diff --git a/base/debug/stack_trace_ohos.cc b/base/debug/stack_trace_ohos.cc 37index 199b6d679a..5815cc93ca 100644 38--- a/base/debug/stack_trace_ohos.cc 39+++ b/base/debug/stack_trace_ohos.cc 40@@ -1,4 +1,4 @@ 41-// Copyright (c) 2022 The Chromium Authors. All rights reserved. 42+// Copyright (c) 2012 The Chromium Authors. All rights reserved. 43 // Use of this source code is governed by a BSD-style license that can be 44 // found in the LICENSE file. 45 46diff --git a/base/message_loop/message_pump_ohos.cc b/base/message_loop/message_pump_ohos.cc 47index b705919891..b49e2a76cb 100644 48--- a/base/message_loop/message_pump_ohos.cc 49+++ b/base/message_loop/message_pump_ohos.cc 50@@ -1,7 +1,3 @@ 51-// Copyright (c) 2012 The Chromium Authors. All rights reserved. 52-// Use of this source code is governed by a BSD-style license that can be 53-// found in the LICENSE file. 54- 55 #include "base/message_loop/message_pump_ohos.h" 56 57 #include <errno.h> 58diff --git a/base/message_loop/message_pump_ohos.h b/base/message_loop/message_pump_ohos.h 59index e1a1c70c73..1997c75f85 100644 60--- a/base/message_loop/message_pump_ohos.h 61+++ b/base/message_loop/message_pump_ohos.h 62@@ -1,7 +1,3 @@ 63-// Copyright (c) 2022 The Chromium Authors. All rights reserved. 64-// Use of this source code is governed by a BSD-style license that can be 65-// found in the LICENSE file. 66- 67 #ifndef BASE_MESSAGE_LOOP_MESSAGE_PUMP_OHOS_H_ 68 #define BASE_MESSAGE_LOOP_MESSAGE_PUMP_OHOS_H_ 69 70diff --git a/base/process/internal_linux.h b/base/process/internal_linux.h 71index 10fa85a8fd..2a05361480 100644 72--- a/base/process/internal_linux.h 73+++ b/base/process/internal_linux.h 74@@ -11,6 +11,7 @@ 75 #include <stddef.h> 76 #include <stdint.h> 77 #include <unistd.h> 78+#include <string.h> 79 80 #include "base/files/dir_reader_posix.h" 81 #include "base/files/file_path.h" 82diff --git a/build/config/ohos/BUILD.gn b/build/config/ohos/BUILD.gn 83index 3e9b09269d..534f0020d7 100644 84--- a/build/config/ohos/BUILD.gn 85+++ b/build/config/ohos/BUILD.gn 86@@ -1,4 +1,4 @@ 87-# Copyright 2022 The Chromium Authors. All rights reserved. 88+# Copyright 2022 The Huawei Authors. All rights reserved. 89 # Use of this source code is governed by a BSD-style license that can be 90 # found in the LICENSE file. 91 92diff --git a/build/config/ohos/abi.gni b/build/config/ohos/abi.gni 93index 71cfb23ccc..146e385624 100644 94--- a/build/config/ohos/abi.gni 95+++ b/build/config/ohos/abi.gni 96@@ -1,4 +1,4 @@ 97-# Copyright 2022 The Chromium Authors. All rights reserved. 98+# Copyright 2022 The Huawei Authors. All rights reserved. 99 # Use of this source code is governed by a BSD-style license that can be 100 # found in the LICENSE file. 101 102diff --git a/build/config/ohos/config.gni b/build/config/ohos/config.gni 103index 951d4a7f26..c2d04f6262 100644 104--- a/build/config/ohos/config.gni 105+++ b/build/config/ohos/config.gni 106@@ -1,4 +1,4 @@ 107-# Copyright 2022 The Chromium Authors. All rights reserved. 108+# Copyright 2022 The Huawei Authors. All rights reserved. 109 # Use of this source code is governed by a BSD-style license that can be 110 # found in the LICENSE file. 111 112@@ -69,7 +69,7 @@ if (is_ohos) { 113 "$ohos_build_root/base/location/utils/include", 114 "$ohos_build_root/base/location/interfaces/innerkits/locator_standard/include", 115 "$ohos_build_root/base/location/location_common/common/include", 116- "$ohos_build_root/utils/system/safwk/native/include", 117+ "$ohos_build_root/foundation/distributedschedule/samgr/interfaces/innerkits/samgr_proxy/include", 118 ] 119 ohos_libs_dir = [ 120 "$ohos_build_root/out/ohos-arm-release/packages/phone/system/lib", 121diff --git a/build/toolchain/ohos/BUILD.gn b/build/toolchain/ohos/BUILD.gn 122index c8540c7b3a..2046bc1321 100644 123--- a/build/toolchain/ohos/BUILD.gn 124+++ b/build/toolchain/ohos/BUILD.gn 125@@ -1,4 +1,4 @@ 126-# Copyright 2022 The Chromium Authors. All rights reserved. 127+# Copyright 2022 The Huawei Authors. All rights reserved. 128 # Use of this source code is governed by a BSD-style license that can be 129 # found in the LICENSE file. 130 131diff --git a/buildtools/third_party/libc++/trunk/test/support/test_memory_resource.h b/buildtools/third_party/libc++/trunk/test/support/test_memory_resource.h 132index 1a0d722089..34a9988919 100644 133--- a/buildtools/third_party/libc++/trunk/test/support/test_memory_resource.h 134+++ b/buildtools/third_party/libc++/trunk/test/support/test_memory_resource.h 135@@ -98,7 +98,7 @@ protected: 136 private: 137 mutable AllocController C; 138 mutable Provider P; 139- DISALLOW_COPY(TestResourceImp); 140+ DISALLOW_COPY_BASE(TestResourceImp); 141 }; 142 143 template <class Provider, int N> 144@@ -117,7 +117,7 @@ struct NullProvider { 145 void deallocate(void*, size_t, size_t) {} 146 void reset() {} 147 private: 148- DISALLOW_COPY(NullProvider); 149+ DISALLOW_COPY_BASE(NullProvider); 150 }; 151 152 struct NewDeleteProvider { 153@@ -126,7 +126,7 @@ struct NewDeleteProvider { 154 void deallocate(void* p, size_t, size_t) { ::operator delete(p); } 155 void reset() {} 156 private: 157- DISALLOW_COPY(NewDeleteProvider); 158+ DISALLOW_COPY_BASE(NewDeleteProvider); 159 }; 160 161 template <size_t Size = 4096 * 10> // 10 pages worth of memory. 162@@ -157,7 +157,7 @@ struct BufferProvider { 163 space = Size; 164 } 165 private: 166- DISALLOW_COPY(BufferProvider); 167+ DISALLOW_COPY_BASE(BufferProvider); 168 }; 169 170 using NullResource = TestResourceImp<NullProvider, 0>; 171diff --git a/cc/mojom/BUILD.gn b/cc/mojom/BUILD.gn 172index e1392a9ec2..3d95042417 100644 173--- a/cc/mojom/BUILD.gn 174+++ b/cc/mojom/BUILD.gn 175@@ -21,8 +21,8 @@ component("shared_mojom_traits") { 176 177 mojom("mojom") { 178 generate_java = true 179- if (is_android) { 180- enabled_features = [ "is_android" ] 181+ if (is_android || is_ohos) { 182+ enabled_features = [ "is_android_or_ohos" ] 183 } 184 sources = [ 185 "browser_controls_params.mojom", 186diff --git a/cc/mojom/render_frame_metadata.mojom b/cc/mojom/render_frame_metadata.mojom 187index 3a087f778c..406647ea11 100644 188--- a/cc/mojom/render_frame_metadata.mojom 189+++ b/cc/mojom/render_frame_metadata.mojom 190@@ -1,3 +1,4 @@ 191+// Copyright (c) 2022 Huawei Device Co., Ltd. 192 // Copyright 2018 The Chromium Authors. All rights reserved. 193 // Use of this source code is governed by a BSD-style license that can be 194 // found in the LICENSE file. 195@@ -106,7 +107,7 @@ struct RenderFrameMetadata { 196 [EnableIf=is_android] 197 gfx.mojom.SizeF scrollable_viewport_size; 198 199- [EnableIf=is_android] 200+ [EnableIf=is_android_or_ohos] 201 gfx.mojom.SizeF root_layer_size; 202 203 [EnableIf=is_android] 204diff --git a/cc/mojom/render_frame_metadata_mojom_traits.cc b/cc/mojom/render_frame_metadata_mojom_traits.cc 205index b9eecfbf56..cef152a29c 100644 206--- a/cc/mojom/render_frame_metadata_mojom_traits.cc 207+++ b/cc/mojom/render_frame_metadata_mojom_traits.cc 208@@ -52,6 +52,9 @@ bool StructTraits< 209 #if defined(OS_ANDROID) 210 data.ReadScrollableViewportSize(&out->scrollable_viewport_size) && 211 data.ReadRootLayerSize(&out->root_layer_size) && 212+#endif 213+#if defined(OS_OHOS) 214+ data.ReadRootLayerSize(&out->root_layer_size) && 215 #endif 216 data.ReadViewportSizeInPixels(&out->viewport_size_in_pixels) && 217 data.ReadLocalSurfaceId(&out->local_surface_id) && 218diff --git a/cc/mojom/render_frame_metadata_mojom_traits.h b/cc/mojom/render_frame_metadata_mojom_traits.h 219index 66a3e7e5e1..628292831b 100644 220--- a/cc/mojom/render_frame_metadata_mojom_traits.h 221+++ b/cc/mojom/render_frame_metadata_mojom_traits.h 222@@ -145,6 +145,13 @@ struct COMPONENT_EXPORT(CC_SHARED_MOJOM_TRAITS) 223 } 224 #endif 225 226+#if defined(OS_OHOS) 227+ static const gfx::SizeF& root_layer_size( 228+ const cc::RenderFrameMetadata& metadata) { 229+ return metadata.root_layer_size; 230+ } 231+#endif 232+ 233 static bool Read(cc::mojom::RenderFrameMetadataDataView data, 234 cc::RenderFrameMetadata* out); 235 }; 236diff --git a/cc/trees/layer_tree_host_impl.cc b/cc/trees/layer_tree_host_impl.cc 237index edf67be0fa..4b51af0bd7 100644 238--- a/cc/trees/layer_tree_host_impl.cc 239+++ b/cc/trees/layer_tree_host_impl.cc 240@@ -2282,6 +2282,10 @@ RenderFrameMetadata LayerTreeHostImpl::MakeRenderFrameMetadata( 241 frame->render_passes.back()->has_transparent_background; 242 #endif 243 244+#if defined(OS_OHOS) 245+ metadata.root_layer_size = active_tree_->ScrollableSize(); 246+#endif 247+ 248 if (last_draw_render_frame_metadata_) { 249 const float last_root_scroll_offset_y = 250 last_draw_render_frame_metadata_->root_scroll_offset 251diff --git a/cc/trees/render_frame_metadata.cc b/cc/trees/render_frame_metadata.cc 252index 0efa349668..7e3fe221ab 100644 253--- a/cc/trees/render_frame_metadata.cc 254+++ b/cc/trees/render_frame_metadata.cc 255@@ -1,3 +1,4 @@ 256+// Copyright (c) 2022 Huawei Device Co., Ltd. 257 // Copyright 2018 The Chromium Authors. All rights reserved. 258 // Use of this source code is governed by a BSD-style license that can be 259 // found in the LICENSE file. 260@@ -36,6 +37,9 @@ bool RenderFrameMetadata::operator==(const RenderFrameMetadata& other) const { 261 external_page_scale_factor == other.external_page_scale_factor && 262 top_controls_height == other.top_controls_height && 263 top_controls_shown_ratio == other.top_controls_shown_ratio && 264+#if defined(OS_OHOS) 265+ root_layer_size == other.root_layer_size && 266+#endif 267 #if defined(OS_ANDROID) 268 bottom_controls_height == other.bottom_controls_height && 269 bottom_controls_shown_ratio == other.bottom_controls_shown_ratio && 270diff --git a/cc/trees/render_frame_metadata.h b/cc/trees/render_frame_metadata.h 271index 589a022fe4..88091333f3 100644 272--- a/cc/trees/render_frame_metadata.h 273+++ b/cc/trees/render_frame_metadata.h 274@@ -1,3 +1,4 @@ 275+// Copyright (c) 2022 Huawei Device Co., Ltd. 276 // Copyright 2018 The Chromium Authors. All rights reserved. 277 // Use of this source code is governed by a BSD-style license that can be 278 // found in the LICENSE file. 279@@ -115,6 +116,9 @@ class CC_EXPORT RenderFrameMetadata { 280 viz::VerticalScrollDirection new_vertical_scroll_direction = 281 viz::VerticalScrollDirection::kNull; 282 283+#if defined(OS_OHOS) 284+ gfx::SizeF root_layer_size; 285+#endif 286 #if defined(OS_ANDROID) 287 // Used to position Android bottom bar, whose position is computed by the 288 // renderer compositor. 289diff --git a/cef/BUILD.gn b/cef/BUILD.gn 290index 776db090a5..19a8c155ce 100644 291--- a/cef/BUILD.gn 292+++ b/cef/BUILD.gn 293@@ -526,6 +526,8 @@ static_library("libcef_static") { 294 "libcef/browser/file_dialog_manager.h", 295 "libcef/browser/frame_host_impl.cc", 296 "libcef/browser/frame_host_impl.h", 297+ "libcef/browser/icon_helper.cc", 298+ "libcef/browser/icon_helper.h", 299 "libcef/browser/image_impl.cc", 300 "libcef/browser/image_impl.h", 301 "libcef/browser/iothread_state.cc", 302@@ -591,6 +593,8 @@ static_library("libcef_static") { 303 "libcef/browser/net_service/stream_reader_url_loader.h", 304 "libcef/browser/net_service/url_loader_factory_getter.cc", 305 "libcef/browser/net_service/url_loader_factory_getter.h", 306+ "libcef/browser/net_service/net_helpers.cc", 307+ "libcef/browser/net_service/net_helpers.h", 308 "libcef/browser/origin_whitelist_impl.cc", 309 "libcef/browser/origin_whitelist_impl.h", 310 "libcef/browser/osr/browser_platform_delegate_osr.cc", 311@@ -612,6 +616,14 @@ static_library("libcef_static") { 312 "libcef/browser/osr/web_contents_view_osr.cc", 313 "libcef/browser/osr/web_contents_view_osr.h", 314 "libcef/browser/path_util_impl.cc", 315+ "libcef/browser/permission/alloy_access_request.cc", 316+ "libcef/browser/permission/alloy_access_request.h", 317+ "libcef/browser/permission/alloy_geolocation_access.cc", 318+ "libcef/browser/permission/alloy_geolocation_access.h", 319+ "libcef/browser/permission/alloy_permission_manager.cc", 320+ "libcef/browser/permission/alloy_permission_manager.h", 321+ "libcef/browser/permission/alloy_permission_request_handler.cc", 322+ "libcef/browser/permission/alloy_permission_request_handler.h", 323 "libcef/browser/plugins/plugin_service_filter.cc", 324 "libcef/browser/plugins/plugin_service_filter.h", 325 "libcef/browser/prefs/browser_prefs.cc", 326@@ -765,6 +777,8 @@ static_library("libcef_static") { 327 "libcef/features/runtime_checks.h", 328 "libcef/renderer/alloy/alloy_content_renderer_client.cc", 329 "libcef/renderer/alloy/alloy_content_renderer_client.h", 330+ "libcef/renderer/alloy/alloy_content_settings_client.cc", 331+ "libcef/renderer/alloy/alloy_content_settings_client.h", 332 "libcef/renderer/alloy/alloy_render_frame_observer.cc", 333 "libcef/renderer/alloy/alloy_render_frame_observer.h", 334 "libcef/renderer/alloy/alloy_render_thread_observer.cc", 335@@ -804,6 +818,31 @@ static_library("libcef_static") { 336 # For Chrome runtime support. 337 "//chrome/app/chrome_main_delegate.cc", 338 "//chrome/app/chrome_main_delegate.h", 339+ 340+ # For Javascript 341+ "libcef/browser/javascript/oh_javascript_injector.h", 342+ "libcef/browser/javascript/oh_javascript_injector.cc", 343+ "libcef/browser/javascript/oh_gin_javascript_bridge_dispatcher_host.h", 344+ "libcef/browser/javascript/oh_gin_javascript_bridge_dispatcher_host.cc", 345+ "libcef/browser/javascript/oh_gin_javascript_bridge_message_filter.h", 346+ "libcef/browser/javascript/oh_gin_javascript_bridge_message_filter.cc", 347+ "libcef/browser/javascript/oh_gin_javascript_bridge_object_deletion_message_filter.h", 348+ "libcef/browser/javascript/oh_gin_javascript_bridge_object_deletion_message_filter.cc", 349+ "libcef/common/javascript/oh_gin_javascript_bridge_messages.h", 350+ "libcef/common/javascript/oh_gin_javascript_bridge_message_generator.h", 351+ "libcef/common/javascript/oh_gin_javascript_bridge_message_generator.cc", 352+ "libcef/common/javascript/oh_gin_javascript_bridge_errors.h", 353+ "libcef/common/javascript/oh_gin_javascript_bridge_errors.cc", 354+ "libcef/common/javascript/oh_gin_javascript_bridge_value.h", 355+ "libcef/common/javascript/oh_gin_javascript_bridge_value.cc", 356+ "libcef/renderer/javascript/oh_gin_javascript_bridge_dispatcher.h", 357+ "libcef/renderer/javascript/oh_gin_javascript_bridge_dispatcher.cc", 358+ "libcef/renderer/javascript/oh_gin_javascript_bridge_object.h", 359+ "libcef/renderer/javascript/oh_gin_javascript_bridge_object.cc", 360+ "libcef/renderer/javascript/oh_gin_javascript_function_invocation_helper.h", 361+ "libcef/renderer/javascript/oh_gin_javascript_function_invocation_helper.cc", 362+ "libcef/renderer/javascript/oh_gin_javascript_bridge_value_converter.h", 363+ "libcef/renderer/javascript/oh_gin_javascript_bridge_value_converter.cc", 364 ] 365 366 configs += [ 367@@ -1238,6 +1277,9 @@ static_library("libcef_static") { 368 # Part of //ui/aura:test_support which is testingonly. 369 "//ui/aura/test/aura_test_utils.cc", 370 "//ui/aura/test/aura_test_utils.h", 371+ # Part of //ui/events:test_support which is testingonly. 372+ # "//ui/events/test/x11_event_waiter.cc", 373+ # "//ui/events/test/x11_event_waiter.h", 374 ] 375 } 376 } 377@@ -1642,7 +1684,7 @@ if (is_mac) { 378 info_plist_target = ":cef_framework_plist" 379 } 380 } else { 381- shared_library("libcef") { 382+ shared_library("libweb_engine") { 383 sources = includes_common + 384 gypi_paths.autogen_cpp_includes + 385 gypi_paths2.includes_capi + 386@@ -2091,7 +2133,7 @@ if (is_mac) { 387 gypi_paths2.cefclient_sources_renderer 388 389 deps = [ 390- ":libcef", 391+ ":libweb_engine", 392 ":libcef_dll_wrapper", 393 ] 394 395@@ -2179,7 +2221,7 @@ if (is_mac) { 396 gypi_paths2.cefsimple_sources_common 397 398 deps = [ 399- ":libcef", 400+ ":libweb_engine", 401 ":libcef_dll_wrapper", 402 ] 403 404@@ -2247,7 +2289,7 @@ if (is_mac) { 405 gypi_paths2.ceftests_sources_common 406 407 deps = [ 408- ":libcef", 409+ ":libweb_engine", 410 ":libcef_dll_wrapper", 411 "//testing/gtest", 412 ] 413@@ -2290,4 +2332,60 @@ if (is_mac) { 414 configs += [ "//build/config/gcc:rpath_for_built_shared_libraries" ] 415 } 416 } 417+ 418+ # ohosclient 419+ if (is_linux || is_ohos) { 420+ copy("copy_ohosclient_files") { 421+ sources = gypi_paths2.shared_sources_resources + 422+ gypi_paths2.ohosclient_sources_resources 423+ outputs = [ "${root_out_dir}/ohosclient_files/{{source_file_part}}" ] 424+ } 425+ 426+ copy("copy_ohosclient_files_extensions_set_page_color") { 427+ sources = gypi_paths2.ohosclient_sources_resources_extensions_set_page_color 428+ outputs = [ "${root_out_dir}/ohosclient_files/extensions/set_page_color/{{source_file_part}}" ] 429+ } 430+ } 431+ 432+ executable("ohosclient") { 433+ sources = includes_common + 434+ gypi_paths2.includes_wrapper + 435+ gypi_paths2.shared_sources_browser + 436+ gypi_paths2.shared_sources_common + 437+ gypi_paths2.shared_sources_renderer + 438+ gypi_paths2.ohosclient_sources_browser + 439+ gypi_paths2.ohosclient_sources_common + 440+ gypi_paths2.ohosclient_sources_renderer 441+ 442+ deps = [ 443+ ":libweb_engine", 444+ ":libcef_dll_wrapper", 445+ ] 446+ 447+ defines = [ 448+ "CEF_USE_SANDBOX", 449+ ] 450+ 451+ if (is_linux || is_ohos) { 452+ sources += includes_linux + 453+ gypi_paths2.shared_sources_ohos + 454+ gypi_paths2.ohosclient_sources_linux 455+ 456+ deps += [ 457+ ":copy_ohosclient_files", 458+ ":copy_ohosclient_files_extensions_set_page_color", 459+ ] 460+ 461+ if (is_component_build) { 462+ if (use_allocator=="tcmalloc") { 463+ # Link to base to initialize tcmalloc allocator shims, otherwise 464+ # base::allocator::IsAllocatorInitialized check fails 465+ deps += [ "//base" ] 466+ } 467+ } else { 468+ # Set rpath to find our own libfreetype even in a non-component build. 469+ configs += [ "//build/config/gcc:rpath_for_built_shared_libraries" ] 470+ } 471+ } 472+ } 473 } 474diff --git a/cef/CHROMIUM_BUILD_COMPATIBILITY.txt b/cef/CHROMIUM_BUILD_COMPATIBILITY.txt 475index 99fa87f10b..5dbbfb462b 100644 476--- a/cef/CHROMIUM_BUILD_COMPATIBILITY.txt 477+++ b/cef/CHROMIUM_BUILD_COMPATIBILITY.txt 478@@ -7,6 +7,6 @@ 479 # https://bitbucket.org/chromiumembedded/cef/wiki/BranchesAndBuilding 480 481 { 482- 'chromium_checkout': 'refs/tags/91.0.4472.164', 483+ 'chromium_checkout': 'refs/tags/91.0.4472.114', 484 'depot_tools_checkout': '61bf6e8d69' 485 } 486diff --git a/cef/cef_paths.gypi b/cef/cef_paths.gypi 487index b7980f952e..ba3e786a57 100644 488--- a/cef/cef_paths.gypi 489+++ b/cef/cef_paths.gypi 490@@ -1,4 +1,4 @@ 491-# Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 492+# Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 493 # reserved. Use of this source code is governed by a BSD-style license that 494 # can be found in the LICENSE file. 495 # 496@@ -8,7 +8,7 @@ 497 # by hand. See the translator.README.txt file in the tools directory for 498 # more information. 499 # 500-# $hash=f1877c7a493342351e284cb6c14e6f223461facb$ 501+# $hash=36817748589a28de2402aa1476d2820f0c3f7ead$ 502 # 503 504 { 505@@ -52,6 +52,7 @@ 506 'include/cef_origin_whitelist.h', 507 'include/cef_parser.h', 508 'include/cef_path_util.h', 509+ 'include/cef_permission_request.h', 510 'include/cef_print_handler.h', 511 'include/cef_print_settings.h', 512 'include/cef_process_message.h', 513@@ -149,6 +150,7 @@ 514 'include/capi/cef_origin_whitelist_capi.h', 515 'include/capi/cef_parser_capi.h', 516 'include/capi/cef_path_util_capi.h', 517+ 'include/capi/cef_permission_request_capi.h', 518 'include/capi/cef_print_handler_capi.h', 519 'include/capi/cef_print_settings_capi.h', 520 'include/capi/cef_process_message_capi.h', 521@@ -208,6 +210,8 @@ 522 'include/capi/views/cef_window_delegate_capi.h', 523 ], 524 'autogen_library_side': [ 525+ 'libcef_dll/cpptoc/access_request_cpptoc.cc', 526+ 'libcef_dll/cpptoc/access_request_cpptoc.h', 527 'libcef_dll/ctocpp/accessibility_handler_ctocpp.cc', 528 'libcef_dll/ctocpp/accessibility_handler_ctocpp.h', 529 'libcef_dll/ctocpp/app_ctocpp.cc', 530@@ -226,6 +230,8 @@ 531 'libcef_dll/cpptoc/browser_cpptoc.h', 532 'libcef_dll/cpptoc/browser_host_cpptoc.cc', 533 'libcef_dll/cpptoc/browser_host_cpptoc.h', 534+ 'libcef_dll/cpptoc/browser_permission_request_delegate_cpptoc.cc', 535+ 'libcef_dll/cpptoc/browser_permission_request_delegate_cpptoc.h', 536 'libcef_dll/ctocpp/browser_process_handler_ctocpp.cc', 537 'libcef_dll/ctocpp/browser_process_handler_ctocpp.h', 538 'libcef_dll/cpptoc/views/browser_view_cpptoc.cc', 539@@ -300,6 +306,8 @@ 540 'libcef_dll/ctocpp/focus_handler_ctocpp.h', 541 'libcef_dll/cpptoc/frame_cpptoc.cc', 542 'libcef_dll/cpptoc/frame_cpptoc.h', 543+ 'libcef_dll/cpptoc/geolocation_acess_cpptoc.cc', 544+ 'libcef_dll/cpptoc/geolocation_acess_cpptoc.h', 545 'libcef_dll/cpptoc/get_extension_resource_callback_cpptoc.cc', 546 'libcef_dll/cpptoc/get_extension_resource_callback_cpptoc.h', 547 'libcef_dll/cpptoc/image_cpptoc.cc', 548@@ -308,6 +316,8 @@ 549 'libcef_dll/cpptoc/jsdialog_callback_cpptoc.h', 550 'libcef_dll/ctocpp/jsdialog_handler_ctocpp.cc', 551 'libcef_dll/ctocpp/jsdialog_handler_ctocpp.h', 552+ 'libcef_dll/ctocpp/java_script_result_callback_ctocpp.cc', 553+ 'libcef_dll/ctocpp/java_script_result_callback_ctocpp.h', 554 'libcef_dll/ctocpp/keyboard_handler_ctocpp.cc', 555 'libcef_dll/ctocpp/keyboard_handler_ctocpp.h', 556 'libcef_dll/cpptoc/views/label_button_cpptoc.cc', 557@@ -354,6 +364,8 @@ 558 'libcef_dll/ctocpp/views/panel_delegate_ctocpp.h', 559 'libcef_dll/ctocpp/pdf_print_callback_ctocpp.cc', 560 'libcef_dll/ctocpp/pdf_print_callback_ctocpp.h', 561+ 'libcef_dll/ctocpp/permission_request_ctocpp.cc', 562+ 'libcef_dll/ctocpp/permission_request_ctocpp.h', 563 'libcef_dll/cpptoc/post_data_cpptoc.cc', 564 'libcef_dll/cpptoc/post_data_cpptoc.h', 565 'libcef_dll/cpptoc/post_data_element_cpptoc.cc', 566@@ -518,6 +530,8 @@ 567 'libcef_dll/cpptoc/zip_reader_cpptoc.h', 568 ], 569 'autogen_client_side': [ 570+ 'libcef_dll/ctocpp/access_request_ctocpp.cc', 571+ 'libcef_dll/ctocpp/access_request_ctocpp.h', 572 'libcef_dll/cpptoc/accessibility_handler_cpptoc.cc', 573 'libcef_dll/cpptoc/accessibility_handler_cpptoc.h', 574 'libcef_dll/cpptoc/app_cpptoc.cc', 575@@ -536,6 +550,8 @@ 576 'libcef_dll/ctocpp/browser_ctocpp.h', 577 'libcef_dll/ctocpp/browser_host_ctocpp.cc', 578 'libcef_dll/ctocpp/browser_host_ctocpp.h', 579+ 'libcef_dll/ctocpp/browser_permission_request_delegate_ctocpp.cc', 580+ 'libcef_dll/ctocpp/browser_permission_request_delegate_ctocpp.h', 581 'libcef_dll/cpptoc/browser_process_handler_cpptoc.cc', 582 'libcef_dll/cpptoc/browser_process_handler_cpptoc.h', 583 'libcef_dll/ctocpp/views/browser_view_ctocpp.cc', 584@@ -610,6 +626,8 @@ 585 'libcef_dll/cpptoc/focus_handler_cpptoc.h', 586 'libcef_dll/ctocpp/frame_ctocpp.cc', 587 'libcef_dll/ctocpp/frame_ctocpp.h', 588+ 'libcef_dll/ctocpp/geolocation_acess_ctocpp.cc', 589+ 'libcef_dll/ctocpp/geolocation_acess_ctocpp.h', 590 'libcef_dll/ctocpp/get_extension_resource_callback_ctocpp.cc', 591 'libcef_dll/ctocpp/get_extension_resource_callback_ctocpp.h', 592 'libcef_dll/ctocpp/image_ctocpp.cc', 593@@ -618,6 +636,8 @@ 594 'libcef_dll/ctocpp/jsdialog_callback_ctocpp.h', 595 'libcef_dll/cpptoc/jsdialog_handler_cpptoc.cc', 596 'libcef_dll/cpptoc/jsdialog_handler_cpptoc.h', 597+ 'libcef_dll/cpptoc/java_script_result_callback_cpptoc.cc', 598+ 'libcef_dll/cpptoc/java_script_result_callback_cpptoc.h', 599 'libcef_dll/cpptoc/keyboard_handler_cpptoc.cc', 600 'libcef_dll/cpptoc/keyboard_handler_cpptoc.h', 601 'libcef_dll/ctocpp/views/label_button_ctocpp.cc', 602@@ -664,6 +684,8 @@ 603 'libcef_dll/cpptoc/views/panel_delegate_cpptoc.h', 604 'libcef_dll/cpptoc/pdf_print_callback_cpptoc.cc', 605 'libcef_dll/cpptoc/pdf_print_callback_cpptoc.h', 606+ 'libcef_dll/cpptoc/permission_request_cpptoc.cc', 607+ 'libcef_dll/cpptoc/permission_request_cpptoc.h', 608 'libcef_dll/ctocpp/post_data_ctocpp.cc', 609 'libcef_dll/ctocpp/post_data_ctocpp.h', 610 'libcef_dll/ctocpp/post_data_element_ctocpp.cc', 611diff --git a/cef/cef_paths2.gypi b/cef/cef_paths2.gypi 612index 0ad653c010..a9764b8772 100644 613--- a/cef/cef_paths2.gypi 614+++ b/cef/cef_paths2.gypi 615@@ -201,6 +201,9 @@ 616 'tests/shared/browser/main_message_loop_external_pump_linux.cc', 617 'tests/shared/browser/resource_util_posix.cc', 618 ], 619+ 'shared_sources_ohos': [ 620+ 'tests/shared/browser/resource_util_posix.cc', 621+ ], 622 'shared_sources_mac': [ 623 'tests/shared/browser/main_message_loop_external_pump_mac.mm', 624 'tests/shared/browser/resource_util_mac.mm', 625@@ -603,5 +606,98 @@ 626 'ceftests_sources_linux': [ 627 'tests/ceftests/resource_util_linux.cc', 628 ], 629+ 'ohosclient_sources_browser': [ 630+ 'tests/ohosclient/browser/browser_window.cc', 631+ 'tests/ohosclient/browser/browser_window.h', 632+ 'tests/ohosclient/browser/bytes_write_handler.cc', 633+ 'tests/ohosclient/browser/bytes_write_handler.h', 634+ 'tests/ohosclient/browser/client_app_delegates_browser.cc', 635+ 'tests/ohosclient/browser/client_browser.cc', 636+ 'tests/ohosclient/browser/client_browser.h', 637+ 'tests/ohosclient/browser/client_handler.cc', 638+ 'tests/ohosclient/browser/client_handler.h', 639+ 'tests/ohosclient/browser/client_handler_osr.cc', 640+ 'tests/ohosclient/browser/client_handler_osr.h', 641+ 'tests/ohosclient/browser/client_handler_std.cc', 642+ 'tests/ohosclient/browser/client_handler_std.h', 643+ 'tests/ohosclient/browser/client_types.h', 644+ 'tests/ohosclient/browser/image_cache.cc', 645+ 'tests/ohosclient/browser/image_cache.h', 646+ 'tests/ohosclient/browser/main_context.cc', 647+ 'tests/ohosclient/browser/main_context.h', 648+ 'tests/ohosclient/browser/main_context_impl.cc', 649+ 'tests/ohosclient/browser/main_context_impl.h', 650+ 'tests/ohosclient/browser/osr_dragdrop_events.h', 651+ 'tests/ohosclient/browser/osr_renderer.h', 652+ 'tests/ohosclient/browser/osr_renderer.cc', 653+ 'tests/ohosclient/browser/osr_renderer_settings.h', 654+ 'tests/ohosclient/browser/resource.h', 655+ 'tests/ohosclient/browser/root_window.cc', 656+ 'tests/ohosclient/browser/root_window.h', 657+ 'tests/ohosclient/browser/root_window_create.cc', 658+ 'tests/ohosclient/browser/root_window_manager.cc', 659+ 'tests/ohosclient/browser/root_window_manager.h', 660+ 'tests/ohosclient/browser/root_window_views.cc', 661+ 'tests/ohosclient/browser/root_window_views.h', 662+ 'tests/ohosclient/browser/temp_window.h', 663+ 'tests/ohosclient/browser/views_menu_bar.cc', 664+ 'tests/ohosclient/browser/views_menu_bar.h', 665+ 'tests/ohosclient/browser/views_style.cc', 666+ 'tests/ohosclient/browser/views_style.h', 667+ 'tests/ohosclient/browser/views_window.cc', 668+ 'tests/ohosclient/browser/views_window.h', 669+ ], 670+ 'ohosclient_sources_common': [ 671+ 'tests/ohosclient/common/client_app_delegates_common.cc', 672+ ], 673+ 'ohosclient_sources_renderer': [ 674+ 'tests/ohosclient/renderer/client_app_delegates_renderer.cc', 675+ 'tests/ohosclient/renderer/client_renderer.cc', 676+ 'tests/ohosclient/renderer/client_renderer.h', 677+ ], 678+ 'ohosclient_sources_resources': [ 679+ 'tests/ohosclient/resources/binding.html', 680+ 'tests/ohosclient/resources/dialogs.html', 681+ 'tests/ohosclient/resources/draggable.html', 682+ 'tests/ohosclient/resources/drm.html', 683+ 'tests/ohosclient/resources/localstorage.html', 684+ 'tests/ohosclient/resources/logo.png', 685+ 'tests/ohosclient/resources/media_router.html', 686+ 'tests/ohosclient/resources/menu_icon.1x.png', 687+ 'tests/ohosclient/resources/menu_icon.2x.png', 688+ 'tests/ohosclient/resources/other_tests.html', 689+ 'tests/ohosclient/resources/performance.html', 690+ 'tests/ohosclient/resources/performance2.html', 691+ 'tests/ohosclient/resources/preferences.html', 692+ 'tests/ohosclient/resources/response_filter.html', 693+ 'tests/ohosclient/resources/server.html', 694+ 'tests/ohosclient/resources/transparency.html', 695+ 'tests/ohosclient/resources/urlrequest.html', 696+ 'tests/ohosclient/resources/websocket.html', 697+ 'tests/ohosclient/resources/window.html', 698+ 'tests/ohosclient/resources/xmlhttprequest.html', 699+ ], 700+ 'ohosclient_sources_resources_extensions_set_page_color': [ 701+ 'tests/ohosclient/resources/extensions/set_page_color/icon.png', 702+ 'tests/ohosclient/resources/extensions/set_page_color/manifest.json', 703+ 'tests/ohosclient/resources/extensions/set_page_color/popup.html', 704+ 'tests/ohosclient/resources/extensions/set_page_color/popup.js', 705+ 'tests/ohosclient/resources/extensions/set_page_color/README.md', 706+ ], 707+ 'ohosclient_sources_linux': [ 708+ 'tests/ohosclient/browser/browser_window_osr_ohos.cc', 709+ 'tests/ohosclient/browser/browser_window_osr_ohos.h', 710+ 'tests/ohosclient/browser/dialog_handler_ohos.cc', 711+ 'tests/ohosclient/browser/dialog_handler_ohos.h', 712+ 'tests/ohosclient/browser/main_context_impl_posix.cc', 713+ 'tests/ohosclient/browser/print_handler_ohos.cc', 714+ 'tests/ohosclient/browser/print_handler_ohos.h', 715+ 'tests/ohosclient/browser/resource_util_ohos.cc', 716+ 'tests/ohosclient/browser/root_window_ohos.cc', 717+ 'tests/ohosclient/browser/root_window_ohos.h', 718+ 'tests/ohosclient/browser/util_ohos.cc', 719+ 'tests/ohosclient/browser/util_ohos.h', 720+ 'tests/ohosclient/ohosclient.cc', 721+ ], 722 }, 723 } 724diff --git a/cef/include/base/internal/cef_net_error_list_ohos.h b/cef/include/base/internal/cef_net_error_list_ohos.h 725new file mode 100644 726index 0000000000..f2fb9124b8 727--- /dev/null 728+++ b/cef/include/base/internal/cef_net_error_list_ohos.h 729@@ -0,0 +1,998 @@ 730+// Copyright (c) 2022 The Huawei Authors. All rights reserved. 731+// Use of this source code is governed by a BSD-style license that can be 732+// found in the LICENSE file. 733+ 734+// This file intentionally does not have header guards, it's included 735+// inside a macro to generate enum values. The following line silences a 736+// presubmit and Tricium warning that would otherwise be triggered by this: 737+// no-include-guard-because-multiply-included 738+// NOLINT(build/header_guard) 739+ 740+// This file contains the list of network errors. 741+ 742+// 743+// Ranges: 744+// 0- 99 System related errors 745+// 100-199 Connection related errors 746+// 200-299 Certificate errors 747+// 300-399 HTTP errors 748+// 400-499 Cache errors 749+// 500-599 ? 750+// 600-699 FTP errors 751+// 700-799 Certificate manager errors 752+// 800-899 DNS resolver errors 753+ 754+// An asynchronous IO operation is not yet complete. This usually does not 755+// indicate a fatal error. Typically this error will be generated as a 756+// notification to wait for some external notification that the IO operation 757+// finally completed. 758+NET_ERROR(IO_PENDING, -1) 759+ 760+// A generic failure occurred. 761+NET_ERROR(FAILED, -2) 762+ 763+// An operation was aborted (due to user action). 764+NET_ERROR(ABORTED, -3) 765+ 766+// An argument to the function is incorrect. 767+NET_ERROR(INVALID_ARGUMENT, -4) 768+ 769+// The handle or file descriptor is invalid. 770+NET_ERROR(INVALID_HANDLE, -5) 771+ 772+// The file or directory cannot be found. 773+NET_ERROR(FILE_NOT_FOUND, -6) 774+ 775+// An operation timed out. 776+NET_ERROR(TIMED_OUT, -7) 777+ 778+// The file is too large. 779+NET_ERROR(FILE_TOO_BIG, -8) 780+ 781+// An unexpected error. This may be caused by a programming mistake or an 782+// invalid assumption. 783+NET_ERROR(UNEXPECTED, -9) 784+ 785+// Permission to access a resource, other than the network, was denied. 786+NET_ERROR(ACCESS_DENIED, -10) 787+ 788+// The operation failed because of unimplemented functionality. 789+NET_ERROR(NOT_IMPLEMENTED, -11) 790+ 791+// There were not enough resources to complete the operation. 792+NET_ERROR(INSUFFICIENT_RESOURCES, -12) 793+ 794+// Memory allocation failed. 795+NET_ERROR(OUT_OF_MEMORY, -13) 796+ 797+// The file upload failed because the file's modification time was different 798+// from the expectation. 799+NET_ERROR(UPLOAD_FILE_CHANGED, -14) 800+ 801+// The socket is not connected. 802+NET_ERROR(SOCKET_NOT_CONNECTED, -15) 803+ 804+// The file already exists. 805+NET_ERROR(FILE_EXISTS, -16) 806+ 807+// The path or file name is too long. 808+NET_ERROR(FILE_PATH_TOO_LONG, -17) 809+ 810+// Not enough room left on the disk. 811+NET_ERROR(FILE_NO_SPACE, -18) 812+ 813+// The file has a virus. 814+NET_ERROR(FILE_VIRUS_INFECTED, -19) 815+ 816+// The client chose to block the request. 817+NET_ERROR(BLOCKED_BY_CLIENT, -20) 818+ 819+// The network changed. 820+NET_ERROR(NETWORK_CHANGED, -21) 821+ 822+// The request was blocked by the URL block list configured by the domain 823+// administrator. 824+NET_ERROR(BLOCKED_BY_ADMINISTRATOR, -22) 825+ 826+// The socket is already connected. 827+NET_ERROR(SOCKET_IS_CONNECTED, -23) 828+ 829+// The request was blocked because the forced reenrollment check is still 830+// pending. This error can only occur on ChromeOS. 831+// The error can be emitted by code in chrome/browser/policy/policy_helpers.cc. 832+NET_ERROR(BLOCKED_ENROLLMENT_CHECK_PENDING, -24) 833+ 834+// The upload failed because the upload stream needed to be re-read, due to a 835+// retry or a redirect, but the upload stream doesn't support that operation. 836+NET_ERROR(UPLOAD_STREAM_REWIND_NOT_SUPPORTED, -25) 837+ 838+// The request failed because the URLRequestContext is shutting down, or has 839+// been shut down. 840+NET_ERROR(CONTEXT_SHUT_DOWN, -26) 841+ 842+// The request failed because the response was delivered along with requirements 843+// which are not met ('X-Frame-Options' and 'Content-Security-Policy' ancestor 844+// checks and 'Cross-Origin-Resource-Policy', for instance). 845+NET_ERROR(BLOCKED_BY_RESPONSE, -27) 846+ 847+// Error -28 was removed (BLOCKED_BY_XSS_AUDITOR). 848+ 849+// The request was blocked by system policy disallowing some or all cleartext 850+// requests. Used for NetworkSecurityPolicy on Android. 851+NET_ERROR(CLEARTEXT_NOT_PERMITTED, -29) 852+ 853+// The request was blocked by a Content Security Policy 854+NET_ERROR(BLOCKED_BY_CSP, -30) 855+ 856+// The request was blocked because of no H/2 or QUIC session. 857+NET_ERROR(H2_OR_QUIC_REQUIRED, -31) 858+ 859+// A connection was closed (corresponding to a TCP FIN). 860+NET_ERROR(CONNECTION_CLOSED, -100) 861+ 862+// A connection was reset (corresponding to a TCP RST). 863+NET_ERROR(CONNECTION_RESET, -101) 864+ 865+// A connection attempt was refused. 866+NET_ERROR(CONNECTION_REFUSED, -102) 867+ 868+// A connection timed out as a result of not receiving an ACK for data sent. 869+// This can include a FIN packet that did not get ACK'd. 870+NET_ERROR(CONNECTION_ABORTED, -103) 871+ 872+// A connection attempt failed. 873+NET_ERROR(CONNECTION_FAILED, -104) 874+ 875+// The host name could not be resolved. 876+NET_ERROR(NAME_NOT_RESOLVED, -105) 877+ 878+// The Internet connection has been lost. 879+NET_ERROR(INTERNET_DISCONNECTED, -106) 880+ 881+// An SSL protocol error occurred. 882+NET_ERROR(SSL_PROTOCOL_ERROR, -107) 883+ 884+// The IP address or port number is invalid (e.g., cannot connect to the IP 885+// address 0 or the port 0). 886+NET_ERROR(ADDRESS_INVALID, -108) 887+ 888+// The IP address is unreachable. This usually means that there is no route to 889+// the specified host or network. 890+NET_ERROR(ADDRESS_UNREACHABLE, -109) 891+ 892+// The server requested a client certificate for SSL client authentication. 893+NET_ERROR(SSL_CLIENT_AUTH_CERT_NEEDED, -110) 894+ 895+// A tunnel connection through the proxy could not be established. 896+NET_ERROR(TUNNEL_CONNECTION_FAILED, -111) 897+ 898+// No SSL protocol versions are enabled. 899+NET_ERROR(NO_SSL_VERSIONS_ENABLED, -112) 900+ 901+// The client and server don't support a common SSL protocol version or 902+// cipher suite. 903+NET_ERROR(SSL_VERSION_OR_CIPHER_MISMATCH, -113) 904+ 905+// The server requested a renegotiation (rehandshake). 906+NET_ERROR(SSL_RENEGOTIATION_REQUESTED, -114) 907+ 908+// The proxy requested authentication (for tunnel establishment) with an 909+// unsupported method. 910+NET_ERROR(PROXY_AUTH_UNSUPPORTED, -115) 911+ 912+// During SSL renegotiation (rehandshake), the server sent a certificate with 913+// an error. 914+// 915+// Note: this error is not in the -2xx range so that it won't be handled as a 916+// certificate error. 917+NET_ERROR(CERT_ERROR_IN_SSL_RENEGOTIATION, -116) 918+ 919+// The SSL handshake failed because of a bad or missing client certificate. 920+NET_ERROR(BAD_SSL_CLIENT_AUTH_CERT, -117) 921+ 922+// A connection attempt timed out. 923+NET_ERROR(CONNECTION_TIMED_OUT, -118) 924+ 925+// There are too many pending DNS resolves, so a request in the queue was 926+// aborted. 927+NET_ERROR(HOST_RESOLVER_QUEUE_TOO_LARGE, -119) 928+ 929+// Failed establishing a connection to the SOCKS proxy server for a target host. 930+NET_ERROR(SOCKS_CONNECTION_FAILED, -120) 931+ 932+// The SOCKS proxy server failed establishing connection to the target host 933+// because that host is unreachable. 934+NET_ERROR(SOCKS_CONNECTION_HOST_UNREACHABLE, -121) 935+ 936+// The request to negotiate an alternate protocol failed. 937+NET_ERROR(ALPN_NEGOTIATION_FAILED, -122) 938+ 939+// The peer sent an SSL no_renegotiation alert message. 940+NET_ERROR(SSL_NO_RENEGOTIATION, -123) 941+ 942+// Winsock sometimes reports more data written than passed. This is probably 943+// due to a broken LSP. 944+NET_ERROR(WINSOCK_UNEXPECTED_WRITTEN_BYTES, -124) 945+ 946+// An SSL peer sent us a fatal decompression_failure alert. This typically 947+// occurs when a peer selects DEFLATE compression in the mistaken belief that 948+// it supports it. 949+NET_ERROR(SSL_DECOMPRESSION_FAILURE_ALERT, -125) 950+ 951+// An SSL peer sent us a fatal bad_record_mac alert. This has been observed 952+// from servers with buggy DEFLATE support. 953+NET_ERROR(SSL_BAD_RECORD_MAC_ALERT, -126) 954+ 955+// The proxy requested authentication (for tunnel establishment). 956+NET_ERROR(PROXY_AUTH_REQUESTED, -127) 957+ 958+// Error -129 was removed (SSL_WEAK_SERVER_EPHEMERAL_DH_KEY). 959+ 960+// Could not create a connection to the proxy server. An error occurred 961+// either in resolving its name, or in connecting a socket to it. 962+// Note that this does NOT include failures during the actual "CONNECT" method 963+// of an HTTP proxy. 964+NET_ERROR(PROXY_CONNECTION_FAILED, -130) 965+ 966+// A mandatory proxy configuration could not be used. Currently this means 967+// that a mandatory PAC script could not be fetched, parsed or executed. 968+NET_ERROR(MANDATORY_PROXY_CONFIGURATION_FAILED, -131) 969+ 970+// -132 was formerly ERR_ESET_ANTI_VIRUS_SSL_INTERCEPTION 971+ 972+// We've hit the max socket limit for the socket pool while preconnecting. We 973+// don't bother trying to preconnect more sockets. 974+NET_ERROR(PRECONNECT_MAX_SOCKET_LIMIT, -133) 975+ 976+// The permission to use the SSL client certificate's private key was denied. 977+NET_ERROR(SSL_CLIENT_AUTH_PRIVATE_KEY_ACCESS_DENIED, -134) 978+ 979+// The SSL client certificate has no private key. 980+NET_ERROR(SSL_CLIENT_AUTH_CERT_NO_PRIVATE_KEY, -135) 981+ 982+// The certificate presented by the HTTPS Proxy was invalid. 983+NET_ERROR(PROXY_CERTIFICATE_INVALID, -136) 984+ 985+// An error occurred when trying to do a name resolution (DNS). 986+NET_ERROR(NAME_RESOLUTION_FAILED, -137) 987+ 988+// Permission to access the network was denied. This is used to distinguish 989+// errors that were most likely caused by a firewall from other access denied 990+// errors. See also ERR_ACCESS_DENIED. 991+NET_ERROR(NETWORK_ACCESS_DENIED, -138) 992+ 993+// The request throttler module cancelled this request to avoid DDOS. 994+NET_ERROR(TEMPORARILY_THROTTLED, -139) 995+ 996+// A request to create an SSL tunnel connection through the HTTPS proxy 997+// received a 302 (temporary redirect) response. The response body might 998+// include a description of why the request failed. 999+// 1000+// TODO(https://crbug.com/928551): This is deprecated and should not be used by 1001+// new code. 1002+NET_ERROR(HTTPS_PROXY_TUNNEL_RESPONSE_REDIRECT, -140) 1003+ 1004+// We were unable to sign the CertificateVerify data of an SSL client auth 1005+// handshake with the client certificate's private key. 1006+// 1007+// Possible causes for this include the user implicitly or explicitly 1008+// denying access to the private key, the private key may not be valid for 1009+// signing, the key may be relying on a cached handle which is no longer 1010+// valid, or the CSP won't allow arbitrary data to be signed. 1011+NET_ERROR(SSL_CLIENT_AUTH_SIGNATURE_FAILED, -141) 1012+ 1013+// The message was too large for the transport. (for example a UDP message 1014+// which exceeds size threshold). 1015+NET_ERROR(MSG_TOO_BIG, -142) 1016+ 1017+// Error -143 was removed (SPDY_SESSION_ALREADY_EXISTS) 1018+ 1019+// Error -144 was removed (LIMIT_VIOLATION). 1020+ 1021+// Websocket protocol error. Indicates that we are terminating the connection 1022+// due to a malformed frame or other protocol violation. 1023+NET_ERROR(WS_PROTOCOL_ERROR, -145) 1024+ 1025+// Error -146 was removed (PROTOCOL_SWITCHED) 1026+ 1027+// Returned when attempting to bind an address that is already in use. 1028+NET_ERROR(ADDRESS_IN_USE, -147) 1029+ 1030+// An operation failed because the SSL handshake has not completed. 1031+NET_ERROR(SSL_HANDSHAKE_NOT_COMPLETED, -148) 1032+ 1033+// SSL peer's public key is invalid. 1034+NET_ERROR(SSL_BAD_PEER_PUBLIC_KEY, -149) 1035+ 1036+// The certificate didn't match the built-in public key pins for the host name. 1037+// The pins are set in net/http/transport_security_state.cc and require that 1038+// one of a set of public keys exist on the path from the leaf to the root. 1039+NET_ERROR(SSL_PINNED_KEY_NOT_IN_CERT_CHAIN, -150) 1040+ 1041+// Server request for client certificate did not contain any types we support. 1042+NET_ERROR(CLIENT_AUTH_CERT_TYPE_UNSUPPORTED, -151) 1043+ 1044+// Error -152 was removed (ORIGIN_BOUND_CERT_GENERATION_TYPE_MISMATCH) 1045+ 1046+// An SSL peer sent us a fatal decrypt_error alert. This typically occurs when 1047+// a peer could not correctly verify a signature (in CertificateVerify or 1048+// ServerKeyExchange) or validate a Finished message. 1049+NET_ERROR(SSL_DECRYPT_ERROR_ALERT, -153) 1050+ 1051+// There are too many pending WebSocketJob instances, so the new job was not 1052+// pushed to the queue. 1053+NET_ERROR(WS_THROTTLE_QUEUE_TOO_LARGE, -154) 1054+ 1055+// Error -155 was removed (TOO_MANY_SOCKET_STREAMS) 1056+ 1057+// The SSL server certificate changed in a renegotiation. 1058+NET_ERROR(SSL_SERVER_CERT_CHANGED, -156) 1059+ 1060+// Error -157 was removed (SSL_INAPPROPRIATE_FALLBACK). 1061+ 1062+// Error -158 was removed (CT_NO_SCTS_VERIFIED_OK). 1063+ 1064+// The SSL server sent us a fatal unrecognized_name alert. 1065+NET_ERROR(SSL_UNRECOGNIZED_NAME_ALERT, -159) 1066+ 1067+// Failed to set the socket's receive buffer size as requested. 1068+NET_ERROR(SOCKET_SET_RECEIVE_BUFFER_SIZE_ERROR, -160) 1069+ 1070+// Failed to set the socket's send buffer size as requested. 1071+NET_ERROR(SOCKET_SET_SEND_BUFFER_SIZE_ERROR, -161) 1072+ 1073+// Failed to set the socket's receive buffer size as requested, despite success 1074+// return code from setsockopt. 1075+NET_ERROR(SOCKET_RECEIVE_BUFFER_SIZE_UNCHANGEABLE, -162) 1076+ 1077+// Failed to set the socket's send buffer size as requested, despite success 1078+// return code from setsockopt. 1079+NET_ERROR(SOCKET_SEND_BUFFER_SIZE_UNCHANGEABLE, -163) 1080+ 1081+// Failed to import a client certificate from the platform store into the SSL 1082+// library. 1083+NET_ERROR(SSL_CLIENT_AUTH_CERT_BAD_FORMAT, -164) 1084+ 1085+// Error -165 was removed (SSL_FALLBACK_BEYOND_MINIMUM_VERSION). 1086+ 1087+// Resolving a hostname to an IP address list included the IPv4 address 1088+// "127.0.53.53". This is a special IP address which ICANN has recommended to 1089+// indicate there was a name collision, and alert admins to a potential 1090+// problem. 1091+NET_ERROR(ICANN_NAME_COLLISION, -166) 1092+ 1093+// The SSL server presented a certificate which could not be decoded. This is 1094+// not a certificate error code as no X509Certificate object is available. This 1095+// error is fatal. 1096+NET_ERROR(SSL_SERVER_CERT_BAD_FORMAT, -167) 1097+ 1098+// Certificate Transparency: Received a signed tree head that failed to parse. 1099+NET_ERROR(CT_STH_PARSING_FAILED, -168) 1100+ 1101+// Certificate Transparency: Received a signed tree head whose JSON parsing was 1102+// OK but was missing some of the fields. 1103+NET_ERROR(CT_STH_INCOMPLETE, -169) 1104+ 1105+// The attempt to reuse a connection to send proxy auth credentials failed 1106+// before the AuthController was used to generate credentials. The caller should 1107+// reuse the controller with a new connection. This error is only used 1108+// internally by the network stack. 1109+NET_ERROR(UNABLE_TO_REUSE_CONNECTION_FOR_PROXY_AUTH, -170) 1110+ 1111+// Certificate Transparency: Failed to parse the received consistency proof. 1112+NET_ERROR(CT_CONSISTENCY_PROOF_PARSING_FAILED, -171) 1113+ 1114+// The SSL server required an unsupported cipher suite that has since been 1115+// removed. This error will temporarily be signaled on a fallback for one or two 1116+// releases immediately following a cipher suite's removal, after which the 1117+// fallback will be removed. 1118+NET_ERROR(SSL_OBSOLETE_CIPHER, -172) 1119+ 1120+// When a WebSocket handshake is done successfully and the connection has been 1121+// upgraded, the URLRequest is cancelled with this error code. 1122+NET_ERROR(WS_UPGRADE, -173) 1123+ 1124+// Socket ReadIfReady support is not implemented. This error should not be user 1125+// visible, because the normal Read() method is used as a fallback. 1126+NET_ERROR(READ_IF_READY_NOT_IMPLEMENTED, -174) 1127+ 1128+// Error -175 was removed (SSL_VERSION_INTERFERENCE). 1129+ 1130+// No socket buffer space is available. 1131+NET_ERROR(NO_BUFFER_SPACE, -176) 1132+ 1133+// There were no common signature algorithms between our client certificate 1134+// private key and the server's preferences. 1135+NET_ERROR(SSL_CLIENT_AUTH_NO_COMMON_ALGORITHMS, -177) 1136+ 1137+// TLS 1.3 early data was rejected by the server. This will be received before 1138+// any data is returned from the socket. The request should be retried with 1139+// early data disabled. 1140+NET_ERROR(EARLY_DATA_REJECTED, -178) 1141+ 1142+// TLS 1.3 early data was offered, but the server responded with TLS 1.2 or 1143+// earlier. This is an internal error code to account for a 1144+// backwards-compatibility issue with early data and TLS 1.2. It will be 1145+// received before any data is returned from the socket. The request should be 1146+// retried with early data disabled. 1147+// 1148+// See https://tools.ietf.org/html/rfc8446#appendix-D.3 for details. 1149+NET_ERROR(WRONG_VERSION_ON_EARLY_DATA, -179) 1150+ 1151+// TLS 1.3 was enabled, but a lower version was negotiated and the server 1152+// returned a value indicating it supported TLS 1.3. This is part of a security 1153+// check in TLS 1.3, but it may also indicate the user is behind a buggy 1154+// TLS-terminating proxy which implemented TLS 1.2 incorrectly. (See 1155+// https://crbug.com/boringssl/226.) 1156+NET_ERROR(TLS13_DOWNGRADE_DETECTED, -180) 1157+ 1158+// The server's certificate has a keyUsage extension incompatible with the 1159+// negotiated TLS key exchange method. 1160+NET_ERROR(SSL_KEY_USAGE_INCOMPATIBLE, -181) 1161+ 1162+// Certificate error codes 1163+// 1164+// The values of certificate error codes must be consecutive. 1165+ 1166+// The server responded with a certificate whose common name did not match 1167+// the host name. This could mean: 1168+// 1169+// 1. An attacker has redirected our traffic to their server and is 1170+// presenting a certificate for which they know the private key. 1171+// 1172+// 2. The server is misconfigured and responding with the wrong cert. 1173+// 1174+// 3. The user is on a wireless network and is being redirected to the 1175+// network's login page. 1176+// 1177+// 4. The OS has used a DNS search suffix and the server doesn't have 1178+// a certificate for the abbreviated name in the address bar. 1179+// 1180+NET_ERROR(CERT_COMMON_NAME_INVALID, -200) 1181+ 1182+// The server responded with a certificate that, by our clock, appears to 1183+// either not yet be valid or to have expired. This could mean: 1184+// 1185+// 1. An attacker is presenting an old certificate for which they have 1186+// managed to obtain the private key. 1187+// 1188+// 2. The server is misconfigured and is not presenting a valid cert. 1189+// 1190+// 3. Our clock is wrong. 1191+// 1192+NET_ERROR(CERT_DATE_INVALID, -201) 1193+ 1194+// The server responded with a certificate that is signed by an authority 1195+// we don't trust. The could mean: 1196+// 1197+// 1. An attacker has substituted the real certificate for a cert that 1198+// contains their public key and is signed by their cousin. 1199+// 1200+// 2. The server operator has a legitimate certificate from a CA we don't 1201+// know about, but should trust. 1202+// 1203+// 3. The server is presenting a self-signed certificate, providing no 1204+// defense against active attackers (but foiling passive attackers). 1205+// 1206+NET_ERROR(CERT_AUTHORITY_INVALID, -202) 1207+ 1208+// The server responded with a certificate that contains errors. 1209+// This error is not recoverable. 1210+// 1211+// MSDN describes this error as follows: 1212+// "The SSL certificate contains errors." 1213+// NOTE: It's unclear how this differs from ERR_CERT_INVALID. For consistency, 1214+// use that code instead of this one from now on. 1215+// 1216+NET_ERROR(CERT_CONTAINS_ERRORS, -203) 1217+ 1218+// The certificate has no mechanism for determining if it is revoked. In 1219+// effect, this certificate cannot be revoked. 1220+NET_ERROR(CERT_NO_REVOCATION_MECHANISM, -204) 1221+ 1222+// Revocation information for the security certificate for this site is not 1223+// available. This could mean: 1224+// 1225+// 1. An attacker has compromised the private key in the certificate and is 1226+// blocking our attempt to find out that the cert was revoked. 1227+// 1228+// 2. The certificate is unrevoked, but the revocation server is busy or 1229+// unavailable. 1230+// 1231+NET_ERROR(CERT_UNABLE_TO_CHECK_REVOCATION, -205) 1232+ 1233+// The server responded with a certificate has been revoked. 1234+// We have the capability to ignore this error, but it is probably not the 1235+// thing to do. 1236+NET_ERROR(CERT_REVOKED, -206) 1237+ 1238+// The server responded with a certificate that is invalid. 1239+// This error is not recoverable. 1240+// 1241+// MSDN describes this error as follows: 1242+// "The SSL certificate is invalid." 1243+// 1244+NET_ERROR(CERT_INVALID, -207) 1245+ 1246+// The server responded with a certificate that is signed using a weak 1247+// signature algorithm. 1248+NET_ERROR(CERT_WEAK_SIGNATURE_ALGORITHM, -208) 1249+ 1250+// -209 is availible: was CERT_NOT_IN_DNS. 1251+ 1252+// The host name specified in the certificate is not unique. 1253+NET_ERROR(CERT_NON_UNIQUE_NAME, -210) 1254+ 1255+// The server responded with a certificate that contains a weak key (e.g. 1256+// a too-small RSA key). 1257+NET_ERROR(CERT_WEAK_KEY, -211) 1258+ 1259+// The certificate claimed DNS names that are in violation of name constraints. 1260+NET_ERROR(CERT_NAME_CONSTRAINT_VIOLATION, -212) 1261+ 1262+// The certificate's validity period is too long. 1263+NET_ERROR(CERT_VALIDITY_TOO_LONG, -213) 1264+ 1265+// Certificate Transparency was required for this connection, but the server 1266+// did not provide CT information that complied with the policy. 1267+NET_ERROR(CERTIFICATE_TRANSPARENCY_REQUIRED, -214) 1268+ 1269+// The certificate chained to a legacy Symantec root that is no longer trusted. 1270+// https://g.co/chrome/symantecpkicerts 1271+NET_ERROR(CERT_SYMANTEC_LEGACY, -215) 1272+ 1273+// -216 was QUIC_CERT_ROOT_NOT_KNOWN which has been renumbered to not be in the 1274+// certificate error range. 1275+ 1276+// The certificate is known to be used for interception by an entity other 1277+// the device owner. 1278+NET_ERROR(CERT_KNOWN_INTERCEPTION_BLOCKED, -217) 1279+ 1280+// The connection uses an obsolete version of SSL/TLS. 1281+NET_ERROR(SSL_OBSOLETE_VERSION, -218) 1282+ 1283+// Add new certificate error codes here. 1284+// 1285+// Update the value of CERT_END whenever you add a new certificate error 1286+// code. 1287+ 1288+// The value immediately past the last certificate error code. 1289+NET_ERROR(CERT_END, -219) 1290+ 1291+// The URL is invalid. 1292+NET_ERROR(INVALID_URL, -300) 1293+ 1294+// The scheme of the URL is disallowed. 1295+NET_ERROR(DISALLOWED_URL_SCHEME, -301) 1296+ 1297+// The scheme of the URL is unknown. 1298+NET_ERROR(UNKNOWN_URL_SCHEME, -302) 1299+ 1300+// Attempting to load an URL resulted in a redirect to an invalid URL. 1301+NET_ERROR(INVALID_REDIRECT, -303) 1302+ 1303+// Attempting to load an URL resulted in too many redirects. 1304+NET_ERROR(TOO_MANY_REDIRECTS, -310) 1305+ 1306+// Attempting to load an URL resulted in an unsafe redirect (e.g., a redirect 1307+// to file:// is considered unsafe). 1308+NET_ERROR(UNSAFE_REDIRECT, -311) 1309+ 1310+// Attempting to load an URL with an unsafe port number. These are port 1311+// numbers that correspond to services, which are not robust to spurious input 1312+// that may be constructed as a result of an allowed web construct (e.g., HTTP 1313+// looks a lot like SMTP, so form submission to port 25 is denied). 1314+NET_ERROR(UNSAFE_PORT, -312) 1315+ 1316+// The server's response was invalid. 1317+NET_ERROR(INVALID_RESPONSE, -320) 1318+ 1319+// Error in chunked transfer encoding. 1320+NET_ERROR(INVALID_CHUNKED_ENCODING, -321) 1321+ 1322+// The server did not support the request method. 1323+NET_ERROR(METHOD_NOT_SUPPORTED, -322) 1324+ 1325+// The response was 407 (Proxy Authentication Required), yet we did not send 1326+// the request to a proxy. 1327+NET_ERROR(UNEXPECTED_PROXY_AUTH, -323) 1328+ 1329+// The server closed the connection without sending any data. 1330+NET_ERROR(EMPTY_RESPONSE, -324) 1331+ 1332+// The headers section of the response is too large. 1333+NET_ERROR(RESPONSE_HEADERS_TOO_BIG, -325) 1334+ 1335+// Error -326 was removed (PAC_STATUS_NOT_OK) 1336+ 1337+// The evaluation of the PAC script failed. 1338+NET_ERROR(PAC_SCRIPT_FAILED, -327) 1339+ 1340+// The response was 416 (Requested range not satisfiable) and the server cannot 1341+// satisfy the range requested. 1342+NET_ERROR(REQUEST_RANGE_NOT_SATISFIABLE, -328) 1343+ 1344+// The identity used for authentication is invalid. 1345+NET_ERROR(MALFORMED_IDENTITY, -329) 1346+ 1347+// Content decoding of the response body failed. 1348+NET_ERROR(CONTENT_DECODING_FAILED, -330) 1349+ 1350+// An operation could not be completed because all network IO 1351+// is suspended. 1352+NET_ERROR(NETWORK_IO_SUSPENDED, -331) 1353+ 1354+// FLIP data received without receiving a SYN_REPLY on the stream. 1355+NET_ERROR(SYN_REPLY_NOT_RECEIVED, -332) 1356+ 1357+// Converting the response to target encoding failed. 1358+NET_ERROR(ENCODING_CONVERSION_FAILED, -333) 1359+ 1360+// The server sent an FTP directory listing in a format we do not understand. 1361+NET_ERROR(UNRECOGNIZED_FTP_DIRECTORY_LISTING_FORMAT, -334) 1362+ 1363+// Obsolete. Was only logged in NetLog when an HTTP/2 pushed stream expired. 1364+// NET_ERROR(INVALID_SPDY_STREAM, -335) 1365+ 1366+// There are no supported proxies in the provided list. 1367+NET_ERROR(NO_SUPPORTED_PROXIES, -336) 1368+ 1369+// There is an HTTP/2 protocol error. 1370+NET_ERROR(HTTP2_PROTOCOL_ERROR, -337) 1371+ 1372+// Credentials could not be established during HTTP Authentication. 1373+NET_ERROR(INVALID_AUTH_CREDENTIALS, -338) 1374+ 1375+// An HTTP Authentication scheme was tried which is not supported on this 1376+// machine. 1377+NET_ERROR(UNSUPPORTED_AUTH_SCHEME, -339) 1378+ 1379+// Detecting the encoding of the response failed. 1380+NET_ERROR(ENCODING_DETECTION_FAILED, -340) 1381+ 1382+// (GSSAPI) No Kerberos credentials were available during HTTP Authentication. 1383+NET_ERROR(MISSING_AUTH_CREDENTIALS, -341) 1384+ 1385+// An unexpected, but documented, SSPI or GSSAPI status code was returned. 1386+NET_ERROR(UNEXPECTED_SECURITY_LIBRARY_STATUS, -342) 1387+ 1388+// The environment was not set up correctly for authentication (for 1389+// example, no KDC could be found or the principal is unknown. 1390+NET_ERROR(MISCONFIGURED_AUTH_ENVIRONMENT, -343) 1391+ 1392+// An undocumented SSPI or GSSAPI status code was returned. 1393+NET_ERROR(UNDOCUMENTED_SECURITY_LIBRARY_STATUS, -344) 1394+ 1395+// The HTTP response was too big to drain. 1396+NET_ERROR(RESPONSE_BODY_TOO_BIG_TO_DRAIN, -345) 1397+ 1398+// The HTTP response contained multiple distinct Content-Length headers. 1399+NET_ERROR(RESPONSE_HEADERS_MULTIPLE_CONTENT_LENGTH, -346) 1400+ 1401+// HTTP/2 headers have been received, but not all of them - status or version 1402+// headers are missing, so we're expecting additional frames to complete them. 1403+NET_ERROR(INCOMPLETE_HTTP2_HEADERS, -347) 1404+ 1405+// No PAC URL configuration could be retrieved from DHCP. This can indicate 1406+// either a failure to retrieve the DHCP configuration, or that there was no 1407+// PAC URL configured in DHCP. 1408+NET_ERROR(PAC_NOT_IN_DHCP, -348) 1409+ 1410+// The HTTP response contained multiple Content-Disposition headers. 1411+NET_ERROR(RESPONSE_HEADERS_MULTIPLE_CONTENT_DISPOSITION, -349) 1412+ 1413+// The HTTP response contained multiple Location headers. 1414+NET_ERROR(RESPONSE_HEADERS_MULTIPLE_LOCATION, -350) 1415+ 1416+// HTTP/2 server refused the request without processing, and sent either a 1417+// GOAWAY frame with error code NO_ERROR and Last-Stream-ID lower than the 1418+// stream id corresponding to the request indicating that this request has not 1419+// been processed yet, or a RST_STREAM frame with error code REFUSED_STREAM. 1420+// Client MAY retry (on a different connection). See RFC7540 Section 8.1.4. 1421+NET_ERROR(HTTP2_SERVER_REFUSED_STREAM, -351) 1422+ 1423+// HTTP/2 server didn't respond to the PING message. 1424+NET_ERROR(HTTP2_PING_FAILED, -352) 1425+ 1426+// Obsolete. Kept here to avoid reuse, as the old error can still appear on 1427+// histograms. 1428+// NET_ERROR(PIPELINE_EVICTION, -353) 1429+ 1430+// The HTTP response body transferred fewer bytes than were advertised by the 1431+// Content-Length header when the connection is closed. 1432+NET_ERROR(CONTENT_LENGTH_MISMATCH, -354) 1433+ 1434+// The HTTP response body is transferred with Chunked-Encoding, but the 1435+// terminating zero-length chunk was never sent when the connection is closed. 1436+NET_ERROR(INCOMPLETE_CHUNKED_ENCODING, -355) 1437+ 1438+// There is a QUIC protocol error. 1439+NET_ERROR(QUIC_PROTOCOL_ERROR, -356) 1440+ 1441+// The HTTP headers were truncated by an EOF. 1442+NET_ERROR(RESPONSE_HEADERS_TRUNCATED, -357) 1443+ 1444+// The QUIC crytpo handshake failed. This means that the server was unable 1445+// to read any requests sent, so they may be resent. 1446+NET_ERROR(QUIC_HANDSHAKE_FAILED, -358) 1447+ 1448+// Obsolete. Kept here to avoid reuse, as the old error can still appear on 1449+// histograms. 1450+// NET_ERROR(REQUEST_FOR_SECURE_RESOURCE_OVER_INSECURE_QUIC, -359) 1451+ 1452+// Transport security is inadequate for the HTTP/2 version. 1453+NET_ERROR(HTTP2_INADEQUATE_TRANSPORT_SECURITY, -360) 1454+ 1455+// The peer violated HTTP/2 flow control. 1456+NET_ERROR(HTTP2_FLOW_CONTROL_ERROR, -361) 1457+ 1458+// The peer sent an improperly sized HTTP/2 frame. 1459+NET_ERROR(HTTP2_FRAME_SIZE_ERROR, -362) 1460+ 1461+// Decoding or encoding of compressed HTTP/2 headers failed. 1462+NET_ERROR(HTTP2_COMPRESSION_ERROR, -363) 1463+ 1464+// Proxy Auth Requested without a valid Client Socket Handle. 1465+NET_ERROR(PROXY_AUTH_REQUESTED_WITH_NO_CONNECTION, -364) 1466+ 1467+// HTTP_1_1_REQUIRED error code received on HTTP/2 session. 1468+NET_ERROR(HTTP_1_1_REQUIRED, -365) 1469+ 1470+// HTTP_1_1_REQUIRED error code received on HTTP/2 session to proxy. 1471+NET_ERROR(PROXY_HTTP_1_1_REQUIRED, -366) 1472+ 1473+// The PAC script terminated fatally and must be reloaded. 1474+NET_ERROR(PAC_SCRIPT_TERMINATED, -367) 1475+ 1476+// Obsolete. Kept here to avoid reuse. 1477+// Request is throttled because of a Backoff header. 1478+// See: crbug.com/486891. 1479+// NET_ERROR(TEMPORARY_BACKOFF, -369) 1480+ 1481+// The server was expected to return an HTTP/1.x response, but did not. Rather 1482+// than treat it as HTTP/0.9, this error is returned. 1483+NET_ERROR(INVALID_HTTP_RESPONSE, -370) 1484+ 1485+// Initializing content decoding failed. 1486+NET_ERROR(CONTENT_DECODING_INIT_FAILED, -371) 1487+ 1488+// Received HTTP/2 RST_STREAM frame with NO_ERROR error code. This error should 1489+// be handled internally by HTTP/2 code, and should not make it above the 1490+// SpdyStream layer. 1491+NET_ERROR(HTTP2_RST_STREAM_NO_ERROR_RECEIVED, -372) 1492+ 1493+// The pushed stream claimed by the request is no longer available. 1494+NET_ERROR(HTTP2_PUSHED_STREAM_NOT_AVAILABLE, -373) 1495+ 1496+// A pushed stream was claimed and later reset by the server. When this happens, 1497+// the request should be retried. 1498+NET_ERROR(HTTP2_CLAIMED_PUSHED_STREAM_RESET_BY_SERVER, -374) 1499+ 1500+// An HTTP transaction was retried too many times due for authentication or 1501+// invalid certificates. This may be due to a bug in the net stack that would 1502+// otherwise infinite loop, or if the server or proxy continually requests fresh 1503+// credentials or presents a fresh invalid certificate. 1504+NET_ERROR(TOO_MANY_RETRIES, -375) 1505+ 1506+// Received an HTTP/2 frame on a closed stream. 1507+NET_ERROR(HTTP2_STREAM_CLOSED, -376) 1508+ 1509+// Client is refusing an HTTP/2 stream. 1510+NET_ERROR(HTTP2_CLIENT_REFUSED_STREAM, -377) 1511+ 1512+// A pushed HTTP/2 stream was claimed by a request based on matching URL and 1513+// request headers, but the pushed response headers do not match the request. 1514+NET_ERROR(HTTP2_PUSHED_RESPONSE_DOES_NOT_MATCH, -378) 1515+ 1516+// The server returned a non-2xx HTTP response code. 1517+// 1518+// Not that this error is only used by certain APIs that interpret the HTTP 1519+// response itself. URLRequest for instance just passes most non-2xx 1520+// response back as success. 1521+NET_ERROR(HTTP_RESPONSE_CODE_FAILURE, -379) 1522+ 1523+// The certificate presented on a QUIC connection does not chain to a known root 1524+// and the origin connected to is not on a list of domains where unknown roots 1525+// are allowed. 1526+NET_ERROR(QUIC_CERT_ROOT_NOT_KNOWN, -380) 1527+ 1528+// A GOAWAY frame has been received indicating that the request has not been 1529+// processed and is therefore safe to retry on a different connection. 1530+NET_ERROR(QUIC_GOAWAY_REQUEST_CAN_BE_RETRIED, -381) 1531+ 1532+// The cache does not have the requested entry. 1533+NET_ERROR(CACHE_MISS, -400) 1534+ 1535+// Unable to read from the disk cache. 1536+NET_ERROR(CACHE_READ_FAILURE, -401) 1537+ 1538+// Unable to write to the disk cache. 1539+NET_ERROR(CACHE_WRITE_FAILURE, -402) 1540+ 1541+// The operation is not supported for this entry. 1542+NET_ERROR(CACHE_OPERATION_NOT_SUPPORTED, -403) 1543+ 1544+// The disk cache is unable to open this entry. 1545+NET_ERROR(CACHE_OPEN_FAILURE, -404) 1546+ 1547+// The disk cache is unable to create this entry. 1548+NET_ERROR(CACHE_CREATE_FAILURE, -405) 1549+ 1550+// Multiple transactions are racing to create disk cache entries. This is an 1551+// internal error returned from the HttpCache to the HttpCacheTransaction that 1552+// tells the transaction to restart the entry-creation logic because the state 1553+// of the cache has changed. 1554+NET_ERROR(CACHE_RACE, -406) 1555+ 1556+// The cache was unable to read a checksum record on an entry. This can be 1557+// returned from attempts to read from the cache. It is an internal error, 1558+// returned by the SimpleCache backend, but not by any URLRequest methods 1559+// or members. 1560+NET_ERROR(CACHE_CHECKSUM_READ_FAILURE, -407) 1561+ 1562+// The cache found an entry with an invalid checksum. This can be returned from 1563+// attempts to read from the cache. It is an internal error, returned by the 1564+// SimpleCache backend, but not by any URLRequest methods or members. 1565+NET_ERROR(CACHE_CHECKSUM_MISMATCH, -408) 1566+ 1567+// Internal error code for the HTTP cache. The cache lock timeout has fired. 1568+NET_ERROR(CACHE_LOCK_TIMEOUT, -409) 1569+ 1570+// Received a challenge after the transaction has read some data, and the 1571+// credentials aren't available. There isn't a way to get them at that point. 1572+NET_ERROR(CACHE_AUTH_FAILURE_AFTER_READ, -410) 1573+ 1574+// Internal not-quite error code for the HTTP cache. In-memory hints suggest 1575+// that the cache entry would not have been useable with the transaction's 1576+// current configuration (e.g. load flags, mode, etc.) 1577+NET_ERROR(CACHE_ENTRY_NOT_SUITABLE, -411) 1578+ 1579+// The disk cache is unable to doom this entry. 1580+NET_ERROR(CACHE_DOOM_FAILURE, -412) 1581+ 1582+// The disk cache is unable to open or create this entry. 1583+NET_ERROR(CACHE_OPEN_OR_CREATE_FAILURE, -413) 1584+ 1585+// The server's response was insecure (e.g. there was a cert error). 1586+NET_ERROR(INSECURE_RESPONSE, -501) 1587+ 1588+// An attempt to import a client certificate failed, as the user's key 1589+// database lacked a corresponding private key. 1590+NET_ERROR(NO_PRIVATE_KEY_FOR_CERT, -502) 1591+ 1592+// An error adding a certificate to the OS certificate database. 1593+NET_ERROR(ADD_USER_CERT_FAILED, -503) 1594+ 1595+// An error occurred while handling a signed exchange. 1596+NET_ERROR(INVALID_SIGNED_EXCHANGE, -504) 1597+ 1598+// An error occurred while handling a Web Bundle source. 1599+NET_ERROR(INVALID_WEB_BUNDLE, -505) 1600+ 1601+// A Trust Tokens protocol operation-executing request failed for one of a 1602+// number of reasons (precondition failure, internal error, bad response). 1603+NET_ERROR(TRUST_TOKEN_OPERATION_FAILED, -506) 1604+ 1605+// When handling a Trust Tokens protocol operation-executing request, the system 1606+// was able to execute the request's Trust Tokens operation without sending the 1607+// request to its destination: for instance, the results could have been present 1608+// in a local cache (for redemption) or the operation could have been diverted 1609+// to a local provider (for "platform-provided" issuance). 1610+NET_ERROR(TRUST_TOKEN_OPERATION_SUCCESS_WITHOUT_SENDING_REQUEST, -507) 1611+ 1612+// *** Code -600 is reserved (was FTP_PASV_COMMAND_FAILED). *** 1613+ 1614+// A generic error for failed FTP control connection command. 1615+// If possible, please use or add a more specific error code. 1616+NET_ERROR(FTP_FAILED, -601) 1617+ 1618+// The server cannot fulfill the request at this point. This is a temporary 1619+// error. 1620+// FTP response code 421. 1621+NET_ERROR(FTP_SERVICE_UNAVAILABLE, -602) 1622+ 1623+// The server has aborted the transfer. 1624+// FTP response code 426. 1625+NET_ERROR(FTP_TRANSFER_ABORTED, -603) 1626+ 1627+// The file is busy, or some other temporary error condition on opening 1628+// the file. 1629+// FTP response code 450. 1630+NET_ERROR(FTP_FILE_BUSY, -604) 1631+ 1632+// Server rejected our command because of syntax errors. 1633+// FTP response codes 500, 501. 1634+NET_ERROR(FTP_SYNTAX_ERROR, -605) 1635+ 1636+// Server does not support the command we issued. 1637+// FTP response codes 502, 504. 1638+NET_ERROR(FTP_COMMAND_NOT_SUPPORTED, -606) 1639+ 1640+// Server rejected our command because we didn't issue the commands in right 1641+// order. 1642+// FTP response code 503. 1643+NET_ERROR(FTP_BAD_COMMAND_SEQUENCE, -607) 1644+ 1645+// PKCS #12 import failed due to incorrect password. 1646+NET_ERROR(PKCS12_IMPORT_BAD_PASSWORD, -701) 1647+ 1648+// PKCS #12 import failed due to other error. 1649+NET_ERROR(PKCS12_IMPORT_FAILED, -702) 1650+ 1651+// CA import failed - not a CA cert. 1652+NET_ERROR(IMPORT_CA_CERT_NOT_CA, -703) 1653+ 1654+// Import failed - certificate already exists in database. 1655+// Note it's a little weird this is an error but reimporting a PKCS12 is ok 1656+// (no-op). That's how Mozilla does it, though. 1657+NET_ERROR(IMPORT_CERT_ALREADY_EXISTS, -704) 1658+ 1659+// CA import failed due to some other error. 1660+NET_ERROR(IMPORT_CA_CERT_FAILED, -705) 1661+ 1662+// Server certificate import failed due to some internal error. 1663+NET_ERROR(IMPORT_SERVER_CERT_FAILED, -706) 1664+ 1665+// PKCS #12 import failed due to invalid MAC. 1666+NET_ERROR(PKCS12_IMPORT_INVALID_MAC, -707) 1667+ 1668+// PKCS #12 import failed due to invalid/corrupt file. 1669+NET_ERROR(PKCS12_IMPORT_INVALID_FILE, -708) 1670+ 1671+// PKCS #12 import failed due to unsupported features. 1672+NET_ERROR(PKCS12_IMPORT_UNSUPPORTED, -709) 1673+ 1674+// Key generation failed. 1675+NET_ERROR(KEY_GENERATION_FAILED, -710) 1676+ 1677+// Error -711 was removed (ORIGIN_BOUND_CERT_GENERATION_FAILED) 1678+ 1679+// Failure to export private key. 1680+NET_ERROR(PRIVATE_KEY_EXPORT_FAILED, -712) 1681+ 1682+// Self-signed certificate generation failed. 1683+NET_ERROR(SELF_SIGNED_CERT_GENERATION_FAILED, -713) 1684+ 1685+// The certificate database changed in some way. 1686+NET_ERROR(CERT_DATABASE_CHANGED, -714) 1687+ 1688+// Error -715 was removed (CHANNEL_ID_IMPORT_FAILED) 1689+ 1690+// DNS error codes. 1691+ 1692+// DNS resolver received a malformed response. 1693+NET_ERROR(DNS_MALFORMED_RESPONSE, -800) 1694+ 1695+// DNS server requires TCP 1696+NET_ERROR(DNS_SERVER_REQUIRES_TCP, -801) 1697+ 1698+// DNS server failed. This error is returned for all of the following 1699+// error conditions: 1700+// 1 - Format error - The name server was unable to interpret the query. 1701+// 2 - Server failure - The name server was unable to process this query 1702+// due to a problem with the name server. 1703+// 4 - Not Implemented - The name server does not support the requested 1704+// kind of query. 1705+// 5 - Refused - The name server refuses to perform the specified 1706+// operation for policy reasons. 1707+NET_ERROR(DNS_SERVER_FAILED, -802) 1708+ 1709+// DNS transaction timed out. 1710+NET_ERROR(DNS_TIMED_OUT, -803) 1711+ 1712+// The entry was not found in cache or other local sources, for lookups where 1713+// only local sources were queried. 1714+// TODO(ericorth): Consider renaming to DNS_LOCAL_MISS or something like that as 1715+// the cache is not necessarily queried either. 1716+NET_ERROR(DNS_CACHE_MISS, -804) 1717+ 1718+// Suffix search list rules prevent resolution of the given host name. 1719+NET_ERROR(DNS_SEARCH_EMPTY, -805) 1720+ 1721+// Failed to sort addresses according to RFC3484. 1722+NET_ERROR(DNS_SORT_ERROR, -806) 1723+ 1724+// Error -807 was removed (DNS_HTTP_FAILED) 1725+ 1726+// Failed to resolve the hostname of a DNS-over-HTTPS server. 1727+NET_ERROR(DNS_SECURE_RESOLVER_HOSTNAME_RESOLUTION_FAILED, -808) 1728diff --git a/cef/include/capi/cef_accessibility_handler_capi.h b/cef/include/capi/cef_accessibility_handler_capi.h 1729index 5235aa68b7..cafa9a27d3 100644 1730--- a/cef/include/capi/cef_accessibility_handler_capi.h 1731+++ b/cef/include/capi/cef_accessibility_handler_capi.h 1732@@ -1,4 +1,4 @@ 1733-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 1734+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 1735 // 1736 // Redistribution and use in source and binary forms, with or without 1737 // modification, are permitted provided that the following conditions are 1738@@ -33,7 +33,7 @@ 1739 // by hand. See the translator.README.txt file in the tools directory for 1740 // more information. 1741 // 1742-// $hash=c487e5fd787b1be8224a8981839e0cfdd0ed74f3$ 1743+// $hash=306e44d49ab6198a0fa1bcea50e8a25ee18672be$ 1744 // 1745 1746 #ifndef CEF_INCLUDE_CAPI_CEF_ACCESSIBILITY_HANDLER_CAPI_H_ 1747diff --git a/cef/include/capi/cef_app_capi.h b/cef/include/capi/cef_app_capi.h 1748index 8dc4595cb9..4554a25dc0 100644 1749--- a/cef/include/capi/cef_app_capi.h 1750+++ b/cef/include/capi/cef_app_capi.h 1751@@ -1,4 +1,4 @@ 1752-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 1753+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 1754 // 1755 // Redistribution and use in source and binary forms, with or without 1756 // modification, are permitted provided that the following conditions are 1757@@ -33,7 +33,7 @@ 1758 // by hand. See the translator.README.txt file in the tools directory for 1759 // more information. 1760 // 1761-// $hash=a4b63e6e7942e3a3961b4f7141a963980178ae6f$ 1762+// $hash=adfba3dd6479b96a95639c13ee1e07bed7b335d0$ 1763 // 1764 1765 #ifndef CEF_INCLUDE_CAPI_CEF_APP_CAPI_H_ 1766diff --git a/cef/include/capi/cef_audio_handler_capi.h b/cef/include/capi/cef_audio_handler_capi.h 1767index 00a25458d3..ffb9ff0b18 100644 1768--- a/cef/include/capi/cef_audio_handler_capi.h 1769+++ b/cef/include/capi/cef_audio_handler_capi.h 1770@@ -1,4 +1,4 @@ 1771-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 1772+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 1773 // 1774 // Redistribution and use in source and binary forms, with or without 1775 // modification, are permitted provided that the following conditions are 1776@@ -33,7 +33,7 @@ 1777 // by hand. See the translator.README.txt file in the tools directory for 1778 // more information. 1779 // 1780-// $hash=7a483ed552ecca4f1aaa03800d366beca1ea2dee$ 1781+// $hash=fd8d34089842ee8f8490ef1828c3091d12052e28$ 1782 // 1783 1784 #ifndef CEF_INCLUDE_CAPI_CEF_AUDIO_HANDLER_CAPI_H_ 1785diff --git a/cef/include/capi/cef_auth_callback_capi.h b/cef/include/capi/cef_auth_callback_capi.h 1786index 0e0cffd3f4..6042416513 100644 1787--- a/cef/include/capi/cef_auth_callback_capi.h 1788+++ b/cef/include/capi/cef_auth_callback_capi.h 1789@@ -1,4 +1,4 @@ 1790-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 1791+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 1792 // 1793 // Redistribution and use in source and binary forms, with or without 1794 // modification, are permitted provided that the following conditions are 1795@@ -33,7 +33,7 @@ 1796 // by hand. See the translator.README.txt file in the tools directory for 1797 // more information. 1798 // 1799-// $hash=2b9508a328ed0218e2c576af455f8d76e5978545$ 1800+// $hash=01a33de48ac9780f78d606d8aee2429ddb0c81a2$ 1801 // 1802 1803 #ifndef CEF_INCLUDE_CAPI_CEF_AUTH_CALLBACK_CAPI_H_ 1804diff --git a/cef/include/capi/cef_browser_capi.h b/cef/include/capi/cef_browser_capi.h 1805index f7a5b17bdb..7517bf0895 100644 1806--- a/cef/include/capi/cef_browser_capi.h 1807+++ b/cef/include/capi/cef_browser_capi.h 1808@@ -1,4 +1,4 @@ 1809-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 1810+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 1811 // 1812 // Redistribution and use in source and binary forms, with or without 1813 // modification, are permitted provided that the following conditions are 1814@@ -33,7 +33,7 @@ 1815 // by hand. See the translator.README.txt file in the tools directory for 1816 // more information. 1817 // 1818-// $hash=92c4d38f6895018f72fbafeecb13c47320ef0b1d$ 1819+// $hash=45bcd802ddf8bc4919ae9b79f70f96b6956cf026$ 1820 // 1821 1822 #ifndef CEF_INCLUDE_CAPI_CEF_BROWSER_CAPI_H_ 1823@@ -46,8 +46,10 @@ 1824 #include "include/capi/cef_frame_capi.h" 1825 #include "include/capi/cef_image_capi.h" 1826 #include "include/capi/cef_navigation_entry_capi.h" 1827+#include "include/capi/cef_permission_request_capi.h" 1828 #include "include/capi/cef_registration_capi.h" 1829 #include "include/capi/cef_request_context_capi.h" 1830+#include "include/capi/cef_task_capi.h" 1831 1832 #ifdef __cplusplus 1833 extern "C" { 1834@@ -55,6 +57,7 @@ extern "C" { 1835 1836 struct _cef_browser_host_t; 1837 struct _cef_client_t; 1838+struct _cef_java_script_result_callback_t; 1839 1840 /// 1841 // Structure used to represent a browser window. When used in the browser 1842@@ -95,6 +98,12 @@ typedef struct _cef_browser_t { 1843 /// 1844 void(CEF_CALLBACK* go_forward)(struct _cef_browser_t* self); 1845 1846+ /// 1847+ // Returns true (1) if the browser can navigate forwards. 1848+ /// 1849+ int(CEF_CALLBACK* can_go_back_or_forward)(struct _cef_browser_t* self, 1850+ int num_steps); 1851+ 1852 /// 1853 // Returns true (1) if the browser is currently loading. 1854 /// 1855@@ -184,6 +193,19 @@ typedef struct _cef_browser_t { 1856 /// 1857 void(CEF_CALLBACK* get_frame_names)(struct _cef_browser_t* self, 1858 cef_string_list_t names); 1859+ 1860+ /// 1861+ // Returns the Permission Request Delegate object. 1862+ /// 1863+ struct _cef_browser_permission_request_delegate_t*( 1864+ CEF_CALLBACK* get_permission_request_delegate)( 1865+ struct _cef_browser_t* self); 1866+ 1867+ /// 1868+ // Returns the Geolocation Permission handler object. 1869+ /// 1870+ struct _cef_geolocation_acess_t*(CEF_CALLBACK* get_geolocation_permissions)( 1871+ struct _cef_browser_t* self); 1872 } cef_browser_t; 1873 1874 /// 1875@@ -295,6 +317,12 @@ typedef struct _cef_browser_host_t { 1876 struct _cef_browser_t*(CEF_CALLBACK* get_browser)( 1877 struct _cef_browser_host_t* self); 1878 1879+ /// 1880+ // Post task to ui thread. 1881+ /// 1882+ void(CEF_CALLBACK* post_task_to_uithread)(struct _cef_browser_host_t* self, 1883+ struct _cef_task_t* task); 1884+ 1885 /// 1886 // Request that the browser close. The JavaScript 'onbeforeunload' event will 1887 // be fired. If |force_close| is false (0) the event handler, if any, will be 1888@@ -710,6 +738,102 @@ typedef struct _cef_browser_host_t { 1889 struct _cef_browser_host_t* self, 1890 int frame_rate); 1891 1892+ /// 1893+ // Recompute the WebPreferences based on the current state of the CefSettings, 1894+ // we will also call SetWebPreferences and send the updated WebPreferences to 1895+ // all RenderViews by WebContents. 1896+ /// 1897+ void(CEF_CALLBACK* set_web_preferences)( 1898+ struct _cef_browser_host_t* self, 1899+ const struct _cef_browser_settings_t* browser_settings); 1900+ 1901+ /// 1902+ // PutUserAgent 1903+ /// 1904+ void(CEF_CALLBACK* put_user_agent)(struct _cef_browser_host_t* self, 1905+ const cef_string_t* ua); 1906+ 1907+ /// 1908+ // DefaultUserAgent 1909+ /// 1910+ // The resulting string must be freed by calling cef_string_userfree_free(). 1911+ cef_string_userfree_t(CEF_CALLBACK* default_user_agent)( 1912+ struct _cef_browser_host_t* self); 1913+ 1914+ /// 1915+ // SetBackgroundColor 1916+ /// 1917+ void(CEF_CALLBACK* set_background_color)(struct _cef_browser_host_t* self, 1918+ int color); 1919+ 1920+ /// 1921+ // RegisterArkJSfunction 1922+ /// 1923+ void(CEF_CALLBACK* register_ark_jsfunction)(struct _cef_browser_host_t* self, 1924+ const cef_string_t* object_name, 1925+ cef_string_list_t method_list); 1926+ 1927+ /// 1928+ // UnregisterArkJSfunction 1929+ /// 1930+ void(CEF_CALLBACK* unregister_ark_jsfunction)( 1931+ struct _cef_browser_host_t* self, 1932+ const cef_string_t* object_name, 1933+ cef_string_list_t method_list); 1934+ 1935+ /// 1936+ // Gets the title for the current page. 1937+ /// 1938+ // The resulting string must be freed by calling cef_string_userfree_free(). 1939+ cef_string_userfree_t(CEF_CALLBACK* title)(struct _cef_browser_host_t* self); 1940+ 1941+ /// 1942+ // Gets the latest hitdata 1943+ /// 1944+ void(CEF_CALLBACK* get_hit_data)(struct _cef_browser_host_t* self, 1945+ int* type, 1946+ cef_string_t* extra_data); 1947+ 1948+ /// 1949+ // Gets the progress for the current page. 1950+ /// 1951+ int(CEF_CALLBACK* page_load_progress)(struct _cef_browser_host_t* self); 1952+ 1953+ /// 1954+ // Gets the progress for the current page. 1955+ /// 1956+ float(CEF_CALLBACK* scale)(struct _cef_browser_host_t* self); 1957+ 1958+ /// 1959+ // Loads the given data into this WebView, using baseUrl as the base URL for 1960+ // the content. The base URL is used both to resolve relative URLs and when 1961+ // applying JavaScript's same origin policy. The historyUrl is used for the 1962+ // history entry. optional_param=baseUrl, optional_param=data, 1963+ // optional_param=mimeType, optional_param=encoding, optional_param=historyUrl 1964+ /// 1965+ void(CEF_CALLBACK* load_with_data_and_base_url)( 1966+ struct _cef_browser_host_t* self, 1967+ const cef_string_t* baseUrl, 1968+ const cef_string_t* data, 1969+ const cef_string_t* mimeType, 1970+ const cef_string_t* encoding, 1971+ const cef_string_t* historyUrl); 1972+ 1973+ /// 1974+ // Loads the given data into this WebView optional_param=data, 1975+ // optional_param=mimeType, optional_param=encoding, 1976+ /// 1977+ void(CEF_CALLBACK* load_with_data)(struct _cef_browser_host_t* self, 1978+ const cef_string_t* data, 1979+ const cef_string_t* mimeType, 1980+ const cef_string_t* encoding); 1981+ 1982+ /// 1983+ // add visited url. 1984+ /// 1985+ void(CEF_CALLBACK* add_visited_links)(struct _cef_browser_host_t* self, 1986+ cef_string_list_t urls); 1987+ 1988 /// 1989 // Begins a new composition or updates the existing composition. Blink has a 1990 // special node (a composition node) that allows the input function to change 1991@@ -726,10 +850,11 @@ typedef struct _cef_browser_host_t { 1992 // or completed. To cancel the composition call ImeCancelComposition. To 1993 // complete the composition call either ImeCommitText or 1994 // ImeFinishComposingText. Completion is usually signaled when: 1995- // A. The client receives a WM_IME_COMPOSITION message with a GCS_RESULTSTR 1996+ // A. The client receives a WM_IME_COMPOSITION message with a 1997+ // GCS_RESULTSTR 1998 // flag (on Windows), or; 1999- // B. The client receives a "commit" signal of GtkIMContext (on Linux), or; 2000- // C. insertText of NSTextInput is called (on Mac). 2001+ // B. The client receives a "commit" signal of GtkIMContext (on Linux), 2002+ // or; C. insertText of NSTextInput is called (on Mac). 2003 // 2004 // This function is only used when window rendering is disabled. 2005 /// 2006@@ -910,6 +1035,14 @@ typedef struct _cef_browser_host_t { 2007 // be called on the UI thread. 2008 /// 2009 int(CEF_CALLBACK* is_audio_muted)(struct _cef_browser_host_t* self); 2010+ 2011+ /// 2012+ // Execute a string of JavaScript code, return result by callback 2013+ /// 2014+ void(CEF_CALLBACK* execute_java_script)( 2015+ struct _cef_browser_host_t* self, 2016+ const cef_string_t* code, 2017+ struct _cef_java_script_result_callback_t* callback); 2018 } cef_browser_host_t; 2019 2020 /// 2021@@ -946,6 +1079,25 @@ CEF_EXPORT cef_browser_t* cef_browser_host_create_browser_sync( 2022 struct _cef_dictionary_value_t* extra_info, 2023 struct _cef_request_context_t* request_context); 2024 2025+/// 2026+// Structure to implement to be notified of asynchronous completion via 2027+// cef_browser_host_tBase::execute_java_script(). 2028+/// 2029+typedef struct _cef_java_script_result_callback_t { 2030+ /// 2031+ // Base structure. 2032+ /// 2033+ cef_base_ref_counted_t base; 2034+ 2035+ /// 2036+ // Method that will be called upon completion. |num_deleted| will be the 2037+ // number of cookies that were deleted. 2038+ /// 2039+ void(CEF_CALLBACK* on_java_script_exe_result)( 2040+ struct _cef_java_script_result_callback_t* self, 2041+ const cef_string_t* result); 2042+} cef_java_script_result_callback_t; 2043+ 2044 #ifdef __cplusplus 2045 } 2046 #endif 2047diff --git a/cef/include/capi/cef_browser_process_handler_capi.h b/cef/include/capi/cef_browser_process_handler_capi.h 2048index 43f8047723..2a3dc178e7 100644 2049--- a/cef/include/capi/cef_browser_process_handler_capi.h 2050+++ b/cef/include/capi/cef_browser_process_handler_capi.h 2051@@ -1,4 +1,4 @@ 2052-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 2053+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 2054 // 2055 // Redistribution and use in source and binary forms, with or without 2056 // modification, are permitted provided that the following conditions are 2057@@ -33,7 +33,7 @@ 2058 // by hand. See the translator.README.txt file in the tools directory for 2059 // more information. 2060 // 2061-// $hash=ade537f836add7fe0b5fd94ceba26d678abb3e43$ 2062+// $hash=8c97f9b58c642c144cc37824ad820192640307cb$ 2063 // 2064 2065 #ifndef CEF_INCLUDE_CAPI_CEF_BROWSER_PROCESS_HANDLER_CAPI_H_ 2066diff --git a/cef/include/capi/cef_callback_capi.h b/cef/include/capi/cef_callback_capi.h 2067index 4ed4b825ae..1ece08781f 100644 2068--- a/cef/include/capi/cef_callback_capi.h 2069+++ b/cef/include/capi/cef_callback_capi.h 2070@@ -1,4 +1,4 @@ 2071-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 2072+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 2073 // 2074 // Redistribution and use in source and binary forms, with or without 2075 // modification, are permitted provided that the following conditions are 2076@@ -33,7 +33,7 @@ 2077 // by hand. See the translator.README.txt file in the tools directory for 2078 // more information. 2079 // 2080-// $hash=cd8c183355a6808abd763ecc0396b5da6c15b3f9$ 2081+// $hash=10ef5088ce2a5c6ffb38f8864d3aad6e5ac88b40$ 2082 // 2083 2084 #ifndef CEF_INCLUDE_CAPI_CEF_CALLBACK_CAPI_H_ 2085diff --git a/cef/include/capi/cef_client_capi.h b/cef/include/capi/cef_client_capi.h 2086index 8351d9ae76..f7eace3f95 100644 2087--- a/cef/include/capi/cef_client_capi.h 2088+++ b/cef/include/capi/cef_client_capi.h 2089@@ -1,4 +1,4 @@ 2090-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 2091+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 2092 // 2093 // Redistribution and use in source and binary forms, with or without 2094 // modification, are permitted provided that the following conditions are 2095@@ -33,7 +33,7 @@ 2096 // by hand. See the translator.README.txt file in the tools directory for 2097 // more information. 2098 // 2099-// $hash=14eca959988209ba8f95037a47192fd50d64f2f1$ 2100+// $hash=16bf02f2a17c61e7f0724b364fb3669b1d66210a$ 2101 // 2102 2103 #ifndef CEF_INCLUDE_CAPI_CEF_CLIENT_CAPI_H_ 2104@@ -53,6 +53,7 @@ 2105 #include "include/capi/cef_keyboard_handler_capi.h" 2106 #include "include/capi/cef_life_span_handler_capi.h" 2107 #include "include/capi/cef_load_handler_capi.h" 2108+#include "include/capi/cef_permission_request_capi.h" 2109 #include "include/capi/cef_print_handler_capi.h" 2110 #include "include/capi/cef_process_message_capi.h" 2111 #include "include/capi/cef_render_handler_capi.h" 2112@@ -166,6 +167,12 @@ typedef struct _cef_client_t { 2113 struct _cef_request_handler_t*(CEF_CALLBACK* get_request_handler)( 2114 struct _cef_client_t* self); 2115 2116+ /// 2117+ // Return the handler for browser geolocation permission request events. 2118+ /// 2119+ struct _cef_permission_request_t*(CEF_CALLBACK* get_permission_request)( 2120+ struct _cef_client_t* self); 2121+ 2122 /// 2123 // Called when a new message is received from a different process. Return true 2124 // (1) if the message was handled or false (0) otherwise. Do not keep a 2125@@ -177,6 +184,16 @@ typedef struct _cef_client_t { 2126 struct _cef_frame_t* frame, 2127 cef_process_id_t source_process, 2128 struct _cef_process_message_t* message); 2129+ 2130+ /// 2131+ // Returns the list of arguments NotifyJavaScriptResult. 2132+ /// 2133+ int(CEF_CALLBACK* notify_java_script_result)( 2134+ struct _cef_client_t* self, 2135+ struct _cef_list_value_t* args, 2136+ const cef_string_t* method, 2137+ const cef_string_t* object_name, 2138+ struct _cef_list_value_t* result); 2139 } cef_client_t; 2140 2141 #ifdef __cplusplus 2142diff --git a/cef/include/capi/cef_command_line_capi.h b/cef/include/capi/cef_command_line_capi.h 2143index df70b2a029..3f2127f0b0 100644 2144--- a/cef/include/capi/cef_command_line_capi.h 2145+++ b/cef/include/capi/cef_command_line_capi.h 2146@@ -1,4 +1,4 @@ 2147-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 2148+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 2149 // 2150 // Redistribution and use in source and binary forms, with or without 2151 // modification, are permitted provided that the following conditions are 2152@@ -33,7 +33,7 @@ 2153 // by hand. See the translator.README.txt file in the tools directory for 2154 // more information. 2155 // 2156-// $hash=5af5bf1e877dd53f21f751d332a9e2166817324c$ 2157+// $hash=1c67e681e14c38b992b8356f0dfea27e970f2a44$ 2158 // 2159 2160 #ifndef CEF_INCLUDE_CAPI_CEF_COMMAND_LINE_CAPI_H_ 2161diff --git a/cef/include/capi/cef_context_menu_handler_capi.h b/cef/include/capi/cef_context_menu_handler_capi.h 2162index 59b1f28785..f83dfa3646 100644 2163--- a/cef/include/capi/cef_context_menu_handler_capi.h 2164+++ b/cef/include/capi/cef_context_menu_handler_capi.h 2165@@ -1,4 +1,4 @@ 2166-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 2167+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 2168 // 2169 // Redistribution and use in source and binary forms, with or without 2170 // modification, are permitted provided that the following conditions are 2171@@ -33,7 +33,7 @@ 2172 // by hand. See the translator.README.txt file in the tools directory for 2173 // more information. 2174 // 2175-// $hash=175779df75a1405fcc5c337a09e6322c556698ba$ 2176+// $hash=fd33ce439e4379d231b6be16bdc1786f314d98e4$ 2177 // 2178 2179 #ifndef CEF_INCLUDE_CAPI_CEF_CONTEXT_MENU_HANDLER_CAPI_H_ 2180diff --git a/cef/include/capi/cef_cookie_capi.h b/cef/include/capi/cef_cookie_capi.h 2181index d6f7cb68be..86a809cd43 100644 2182--- a/cef/include/capi/cef_cookie_capi.h 2183+++ b/cef/include/capi/cef_cookie_capi.h 2184@@ -1,4 +1,4 @@ 2185-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 2186+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 2187 // 2188 // Redistribution and use in source and binary forms, with or without 2189 // modification, are permitted provided that the following conditions are 2190@@ -33,7 +33,7 @@ 2191 // by hand. See the translator.README.txt file in the tools directory for 2192 // more information. 2193 // 2194-// $hash=b19ef1c8a781f8d59276357609fe64370bb8a107$ 2195+// $hash=f56fb7f36efbc915453237ce10712eb49e436b00$ 2196 // 2197 2198 #ifndef CEF_INCLUDE_CAPI_CEF_COOKIE_CAPI_H_ 2199@@ -61,6 +61,35 @@ typedef struct _cef_cookie_manager_t { 2200 /// 2201 cef_base_ref_counted_t base; 2202 2203+ /// 2204+ // Get whether this cookie manager can accpet and send cookies. Returns false 2205+ // (0) if can't. 2206+ /// 2207+ int(CEF_CALLBACK* is_accept_cookie_allowed)( 2208+ struct _cef_cookie_manager_t* self); 2209+ 2210+ /// 2211+ // Set whether this cookie manager can accpet and send cookies. 2212+ /// 2213+ void(CEF_CALLBACK* put_accept_cookie_enabled)( 2214+ struct _cef_cookie_manager_t* self, 2215+ int accept); 2216+ 2217+ /// 2218+ // Get whether this cookie manager can accpet and send cookies for file scheme 2219+ // URL. Returns false (0) if can't. 2220+ /// 2221+ int(CEF_CALLBACK* is_file_urlscheme_cookies_allowed)( 2222+ struct _cef_cookie_manager_t* self); 2223+ 2224+ /// 2225+ // Set whether this cookie manager can accpet and send cookies for file scheme 2226+ // URL. 2227+ /// 2228+ void(CEF_CALLBACK* put_accept_file_urlscheme_cookies_enabled)( 2229+ struct _cef_cookie_manager_t* self, 2230+ int allow); 2231+ 2232 /// 2233 // Visit all cookies on the UI thread. The returned cookies are ordered by 2234 // longest path, then by earliest creation date. Returns false (0) if cookies 2235@@ -110,6 +139,7 @@ typedef struct _cef_cookie_manager_t { 2236 struct _cef_cookie_manager_t* self, 2237 const cef_string_t* url, 2238 const cef_string_t* cookie_name, 2239+ int is_session, 2240 struct _cef_delete_cookies_callback_t* callback); 2241 2242 /// 2243@@ -132,6 +162,15 @@ typedef struct _cef_cookie_manager_t { 2244 CEF_EXPORT cef_cookie_manager_t* cef_cookie_manager_get_global_manager( 2245 struct _cef_completion_callback_t* callback); 2246 2247+/// 2248+// Convert string cookie to CefCookie. The function will return true (1) when 2249+// excuted success, otherwise return false (0). 2250+/// 2251+CEF_EXPORT int cef_cookie_manager_create_cef_cookie( 2252+ const cef_string_t* url, 2253+ const cef_string_t* value, 2254+ struct _cef_cookie_t* cef_cookie); 2255+ 2256 /// 2257 // Structure to implement for visiting cookie values. The functions of this 2258 // structure will always be called on the UI thread. 2259@@ -154,6 +193,14 @@ typedef struct _cef_cookie_visitor_t { 2260 int count, 2261 int total, 2262 int* deleteCookie); 2263+ 2264+ /// 2265+ // Method that will be called when all cookies have been visited, contenate 2266+ // them into one string line. The string cookie line will be passed into this 2267+ // function. 2268+ /// 2269+ void(CEF_CALLBACK* set_cookie_line)(struct _cef_cookie_visitor_t* self, 2270+ const cef_string_t* cookieLine); 2271 } cef_cookie_visitor_t; 2272 2273 /// 2274diff --git a/cef/include/capi/cef_crash_util_capi.h b/cef/include/capi/cef_crash_util_capi.h 2275index 48ce101bbc..2a569bdb80 100644 2276--- a/cef/include/capi/cef_crash_util_capi.h 2277+++ b/cef/include/capi/cef_crash_util_capi.h 2278@@ -1,4 +1,4 @@ 2279-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 2280+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 2281 // 2282 // Redistribution and use in source and binary forms, with or without 2283 // modification, are permitted provided that the following conditions are 2284@@ -33,7 +33,7 @@ 2285 // by hand. See the translator.README.txt file in the tools directory for 2286 // more information. 2287 // 2288-// $hash=5e19231e3476eef376c2742e8d375bee7bd4ea2d$ 2289+// $hash=0460e68eb7d1b1188706c42d14beafbf9a6f7126$ 2290 // 2291 2292 #ifndef CEF_INCLUDE_CAPI_CEF_CRASH_UTIL_CAPI_H_ 2293diff --git a/cef/include/capi/cef_devtools_message_observer_capi.h b/cef/include/capi/cef_devtools_message_observer_capi.h 2294index 93fe069b2c..137f82136d 100644 2295--- a/cef/include/capi/cef_devtools_message_observer_capi.h 2296+++ b/cef/include/capi/cef_devtools_message_observer_capi.h 2297@@ -1,4 +1,4 @@ 2298-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 2299+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 2300 // 2301 // Redistribution and use in source and binary forms, with or without 2302 // modification, are permitted provided that the following conditions are 2303@@ -33,7 +33,7 @@ 2304 // by hand. See the translator.README.txt file in the tools directory for 2305 // more information. 2306 // 2307-// $hash=1a256c04042ebd4867f39e1c31def558871b2bab$ 2308+// $hash=ec62239c2b24ff512b64ca758be825ff57fb3b6b$ 2309 // 2310 2311 #ifndef CEF_INCLUDE_CAPI_CEF_DEVTOOLS_MESSAGE_OBSERVER_CAPI_H_ 2312diff --git a/cef/include/capi/cef_dialog_handler_capi.h b/cef/include/capi/cef_dialog_handler_capi.h 2313index c0dd985060..51563dbdc0 100644 2314--- a/cef/include/capi/cef_dialog_handler_capi.h 2315+++ b/cef/include/capi/cef_dialog_handler_capi.h 2316@@ -1,4 +1,4 @@ 2317-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 2318+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 2319 // 2320 // Redistribution and use in source and binary forms, with or without 2321 // modification, are permitted provided that the following conditions are 2322@@ -33,7 +33,7 @@ 2323 // by hand. See the translator.README.txt file in the tools directory for 2324 // more information. 2325 // 2326-// $hash=5ae5556e4085faf8cf17ee757f5eeac9197f75c0$ 2327+// $hash=0f56154217707d141912dc8a298279df8df04311$ 2328 // 2329 2330 #ifndef CEF_INCLUDE_CAPI_CEF_DIALOG_HANDLER_CAPI_H_ 2331diff --git a/cef/include/capi/cef_display_handler_capi.h b/cef/include/capi/cef_display_handler_capi.h 2332index 09d41dd7a7..5f5a0f34fc 100644 2333--- a/cef/include/capi/cef_display_handler_capi.h 2334+++ b/cef/include/capi/cef_display_handler_capi.h 2335@@ -1,4 +1,4 @@ 2336-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 2337+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 2338 // 2339 // Redistribution and use in source and binary forms, with or without 2340 // modification, are permitted provided that the following conditions are 2341@@ -33,7 +33,7 @@ 2342 // by hand. See the translator.README.txt file in the tools directory for 2343 // more information. 2344 // 2345-// $hash=067fd169a30bec1ad8eeacc5ab1ac750cf59640e$ 2346+// $hash=0c615f158ce150e61102f4b3493b50951a302231$ 2347 // 2348 2349 #ifndef CEF_INCLUDE_CAPI_CEF_DISPLAY_HANDLER_CAPI_H_ 2350@@ -80,6 +80,25 @@ typedef struct _cef_display_handler_t { 2351 struct _cef_browser_t* browser, 2352 cef_string_list_t icon_urls); 2353 2354+ /// 2355+ // onReceivedTouchIconUrl. 2356+ /// 2357+ void(CEF_CALLBACK* on_received_touch_icon_url)( 2358+ struct _cef_display_handler_t* self, 2359+ struct _cef_browser_t* browser, 2360+ const cef_string_t* icon_url, 2361+ int precomposed); 2362+ 2363+ /// 2364+ // onReceivedIcon. 2365+ /// 2366+ void(CEF_CALLBACK* on_received_icon)(struct _cef_display_handler_t* self, 2367+ const void* data, 2368+ size_t width, 2369+ size_t height, 2370+ cef_color_type_t color_type, 2371+ cef_alpha_type_t alpha_type); 2372+ 2373 /// 2374 // Called when web content in the page has toggled fullscreen mode. If 2375 // |fullscreen| is true (1) the content will automatically be sized to fill 2376diff --git a/cef/include/capi/cef_dom_capi.h b/cef/include/capi/cef_dom_capi.h 2377index b165078a3e..97300ec387 100644 2378--- a/cef/include/capi/cef_dom_capi.h 2379+++ b/cef/include/capi/cef_dom_capi.h 2380@@ -1,4 +1,4 @@ 2381-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 2382+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 2383 // 2384 // Redistribution and use in source and binary forms, with or without 2385 // modification, are permitted provided that the following conditions are 2386@@ -33,7 +33,7 @@ 2387 // by hand. See the translator.README.txt file in the tools directory for 2388 // more information. 2389 // 2390-// $hash=0517dc6c42fdde9fecfc4549fab1ea12b614e143$ 2391+// $hash=c6de3fb4d64a2b2ad06a4b9c5e9d7625d40b5bb6$ 2392 // 2393 2394 #ifndef CEF_INCLUDE_CAPI_CEF_DOM_CAPI_H_ 2395diff --git a/cef/include/capi/cef_download_handler_capi.h b/cef/include/capi/cef_download_handler_capi.h 2396index cfccc28376..29b0587103 100644 2397--- a/cef/include/capi/cef_download_handler_capi.h 2398+++ b/cef/include/capi/cef_download_handler_capi.h 2399@@ -1,4 +1,4 @@ 2400-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 2401+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 2402 // 2403 // Redistribution and use in source and binary forms, with or without 2404 // modification, are permitted provided that the following conditions are 2405@@ -33,7 +33,7 @@ 2406 // by hand. See the translator.README.txt file in the tools directory for 2407 // more information. 2408 // 2409-// $hash=f0ceb73b289072a01c45c6e7abf339a4ec924d29$ 2410+// $hash=ec13ec3e2819e4ac49792c3a1c57bc60b45fb95b$ 2411 // 2412 2413 #ifndef CEF_INCLUDE_CAPI_CEF_DOWNLOAD_HANDLER_CAPI_H_ 2414diff --git a/cef/include/capi/cef_download_item_capi.h b/cef/include/capi/cef_download_item_capi.h 2415index 7b628a3504..2d52f11b42 100644 2416--- a/cef/include/capi/cef_download_item_capi.h 2417+++ b/cef/include/capi/cef_download_item_capi.h 2418@@ -1,4 +1,4 @@ 2419-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 2420+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 2421 // 2422 // Redistribution and use in source and binary forms, with or without 2423 // modification, are permitted provided that the following conditions are 2424@@ -33,7 +33,7 @@ 2425 // by hand. See the translator.README.txt file in the tools directory for 2426 // more information. 2427 // 2428-// $hash=d84044bb582b029af5fa46c75f35b3da948dffd2$ 2429+// $hash=b9f0d91dd2fdb3625365ff8b332b08e1f0ea1187$ 2430 // 2431 2432 #ifndef CEF_INCLUDE_CAPI_CEF_DOWNLOAD_ITEM_CAPI_H_ 2433diff --git a/cef/include/capi/cef_drag_data_capi.h b/cef/include/capi/cef_drag_data_capi.h 2434index 97efa21a3e..7e133155d6 100644 2435--- a/cef/include/capi/cef_drag_data_capi.h 2436+++ b/cef/include/capi/cef_drag_data_capi.h 2437@@ -1,4 +1,4 @@ 2438-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 2439+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 2440 // 2441 // Redistribution and use in source and binary forms, with or without 2442 // modification, are permitted provided that the following conditions are 2443@@ -33,7 +33,7 @@ 2444 // by hand. See the translator.README.txt file in the tools directory for 2445 // more information. 2446 // 2447-// $hash=9663321e2be1d000ac54e195c81f210ae40773d1$ 2448+// $hash=b6e3236a062cd25ec26c3daeb1940d1e1bf0d96a$ 2449 // 2450 2451 #ifndef CEF_INCLUDE_CAPI_CEF_DRAG_DATA_CAPI_H_ 2452diff --git a/cef/include/capi/cef_drag_handler_capi.h b/cef/include/capi/cef_drag_handler_capi.h 2453index 260fa4810b..68b26d7165 100644 2454--- a/cef/include/capi/cef_drag_handler_capi.h 2455+++ b/cef/include/capi/cef_drag_handler_capi.h 2456@@ -1,4 +1,4 @@ 2457-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 2458+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 2459 // 2460 // Redistribution and use in source and binary forms, with or without 2461 // modification, are permitted provided that the following conditions are 2462@@ -33,7 +33,7 @@ 2463 // by hand. See the translator.README.txt file in the tools directory for 2464 // more information. 2465 // 2466-// $hash=1cc1f134e68406ae3b05f7e181e12f27262772f0$ 2467+// $hash=5b2051c42c1d4c41b85ca823d34b26bfa5de6777$ 2468 // 2469 2470 #ifndef CEF_INCLUDE_CAPI_CEF_DRAG_HANDLER_CAPI_H_ 2471diff --git a/cef/include/capi/cef_extension_capi.h b/cef/include/capi/cef_extension_capi.h 2472index f51d570d66..24ba87d641 100644 2473--- a/cef/include/capi/cef_extension_capi.h 2474+++ b/cef/include/capi/cef_extension_capi.h 2475@@ -1,4 +1,4 @@ 2476-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 2477+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 2478 // 2479 // Redistribution and use in source and binary forms, with or without 2480 // modification, are permitted provided that the following conditions are 2481@@ -33,7 +33,7 @@ 2482 // by hand. See the translator.README.txt file in the tools directory for 2483 // more information. 2484 // 2485-// $hash=5d5251098be1477705de2a21502dec2d8338ce00$ 2486+// $hash=fcfe34c1517ebdb3f00c1f737b91361e771b820d$ 2487 // 2488 2489 #ifndef CEF_INCLUDE_CAPI_CEF_EXTENSION_CAPI_H_ 2490diff --git a/cef/include/capi/cef_extension_handler_capi.h b/cef/include/capi/cef_extension_handler_capi.h 2491index 023417c09c..73c4f3bca1 100644 2492--- a/cef/include/capi/cef_extension_handler_capi.h 2493+++ b/cef/include/capi/cef_extension_handler_capi.h 2494@@ -1,4 +1,4 @@ 2495-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 2496+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 2497 // 2498 // Redistribution and use in source and binary forms, with or without 2499 // modification, are permitted provided that the following conditions are 2500@@ -33,7 +33,7 @@ 2501 // by hand. See the translator.README.txt file in the tools directory for 2502 // more information. 2503 // 2504-// $hash=c952241dabb9d99109ebb64acba0124e43150628$ 2505+// $hash=768e2436e54cceb2675ddd03ebdc61b5c0785bdc$ 2506 // 2507 2508 #ifndef CEF_INCLUDE_CAPI_CEF_EXTENSION_HANDLER_CAPI_H_ 2509diff --git a/cef/include/capi/cef_file_util_capi.h b/cef/include/capi/cef_file_util_capi.h 2510index d706775605..234f4240f8 100644 2511--- a/cef/include/capi/cef_file_util_capi.h 2512+++ b/cef/include/capi/cef_file_util_capi.h 2513@@ -1,4 +1,4 @@ 2514-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 2515+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 2516 // 2517 // Redistribution and use in source and binary forms, with or without 2518 // modification, are permitted provided that the following conditions are 2519@@ -33,7 +33,7 @@ 2520 // by hand. See the translator.README.txt file in the tools directory for 2521 // more information. 2522 // 2523-// $hash=00d75d4f1968686cec7db84a59df89d98d8fe146$ 2524+// $hash=e76fa23e9682bf0865319d93e4009752ac8f854f$ 2525 // 2526 2527 #ifndef CEF_INCLUDE_CAPI_CEF_FILE_UTIL_CAPI_H_ 2528diff --git a/cef/include/capi/cef_find_handler_capi.h b/cef/include/capi/cef_find_handler_capi.h 2529index 3d42a13fdc..c2f3e08aaa 100644 2530--- a/cef/include/capi/cef_find_handler_capi.h 2531+++ b/cef/include/capi/cef_find_handler_capi.h 2532@@ -1,4 +1,4 @@ 2533-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 2534+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 2535 // 2536 // Redistribution and use in source and binary forms, with or without 2537 // modification, are permitted provided that the following conditions are 2538@@ -33,7 +33,7 @@ 2539 // by hand. See the translator.README.txt file in the tools directory for 2540 // more information. 2541 // 2542-// $hash=03bb69a14868a95abf3bf7b1608dc351480e307f$ 2543+// $hash=b1fe7f7db5ab92c6ae64dc1288b6fd47c80f9423$ 2544 // 2545 2546 #ifndef CEF_INCLUDE_CAPI_CEF_FIND_HANDLER_CAPI_H_ 2547diff --git a/cef/include/capi/cef_focus_handler_capi.h b/cef/include/capi/cef_focus_handler_capi.h 2548index 69fb5a45c6..1615986150 100644 2549--- a/cef/include/capi/cef_focus_handler_capi.h 2550+++ b/cef/include/capi/cef_focus_handler_capi.h 2551@@ -1,4 +1,4 @@ 2552-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 2553+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 2554 // 2555 // Redistribution and use in source and binary forms, with or without 2556 // modification, are permitted provided that the following conditions are 2557@@ -33,7 +33,7 @@ 2558 // by hand. See the translator.README.txt file in the tools directory for 2559 // more information. 2560 // 2561-// $hash=0fccb41381e922e9d9545ae45ba3e6cf1916c4b0$ 2562+// $hash=a136a2679c8af339b21a89e8ae3090a9dbb8daa7$ 2563 // 2564 2565 #ifndef CEF_INCLUDE_CAPI_CEF_FOCUS_HANDLER_CAPI_H_ 2566diff --git a/cef/include/capi/cef_frame_capi.h b/cef/include/capi/cef_frame_capi.h 2567index 7a6f6046cd..4e619607f1 100644 2568--- a/cef/include/capi/cef_frame_capi.h 2569+++ b/cef/include/capi/cef_frame_capi.h 2570@@ -1,4 +1,4 @@ 2571-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 2572+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 2573 // 2574 // Redistribution and use in source and binary forms, with or without 2575 // modification, are permitted provided that the following conditions are 2576@@ -33,7 +33,7 @@ 2577 // by hand. See the translator.README.txt file in the tools directory for 2578 // more information. 2579 // 2580-// $hash=bce865a34f45e6dee8f413f0d6bd7f4c37ab55c0$ 2581+// $hash=ae1cd10d052cdc0f603c9dbf9b99f46746a795ef$ 2582 // 2583 2584 #ifndef CEF_INCLUDE_CAPI_CEF_FRAME_CAPI_H_ 2585@@ -214,6 +214,18 @@ typedef struct _cef_frame_t { 2586 void(CEF_CALLBACK* visit_dom)(struct _cef_frame_t* self, 2587 struct _cef_domvisitor_t* visitor); 2588 2589+ /// 2590+ // Loads the given URL with additional HTTP headers, specified as a map from 2591+ // name to value. Note that if this map contains any of the headers that are 2592+ // set by default by this WebView, such as those controlling caching, accept 2593+ // types or the User-Agent, their values may be overridden by this WebView's 2594+ // defaults. 2595+ /// 2596+ void(CEF_CALLBACK* load_header_url)( 2597+ struct _cef_frame_t* self, 2598+ const cef_string_t* url, 2599+ const cef_string_t* additionalHttpHeaders); 2600+ 2601 /// 2602 // Create a new URL request that will be treated as originating from this 2603 // frame and the associated browser. This request may be intercepted by the 2604diff --git a/cef/include/capi/cef_image_capi.h b/cef/include/capi/cef_image_capi.h 2605index 338e3151c7..99af056297 100644 2606--- a/cef/include/capi/cef_image_capi.h 2607+++ b/cef/include/capi/cef_image_capi.h 2608@@ -1,4 +1,4 @@ 2609-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 2610+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 2611 // 2612 // Redistribution and use in source and binary forms, with or without 2613 // modification, are permitted provided that the following conditions are 2614@@ -33,7 +33,7 @@ 2615 // by hand. See the translator.README.txt file in the tools directory for 2616 // more information. 2617 // 2618-// $hash=d9da8862142742e780086714bbd4fb44ac95cf2c$ 2619+// $hash=b5a36ef39ff250c9d3cb1e9a8c7ee38d7e0f8b3f$ 2620 // 2621 2622 #ifndef CEF_INCLUDE_CAPI_CEF_IMAGE_CAPI_H_ 2623diff --git a/cef/include/capi/cef_jsdialog_handler_capi.h b/cef/include/capi/cef_jsdialog_handler_capi.h 2624index 9ebc436ea1..c0ab4497ed 100644 2625--- a/cef/include/capi/cef_jsdialog_handler_capi.h 2626+++ b/cef/include/capi/cef_jsdialog_handler_capi.h 2627@@ -1,4 +1,4 @@ 2628-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 2629+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 2630 // 2631 // Redistribution and use in source and binary forms, with or without 2632 // modification, are permitted provided that the following conditions are 2633@@ -33,7 +33,7 @@ 2634 // by hand. See the translator.README.txt file in the tools directory for 2635 // more information. 2636 // 2637-// $hash=d991e2a7d1a58a013e4d3a963361fed6918f4ec3$ 2638+// $hash=c68332a779bab425aa2e6a858d20a43448631890$ 2639 // 2640 2641 #ifndef CEF_INCLUDE_CAPI_CEF_JSDIALOG_HANDLER_CAPI_H_ 2642diff --git a/cef/include/capi/cef_keyboard_handler_capi.h b/cef/include/capi/cef_keyboard_handler_capi.h 2643index e88ab7272b..3d6c50fc38 100644 2644--- a/cef/include/capi/cef_keyboard_handler_capi.h 2645+++ b/cef/include/capi/cef_keyboard_handler_capi.h 2646@@ -1,4 +1,4 @@ 2647-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 2648+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 2649 // 2650 // Redistribution and use in source and binary forms, with or without 2651 // modification, are permitted provided that the following conditions are 2652@@ -33,7 +33,7 @@ 2653 // by hand. See the translator.README.txt file in the tools directory for 2654 // more information. 2655 // 2656-// $hash=d804a2db0f9ac13afd249407c85cb8d5852508ac$ 2657+// $hash=140d3a3ce78f5e8ab50a24a2fd6377e7a8ea3256$ 2658 // 2659 2660 #ifndef CEF_INCLUDE_CAPI_CEF_KEYBOARD_HANDLER_CAPI_H_ 2661diff --git a/cef/include/capi/cef_life_span_handler_capi.h b/cef/include/capi/cef_life_span_handler_capi.h 2662index b06a3445b2..a5be3bbe54 100644 2663--- a/cef/include/capi/cef_life_span_handler_capi.h 2664+++ b/cef/include/capi/cef_life_span_handler_capi.h 2665@@ -1,4 +1,4 @@ 2666-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 2667+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 2668 // 2669 // Redistribution and use in source and binary forms, with or without 2670 // modification, are permitted provided that the following conditions are 2671@@ -33,7 +33,7 @@ 2672 // by hand. See the translator.README.txt file in the tools directory for 2673 // more information. 2674 // 2675-// $hash=d7521ac4f73dabd876344400a165d15954c770b0$ 2676+// $hash=a27d95f5d86c5d4ab8a0ced5f05f43923df8b84d$ 2677 // 2678 2679 #ifndef CEF_INCLUDE_CAPI_CEF_LIFE_SPAN_HANDLER_CAPI_H_ 2680diff --git a/cef/include/capi/cef_load_handler_capi.h b/cef/include/capi/cef_load_handler_capi.h 2681index 4352a822a8..13871a2b69 100644 2682--- a/cef/include/capi/cef_load_handler_capi.h 2683+++ b/cef/include/capi/cef_load_handler_capi.h 2684@@ -1,4 +1,4 @@ 2685-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 2686+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 2687 // 2688 // Redistribution and use in source and binary forms, with or without 2689 // modification, are permitted provided that the following conditions are 2690@@ -33,7 +33,7 @@ 2691 // by hand. See the translator.README.txt file in the tools directory for 2692 // more information. 2693 // 2694-// $hash=6c6a719d7cbbc01adfdc9bbe0dff6da10e06e3f3$ 2695+// $hash=4e59a8c7cda2f13ee54599773755637ec846fe84$ 2696 // 2697 2698 #ifndef CEF_INCLUDE_CAPI_CEF_LOAD_HANDLER_CAPI_H_ 2699@@ -43,6 +43,7 @@ 2700 #include "include/capi/cef_base_capi.h" 2701 #include "include/capi/cef_browser_capi.h" 2702 #include "include/capi/cef_frame_capi.h" 2703+#include "include/capi/cef_response_capi.h" 2704 2705 #ifdef __cplusplus 2706 extern "C" { 2707@@ -117,6 +118,26 @@ typedef struct _cef_load_handler_t { 2708 cef_errorcode_t errorCode, 2709 const cef_string_t* errorText, 2710 const cef_string_t* failedUrl); 2711+ 2712+ /// 2713+ // OnLoadErrorWithRequest 2714+ /// 2715+ void(CEF_CALLBACK* on_load_error_with_request)( 2716+ struct _cef_load_handler_t* self, 2717+ struct _cef_request_t* request, 2718+ int is_main_frame, 2719+ int has_user_gesture, 2720+ int error_code, 2721+ const cef_string_t* error_text); 2722+ 2723+ /// 2724+ // OnHttpError 2725+ /// 2726+ void(CEF_CALLBACK* on_http_error)(struct _cef_load_handler_t* self, 2727+ struct _cef_request_t* request, 2728+ int is_main_frame, 2729+ int has_user_gesture, 2730+ struct _cef_response_t* response); 2731 } cef_load_handler_t; 2732 2733 #ifdef __cplusplus 2734diff --git a/cef/include/capi/cef_media_router_capi.h b/cef/include/capi/cef_media_router_capi.h 2735index 6d7b4f20a1..e370e52040 100644 2736--- a/cef/include/capi/cef_media_router_capi.h 2737+++ b/cef/include/capi/cef_media_router_capi.h 2738@@ -1,4 +1,4 @@ 2739-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 2740+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 2741 // 2742 // Redistribution and use in source and binary forms, with or without 2743 // modification, are permitted provided that the following conditions are 2744@@ -33,7 +33,7 @@ 2745 // by hand. See the translator.README.txt file in the tools directory for 2746 // more information. 2747 // 2748-// $hash=79e4e38c732c0cfeef495c8a9726e105054012bb$ 2749+// $hash=3db7459a1940c37898699cc97f69ba9249a6f1fd$ 2750 // 2751 2752 #ifndef CEF_INCLUDE_CAPI_CEF_MEDIA_ROUTER_CAPI_H_ 2753diff --git a/cef/include/capi/cef_menu_model_capi.h b/cef/include/capi/cef_menu_model_capi.h 2754index be2a547119..a1f7920ce9 100644 2755--- a/cef/include/capi/cef_menu_model_capi.h 2756+++ b/cef/include/capi/cef_menu_model_capi.h 2757@@ -1,4 +1,4 @@ 2758-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 2759+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 2760 // 2761 // Redistribution and use in source and binary forms, with or without 2762 // modification, are permitted provided that the following conditions are 2763@@ -33,7 +33,7 @@ 2764 // by hand. See the translator.README.txt file in the tools directory for 2765 // more information. 2766 // 2767-// $hash=28fa978051bd3ddff69d58e0dc8f445f64a61480$ 2768+// $hash=9f30f2caa9eedc0d4fe963dbf0127602ffcbec61$ 2769 // 2770 2771 #ifndef CEF_INCLUDE_CAPI_CEF_MENU_MODEL_CAPI_H_ 2772diff --git a/cef/include/capi/cef_menu_model_delegate_capi.h b/cef/include/capi/cef_menu_model_delegate_capi.h 2773index 95a437aeba..bd4628568f 100644 2774--- a/cef/include/capi/cef_menu_model_delegate_capi.h 2775+++ b/cef/include/capi/cef_menu_model_delegate_capi.h 2776@@ -1,4 +1,4 @@ 2777-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 2778+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 2779 // 2780 // Redistribution and use in source and binary forms, with or without 2781 // modification, are permitted provided that the following conditions are 2782@@ -33,7 +33,7 @@ 2783 // by hand. See the translator.README.txt file in the tools directory for 2784 // more information. 2785 // 2786-// $hash=edc411cb0447a6c2965cdeb5f709fe56c43ec2bb$ 2787+// $hash=bdb670bcaa9eb9f5748900ad25bcc061155d6076$ 2788 // 2789 2790 #ifndef CEF_INCLUDE_CAPI_CEF_MENU_MODEL_DELEGATE_CAPI_H_ 2791diff --git a/cef/include/capi/cef_navigation_entry_capi.h b/cef/include/capi/cef_navigation_entry_capi.h 2792index 1e257e58bb..4d4e07f10d 100644 2793--- a/cef/include/capi/cef_navigation_entry_capi.h 2794+++ b/cef/include/capi/cef_navigation_entry_capi.h 2795@@ -1,4 +1,4 @@ 2796-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 2797+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 2798 // 2799 // Redistribution and use in source and binary forms, with or without 2800 // modification, are permitted provided that the following conditions are 2801@@ -33,7 +33,7 @@ 2802 // by hand. See the translator.README.txt file in the tools directory for 2803 // more information. 2804 // 2805-// $hash=f14afbd6941bcb37b14cce81569882512c3d7194$ 2806+// $hash=3a7dd4a6a1b5e0d9191be6c4dd2f0135f43de643$ 2807 // 2808 2809 #ifndef CEF_INCLUDE_CAPI_CEF_NAVIGATION_ENTRY_CAPI_H_ 2810diff --git a/cef/include/capi/cef_origin_whitelist_capi.h b/cef/include/capi/cef_origin_whitelist_capi.h 2811index fb7f45fb61..563bbdd2cd 100644 2812--- a/cef/include/capi/cef_origin_whitelist_capi.h 2813+++ b/cef/include/capi/cef_origin_whitelist_capi.h 2814@@ -1,4 +1,4 @@ 2815-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 2816+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 2817 // 2818 // Redistribution and use in source and binary forms, with or without 2819 // modification, are permitted provided that the following conditions are 2820@@ -33,7 +33,7 @@ 2821 // by hand. See the translator.README.txt file in the tools directory for 2822 // more information. 2823 // 2824-// $hash=6798e6147540596c1abac8c7457d9d1d4d99bd54$ 2825+// $hash=0939a44345bea8df7ca5f1dbd6afbe41972121f2$ 2826 // 2827 2828 #ifndef CEF_INCLUDE_CAPI_CEF_ORIGIN_WHITELIST_CAPI_H_ 2829diff --git a/cef/include/capi/cef_parser_capi.h b/cef/include/capi/cef_parser_capi.h 2830index eef3a0583c..d3ec0ee5d4 100644 2831--- a/cef/include/capi/cef_parser_capi.h 2832+++ b/cef/include/capi/cef_parser_capi.h 2833@@ -1,4 +1,4 @@ 2834-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 2835+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 2836 // 2837 // Redistribution and use in source and binary forms, with or without 2838 // modification, are permitted provided that the following conditions are 2839@@ -33,7 +33,7 @@ 2840 // by hand. See the translator.README.txt file in the tools directory for 2841 // more information. 2842 // 2843-// $hash=84149324b177c47287b935dcb3d5900a33acfdf5$ 2844+// $hash=f5e1c0fc43c6e85dbafa66975d9dc5e2bc7be69f$ 2845 // 2846 2847 #ifndef CEF_INCLUDE_CAPI_CEF_PARSER_CAPI_H_ 2848diff --git a/cef/include/capi/cef_path_util_capi.h b/cef/include/capi/cef_path_util_capi.h 2849index e70ff9f228..3cbb3ba4b0 100644 2850--- a/cef/include/capi/cef_path_util_capi.h 2851+++ b/cef/include/capi/cef_path_util_capi.h 2852@@ -1,4 +1,4 @@ 2853-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 2854+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 2855 // 2856 // Redistribution and use in source and binary forms, with or without 2857 // modification, are permitted provided that the following conditions are 2858@@ -33,7 +33,7 @@ 2859 // by hand. See the translator.README.txt file in the tools directory for 2860 // more information. 2861 // 2862-// $hash=0ae1fe7f7141eb05eb7fd44c2d41e4c576afae1e$ 2863+// $hash=41ddd04d4efb147b05eb93816af1591ec3b61b76$ 2864 // 2865 2866 #ifndef CEF_INCLUDE_CAPI_CEF_PATH_UTIL_CAPI_H_ 2867diff --git a/cef/include/capi/cef_permission_request_capi.h b/cef/include/capi/cef_permission_request_capi.h 2868new file mode 100644 2869index 0000000000..2be5e9ec8c 2870--- /dev/null 2871+++ b/cef/include/capi/cef_permission_request_capi.h 2872@@ -0,0 +1,227 @@ 2873+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 2874+// 2875+// Redistribution and use in source and binary forms, with or without 2876+// modification, are permitted provided that the following conditions are 2877+// met: 2878+// 2879+// * Redistributions of source code must retain the above copyright 2880+// notice, this list of conditions and the following disclaimer. 2881+// * Redistributions in binary form must reproduce the above 2882+// copyright notice, this list of conditions and the following disclaimer 2883+// in the documentation and/or other materials provided with the 2884+// distribution. 2885+// * Neither the name of Google Inc. nor the name Chromium Embedded 2886+// Framework nor the names of its contributors may be used to endorse 2887+// or promote products derived from this software without specific prior 2888+// written permission. 2889+// 2890+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 2891+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 2892+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 2893+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 2894+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 2895+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 2896+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 2897+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 2898+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 2899+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 2900+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 2901+// 2902+// --------------------------------------------------------------------------- 2903+// 2904+// This file was generated by the CEF translator tool and should not edited 2905+// by hand. See the translator.README.txt file in the tools directory for 2906+// more information. 2907+// 2908+// $hash=e930f6445aaeb80ff2f6b1a3077d7d0d4bbd7109$ 2909+// 2910+ 2911+#ifndef CEF_INCLUDE_CAPI_CEF_PERMISSION_REQUEST_CAPI_H_ 2912+#define CEF_INCLUDE_CAPI_CEF_PERMISSION_REQUEST_CAPI_H_ 2913+#pragma once 2914+ 2915+#include "include/capi/cef_base_capi.h" 2916+#include "include/internal/cef_types.h" 2917+ 2918+#ifdef __cplusplus 2919+extern "C" { 2920+#endif 2921+ 2922+/// 2923+// Structure used to report permission request for the specified origin. 2924+/// 2925+typedef struct _cef_access_request_t { 2926+ /// 2927+ // Base structure. 2928+ /// 2929+ cef_base_ref_counted_t base; 2930+ 2931+ /// 2932+ // Get the origin that is trying to acess the resource. 2933+ /// 2934+ // The resulting string must be freed by calling cef_string_userfree_free(). 2935+ cef_string_userfree_t(CEF_CALLBACK* origin)( 2936+ struct _cef_access_request_t* self); 2937+ 2938+ /// 2939+ // Get the resource that the origin is trying to acess. 2940+ /// 2941+ int(CEF_CALLBACK* resource_acess_id)(struct _cef_access_request_t* self); 2942+ 2943+ /// 2944+ // Report whether the origin is allowed to acess the resource. 2945+ /// 2946+ void(CEF_CALLBACK* report_request_result)(struct _cef_access_request_t* self, 2947+ int allowed); 2948+} cef_access_request_t; 2949+ 2950+/// 2951+// Implement this structure to handle permission requests. 2952+/// 2953+typedef struct _cef_permission_request_t { 2954+ /// 2955+ // Base structure. 2956+ /// 2957+ cef_base_ref_counted_t base; 2958+ 2959+ /// 2960+ // Notify the host application that web content from the specified origin is 2961+ // attempting to use the Geolocation API, but no permission state is currently 2962+ // set for that origin. The host application should invoke the specified 2963+ // callback with the desired permission state. 2964+ /// 2965+ void(CEF_CALLBACK* on_geolocation_show)( 2966+ struct _cef_permission_request_t* self, 2967+ const cef_string_t* origin); 2968+ 2969+ /// 2970+ // Revert the operation in the OnGeolocationShow. 2971+ /// 2972+ void(CEF_CALLBACK* on_geolocation_hide)( 2973+ struct _cef_permission_request_t* self); 2974+ 2975+ /// 2976+ // Notify the host application that web content from the specified origin is 2977+ // attempting to access the resources, but no permission state is currently 2978+ // set for that origin. The host application should invoke the specified 2979+ // callback with the desired permission state. 2980+ /// 2981+ void(CEF_CALLBACK* on_permission_request)( 2982+ struct _cef_permission_request_t* self, 2983+ struct _cef_access_request_t* request); 2984+ 2985+ /// 2986+ // Revert the operation in the OnPermissionRequest. 2987+ /// 2988+ void(CEF_CALLBACK* on_permission_request_canceled)( 2989+ struct _cef_permission_request_t* self, 2990+ struct _cef_access_request_t* request); 2991+} cef_permission_request_t; 2992+ 2993+/// 2994+// Structure used to handle the permission requests from |BrowserContext|. 2995+/// 2996+typedef struct _cef_browser_permission_request_delegate_t { 2997+ /// 2998+ // Base structure. 2999+ /// 3000+ cef_base_ref_counted_t base; 3001+ 3002+ /// 3003+ // Handle the Geolocation permission requests. 3004+ /// 3005+ void(CEF_CALLBACK* ask_geolocation_permission)( 3006+ struct _cef_browser_permission_request_delegate_t* self, 3007+ const cef_string_t* origin, 3008+ cef_permission_callback_t callback); 3009+ 3010+ /// 3011+ // Cancel the Geolocation permission requests. 3012+ /// 3013+ void(CEF_CALLBACK* abort_ask_geolocation_permission)( 3014+ struct _cef_browser_permission_request_delegate_t* self, 3015+ const cef_string_t* origin); 3016+ 3017+ /// 3018+ // Handle the Protected Media Identifier permission requests. 3019+ /// 3020+ void(CEF_CALLBACK* ask_protected_media_identifier_permission)( 3021+ struct _cef_browser_permission_request_delegate_t* self, 3022+ const cef_string_t* origin, 3023+ cef_permission_callback_t callback); 3024+ 3025+ /// 3026+ // Cancel the Protected Media Identifier permission requests. 3027+ /// 3028+ void(CEF_CALLBACK* abort_ask_protected_media_identifier_permission)( 3029+ struct _cef_browser_permission_request_delegate_t* self, 3030+ const cef_string_t* origin); 3031+ 3032+ /// 3033+ // Handle the MIDI Sysex permission requests. 3034+ /// 3035+ void(CEF_CALLBACK* ask_midisysex_permission)( 3036+ struct _cef_browser_permission_request_delegate_t* self, 3037+ const cef_string_t* origin, 3038+ cef_permission_callback_t callback); 3039+ 3040+ /// 3041+ // Cancel the MIDI Sysex permission requests. 3042+ /// 3043+ void(CEF_CALLBACK* abort_ask_midisysex_permission)( 3044+ struct _cef_browser_permission_request_delegate_t* self, 3045+ const cef_string_t* origin); 3046+ 3047+ /// 3048+ // The callback for the Geolocation permission requests. 3049+ /// 3050+ void(CEF_CALLBACK* notify_geolocation_permission)( 3051+ struct _cef_browser_permission_request_delegate_t* self, 3052+ int value, 3053+ const cef_string_t* origin); 3054+} cef_browser_permission_request_delegate_t; 3055+ 3056+/// 3057+// Structure used to set the geolocation permission state for the specified 3058+// origin. 3059+/// 3060+typedef struct _cef_geolocation_acess_t { 3061+ /// 3062+ // Base structure. 3063+ /// 3064+ cef_base_ref_counted_t base; 3065+ 3066+ /// 3067+ // Return true (1) if the geolocation permission state is set for the 3068+ // specified origin. 3069+ /// 3070+ int(CEF_CALLBACK* contain_origin)(struct _cef_geolocation_acess_t* self, 3071+ const cef_string_t* origin); 3072+ 3073+ /// 3074+ // Return true (1) if the geolocation permission state set for the specified 3075+ // origin is true (1). 3076+ /// 3077+ int(CEF_CALLBACK* is_origin_access_enabled)( 3078+ struct _cef_geolocation_acess_t* self, 3079+ const cef_string_t* origin); 3080+ 3081+ /// 3082+ // Set the geolocation permission state to true (1) for the specified origin. 3083+ /// 3084+ void(CEF_CALLBACK* enabled)(struct _cef_geolocation_acess_t* self, 3085+ const cef_string_t* origin); 3086+ 3087+ /// 3088+ // Set the geolocation permission state to false (0) for the specified 3089+ // origin. 3090+ /// 3091+ void(CEF_CALLBACK* disabled)(struct _cef_geolocation_acess_t* self, 3092+ const cef_string_t* origin); 3093+} cef_geolocation_acess_t; 3094+ 3095+#ifdef __cplusplus 3096+} 3097+#endif 3098+ 3099+#endif // CEF_INCLUDE_CAPI_CEF_PERMISSION_REQUEST_CAPI_H_ 3100diff --git a/cef/include/capi/cef_print_handler_capi.h b/cef/include/capi/cef_print_handler_capi.h 3101index a3d7d3cf91..df321dea17 100644 3102--- a/cef/include/capi/cef_print_handler_capi.h 3103+++ b/cef/include/capi/cef_print_handler_capi.h 3104@@ -1,4 +1,4 @@ 3105-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 3106+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 3107 // 3108 // Redistribution and use in source and binary forms, with or without 3109 // modification, are permitted provided that the following conditions are 3110@@ -33,7 +33,7 @@ 3111 // by hand. See the translator.README.txt file in the tools directory for 3112 // more information. 3113 // 3114-// $hash=84fc58b3898f25476d9cdd260553390ba5e0b30b$ 3115+// $hash=e26be3efc18d8c79d019c02b1d73a7ec2866b142$ 3116 // 3117 3118 #ifndef CEF_INCLUDE_CAPI_CEF_PRINT_HANDLER_CAPI_H_ 3119diff --git a/cef/include/capi/cef_print_settings_capi.h b/cef/include/capi/cef_print_settings_capi.h 3120index 4019599462..e611abfd47 100644 3121--- a/cef/include/capi/cef_print_settings_capi.h 3122+++ b/cef/include/capi/cef_print_settings_capi.h 3123@@ -1,4 +1,4 @@ 3124-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 3125+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 3126 // 3127 // Redistribution and use in source and binary forms, with or without 3128 // modification, are permitted provided that the following conditions are 3129@@ -33,7 +33,7 @@ 3130 // by hand. See the translator.README.txt file in the tools directory for 3131 // more information. 3132 // 3133-// $hash=4b52323c4ce2d0ebcc3438e16fc9a9b181a58adc$ 3134+// $hash=fdbd26f9dd20dbd7813fc17a8c34650b2da19581$ 3135 // 3136 3137 #ifndef CEF_INCLUDE_CAPI_CEF_PRINT_SETTINGS_CAPI_H_ 3138diff --git a/cef/include/capi/cef_process_message_capi.h b/cef/include/capi/cef_process_message_capi.h 3139index 5cee0e8108..b87770ba48 100644 3140--- a/cef/include/capi/cef_process_message_capi.h 3141+++ b/cef/include/capi/cef_process_message_capi.h 3142@@ -1,4 +1,4 @@ 3143-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 3144+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 3145 // 3146 // Redistribution and use in source and binary forms, with or without 3147 // modification, are permitted provided that the following conditions are 3148@@ -33,7 +33,7 @@ 3149 // by hand. See the translator.README.txt file in the tools directory for 3150 // more information. 3151 // 3152-// $hash=53ff22b73527aa331d2bd96e008f4cb4f0413042$ 3153+// $hash=2549ea10cd3a41bc04ab81bad24eb12787de68b9$ 3154 // 3155 3156 #ifndef CEF_INCLUDE_CAPI_CEF_PROCESS_MESSAGE_CAPI_H_ 3157diff --git a/cef/include/capi/cef_process_util_capi.h b/cef/include/capi/cef_process_util_capi.h 3158index e968af1ad2..f22dd7e8ab 100644 3159--- a/cef/include/capi/cef_process_util_capi.h 3160+++ b/cef/include/capi/cef_process_util_capi.h 3161@@ -1,4 +1,4 @@ 3162-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 3163+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 3164 // 3165 // Redistribution and use in source and binary forms, with or without 3166 // modification, are permitted provided that the following conditions are 3167@@ -33,7 +33,7 @@ 3168 // by hand. See the translator.README.txt file in the tools directory for 3169 // more information. 3170 // 3171-// $hash=c476a8d22852994d9d9695db901efaef13bbfc9d$ 3172+// $hash=1f2b752c4e314b240ce95cb3b87863c2f99534a8$ 3173 // 3174 3175 #ifndef CEF_INCLUDE_CAPI_CEF_PROCESS_UTIL_CAPI_H_ 3176diff --git a/cef/include/capi/cef_registration_capi.h b/cef/include/capi/cef_registration_capi.h 3177index 2ad93caf5c..3285569eb8 100644 3178--- a/cef/include/capi/cef_registration_capi.h 3179+++ b/cef/include/capi/cef_registration_capi.h 3180@@ -1,4 +1,4 @@ 3181-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 3182+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 3183 // 3184 // Redistribution and use in source and binary forms, with or without 3185 // modification, are permitted provided that the following conditions are 3186@@ -33,7 +33,7 @@ 3187 // by hand. See the translator.README.txt file in the tools directory for 3188 // more information. 3189 // 3190-// $hash=8cde223bdb8d25ff163edd95da0d9e238b298016$ 3191+// $hash=d5efa37953d0f0097fef20bc18f4938621c6b168$ 3192 // 3193 3194 #ifndef CEF_INCLUDE_CAPI_CEF_REGISTRATION_CAPI_H_ 3195diff --git a/cef/include/capi/cef_render_handler_capi.h b/cef/include/capi/cef_render_handler_capi.h 3196index 0dd8716557..a57a968602 100644 3197--- a/cef/include/capi/cef_render_handler_capi.h 3198+++ b/cef/include/capi/cef_render_handler_capi.h 3199@@ -1,4 +1,4 @@ 3200-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 3201+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 3202 // 3203 // Redistribution and use in source and binary forms, with or without 3204 // modification, are permitted provided that the following conditions are 3205@@ -33,7 +33,7 @@ 3206 // by hand. See the translator.README.txt file in the tools directory for 3207 // more information. 3208 // 3209-// $hash=e4bdab963041a270edabc0954b415eb4cae8e5cb$ 3210+// $hash=da1762d0fa16d2e4c2b7281bcaeb6181e00eb1af$ 3211 // 3212 3213 #ifndef CEF_INCLUDE_CAPI_CEF_RENDER_HANDLER_CAPI_H_ 3214@@ -198,6 +198,14 @@ typedef struct _cef_render_handler_t { 3215 double x, 3216 double y); 3217 3218+ /// 3219+ // Called when the RootLayer has changed. 3220+ /// 3221+ void(CEF_CALLBACK* on_root_layer_changed)(struct _cef_render_handler_t* self, 3222+ struct _cef_browser_t* browser, 3223+ int height, 3224+ int width); 3225+ 3226 /// 3227 // Called when the IME composition range has changed. |selected_range| is the 3228 // range of characters that have been selected. |character_bounds| is the 3229diff --git a/cef/include/capi/cef_render_process_handler_capi.h b/cef/include/capi/cef_render_process_handler_capi.h 3230index 5359e9df79..c949cf11b4 100644 3231--- a/cef/include/capi/cef_render_process_handler_capi.h 3232+++ b/cef/include/capi/cef_render_process_handler_capi.h 3233@@ -1,4 +1,4 @@ 3234-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 3235+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 3236 // 3237 // Redistribution and use in source and binary forms, with or without 3238 // modification, are permitted provided that the following conditions are 3239@@ -33,7 +33,7 @@ 3240 // by hand. See the translator.README.txt file in the tools directory for 3241 // more information. 3242 // 3243-// $hash=41339414bca54054046a8f7fbce402a0e0dd8020$ 3244+// $hash=c1b07725cbf7cd1fb4ef207a17fda98b8e9e750f$ 3245 // 3246 3247 #ifndef CEF_INCLUDE_CAPI_CEF_RENDER_PROCESS_HANDLER_CAPI_H_ 3248diff --git a/cef/include/capi/cef_request_callback_capi.h b/cef/include/capi/cef_request_callback_capi.h 3249index 112d3a4f56..3799fb2d0d 100644 3250--- a/cef/include/capi/cef_request_callback_capi.h 3251+++ b/cef/include/capi/cef_request_callback_capi.h 3252@@ -1,4 +1,4 @@ 3253-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 3254+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 3255 // 3256 // Redistribution and use in source and binary forms, with or without 3257 // modification, are permitted provided that the following conditions are 3258@@ -33,7 +33,7 @@ 3259 // by hand. See the translator.README.txt file in the tools directory for 3260 // more information. 3261 // 3262-// $hash=273af5bd01c6ab5d4df8efb2af2b4e2da9c21760$ 3263+// $hash=830a1e8ef0e0910fde07c4f4c4fb7df7f8d74a66$ 3264 // 3265 3266 #ifndef CEF_INCLUDE_CAPI_CEF_REQUEST_CALLBACK_CAPI_H_ 3267diff --git a/cef/include/capi/cef_request_capi.h b/cef/include/capi/cef_request_capi.h 3268index a0f835baec..3ddd18fef5 100644 3269--- a/cef/include/capi/cef_request_capi.h 3270+++ b/cef/include/capi/cef_request_capi.h 3271@@ -1,4 +1,4 @@ 3272-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 3273+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 3274 // 3275 // Redistribution and use in source and binary forms, with or without 3276 // modification, are permitted provided that the following conditions are 3277@@ -33,7 +33,7 @@ 3278 // by hand. See the translator.README.txt file in the tools directory for 3279 // more information. 3280 // 3281-// $hash=a5e9055958c3588d583d4d128a5d7c8639f39946$ 3282+// $hash=47b361878452f2a94e559782913d80beb0dba25a$ 3283 // 3284 3285 #ifndef CEF_INCLUDE_CAPI_CEF_REQUEST_CAPI_H_ 3286diff --git a/cef/include/capi/cef_request_context_capi.h b/cef/include/capi/cef_request_context_capi.h 3287index 9871a214d8..3dc3ab3a3f 100644 3288--- a/cef/include/capi/cef_request_context_capi.h 3289+++ b/cef/include/capi/cef_request_context_capi.h 3290@@ -1,4 +1,4 @@ 3291-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 3292+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 3293 // 3294 // Redistribution and use in source and binary forms, with or without 3295 // modification, are permitted provided that the following conditions are 3296@@ -33,7 +33,7 @@ 3297 // by hand. See the translator.README.txt file in the tools directory for 3298 // more information. 3299 // 3300-// $hash=2e42334fc22050e207e5a0af6fe290a592e4105f$ 3301+// $hash=9faa2d004412793c0b4d9f9a487197bb02dc6da8$ 3302 // 3303 3304 #ifndef CEF_INCLUDE_CAPI_CEF_REQUEST_CONTEXT_CAPI_H_ 3305diff --git a/cef/include/capi/cef_request_context_handler_capi.h b/cef/include/capi/cef_request_context_handler_capi.h 3306index c14f672869..5428253026 100644 3307--- a/cef/include/capi/cef_request_context_handler_capi.h 3308+++ b/cef/include/capi/cef_request_context_handler_capi.h 3309@@ -1,4 +1,4 @@ 3310-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 3311+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 3312 // 3313 // Redistribution and use in source and binary forms, with or without 3314 // modification, are permitted provided that the following conditions are 3315@@ -33,7 +33,7 @@ 3316 // by hand. See the translator.README.txt file in the tools directory for 3317 // more information. 3318 // 3319-// $hash=fa148db8a0ecd79966814086fb92e439687be701$ 3320+// $hash=f5082ce09256e084167c6fe3e6cf2a46fe7262ff$ 3321 // 3322 3323 #ifndef CEF_INCLUDE_CAPI_CEF_REQUEST_CONTEXT_HANDLER_CAPI_H_ 3324diff --git a/cef/include/capi/cef_request_handler_capi.h b/cef/include/capi/cef_request_handler_capi.h 3325index 596c4b7c1e..bf623801b2 100644 3326--- a/cef/include/capi/cef_request_handler_capi.h 3327+++ b/cef/include/capi/cef_request_handler_capi.h 3328@@ -1,4 +1,4 @@ 3329-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 3330+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 3331 // 3332 // Redistribution and use in source and binary forms, with or without 3333 // modification, are permitted provided that the following conditions are 3334@@ -33,7 +33,7 @@ 3335 // by hand. See the translator.README.txt file in the tools directory for 3336 // more information. 3337 // 3338-// $hash=1d8b3f540a8305ce1738c5fe7c716434062c67b0$ 3339+// $hash=f71942c55763a057642cb4b23a212d9c858db6a0$ 3340 // 3341 3342 #ifndef CEF_INCLUDE_CAPI_CEF_REQUEST_HANDLER_CAPI_H_ 3343diff --git a/cef/include/capi/cef_resource_bundle_capi.h b/cef/include/capi/cef_resource_bundle_capi.h 3344index 8f6351b126..9e83df4059 100644 3345--- a/cef/include/capi/cef_resource_bundle_capi.h 3346+++ b/cef/include/capi/cef_resource_bundle_capi.h 3347@@ -1,4 +1,4 @@ 3348-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 3349+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 3350 // 3351 // Redistribution and use in source and binary forms, with or without 3352 // modification, are permitted provided that the following conditions are 3353@@ -33,7 +33,7 @@ 3354 // by hand. See the translator.README.txt file in the tools directory for 3355 // more information. 3356 // 3357-// $hash=ffe0de3b50e0a612bd1b055b873c265b030e721d$ 3358+// $hash=a9e35ca17785f77666db7650208cacfd9a85c3e0$ 3359 // 3360 3361 #ifndef CEF_INCLUDE_CAPI_CEF_RESOURCE_BUNDLE_CAPI_H_ 3362diff --git a/cef/include/capi/cef_resource_bundle_handler_capi.h b/cef/include/capi/cef_resource_bundle_handler_capi.h 3363index 4f87d716ef..a72d6dffd3 100644 3364--- a/cef/include/capi/cef_resource_bundle_handler_capi.h 3365+++ b/cef/include/capi/cef_resource_bundle_handler_capi.h 3366@@ -1,4 +1,4 @@ 3367-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 3368+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 3369 // 3370 // Redistribution and use in source and binary forms, with or without 3371 // modification, are permitted provided that the following conditions are 3372@@ -33,7 +33,7 @@ 3373 // by hand. See the translator.README.txt file in the tools directory for 3374 // more information. 3375 // 3376-// $hash=b9723e0dfe6d03c24665eac2264396743a5254df$ 3377+// $hash=3d7b3d4702c8d35dc8780f9e87eb7560d6ce1dee$ 3378 // 3379 3380 #ifndef CEF_INCLUDE_CAPI_CEF_RESOURCE_BUNDLE_HANDLER_CAPI_H_ 3381diff --git a/cef/include/capi/cef_resource_handler_capi.h b/cef/include/capi/cef_resource_handler_capi.h 3382index 9dc7b0bde2..4c581cb71f 100644 3383--- a/cef/include/capi/cef_resource_handler_capi.h 3384+++ b/cef/include/capi/cef_resource_handler_capi.h 3385@@ -1,4 +1,4 @@ 3386-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 3387+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 3388 // 3389 // Redistribution and use in source and binary forms, with or without 3390 // modification, are permitted provided that the following conditions are 3391@@ -33,7 +33,7 @@ 3392 // by hand. See the translator.README.txt file in the tools directory for 3393 // more information. 3394 // 3395-// $hash=a9598f4e94a864e749b425aa62bc519589f5753e$ 3396+// $hash=67df3d56f0cc0f58d2b0a2fe884bbb2c1c39813f$ 3397 // 3398 3399 #ifndef CEF_INCLUDE_CAPI_CEF_RESOURCE_HANDLER_CAPI_H_ 3400diff --git a/cef/include/capi/cef_resource_request_handler_capi.h b/cef/include/capi/cef_resource_request_handler_capi.h 3401index 3f436a2b7e..66e605cd14 100644 3402--- a/cef/include/capi/cef_resource_request_handler_capi.h 3403+++ b/cef/include/capi/cef_resource_request_handler_capi.h 3404@@ -1,4 +1,4 @@ 3405-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 3406+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 3407 // 3408 // Redistribution and use in source and binary forms, with or without 3409 // modification, are permitted provided that the following conditions are 3410@@ -33,7 +33,7 @@ 3411 // by hand. See the translator.README.txt file in the tools directory for 3412 // more information. 3413 // 3414-// $hash=aec52d0efc8407495fe1fc4821616673da7ed17a$ 3415+// $hash=17f1853125ab8cc00765275d8bf1d3bc63433e05$ 3416 // 3417 3418 #ifndef CEF_INCLUDE_CAPI_CEF_RESOURCE_REQUEST_HANDLER_CAPI_H_ 3419diff --git a/cef/include/capi/cef_response_capi.h b/cef/include/capi/cef_response_capi.h 3420index 640ed91c7a..d4973e6cda 100644 3421--- a/cef/include/capi/cef_response_capi.h 3422+++ b/cef/include/capi/cef_response_capi.h 3423@@ -1,4 +1,4 @@ 3424-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 3425+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 3426 // 3427 // Redistribution and use in source and binary forms, with or without 3428 // modification, are permitted provided that the following conditions are 3429@@ -33,7 +33,7 @@ 3430 // by hand. See the translator.README.txt file in the tools directory for 3431 // more information. 3432 // 3433-// $hash=8202bbf8e7f7ae474182c483f0f599b13f6914eb$ 3434+// $hash=6ebf7adcdaee57772810c1528b27140ae95966d0$ 3435 // 3436 3437 #ifndef CEF_INCLUDE_CAPI_CEF_RESPONSE_CAPI_H_ 3438diff --git a/cef/include/capi/cef_response_filter_capi.h b/cef/include/capi/cef_response_filter_capi.h 3439index c5943fb8be..2267054ca8 100644 3440--- a/cef/include/capi/cef_response_filter_capi.h 3441+++ b/cef/include/capi/cef_response_filter_capi.h 3442@@ -1,4 +1,4 @@ 3443-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 3444+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 3445 // 3446 // Redistribution and use in source and binary forms, with or without 3447 // modification, are permitted provided that the following conditions are 3448@@ -33,7 +33,7 @@ 3449 // by hand. See the translator.README.txt file in the tools directory for 3450 // more information. 3451 // 3452-// $hash=cdadf516dc77455c5a3d6633bfb12e1cb276b9bb$ 3453+// $hash=fb06b9630b95fedb5d202aab7814d914ab7c943b$ 3454 // 3455 3456 #ifndef CEF_INCLUDE_CAPI_CEF_RESPONSE_FILTER_CAPI_H_ 3457diff --git a/cef/include/capi/cef_scheme_capi.h b/cef/include/capi/cef_scheme_capi.h 3458index 84fb28dc94..444506c93f 100644 3459--- a/cef/include/capi/cef_scheme_capi.h 3460+++ b/cef/include/capi/cef_scheme_capi.h 3461@@ -1,4 +1,4 @@ 3462-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 3463+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 3464 // 3465 // Redistribution and use in source and binary forms, with or without 3466 // modification, are permitted provided that the following conditions are 3467@@ -33,7 +33,7 @@ 3468 // by hand. See the translator.README.txt file in the tools directory for 3469 // more information. 3470 // 3471-// $hash=9384e0b2bc27ccbdd7ebb1a86f213c28fd2784a1$ 3472+// $hash=df8c46dd19ef6a3964c49d79e770de6e4245e208$ 3473 // 3474 3475 #ifndef CEF_INCLUDE_CAPI_CEF_SCHEME_CAPI_H_ 3476diff --git a/cef/include/capi/cef_server_capi.h b/cef/include/capi/cef_server_capi.h 3477index d18d846068..a3aa6a64d9 100644 3478--- a/cef/include/capi/cef_server_capi.h 3479+++ b/cef/include/capi/cef_server_capi.h 3480@@ -1,4 +1,4 @@ 3481-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 3482+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 3483 // 3484 // Redistribution and use in source and binary forms, with or without 3485 // modification, are permitted provided that the following conditions are 3486@@ -33,7 +33,7 @@ 3487 // by hand. See the translator.README.txt file in the tools directory for 3488 // more information. 3489 // 3490-// $hash=37b3332057dbcf705b61a51cf14640d171d18a74$ 3491+// $hash=72c2b4f976016cea50e54a386c09a786973c01a3$ 3492 // 3493 3494 #ifndef CEF_INCLUDE_CAPI_CEF_SERVER_CAPI_H_ 3495diff --git a/cef/include/capi/cef_ssl_info_capi.h b/cef/include/capi/cef_ssl_info_capi.h 3496index 1c03e1f516..b122a75862 100644 3497--- a/cef/include/capi/cef_ssl_info_capi.h 3498+++ b/cef/include/capi/cef_ssl_info_capi.h 3499@@ -1,4 +1,4 @@ 3500-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 3501+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 3502 // 3503 // Redistribution and use in source and binary forms, with or without 3504 // modification, are permitted provided that the following conditions are 3505@@ -33,7 +33,7 @@ 3506 // by hand. See the translator.README.txt file in the tools directory for 3507 // more information. 3508 // 3509-// $hash=aefb3b63aba8f5df6ab6dc11e2029820c75c36cf$ 3510+// $hash=d72f3b34b4150f29f1491b2c729f4a8afc4a33f4$ 3511 // 3512 3513 #ifndef CEF_INCLUDE_CAPI_CEF_SSL_INFO_CAPI_H_ 3514diff --git a/cef/include/capi/cef_ssl_status_capi.h b/cef/include/capi/cef_ssl_status_capi.h 3515index c2a0ecdebe..49268b3f24 100644 3516--- a/cef/include/capi/cef_ssl_status_capi.h 3517+++ b/cef/include/capi/cef_ssl_status_capi.h 3518@@ -1,4 +1,4 @@ 3519-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 3520+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 3521 // 3522 // Redistribution and use in source and binary forms, with or without 3523 // modification, are permitted provided that the following conditions are 3524@@ -33,7 +33,7 @@ 3525 // by hand. See the translator.README.txt file in the tools directory for 3526 // more information. 3527 // 3528-// $hash=93eb2bc0f51da08a41fb906436654b3452b74fb3$ 3529+// $hash=1bc8a73a196fbbb6cec3dd1738b817575b17706d$ 3530 // 3531 3532 #ifndef CEF_INCLUDE_CAPI_CEF_SSL_STATUS_CAPI_H_ 3533diff --git a/cef/include/capi/cef_stream_capi.h b/cef/include/capi/cef_stream_capi.h 3534index e0db46afeb..3197a5b1f5 100644 3535--- a/cef/include/capi/cef_stream_capi.h 3536+++ b/cef/include/capi/cef_stream_capi.h 3537@@ -1,4 +1,4 @@ 3538-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 3539+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 3540 // 3541 // Redistribution and use in source and binary forms, with or without 3542 // modification, are permitted provided that the following conditions are 3543@@ -33,7 +33,7 @@ 3544 // by hand. See the translator.README.txt file in the tools directory for 3545 // more information. 3546 // 3547-// $hash=61ff7a4ebc917482bad5daba7089b92cc62bada8$ 3548+// $hash=87f6cad177614ece33d9574f0f2964e5bb97d613$ 3549 // 3550 3551 #ifndef CEF_INCLUDE_CAPI_CEF_STREAM_CAPI_H_ 3552diff --git a/cef/include/capi/cef_string_visitor_capi.h b/cef/include/capi/cef_string_visitor_capi.h 3553index 8798cf4f75..4acd1b472a 100644 3554--- a/cef/include/capi/cef_string_visitor_capi.h 3555+++ b/cef/include/capi/cef_string_visitor_capi.h 3556@@ -1,4 +1,4 @@ 3557-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 3558+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 3559 // 3560 // Redistribution and use in source and binary forms, with or without 3561 // modification, are permitted provided that the following conditions are 3562@@ -33,7 +33,7 @@ 3563 // by hand. See the translator.README.txt file in the tools directory for 3564 // more information. 3565 // 3566-// $hash=30d4a63d53bce310ad641cbe5096ae126a664076$ 3567+// $hash=398537ec88bfe902c49908db4a549da297594b70$ 3568 // 3569 3570 #ifndef CEF_INCLUDE_CAPI_CEF_STRING_VISITOR_CAPI_H_ 3571diff --git a/cef/include/capi/cef_task_capi.h b/cef/include/capi/cef_task_capi.h 3572index 9087af3ceb..5f6281e1b9 100644 3573--- a/cef/include/capi/cef_task_capi.h 3574+++ b/cef/include/capi/cef_task_capi.h 3575@@ -1,4 +1,4 @@ 3576-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 3577+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 3578 // 3579 // Redistribution and use in source and binary forms, with or without 3580 // modification, are permitted provided that the following conditions are 3581@@ -33,7 +33,7 @@ 3582 // by hand. See the translator.README.txt file in the tools directory for 3583 // more information. 3584 // 3585-// $hash=a8b2162b7c3b7cede392e8531c46a1277e990689$ 3586+// $hash=e943dd2af818e5a5f19f6cbd1648896684c666c6$ 3587 // 3588 3589 #ifndef CEF_INCLUDE_CAPI_CEF_TASK_CAPI_H_ 3590diff --git a/cef/include/capi/cef_thread_capi.h b/cef/include/capi/cef_thread_capi.h 3591index 09dc421a05..4b99983d5b 100644 3592--- a/cef/include/capi/cef_thread_capi.h 3593+++ b/cef/include/capi/cef_thread_capi.h 3594@@ -1,4 +1,4 @@ 3595-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 3596+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 3597 // 3598 // Redistribution and use in source and binary forms, with or without 3599 // modification, are permitted provided that the following conditions are 3600@@ -33,7 +33,7 @@ 3601 // by hand. See the translator.README.txt file in the tools directory for 3602 // more information. 3603 // 3604-// $hash=9a471c97e43ad3d1d042ba3dc6d887f2f4b0d851$ 3605+// $hash=d99ffc2270c1cf8b0f06dd08c1b6e9b27cee4bc8$ 3606 // 3607 3608 #ifndef CEF_INCLUDE_CAPI_CEF_THREAD_CAPI_H_ 3609diff --git a/cef/include/capi/cef_trace_capi.h b/cef/include/capi/cef_trace_capi.h 3610index 28304312a9..df39462f05 100644 3611--- a/cef/include/capi/cef_trace_capi.h 3612+++ b/cef/include/capi/cef_trace_capi.h 3613@@ -1,4 +1,4 @@ 3614-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 3615+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 3616 // 3617 // Redistribution and use in source and binary forms, with or without 3618 // modification, are permitted provided that the following conditions are 3619@@ -33,7 +33,7 @@ 3620 // by hand. See the translator.README.txt file in the tools directory for 3621 // more information. 3622 // 3623-// $hash=99779f8a728d2e1a0b87d6d6b89bd28e5da16d4c$ 3624+// $hash=a7b4410e0a35eb0aba747014665419fb6b6fcb67$ 3625 // 3626 3627 #ifndef CEF_INCLUDE_CAPI_CEF_TRACE_CAPI_H_ 3628diff --git a/cef/include/capi/cef_urlrequest_capi.h b/cef/include/capi/cef_urlrequest_capi.h 3629index 3b3e8281cf..75a834c811 100644 3630--- a/cef/include/capi/cef_urlrequest_capi.h 3631+++ b/cef/include/capi/cef_urlrequest_capi.h 3632@@ -1,4 +1,4 @@ 3633-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 3634+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 3635 // 3636 // Redistribution and use in source and binary forms, with or without 3637 // modification, are permitted provided that the following conditions are 3638@@ -33,7 +33,7 @@ 3639 // by hand. See the translator.README.txt file in the tools directory for 3640 // more information. 3641 // 3642-// $hash=11c227079ec0687adeaa8a085aeec37c89346ee7$ 3643+// $hash=a14d77cd7756797afb4db3d28a2359da53011bfa$ 3644 // 3645 3646 #ifndef CEF_INCLUDE_CAPI_CEF_URLREQUEST_CAPI_H_ 3647diff --git a/cef/include/capi/cef_v8_capi.h b/cef/include/capi/cef_v8_capi.h 3648index c11f9d36ad..824c3dbb48 100644 3649--- a/cef/include/capi/cef_v8_capi.h 3650+++ b/cef/include/capi/cef_v8_capi.h 3651@@ -1,4 +1,4 @@ 3652-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 3653+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 3654 // 3655 // Redistribution and use in source and binary forms, with or without 3656 // modification, are permitted provided that the following conditions are 3657@@ -33,7 +33,7 @@ 3658 // by hand. See the translator.README.txt file in the tools directory for 3659 // more information. 3660 // 3661-// $hash=23dc3ab761547687a491e5d7303b73b2d0d54e7a$ 3662+// $hash=2bdcad7f8e3c03285a5e5ddb9a02a5a2182f254c$ 3663 // 3664 3665 #ifndef CEF_INCLUDE_CAPI_CEF_V8_CAPI_H_ 3666diff --git a/cef/include/capi/cef_values_capi.h b/cef/include/capi/cef_values_capi.h 3667index d6001b4c5e..90df63d6ce 100644 3668--- a/cef/include/capi/cef_values_capi.h 3669+++ b/cef/include/capi/cef_values_capi.h 3670@@ -1,4 +1,4 @@ 3671-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 3672+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 3673 // 3674 // Redistribution and use in source and binary forms, with or without 3675 // modification, are permitted provided that the following conditions are 3676@@ -33,7 +33,7 @@ 3677 // by hand. See the translator.README.txt file in the tools directory for 3678 // more information. 3679 // 3680-// $hash=d9074be0e6960c69cfe2c39b92b4dd6f529210d1$ 3681+// $hash=c557496bdc1403b25b22ca9354a942478131c7ce$ 3682 // 3683 3684 #ifndef CEF_INCLUDE_CAPI_CEF_VALUES_CAPI_H_ 3685diff --git a/cef/include/capi/cef_waitable_event_capi.h b/cef/include/capi/cef_waitable_event_capi.h 3686index 83ce7c7d90..aa507e1083 100644 3687--- a/cef/include/capi/cef_waitable_event_capi.h 3688+++ b/cef/include/capi/cef_waitable_event_capi.h 3689@@ -1,4 +1,4 @@ 3690-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 3691+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 3692 // 3693 // Redistribution and use in source and binary forms, with or without 3694 // modification, are permitted provided that the following conditions are 3695@@ -33,7 +33,7 @@ 3696 // by hand. See the translator.README.txt file in the tools directory for 3697 // more information. 3698 // 3699-// $hash=ed698ff6cb09ee2ed87614e2733c742db827ed4f$ 3700+// $hash=aff380a4fa3f1a26063170381d47c67971511f1d$ 3701 // 3702 3703 #ifndef CEF_INCLUDE_CAPI_CEF_WAITABLE_EVENT_CAPI_H_ 3704diff --git a/cef/include/capi/cef_web_plugin_capi.h b/cef/include/capi/cef_web_plugin_capi.h 3705index 77597e9546..33a788b865 100644 3706--- a/cef/include/capi/cef_web_plugin_capi.h 3707+++ b/cef/include/capi/cef_web_plugin_capi.h 3708@@ -1,4 +1,4 @@ 3709-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 3710+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 3711 // 3712 // Redistribution and use in source and binary forms, with or without 3713 // modification, are permitted provided that the following conditions are 3714@@ -33,7 +33,7 @@ 3715 // by hand. See the translator.README.txt file in the tools directory for 3716 // more information. 3717 // 3718-// $hash=f74bf4d33914d56d760f1bf5aadcf2651740c711$ 3719+// $hash=34fce84ddc16f815ddf44745f93dfd86cfd51e96$ 3720 // 3721 3722 #ifndef CEF_INCLUDE_CAPI_CEF_WEB_PLUGIN_CAPI_H_ 3723diff --git a/cef/include/capi/cef_x509_certificate_capi.h b/cef/include/capi/cef_x509_certificate_capi.h 3724index c474718b86..8650b4055d 100644 3725--- a/cef/include/capi/cef_x509_certificate_capi.h 3726+++ b/cef/include/capi/cef_x509_certificate_capi.h 3727@@ -1,4 +1,4 @@ 3728-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 3729+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 3730 // 3731 // Redistribution and use in source and binary forms, with or without 3732 // modification, are permitted provided that the following conditions are 3733@@ -33,7 +33,7 @@ 3734 // by hand. See the translator.README.txt file in the tools directory for 3735 // more information. 3736 // 3737-// $hash=e06ad8a1e173edd1e888ce6a8f8a9d95394e6a44$ 3738+// $hash=32b942f6b50b842ddec08addc2b5794f2a272dbe$ 3739 // 3740 3741 #ifndef CEF_INCLUDE_CAPI_CEF_X509_CERTIFICATE_CAPI_H_ 3742diff --git a/cef/include/capi/cef_xml_reader_capi.h b/cef/include/capi/cef_xml_reader_capi.h 3743index 74be5dbaf2..75f32a4d1d 100644 3744--- a/cef/include/capi/cef_xml_reader_capi.h 3745+++ b/cef/include/capi/cef_xml_reader_capi.h 3746@@ -1,4 +1,4 @@ 3747-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 3748+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 3749 // 3750 // Redistribution and use in source and binary forms, with or without 3751 // modification, are permitted provided that the following conditions are 3752@@ -33,7 +33,7 @@ 3753 // by hand. See the translator.README.txt file in the tools directory for 3754 // more information. 3755 // 3756-// $hash=76de25a0d0f0a2cc4657f46c26ec44b6d7d937e8$ 3757+// $hash=c3bdf957dfd307568842b95599e3259d4c8d8f44$ 3758 // 3759 3760 #ifndef CEF_INCLUDE_CAPI_CEF_XML_READER_CAPI_H_ 3761diff --git a/cef/include/capi/cef_zip_reader_capi.h b/cef/include/capi/cef_zip_reader_capi.h 3762index aa9a79a6a6..5d89935336 100644 3763--- a/cef/include/capi/cef_zip_reader_capi.h 3764+++ b/cef/include/capi/cef_zip_reader_capi.h 3765@@ -1,4 +1,4 @@ 3766-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 3767+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 3768 // 3769 // Redistribution and use in source and binary forms, with or without 3770 // modification, are permitted provided that the following conditions are 3771@@ -33,7 +33,7 @@ 3772 // by hand. See the translator.README.txt file in the tools directory for 3773 // more information. 3774 // 3775-// $hash=d3d4ee91a69edd5f12785871b5c5a55e86c5c675$ 3776+// $hash=ac91bcd40e1439ee1e742cc47989530b112c99bd$ 3777 // 3778 3779 #ifndef CEF_INCLUDE_CAPI_CEF_ZIP_READER_CAPI_H_ 3780diff --git a/cef/include/capi/test/cef_test_helpers_capi.h b/cef/include/capi/test/cef_test_helpers_capi.h 3781index 8d89c05348..128ab4c649 100644 3782--- a/cef/include/capi/test/cef_test_helpers_capi.h 3783+++ b/cef/include/capi/test/cef_test_helpers_capi.h 3784@@ -1,4 +1,4 @@ 3785-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 3786+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 3787 // 3788 // Redistribution and use in source and binary forms, with or without 3789 // modification, are permitted provided that the following conditions are 3790@@ -33,7 +33,7 @@ 3791 // by hand. See the translator.README.txt file in the tools directory for 3792 // more information. 3793 // 3794-// $hash=f9db602ed3bcb4b8ceb583034db9d0297b2961fd$ 3795+// $hash=584acfdb7be699b0192c46ac9fa88084f141e845$ 3796 // 3797 3798 #ifndef CEF_INCLUDE_CAPI_TEST_CEF_TEST_HELPERS_CAPI_H_ 3799diff --git a/cef/include/capi/test/cef_translator_test_capi.h b/cef/include/capi/test/cef_translator_test_capi.h 3800index 8f68eb461f..48811c5e88 100644 3801--- a/cef/include/capi/test/cef_translator_test_capi.h 3802+++ b/cef/include/capi/test/cef_translator_test_capi.h 3803@@ -1,4 +1,4 @@ 3804-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 3805+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 3806 // 3807 // Redistribution and use in source and binary forms, with or without 3808 // modification, are permitted provided that the following conditions are 3809@@ -33,7 +33,7 @@ 3810 // by hand. See the translator.README.txt file in the tools directory for 3811 // more information. 3812 // 3813-// $hash=a20dfae14509f99270e5ce1422790681aee2d5f2$ 3814+// $hash=d70d5b74890e3ca91f01333ebdb4f3298caeb619$ 3815 // 3816 3817 #ifndef CEF_INCLUDE_CAPI_TEST_CEF_TRANSLATOR_TEST_CAPI_H_ 3818diff --git a/cef/include/capi/views/cef_box_layout_capi.h b/cef/include/capi/views/cef_box_layout_capi.h 3819index 06d83bade9..6499ec22fd 100644 3820--- a/cef/include/capi/views/cef_box_layout_capi.h 3821+++ b/cef/include/capi/views/cef_box_layout_capi.h 3822@@ -1,4 +1,4 @@ 3823-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 3824+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 3825 // 3826 // Redistribution and use in source and binary forms, with or without 3827 // modification, are permitted provided that the following conditions are 3828@@ -33,7 +33,7 @@ 3829 // by hand. See the translator.README.txt file in the tools directory for 3830 // more information. 3831 // 3832-// $hash=069553694811acdd7a7871c895d73fc4f3e2798a$ 3833+// $hash=bf1d1dc95fa2053645a348d6f554688b9d06c83a$ 3834 // 3835 3836 #ifndef CEF_INCLUDE_CAPI_VIEWS_CEF_BOX_LAYOUT_CAPI_H_ 3837diff --git a/cef/include/capi/views/cef_browser_view_capi.h b/cef/include/capi/views/cef_browser_view_capi.h 3838index 30fd5db049..ab629c8a61 100644 3839--- a/cef/include/capi/views/cef_browser_view_capi.h 3840+++ b/cef/include/capi/views/cef_browser_view_capi.h 3841@@ -1,4 +1,4 @@ 3842-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 3843+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 3844 // 3845 // Redistribution and use in source and binary forms, with or without 3846 // modification, are permitted provided that the following conditions are 3847@@ -33,7 +33,7 @@ 3848 // by hand. See the translator.README.txt file in the tools directory for 3849 // more information. 3850 // 3851-// $hash=3e4eb9ed3a0cb28ae0459a50f20c8405c7722437$ 3852+// $hash=9ae10b92eed7495112c94825521ac46fb9327ef7$ 3853 // 3854 3855 #ifndef CEF_INCLUDE_CAPI_VIEWS_CEF_BROWSER_VIEW_CAPI_H_ 3856diff --git a/cef/include/capi/views/cef_browser_view_delegate_capi.h b/cef/include/capi/views/cef_browser_view_delegate_capi.h 3857index 9852c37bd9..27ae4c1c4e 100644 3858--- a/cef/include/capi/views/cef_browser_view_delegate_capi.h 3859+++ b/cef/include/capi/views/cef_browser_view_delegate_capi.h 3860@@ -1,4 +1,4 @@ 3861-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 3862+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 3863 // 3864 // Redistribution and use in source and binary forms, with or without 3865 // modification, are permitted provided that the following conditions are 3866@@ -33,7 +33,7 @@ 3867 // by hand. See the translator.README.txt file in the tools directory for 3868 // more information. 3869 // 3870-// $hash=220a126af3682f716f10b9019e8d1461702aa7c9$ 3871+// $hash=520df1f3e00efbffc9d499149f2f797bf0f85c99$ 3872 // 3873 3874 #ifndef CEF_INCLUDE_CAPI_VIEWS_CEF_BROWSER_VIEW_DELEGATE_CAPI_H_ 3875diff --git a/cef/include/capi/views/cef_button_capi.h b/cef/include/capi/views/cef_button_capi.h 3876index 92069a75fd..40e71ec963 100644 3877--- a/cef/include/capi/views/cef_button_capi.h 3878+++ b/cef/include/capi/views/cef_button_capi.h 3879@@ -1,4 +1,4 @@ 3880-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 3881+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 3882 // 3883 // Redistribution and use in source and binary forms, with or without 3884 // modification, are permitted provided that the following conditions are 3885@@ -33,7 +33,7 @@ 3886 // by hand. See the translator.README.txt file in the tools directory for 3887 // more information. 3888 // 3889-// $hash=eb8e4197f2dba4829b1ed54957e1d5043fb8adaa$ 3890+// $hash=5ebbf84a506d3d4d0bfb3d8db48f060a682f1ac9$ 3891 // 3892 3893 #ifndef CEF_INCLUDE_CAPI_VIEWS_CEF_BUTTON_CAPI_H_ 3894diff --git a/cef/include/capi/views/cef_button_delegate_capi.h b/cef/include/capi/views/cef_button_delegate_capi.h 3895index af84d045e2..d853dbf97e 100644 3896--- a/cef/include/capi/views/cef_button_delegate_capi.h 3897+++ b/cef/include/capi/views/cef_button_delegate_capi.h 3898@@ -1,4 +1,4 @@ 3899-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 3900+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 3901 // 3902 // Redistribution and use in source and binary forms, with or without 3903 // modification, are permitted provided that the following conditions are 3904@@ -33,7 +33,7 @@ 3905 // by hand. See the translator.README.txt file in the tools directory for 3906 // more information. 3907 // 3908-// $hash=f4c4a72bf4db6abaf709f5ce4fb648c2532c85bc$ 3909+// $hash=9f1752ee949e98662a718de764e83f26ce06ec26$ 3910 // 3911 3912 #ifndef CEF_INCLUDE_CAPI_VIEWS_CEF_BUTTON_DELEGATE_CAPI_H_ 3913diff --git a/cef/include/capi/views/cef_display_capi.h b/cef/include/capi/views/cef_display_capi.h 3914index 6140b8816e..40c304b44f 100644 3915--- a/cef/include/capi/views/cef_display_capi.h 3916+++ b/cef/include/capi/views/cef_display_capi.h 3917@@ -1,4 +1,4 @@ 3918-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 3919+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 3920 // 3921 // Redistribution and use in source and binary forms, with or without 3922 // modification, are permitted provided that the following conditions are 3923@@ -33,7 +33,7 @@ 3924 // by hand. See the translator.README.txt file in the tools directory for 3925 // more information. 3926 // 3927-// $hash=1f9c61687a16a5c095c73afd47c1c0a27096ab3c$ 3928+// $hash=2fd0db428ce5902d59a7802c901e1c13b2367b5a$ 3929 // 3930 3931 #ifndef CEF_INCLUDE_CAPI_VIEWS_CEF_DISPLAY_CAPI_H_ 3932diff --git a/cef/include/capi/views/cef_fill_layout_capi.h b/cef/include/capi/views/cef_fill_layout_capi.h 3933index b76bd9d7ad..a8778a96d6 100644 3934--- a/cef/include/capi/views/cef_fill_layout_capi.h 3935+++ b/cef/include/capi/views/cef_fill_layout_capi.h 3936@@ -1,4 +1,4 @@ 3937-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 3938+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 3939 // 3940 // Redistribution and use in source and binary forms, with or without 3941 // modification, are permitted provided that the following conditions are 3942@@ -33,7 +33,7 @@ 3943 // by hand. See the translator.README.txt file in the tools directory for 3944 // more information. 3945 // 3946-// $hash=967f99321db8d0a900e33f3032b3ba1a6bd6bc9c$ 3947+// $hash=13972453cdca328c6ee81249aeb202d80da6d290$ 3948 // 3949 3950 #ifndef CEF_INCLUDE_CAPI_VIEWS_CEF_FILL_LAYOUT_CAPI_H_ 3951diff --git a/cef/include/capi/views/cef_label_button_capi.h b/cef/include/capi/views/cef_label_button_capi.h 3952index a9f6dc7684..47ff1de60f 100644 3953--- a/cef/include/capi/views/cef_label_button_capi.h 3954+++ b/cef/include/capi/views/cef_label_button_capi.h 3955@@ -1,4 +1,4 @@ 3956-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 3957+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 3958 // 3959 // Redistribution and use in source and binary forms, with or without 3960 // modification, are permitted provided that the following conditions are 3961@@ -33,7 +33,7 @@ 3962 // by hand. See the translator.README.txt file in the tools directory for 3963 // more information. 3964 // 3965-// $hash=ae11ffbfed64dc255909f01a7abccbf6acfb5922$ 3966+// $hash=de3e738efca85a84422c92fa8504b24ed4efab8a$ 3967 // 3968 3969 #ifndef CEF_INCLUDE_CAPI_VIEWS_CEF_LABEL_BUTTON_CAPI_H_ 3970diff --git a/cef/include/capi/views/cef_layout_capi.h b/cef/include/capi/views/cef_layout_capi.h 3971index 4cc2f7a4cc..8047df752a 100644 3972--- a/cef/include/capi/views/cef_layout_capi.h 3973+++ b/cef/include/capi/views/cef_layout_capi.h 3974@@ -1,4 +1,4 @@ 3975-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 3976+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 3977 // 3978 // Redistribution and use in source and binary forms, with or without 3979 // modification, are permitted provided that the following conditions are 3980@@ -33,7 +33,7 @@ 3981 // by hand. See the translator.README.txt file in the tools directory for 3982 // more information. 3983 // 3984-// $hash=6a10260132a69996885e20fe54f552fca6f0862b$ 3985+// $hash=6ef0d3d4390654fc1460a2ff586f2bbfd62e96b8$ 3986 // 3987 3988 #ifndef CEF_INCLUDE_CAPI_VIEWS_CEF_LAYOUT_CAPI_H_ 3989diff --git a/cef/include/capi/views/cef_menu_button_capi.h b/cef/include/capi/views/cef_menu_button_capi.h 3990index c9265787bd..50aaca9d60 100644 3991--- a/cef/include/capi/views/cef_menu_button_capi.h 3992+++ b/cef/include/capi/views/cef_menu_button_capi.h 3993@@ -1,4 +1,4 @@ 3994-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 3995+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 3996 // 3997 // Redistribution and use in source and binary forms, with or without 3998 // modification, are permitted provided that the following conditions are 3999@@ -33,7 +33,7 @@ 4000 // by hand. See the translator.README.txt file in the tools directory for 4001 // more information. 4002 // 4003-// $hash=56ea894f85a5ec444d7899d8ccb548e34b4ba891$ 4004+// $hash=925b09f77cd71327a447bf5c9601cc21a7eb7c3a$ 4005 // 4006 4007 #ifndef CEF_INCLUDE_CAPI_VIEWS_CEF_MENU_BUTTON_CAPI_H_ 4008diff --git a/cef/include/capi/views/cef_menu_button_delegate_capi.h b/cef/include/capi/views/cef_menu_button_delegate_capi.h 4009index e0c1ae39a9..c5f22aabac 100644 4010--- a/cef/include/capi/views/cef_menu_button_delegate_capi.h 4011+++ b/cef/include/capi/views/cef_menu_button_delegate_capi.h 4012@@ -1,4 +1,4 @@ 4013-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 4014+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 4015 // 4016 // Redistribution and use in source and binary forms, with or without 4017 // modification, are permitted provided that the following conditions are 4018@@ -33,7 +33,7 @@ 4019 // by hand. See the translator.README.txt file in the tools directory for 4020 // more information. 4021 // 4022-// $hash=d04871b1f67c5074874d68a50e14e9746d1f175d$ 4023+// $hash=ca7948602a0d20a5bd0271065d79e8679898eff6$ 4024 // 4025 4026 #ifndef CEF_INCLUDE_CAPI_VIEWS_CEF_MENU_BUTTON_DELEGATE_CAPI_H_ 4027diff --git a/cef/include/capi/views/cef_panel_capi.h b/cef/include/capi/views/cef_panel_capi.h 4028index 64566d6ff9..276c6206d4 100644 4029--- a/cef/include/capi/views/cef_panel_capi.h 4030+++ b/cef/include/capi/views/cef_panel_capi.h 4031@@ -1,4 +1,4 @@ 4032-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 4033+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 4034 // 4035 // Redistribution and use in source and binary forms, with or without 4036 // modification, are permitted provided that the following conditions are 4037@@ -33,7 +33,7 @@ 4038 // by hand. See the translator.README.txt file in the tools directory for 4039 // more information. 4040 // 4041-// $hash=9a56cb55b4454c640ec9edf0af58fbdf7142c129$ 4042+// $hash=d5311ffa72e57d240f6963b1f45a278041bd33f4$ 4043 // 4044 4045 #ifndef CEF_INCLUDE_CAPI_VIEWS_CEF_PANEL_CAPI_H_ 4046diff --git a/cef/include/capi/views/cef_panel_delegate_capi.h b/cef/include/capi/views/cef_panel_delegate_capi.h 4047index 9ad7a49df5..bef0a26510 100644 4048--- a/cef/include/capi/views/cef_panel_delegate_capi.h 4049+++ b/cef/include/capi/views/cef_panel_delegate_capi.h 4050@@ -1,4 +1,4 @@ 4051-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 4052+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 4053 // 4054 // Redistribution and use in source and binary forms, with or without 4055 // modification, are permitted provided that the following conditions are 4056@@ -33,7 +33,7 @@ 4057 // by hand. See the translator.README.txt file in the tools directory for 4058 // more information. 4059 // 4060-// $hash=954694f6f807cdbff3d5b0533cedae118019b469$ 4061+// $hash=3b6b3ef725189debb1dd43db395a111f50dee60c$ 4062 // 4063 4064 #ifndef CEF_INCLUDE_CAPI_VIEWS_CEF_PANEL_DELEGATE_CAPI_H_ 4065diff --git a/cef/include/capi/views/cef_scroll_view_capi.h b/cef/include/capi/views/cef_scroll_view_capi.h 4066index 9a697c322e..2c93f45c3a 100644 4067--- a/cef/include/capi/views/cef_scroll_view_capi.h 4068+++ b/cef/include/capi/views/cef_scroll_view_capi.h 4069@@ -1,4 +1,4 @@ 4070-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 4071+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 4072 // 4073 // Redistribution and use in source and binary forms, with or without 4074 // modification, are permitted provided that the following conditions are 4075@@ -33,7 +33,7 @@ 4076 // by hand. See the translator.README.txt file in the tools directory for 4077 // more information. 4078 // 4079-// $hash=74c1ec16b0fd36657bc6227e19ff529a9e9e7afa$ 4080+// $hash=374b16fddbbb8bedc2dbb2e03dcfaa8cddba6aeb$ 4081 // 4082 4083 #ifndef CEF_INCLUDE_CAPI_VIEWS_CEF_SCROLL_VIEW_CAPI_H_ 4084diff --git a/cef/include/capi/views/cef_textfield_capi.h b/cef/include/capi/views/cef_textfield_capi.h 4085index deb179e3ed..fbb97eea93 100644 4086--- a/cef/include/capi/views/cef_textfield_capi.h 4087+++ b/cef/include/capi/views/cef_textfield_capi.h 4088@@ -1,4 +1,4 @@ 4089-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 4090+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 4091 // 4092 // Redistribution and use in source and binary forms, with or without 4093 // modification, are permitted provided that the following conditions are 4094@@ -33,7 +33,7 @@ 4095 // by hand. See the translator.README.txt file in the tools directory for 4096 // more information. 4097 // 4098-// $hash=ffe125c11cab3b704f22e232837f36414b1a36a6$ 4099+// $hash=798f84672412f544765b800d03cf284b066f818c$ 4100 // 4101 4102 #ifndef CEF_INCLUDE_CAPI_VIEWS_CEF_TEXTFIELD_CAPI_H_ 4103diff --git a/cef/include/capi/views/cef_textfield_delegate_capi.h b/cef/include/capi/views/cef_textfield_delegate_capi.h 4104index ea22493e71..167249eef6 100644 4105--- a/cef/include/capi/views/cef_textfield_delegate_capi.h 4106+++ b/cef/include/capi/views/cef_textfield_delegate_capi.h 4107@@ -1,4 +1,4 @@ 4108-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 4109+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 4110 // 4111 // Redistribution and use in source and binary forms, with or without 4112 // modification, are permitted provided that the following conditions are 4113@@ -33,7 +33,7 @@ 4114 // by hand. See the translator.README.txt file in the tools directory for 4115 // more information. 4116 // 4117-// $hash=4d1e834a5a548f1da317aceb92c590590651ed99$ 4118+// $hash=44337fe515a5acf51829e1dd00a54f2c1230aba5$ 4119 // 4120 4121 #ifndef CEF_INCLUDE_CAPI_VIEWS_CEF_TEXTFIELD_DELEGATE_CAPI_H_ 4122diff --git a/cef/include/capi/views/cef_view_capi.h b/cef/include/capi/views/cef_view_capi.h 4123index dcf0e9e4e3..f4367a2187 100644 4124--- a/cef/include/capi/views/cef_view_capi.h 4125+++ b/cef/include/capi/views/cef_view_capi.h 4126@@ -1,4 +1,4 @@ 4127-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 4128+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 4129 // 4130 // Redistribution and use in source and binary forms, with or without 4131 // modification, are permitted provided that the following conditions are 4132@@ -33,7 +33,7 @@ 4133 // by hand. See the translator.README.txt file in the tools directory for 4134 // more information. 4135 // 4136-// $hash=9881a00ef237b6972f14c071544387fc90fe18f1$ 4137+// $hash=a2f35807b488fcb00674418d25f4f3d8e544bf9f$ 4138 // 4139 4140 #ifndef CEF_INCLUDE_CAPI_VIEWS_CEF_VIEW_CAPI_H_ 4141diff --git a/cef/include/capi/views/cef_view_delegate_capi.h b/cef/include/capi/views/cef_view_delegate_capi.h 4142index 9c2a0844e0..7756a33072 100644 4143--- a/cef/include/capi/views/cef_view_delegate_capi.h 4144+++ b/cef/include/capi/views/cef_view_delegate_capi.h 4145@@ -1,4 +1,4 @@ 4146-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 4147+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 4148 // 4149 // Redistribution and use in source and binary forms, with or without 4150 // modification, are permitted provided that the following conditions are 4151@@ -33,7 +33,7 @@ 4152 // by hand. See the translator.README.txt file in the tools directory for 4153 // more information. 4154 // 4155-// $hash=a060cb3c53317d758e7f6b4a275288cd08f086e7$ 4156+// $hash=06b8e3c806864f42170d7d050d21a10a094df2df$ 4157 // 4158 4159 #ifndef CEF_INCLUDE_CAPI_VIEWS_CEF_VIEW_DELEGATE_CAPI_H_ 4160diff --git a/cef/include/capi/views/cef_window_capi.h b/cef/include/capi/views/cef_window_capi.h 4161index d9e584bfda..a8d267f05a 100644 4162--- a/cef/include/capi/views/cef_window_capi.h 4163+++ b/cef/include/capi/views/cef_window_capi.h 4164@@ -1,4 +1,4 @@ 4165-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 4166+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 4167 // 4168 // Redistribution and use in source and binary forms, with or without 4169 // modification, are permitted provided that the following conditions are 4170@@ -33,7 +33,7 @@ 4171 // by hand. See the translator.README.txt file in the tools directory for 4172 // more information. 4173 // 4174-// $hash=15f88e3521ca96947fe8b1f91f251eb3405fb293$ 4175+// $hash=d391352a3ffd7bd9485c3d0c33674ff523a9a61d$ 4176 // 4177 4178 #ifndef CEF_INCLUDE_CAPI_VIEWS_CEF_WINDOW_CAPI_H_ 4179diff --git a/cef/include/capi/views/cef_window_delegate_capi.h b/cef/include/capi/views/cef_window_delegate_capi.h 4180index 4cf6188c40..bcf48dc0cb 100644 4181--- a/cef/include/capi/views/cef_window_delegate_capi.h 4182+++ b/cef/include/capi/views/cef_window_delegate_capi.h 4183@@ -1,4 +1,4 @@ 4184-// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved. 4185+// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved. 4186 // 4187 // Redistribution and use in source and binary forms, with or without 4188 // modification, are permitted provided that the following conditions are 4189@@ -33,7 +33,7 @@ 4190 // by hand. See the translator.README.txt file in the tools directory for 4191 // more information. 4192 // 4193-// $hash=b43e6106fde84f3bab4dd566efab23a50adaf94d$ 4194+// $hash=da087348fa213f9ce4ceb37d248d9aaecc04e5d3$ 4195 // 4196 4197 #ifndef CEF_INCLUDE_CAPI_VIEWS_CEF_WINDOW_DELEGATE_CAPI_H_ 4198diff --git a/cef/include/cef_api_hash.h b/cef/include/cef_api_hash.h 4199index c09e0c63ce..6449fab747 100644 4200--- a/cef/include/cef_api_hash.h 4201+++ b/cef/include/cef_api_hash.h 4202@@ -42,15 +42,15 @@ 4203 // way that may cause binary incompatibility with other builds. The universal 4204 // hash value will change if any platform is affected whereas the platform hash 4205 // values will change only if that particular platform is affected. 4206-#define CEF_API_HASH_UNIVERSAL "d026196d35d8894a836ab3a3d033b84195cdb835" 4207+#define CEF_API_HASH_UNIVERSAL "d7e9904bce60295dd04e64d40efe4da6a362210c" 4208 #if defined(OS_WIN) 4209-#define CEF_API_HASH_PLATFORM "4150bd26e7bf639a9b1f3e5860af8c76eeae8570" 4210+#define CEF_API_HASH_PLATFORM "2b7373e08ea7313f324f799cf199f4499a0f3efc" 4211 #elif defined(OS_MAC) 4212-#define CEF_API_HASH_PLATFORM "5cc32f88bd134410eff86b21095138b339d572f2" 4213+#define CEF_API_HASH_PLATFORM "42bfe0cdf84e5eeedf2f6736bea7a3db1fa3295d" 4214 #elif defined(OS_LINUX) 4215-#define CEF_API_HASH_PLATFORM "b227b3fdd6142a9d8ff0f2252a71425f15960800" 4216+#define CEF_API_HASH_PLATFORM "d5c72291f0a9668264d2d8ac246d6c8c84fea0cc" 4217 #elif defined(OS_OHOS) 4218-#define CEF_API_HASH_PLATFORM "b227b3fdd6142a9d8ff0f2252a71425f15960800" 4219+#define CEF_API_HASH_PLATFORM "d5c72291f0a9668264d2d8ac246d6c8c84fea0cc" 4220 #endif 4221 4222 #ifdef __cplusplus 4223diff --git a/cef/include/cef_browser.h b/cef/include/cef_browser.h 4224index cab6ce50eb..a0496a272a 100644 4225--- a/cef/include/cef_browser.h 4226+++ b/cef/include/cef_browser.h 4227@@ -45,11 +45,14 @@ 4228 #include "include/cef_frame.h" 4229 #include "include/cef_image.h" 4230 #include "include/cef_navigation_entry.h" 4231+#include "include/cef_permission_request.h" 4232 #include "include/cef_registration.h" 4233 #include "include/cef_request_context.h" 4234+#include "include/cef_task.h" 4235 4236 class CefBrowserHost; 4237 class CefClient; 4238+class CefJavaScriptResultCallback; 4239 4240 /// 4241 // Class used to represent a browser window. When used in the browser process 4242@@ -91,6 +94,12 @@ class CefBrowser : public virtual CefBaseRefCounted { 4243 /*--cef()--*/ 4244 virtual void GoForward() = 0; 4245 4246+ /// 4247+ // Returns true if the browser can navigate forwards. 4248+ /// 4249+ /*--cef()--*/ 4250+ virtual bool CanGoBackOrForward(int num_steps) = 0; 4251+ 4252 /// 4253 // Returns true if the browser is currently loading. 4254 /// 4255@@ -186,6 +195,18 @@ class CefBrowser : public virtual CefBaseRefCounted { 4256 /// 4257 /*--cef()--*/ 4258 virtual void GetFrameNames(std::vector<CefString>& names) = 0; 4259+ 4260+ /// 4261+ // Returns the Permission Request Delegate object. 4262+ /// 4263+ /*--cef()--*/ 4264+ virtual CefRefPtr<CefBrowserPermissionRequestDelegate> GetPermissionRequestDelegate() = 0; 4265+ 4266+ /// 4267+ // Returns the Geolocation Permission handler object. 4268+ /// 4269+ /*--cef()--*/ 4270+ virtual CefRefPtr<CefGeolocationAcess> GetGeolocationPermissions() = 0; 4271 }; 4272 4273 /// 4274@@ -322,6 +343,12 @@ class CefBrowserHost : public virtual CefBaseRefCounted { 4275 /*--cef()--*/ 4276 virtual CefRefPtr<CefBrowser> GetBrowser() = 0; 4277 4278+ /// 4279+ // Post task to ui thread. 4280+ /// 4281+ /*--cef()--*/ 4282+ virtual void PostTaskToUIThread(CefRefPtr<CefTask> task) = 0; 4283+ 4284 /// 4285 // Request that the browser close. The JavaScript 'onbeforeunload' event will 4286 // be fired. If |force_close| is false the event handler, if any, will be 4287@@ -739,26 +766,124 @@ class CefBrowserHost : public virtual CefBaseRefCounted { 4288 /*--cef()--*/ 4289 virtual void SetWindowlessFrameRate(int frame_rate) = 0; 4290 4291+ /* ---------- ohos webview add begin --------- */ 4292+ /// 4293+ // Recompute the WebPreferences based on the current state of the CefSettings, 4294+ // we will also call SetWebPreferences and send the updated WebPreferences to 4295+ // all RenderViews by WebContents. 4296+ /// 4297+ /*--cef()--*/ 4298+ virtual void SetWebPreferences( 4299+ const CefBrowserSettings& browser_settings) = 0; 4300+ 4301+ /// 4302+ // PutUserAgent 4303+ /// 4304+ /*--cef()--*/ 4305+ virtual void PutUserAgent(const CefString& ua) = 0; 4306+ 4307+ /// 4308+ // DefaultUserAgent 4309+ /// 4310+ /*--cef()--*/ 4311+ virtual CefString DefaultUserAgent() = 0; 4312+ 4313+ /// 4314+ // SetBackgroundColor 4315+ /// 4316+ /*--cef()--*/ 4317+ virtual void SetBackgroundColor(int color) = 0; 4318+ 4319+ /// 4320+ // RegisterArkJSfunction 4321+ /// 4322+ /*--cef()--*/ 4323+ virtual void RegisterArkJSfunction(const CefString& object_name, const std::vector<CefString>& method_list) = 0; 4324+ 4325+ /// 4326+ // UnregisterArkJSfunction 4327+ /// 4328+ /*--cef(optional_param=method_list)--*/ 4329+ virtual void UnregisterArkJSfunction(const CefString& object_name, const std::vector<CefString>& method_list) = 0; 4330+ /* ---------- ohos webview add end --------- */ 4331+ 4332+ /// 4333+ // Gets the title for the current page. 4334+ /// 4335+ /*--cef()--*/ 4336+ virtual CefString Title() = 0; 4337+ 4338+ /// 4339+ // Gets the latest hitdata 4340+ /// 4341+ /*--cef()--*/ 4342+ virtual void GetHitData(int& type, CefString& extra_data) = 0; 4343+ 4344+ /// 4345+ // Gets the progress for the current page. 4346+ /// 4347+ /*--cef()--*/ 4348+ virtual int PageLoadProgress() = 0; 4349+ 4350+ /// 4351+ // Gets the progress for the current page. 4352+ /// 4353+ /*--cef()--*/ 4354+ virtual float Scale() = 0; 4355+ 4356+ /// 4357+ // Loads the given data into this WebView, using baseUrl as the base URL for 4358+ // the content. The base URL is used both to resolve relative URLs and when 4359+ // applying JavaScript's same origin policy. The historyUrl is used for the 4360+ // history entry. 4361+ // optional_param=baseUrl, optional_param=data, optional_param=mimeType, 4362+ // optional_param=encoding, optional_param=historyUrl 4363+ /// 4364+ /*--cef(optional_param=baseUrl, optional_param=data, optional_param=mimeType, 4365+ optional_param=encoding, optional_param=historyUrl)--*/ 4366+ virtual void LoadWithDataAndBaseUrl(const CefString& baseUrl, 4367+ const CefString& data, 4368+ const CefString& mimeType, 4369+ const CefString& encoding, 4370+ const CefString& historyUrl) = 0; 4371+ 4372 /// 4373- // Begins a new composition or updates the existing composition. Blink has a 4374- // special node (a composition node) that allows the input method to change 4375- // text without affecting other DOM nodes. |text| is the optional text that 4376- // will be inserted into the composition node. |underlines| is an optional set 4377- // of ranges that will be underlined in the resulting text. 4378- // |replacement_range| is an optional range of the existing text that will be 4379- // replaced. |selection_range| is an optional range of the resulting text that 4380- // will be selected after insertion or replacement. The |replacement_range| 4381- // value is only used on OS X. 4382+ // Loads the given data into this WebView 4383+ // optional_param=data, optional_param=mimeType, optional_param=encoding, 4384+ /// 4385+ /*--cef(optional_param=data, optional_param=mimeType, optional_param=encoding,)--*/ 4386+ virtual void LoadWithData(const CefString& data, 4387+ const CefString& mimeType, 4388+ const CefString& encoding) = 0; 4389+ 4390+ /// 4391+ // add visited url. 4392+ /// 4393+ /*--cef(optional_param=urls)--*/ 4394+ virtual void AddVisitedLinks(const std::vector<CefString>& urls) {} 4395+ 4396+ /// 4397+ // Begins a new composition or updates the existing composition. Blink has 4398+ // a special node (a composition node) that allows the input method to 4399+ // change text without affecting other DOM nodes. |text| is the optional 4400+ // text that will be inserted into the composition node. |underlines| is 4401+ // an optional set of ranges that will be underlined in the resulting 4402+ // text. |replacement_range| is an optional range of the existing text 4403+ // that will be replaced. |selection_range| is an optional range of the 4404+ // resulting text that will be selected after insertion or replacement. 4405+ // The |replacement_range| value is only used on OS X. 4406 // 4407- // This method may be called multiple times as the composition changes. When 4408- // the client is done making changes the composition should either be canceled 4409- // or completed. To cancel the composition call ImeCancelComposition. To 4410- // complete the composition call either ImeCommitText or 4411- // ImeFinishComposingText. Completion is usually signaled when: 4412- // A. The client receives a WM_IME_COMPOSITION message with a GCS_RESULTSTR 4413+ // This method may be called multiple times as the composition changes. 4414+ // When the client is done making changes the composition should either be 4415+ // canceled or completed. To cancel the composition call 4416+ // ImeCancelComposition. To complete the composition call either 4417+ // ImeCommitText or ImeFinishComposingText. Completion is usually signaled 4418+ // when: 4419+ // A. The client receives a WM_IME_COMPOSITION message with a 4420+ // GCS_RESULTSTR 4421 // flag (on Windows), or; 4422- // B. The client receives a "commit" signal of GtkIMContext (on Linux), or; 4423- // C. insertText of NSTextInput is called (on Mac). 4424+ // B. The client receives a "commit" signal of GtkIMContext (on Linux), 4425+ // or; C. insertText of NSTextInput is called (on Mac). 4426 // 4427 // This method is only used when window rendering is disabled. 4428 /// 4429@@ -940,6 +1065,28 @@ class CefBrowserHost : public virtual CefBaseRefCounted { 4430 /// 4431 /*--cef()--*/ 4432 virtual bool IsAudioMuted() = 0; 4433+ 4434+ /// 4435+ // Execute a string of JavaScript code, return result by callback 4436+ /// 4437+ /*--cef()--*/ 4438+ virtual void ExecuteJavaScript(const CefString& code, 4439+ CefRefPtr<CefJavaScriptResultCallback> callback) = 0; 4440+}; 4441+ 4442+/// 4443+// Interface to implement to be notified of asynchronous completion via 4444+// CefBrowserHostBase::ExecuteJavaScript(). 4445+/// 4446+/*--cef(source=client)--*/ 4447+class CefJavaScriptResultCallback : public virtual CefBaseRefCounted { 4448+ public: 4449+ /// 4450+ // Method that will be called upon completion. |num_deleted| will be the 4451+ // number of cookies that were deleted. 4452+ /// 4453+ /*--cef()--*/ 4454+ virtual void OnJavaScriptExeResult(const CefString& result) = 0; 4455 }; 4456 4457 #endif // CEF_INCLUDE_CEF_BROWSER_H_ 4458diff --git a/cef/include/cef_client.h b/cef/include/cef_client.h 4459index 20e5ede627..759c20f52c 100644 4460--- a/cef/include/cef_client.h 4461+++ b/cef/include/cef_client.h 4462@@ -51,6 +51,7 @@ 4463 #include "include/cef_keyboard_handler.h" 4464 #include "include/cef_life_span_handler.h" 4465 #include "include/cef_load_handler.h" 4466+#include "include/cef_permission_request.h" 4467 #include "include/cef_print_handler.h" 4468 #include "include/cef_process_message.h" 4469 #include "include/cef_render_handler.h" 4470@@ -159,6 +160,12 @@ class CefClient : public virtual CefBaseRefCounted { 4471 /*--cef()--*/ 4472 virtual CefRefPtr<CefRequestHandler> GetRequestHandler() { return nullptr; } 4473 4474+ /// 4475+ // Return the handler for browser geolocation permission request events. 4476+ /// 4477+ /*--cef()--*/ 4478+ virtual CefRefPtr<CefPermissionRequest> GetPermissionRequest() { return nullptr; } 4479+ 4480 /// 4481 // Called when a new message is received from a different process. Return true 4482 // if the message was handled or false otherwise. Do not keep a reference to 4483@@ -171,6 +178,15 @@ class CefClient : public virtual CefBaseRefCounted { 4484 CefRefPtr<CefProcessMessage> message) { 4485 return false; 4486 } 4487+ 4488+ /// 4489+ // Returns the list of arguments NotifyJavaScriptResult. 4490+ /// 4491+ /*--cef()--*/ 4492+ virtual int NotifyJavaScriptResult(CefRefPtr<CefListValue> args, 4493+ const CefString& method, 4494+ const CefString& object_name, 4495+ CefRefPtr<CefListValue> result) { return 0; }; 4496 }; 4497 4498 #endif // CEF_INCLUDE_CEF_CLIENT_H_ 4499diff --git a/cef/include/cef_cookie.h b/cef/include/cef_cookie.h 4500index bea152ce94..8eb3beea39 100644 4501--- a/cef/include/cef_cookie.h 4502+++ b/cef/include/cef_cookie.h 4503@@ -64,6 +64,40 @@ class CefCookieManager : public virtual CefBaseRefCounted { 4504 static CefRefPtr<CefCookieManager> GetGlobalManager( 4505 CefRefPtr<CefCompletionCallback> callback); 4506 4507+ /// 4508+ // Convert string cookie to CefCookie. The method will return true when excuted 4509+ // success, otherwise return false. 4510+ /// 4511+ /*--cef()--*/ 4512+ static bool CreateCefCookie(const CefString& url, const CefString& value, 4513+ CefCookie& cef_cookie); 4514+ 4515+ /// 4516+ // Get whether this cookie manager can accpet and send cookies. Returns false if 4517+ // can't. 4518+ /// 4519+ /*--cef()--*/ 4520+ virtual bool IsAcceptCookieAllowed() = 0; 4521+ 4522+ /// 4523+ // Set whether this cookie manager can accpet and send cookies. 4524+ /// 4525+ /*--cef()--*/ 4526+ virtual void PutAcceptCookieEnabled(bool accept) = 0; 4527+ 4528+ /// 4529+ // Get whether this cookie manager can accpet and send cookies for file scheme URL. 4530+ // Returns false if can't. 4531+ /// 4532+ /*--cef()--*/ 4533+ virtual bool IsFileURLSchemeCookiesAllowed() = 0; 4534+ 4535+ /// 4536+ // Set whether this cookie manager can accpet and send cookies for file scheme URL. 4537+ /// 4538+ /*--cef()--*/ 4539+ virtual void PutAcceptFileURLSchemeCookiesEnabled(bool allow) = 0; 4540+ 4541 /// 4542 // Visit all cookies on the UI thread. The returned cookies are ordered by 4543 // longest path, then by earliest creation date. Returns false if cookies 4544@@ -113,6 +147,7 @@ class CefCookieManager : public virtual CefBaseRefCounted { 4545 optional_param=callback)--*/ 4546 virtual bool DeleteCookies(const CefString& url, 4547 const CefString& cookie_name, 4548+ bool is_session, 4549 CefRefPtr<CefDeleteCookiesCallback> callback) = 0; 4550 4551 /// 4552@@ -143,6 +178,14 @@ class CefCookieVisitor : public virtual CefBaseRefCounted { 4553 int count, 4554 int total, 4555 bool& deleteCookie) = 0; 4556+ 4557+ /// 4558+ // Method that will be called when all cookies have been visited, contenate 4559+ // them into one string line. The string cookie line will be passed into this 4560+ // method. 4561+ /// 4562+ /*--cef()--*/ 4563+ virtual void SetCookieLine(const CefString& cookieLine) {} 4564 }; 4565 4566 /// 4567diff --git a/cef/include/cef_display_handler.h b/cef/include/cef_display_handler.h 4568index 61636f1047..cffbbe6fba 100644 4569--- a/cef/include/cef_display_handler.h 4570+++ b/cef/include/cef_display_handler.h 4571@@ -71,6 +71,24 @@ class CefDisplayHandler : public virtual CefBaseRefCounted { 4572 virtual void OnFaviconURLChange(CefRefPtr<CefBrowser> browser, 4573 const std::vector<CefString>& icon_urls) {} 4574 4575+ /// 4576+ // onReceivedTouchIconUrl. 4577+ /// 4578+ /*--cef()--*/ 4579+ virtual void OnReceivedTouchIconUrl(CefRefPtr<CefBrowser> browser, 4580+ const CefString& icon_url, 4581+ bool precomposed) {} 4582+ 4583+ /// 4584+ // onReceivedIcon. 4585+ /// 4586+ /*--cef()--*/ 4587+ virtual void OnReceivedIcon(const void* data, 4588+ size_t width, 4589+ size_t height, 4590+ cef_color_type_t color_type, 4591+ cef_alpha_type_t alpha_type) {} 4592+ 4593 /// 4594 // Called when web content in the page has toggled fullscreen mode. If 4595 // |fullscreen| is true the content will automatically be sized to fill the 4596diff --git a/cef/include/cef_frame.h b/cef/include/cef_frame.h 4597index a1d0bbadcf..2f99585f9a 100644 4598--- a/cef/include/cef_frame.h 4599+++ b/cef/include/cef_frame.h 4600@@ -219,6 +219,14 @@ class CefFrame : public virtual CefBaseRefCounted { 4601 /*--cef()--*/ 4602 virtual void VisitDOM(CefRefPtr<CefDOMVisitor> visitor) = 0; 4603 4604+ /// 4605+ // Loads the given URL with additional HTTP headers, specified as a map 4606+ // from name to value. Note that if this map contains any of the headers that are set by default by this WebView, 4607+ // such as those controlling caching, accept types or the User-Agent, their values may be overridden by this WebView's defaults. 4608+ /// 4609+ /*--cef(optional_param=url, optional_param=additionalHttpHeaders)--*/ 4610+ virtual void LoadHeaderUrl(const CefString& url, const CefString& additionalHttpHeaders) = 0; 4611+ 4612 /// 4613 // Create a new URL request that will be treated as originating from this 4614 // frame and the associated browser. This request may be intercepted by the 4615diff --git a/cef/include/cef_load_handler.h b/cef/include/cef_load_handler.h 4616index 66b556732d..3389aa306b 100644 4617--- a/cef/include/cef_load_handler.h 4618+++ b/cef/include/cef_load_handler.h 4619@@ -41,6 +41,7 @@ 4620 #include "include/cef_base.h" 4621 #include "include/cef_browser.h" 4622 #include "include/cef_frame.h" 4623+#include "include/cef_response.h" 4624 4625 /// 4626 // Implement this interface to handle events related to browser load status. The 4627@@ -111,6 +112,25 @@ class CefLoadHandler : public virtual CefBaseRefCounted { 4628 ErrorCode errorCode, 4629 const CefString& errorText, 4630 const CefString& failedUrl) {} 4631+ 4632+ /// 4633+ // OnLoadErrorWithRequest 4634+ /// 4635+ /*--cef()--*/ 4636+ virtual void OnLoadErrorWithRequest(CefRefPtr<CefRequest> request, 4637+ bool is_main_frame, 4638+ bool has_user_gesture, 4639+ int error_code, 4640+ const CefString& error_text) {} 4641+ 4642+ /// 4643+ // OnHttpError 4644+ /// 4645+ /*--cef()--*/ 4646+ virtual void OnHttpError(CefRefPtr<CefRequest> request, 4647+ bool is_main_frame, 4648+ bool has_user_gesture, 4649+ CefRefPtr<CefResponse> response) {} 4650 }; 4651 4652 #endif // CEF_INCLUDE_CEF_LOAD_HANDLER_H_ 4653diff --git a/cef/include/cef_permission_request.h b/cef/include/cef_permission_request.h 4654new file mode 100644 4655index 0000000000..89931b9a32 4656--- /dev/null 4657+++ b/cef/include/cef_permission_request.h 4658@@ -0,0 +1,149 @@ 4659+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 4660+// Use of this source code is governed by a BSD-style license that can be 4661+// found in the LICENSE file. 4662+ 4663+#ifndef CEF_INCLUDE_CEF_PERMISSION_REQUEST_H_ 4664+#define CEF_INCLUDE_CEF_PERMISSION_REQUEST_H_ 4665+#pragma once 4666+ 4667+#include "include/cef_base.h" 4668+#include "include/internal/cef_types.h" 4669+ 4670+/// 4671+// Class used to report permission request for the specified origin. 4672+/// 4673+/*--cef(source=library)--*/ 4674+class CefAccessRequest : public virtual CefBaseRefCounted { 4675+ public: 4676+ /// 4677+ // Get the origin that is trying to acess the resource. 4678+ /// 4679+ /*--cef()--*/ 4680+ virtual CefString Origin() = 0; 4681+ /// 4682+ // Get the resource that the origin is trying to acess. 4683+ /// 4684+ /*--cef()--*/ 4685+ virtual int ResourceAcessId() = 0; 4686+ /// 4687+ // Report whether the origin is allowed to acess the resource. 4688+ /// 4689+ /*--cef()--*/ 4690+ virtual void ReportRequestResult(bool allowed) = 0; 4691+}; 4692+ 4693+/// 4694+// Implement this interface to handle permission requests. 4695+/// 4696+/*--cef(source=client,no_debugct_check)--*/ 4697+class CefPermissionRequest : public virtual CefBaseRefCounted { 4698+ public: 4699+ /// 4700+ // Notify the host application that web content from the specified origin is 4701+ // attempting to use the Geolocation API, but no permission state is currently 4702+ // set for that origin. The host application should invoke the specified 4703+ // callback with the desired permission state. 4704+ /// 4705+ /*--cef()--*/ 4706+ virtual void OnGeolocationShow(const CefString& origin) = 0; 4707+ /// 4708+ // Revert the operation in the OnGeolocationShow. 4709+ /// 4710+ /*--cef()--*/ 4711+ virtual void OnGeolocationHide() = 0; 4712+ /// 4713+ // Notify the host application that web content from the specified origin is 4714+ // attempting to access the resources, but no permission state is currently 4715+ // set for that origin. The host application should invoke the specified 4716+ // callback with the desired permission state. 4717+ /// 4718+ /*--cef()--*/ 4719+ virtual void OnPermissionRequest(CefRefPtr<CefAccessRequest> request) = 0; 4720+ /// 4721+ // Revert the operation in the OnPermissionRequest. 4722+ /// 4723+ /*--cef()--*/ 4724+ virtual void OnPermissionRequestCanceled( 4725+ CefRefPtr<CefAccessRequest> request) = 0; 4726+}; 4727+ 4728+/// 4729+// Class used to handle the permission requests from |BrowserContext|. 4730+/// 4731+/*--cef(source=library)--*/ 4732+class CefBrowserPermissionRequestDelegate : public virtual CefBaseRefCounted { 4733+ public: 4734+ /// 4735+ // Handle the Geolocation permission requests. 4736+ /// 4737+ /*--cef()--*/ 4738+ virtual void AskGeolocationPermission(const CefString& origin, 4739+ cef_permission_callback_t callback) = 0; 4740+ /// 4741+ // Cancel the Geolocation permission requests. 4742+ /// 4743+ /*--cef()--*/ 4744+ virtual void AbortAskGeolocationPermission(const CefString& origin) = 0; 4745+ /// 4746+ // Handle the Protected Media Identifier permission requests. 4747+ /// 4748+ /*--cef()--*/ 4749+ virtual void AskProtectedMediaIdentifierPermission( 4750+ const CefString& origin, 4751+ cef_permission_callback_t callback) = 0; 4752+ /// 4753+ // Cancel the Protected Media Identifier permission requests. 4754+ /// 4755+ /*--cef()--*/ 4756+ virtual void AbortAskProtectedMediaIdentifierPermission( 4757+ const CefString& origin) = 0; 4758+ /// 4759+ // Handle the MIDI Sysex permission requests. 4760+ /// 4761+ /*--cef()--*/ 4762+ virtual void AskMIDISysexPermission(const CefString& origin, 4763+ cef_permission_callback_t callback) = 0; 4764+ /// 4765+ // Cancel the MIDI Sysex permission requests. 4766+ /// 4767+ /*--cef()--*/ 4768+ virtual void AbortAskMIDISysexPermission(const CefString& origin) = 0; 4769+ /// 4770+ // The callback for the Geolocation permission requests. 4771+ /// 4772+ /*--cef()--*/ 4773+ virtual void NotifyGeolocationPermission(bool value, 4774+ const CefString& origin) = 0; 4775+}; 4776+ 4777+/// 4778+// Class used to set the geolocation permission state for the specified origin. 4779+/// 4780+/*--cef(source=library)--*/ 4781+class CefGeolocationAcess : public virtual CefBaseRefCounted { 4782+ public: 4783+ /// 4784+ // Return true if the geolocation permission state is set for the specified 4785+ // origin. 4786+ /// 4787+ /*--cef()--*/ 4788+ virtual bool ContainOrigin(const CefString& origin) = 0; 4789+ /// 4790+ // Return true if the geolocation permission state set for the specified 4791+ // origin is true. 4792+ /// 4793+ /*--cef()--*/ 4794+ virtual bool IsOriginAccessEnabled(const CefString& origin) = 0; 4795+ /// 4796+ // Set the geolocation permission state to true for the specified origin. 4797+ /// 4798+ /*--cef()--*/ 4799+ virtual void Enabled(const CefString& origin) = 0; 4800+ /// 4801+ // Set the geolocation permission state to false for the specified origin. 4802+ /// 4803+ /*--cef()--*/ 4804+ virtual void Disabled(const CefString& origin) = 0; 4805+}; 4806+ 4807+#endif // CEF_INCLUDE_CEF_PERMISSION_REQUEST_H_ 4808diff --git a/cef/include/cef_render_handler.h b/cef/include/cef_render_handler.h 4809index f101083a79..286418081d 100644 4810--- a/cef/include/cef_render_handler.h 4811+++ b/cef/include/cef_render_handler.h 4812@@ -202,6 +202,14 @@ class CefRenderHandler : public virtual CefBaseRefCounted { 4813 double x, 4814 double y) {} 4815 4816+ /// 4817+ // Called when the RootLayer has changed. 4818+ /// 4819+ /*--cef()--*/ 4820+ virtual void OnRootLayerChanged(CefRefPtr<CefBrowser> browser, 4821+ int height, 4822+ int width) {} 4823+ 4824 /// 4825 // Called when the IME composition range has changed. |selected_range| is the 4826 // range of characters that have been selected. |character_bounds| is the 4827diff --git a/cef/include/internal/cef_types.h b/cef/include/internal/cef_types.h 4828index db67632877..980265365a 100644 4829--- a/cef/include/internal/cef_types.h 4830+++ b/cef/include/internal/cef_types.h 4831@@ -32,6 +32,7 @@ 4832 #pragma once 4833 4834 #include "include/base/cef_basictypes.h" 4835+#include "include/base/cef_callback.h" 4836 #include "include/internal/cef_string.h" 4837 #include "include/internal/cef_string_list.h" 4838 #include "include/internal/cef_time.h" 4839@@ -45,6 +46,9 @@ 4840 #include "include/internal/cef_types_linux.h" 4841 #endif 4842 4843+// Permission request callback. 4844+typedef base::Callback<void(bool)> cef_permission_callback_t; 4845+ 4846 // 32-bit ARGB color value, not premultiplied. The color components are always 4847 // in a known order. Equivalent to the SkColor type. 4848 typedef uint32 cef_color_t; 4849@@ -684,6 +688,23 @@ typedef struct _cef_browser_settings_t { 4850 // empty then "en-US,en" will be used. 4851 /// 4852 cef_string_t accept_language_list; 4853+ 4854+ /* ohos webview begin */ 4855+ /// 4856+ // Force the background color to be dark 4857+ /// 4858+ cef_state_t force_dark_mode_enabled; 4859+ cef_state_t loads_images_automatically; 4860+ bool javascript_can_open_windows_automatically; 4861+ int text_size_percent; 4862+ int mixed_content_mode; 4863+ cef_state_t allow_running_insecure_content; 4864+ cef_state_t strict_mixed_content_checking; 4865+ cef_state_t allow_mixed_content_upgrades; 4866+ bool geolocation_enabled; 4867+ bool supports_double_tap_zoom; 4868+ bool supports_multi_touch_zoom; 4869+ /* ohos webview end */ 4870 } cef_browser_settings_t; 4871 4872 /// 4873@@ -945,7 +966,11 @@ typedef enum { 4874 ERR_NONE = 0, 4875 4876 #define NET_ERROR(label, value) ERR_##label = value, 4877+#if defined(COMPILE_WITH_OHOS) 4878+#include "include/base/internal/cef_net_error_list_ohos.h" 4879+#else 4880 #include "include/base/internal/cef_net_error_list.h" 4881+#endif 4882 #undef NET_ERROR 4883 4884 } cef_errorcode_t; 4885@@ -2653,6 +2678,11 @@ typedef enum { 4886 // BGRA with 8 bits per pixel (32bits total). 4887 /// 4888 CEF_COLOR_TYPE_BGRA_8888, 4889+ 4890+ /// 4891+ // Unknown color type. 4892+ /// 4893+ CEF_COLOR_TYPE_UNKNOWN, 4894 } cef_color_type_t; 4895 4896 /// 4897@@ -2673,6 +2703,11 @@ typedef enum { 4898 // Transparency with post-multiplied alpha component. 4899 /// 4900 CEF_ALPHA_TYPE_POSTMULTIPLIED, 4901+ 4902+ /// 4903+ // Unknown alpha type. 4904+ /// 4905+ CEF_ALPHA_TYPE_UNKNOWN, 4906 } cef_alpha_type_t; 4907 4908 /// 4909diff --git a/cef/include/internal/cef_types_wrappers.h b/cef/include/internal/cef_types_wrappers.h 4910index 78ecdb5c41..49429490a9 100644 4911--- a/cef/include/internal/cef_types_wrappers.h 4912+++ b/cef/include/internal/cef_types_wrappers.h 4913@@ -725,6 +725,21 @@ struct CefBrowserSettingsTraits { 4914 cef_string_set(src->accept_language_list.str, 4915 src->accept_language_list.length, 4916 &target->accept_language_list, copy); 4917+ 4918+ /* ohos webview begin */ 4919+ target->force_dark_mode_enabled = src->force_dark_mode_enabled; 4920+ target->javascript_can_open_windows_automatically = 4921+ src->javascript_can_open_windows_automatically; 4922+ target->loads_images_automatically = src->loads_images_automatically; 4923+ target->text_size_percent = src->text_size_percent; 4924+ target->mixed_content_mode = src->mixed_content_mode; 4925+ target->allow_running_insecure_content = src->allow_running_insecure_content; 4926+ target->strict_mixed_content_checking = src->strict_mixed_content_checking; 4927+ target->allow_mixed_content_upgrades = src->allow_mixed_content_upgrades; 4928+ target->geolocation_enabled = src->geolocation_enabled; 4929+ target->supports_double_tap_zoom = src->supports_double_tap_zoom; 4930+ target->supports_multi_touch_zoom = src->supports_multi_touch_zoom; 4931+ /* ohos webview end */ 4932 } 4933 }; 4934 4935diff --git a/cef/libcef/browser/alloy/alloy_browser_context.cc b/cef/libcef/browser/alloy/alloy_browser_context.cc 4936index 96516f4d5f..65d870cda1 100644 4937--- a/cef/libcef/browser/alloy/alloy_browser_context.cc 4938+++ b/cef/libcef/browser/alloy/alloy_browser_context.cc 4939@@ -1,6 +1,7 @@ 4940-// Copyright (c) 2012 The Chromium Authors. All rights reserved. 4941-// Use of this source code is governed by a BSD-style license that can be 4942-// found in the LICENSE file. 4943+// Copyright (c) 2022 Huawei Device Co., Ltd. 4944+// Copyright (c) 2012 The Chromium Embedded Framework Authors. All rights 4945+// reserved. Use of this source code is governed by a BSD-style license that can 4946+// be found in the LICENSE file. 4947 4948 #include "libcef/browser/alloy/alloy_browser_context.h" 4949 4950@@ -9,6 +10,7 @@ 4951 4952 #include "libcef/browser/download_manager_delegate.h" 4953 #include "libcef/browser/extensions/extension_system.h" 4954+#include "libcef/browser/permission/alloy_permission_manager.h" 4955 #include "libcef/browser/prefs/browser_prefs.h" 4956 #include "libcef/browser/ssl_host_state_delegate.h" 4957 #include "libcef/browser/thread_util.h" 4958@@ -381,7 +383,9 @@ content::SSLHostStateDelegate* AlloyBrowserContext::GetSSLHostStateDelegate() { 4959 4960 content::PermissionControllerDelegate* 4961 AlloyBrowserContext::GetPermissionControllerDelegate() { 4962- return nullptr; 4963+ if (!permission_manager_.get()) 4964+ permission_manager_.reset(new AlloyPermissionManager()); 4965+ return permission_manager_.get(); 4966 } 4967 4968 content::BackgroundFetchDelegate* 4969diff --git a/cef/libcef/browser/alloy/alloy_browser_context.h b/cef/libcef/browser/alloy/alloy_browser_context.h 4970index 72c458196d..d9ebf677ef 100644 4971--- a/cef/libcef/browser/alloy/alloy_browser_context.h 4972+++ b/cef/libcef/browser/alloy/alloy_browser_context.h 4973@@ -1,6 +1,7 @@ 4974-// Copyright (c) 2011 The Chromium Authors. All rights reserved. 4975-// Use of this source code is governed by a BSD-style license that can be 4976-// found in the LICENSE file. 4977+// Copyright (c) 2022 Huawei Device Co., Ltd. 4978+// Copyright (c) 2012 The Chromium Embedded Framework Authors. All rights 4979+// reserved. Use of this source code is governed by a BSD-style license that can 4980+// be found in the LICENSE file. 4981 4982 #ifndef CEF_LIBCEF_BROWSER_ALLOY_ALLOY_BROWSER_CONTEXT_H_ 4983 #define CEF_LIBCEF_BROWSER_ALLOY_ALLOY_BROWSER_CONTEXT_H_ 4984@@ -141,6 +142,7 @@ class AlloyBrowserContext : public ChromeProfileAlloy, 4985 std::unique_ptr<content::ResourceContext> resource_context_; 4986 4987 scoped_refptr<MediaDeviceIDSalt> media_device_id_salt_; 4988+ std::unique_ptr<content::PermissionControllerDelegate> permission_manager_; 4989 4990 DISALLOW_COPY_AND_ASSIGN(AlloyBrowserContext); 4991 }; 4992diff --git a/cef/libcef/browser/alloy/alloy_browser_host_impl.cc b/cef/libcef/browser/alloy/alloy_browser_host_impl.cc 4993index ec9b8e6bcf..73e7113807 100644 4994--- a/cef/libcef/browser/alloy/alloy_browser_host_impl.cc 4995+++ b/cef/libcef/browser/alloy/alloy_browser_host_impl.cc 4996@@ -1,7 +1,7 @@ 4997-// Copyright (c) 2012 The Chromium Embedded Framework Authors. 4998-// Portions copyright (c) 2011 The Chromium Authors. All rights reserved. 4999-// Use of this source code is governed by a BSD-style license that can be 5000-// found in the LICENSE file. 5001+// Copyright (c) 2022 Huawei Device Co., Ltd. 5002+// Copyright (c) 2012 The Chromium Embedded Framework Authors. All rights 5003+// reserved. Use of this source code is governed by a BSD-style license that can 5004+// be found in the LICENSE file. 5005 5006 #include "libcef/browser/alloy/alloy_browser_host_impl.h" 5007 5008@@ -19,6 +19,8 @@ 5009 #include "libcef/browser/media_capture_devices_dispatcher.h" 5010 #include "libcef/browser/native/cursor_util.h" 5011 #include "libcef/browser/osr/osr_util.h" 5012+#include "libcef/browser/osr/render_widget_host_view_osr.h" 5013+#include "libcef/browser/prefs/renderer_prefs.h" 5014 #include "libcef/browser/request_context_impl.h" 5015 #include "libcef/browser/thread_util.h" 5016 #include "libcef/common/cef_messages.h" 5017@@ -567,6 +569,10 @@ bool AlloyBrowserHostImpl::IsBackgroundHost() { 5018 return is_background_host_; 5019 } 5020 5021+SkColor AlloyBrowserHostImpl::GetBackgroundColor() const { 5022+ return base_background_color_; 5023+} 5024+ 5025 bool AlloyBrowserHostImpl::IsWindowRenderingDisabled() { 5026 return IsWindowless(); 5027 } 5028@@ -1226,6 +1232,33 @@ bool AlloyBrowserHostImpl::HandleContextMenu( 5029 return HandleContextMenu(web_contents(), params); 5030 } 5031 5032+void AlloyBrowserHostImpl::SetBackgroundColor(int color) { 5033+ if (color == base_background_color_) { 5034+ return; 5035+ } 5036+ 5037+ base_background_color_ = color; 5038+ OnWebPreferencesChanged(); 5039+} 5040+ 5041+void AlloyBrowserHostImpl::UpdateBackgroundColor(int color) { 5042+ auto rvh = web_contents()->GetRenderViewHost(); 5043+ 5044+ if (rvh->GetWidget()->GetView()) { 5045+ rvh->GetWidget()->GetView()->SetBackgroundColor(color); 5046+ } 5047+} 5048+ 5049+void AlloyBrowserHostImpl::UpdateZoomSupportEnabled() { 5050+ auto rvh = web_contents()->GetRenderViewHost(); 5051+ CefRenderWidgetHostViewOSR* view = static_cast<CefRenderWidgetHostViewOSR*>(rvh->GetWidget()->GetView()); 5052+ 5053+ if (view) { 5054+ view->SetDoubleTapSupportEnabled(settings_.supports_double_tap_zoom); 5055+ view->SetMultiTouchZoomSupportEnabled(settings_.supports_multi_touch_zoom); 5056+ } 5057+} 5058+ 5059 KeyboardEventProcessingResult AlloyBrowserHostImpl::PreHandleKeyboardEvent( 5060 content::WebContents* source, 5061 const content::NativeWebKeyboardEvent& event) { 5062@@ -1483,6 +1516,8 @@ void AlloyBrowserHostImpl::RenderFrameCreated( 5063 5064 void AlloyBrowserHostImpl::RenderViewReady() { 5065 platform_delegate_->RenderViewReady(); 5066+ UpdateBackgroundColor(base_background_color_); 5067+ UpdateZoomSupportEnabled(); 5068 } 5069 5070 void AlloyBrowserHostImpl::DidFinishNavigation( 5071@@ -1645,3 +1680,17 @@ void AlloyBrowserHostImpl::EnsureFileDialogManager() { 5072 this, platform_delegate_->CreateFileDialogRunner())); 5073 } 5074 } 5075+ 5076+void AlloyBrowserHostImpl::AddVisitedLinks(const std::vector<CefString>& urls) { 5077+ std::vector<GURL> urlList = std::vector<GURL>(); 5078+ for (auto url : urls) { 5079+ urlList.push_back(url_util::MakeGURL(url, /*fixup=*/false)); 5080+ } 5081+ if (web_contents()) { 5082+ auto cef_browser_context = 5083+ static_cast<AlloyBrowserContext*>(web_contents()->GetBrowserContext()); 5084+ if (cef_browser_context) { 5085+ cef_browser_context->AddVisitedURLs(urlList); 5086+ } 5087+ } 5088+} 5089diff --git a/cef/libcef/browser/alloy/alloy_browser_host_impl.h b/cef/libcef/browser/alloy/alloy_browser_host_impl.h 5090index faee30792c..799295d3eb 100644 5091--- a/cef/libcef/browser/alloy/alloy_browser_host_impl.h 5092+++ b/cef/libcef/browser/alloy/alloy_browser_host_impl.h 5093@@ -1,7 +1,7 @@ 5094-// Copyright (c) 2012 The Chromium Embedded Framework Authors. 5095-// Portions copyright (c) 2011 The Chromium Authors. All rights reserved. 5096-// Use of this source code is governed by a BSD-style license that can be 5097-// found in the LICENSE file. 5098+// Copyright (c) 2022 Huawei Device Co., Ltd. 5099+// Copyright (c) 2012 The Chromium Embedded Framework Authors. All rights 5100+// reserved. Use of this source code is governed by a BSD-style license that can 5101+// be found in the LICENSE file. 5102 5103 #ifndef CEF_LIBCEF_BROWSER_ALLOY_ALLOY_BROWSER_HOST_IMPL_H_ 5104 #define CEF_LIBCEF_BROWSER_ALLOY_ALLOY_BROWSER_HOST_IMPL_H_ 5105@@ -148,6 +148,7 @@ class AlloyBrowserHostImpl : public CefBrowserHostBase, 5106 const CefSize& max_size) override; 5107 CefRefPtr<CefExtension> GetExtension() override; 5108 bool IsBackgroundHost() override; 5109+ SkColor GetBackgroundColor() const; 5110 5111 // Returns true if windowless rendering is enabled. 5112 bool IsWindowless() const override; 5113@@ -203,6 +204,10 @@ class AlloyBrowserHostImpl : public CefBrowserHostBase, 5114 }; 5115 DestructionState destruction_state() const { return destruction_state_; } 5116 5117+ /* ohos webview begin */ 5118+ void SetBackgroundColor(int color) override; 5119+ /* ohos webview end */ 5120+ 5121 // content::WebContentsDelegate methods. 5122 content::WebContents* OpenURLFromTab( 5123 content::WebContents* source, 5124@@ -306,6 +311,7 @@ class AlloyBrowserHostImpl : public CefBrowserHostBase, 5125 const std::vector<content::AXLocationChangeNotificationDetails>& locData) 5126 override; 5127 void WebContentsDestroyed() override; 5128+ void AddVisitedLinks(const std::vector<CefString>& urls) override; 5129 5130 private: 5131 friend class CefBrowserPlatformDelegateAlloy; 5132@@ -343,6 +349,10 @@ class AlloyBrowserHostImpl : public CefBrowserHostBase, 5133 5134 void SetFocusInternal(bool focus); 5135 5136+ void UpdateBackgroundColor(int color); 5137+ 5138+ void UpdateZoomSupportEnabled(); 5139+ 5140 CefWindowHandle opener_; 5141 const bool is_windowless_; 5142 CefWindowHandle host_window_handle_ = kNullWindowHandle; 5143@@ -373,6 +383,8 @@ class AlloyBrowserHostImpl : public CefBrowserHostBase, 5144 // starts running when a tab stops being audible, and is canceled if it starts 5145 // being audible again before it fires. 5146 base::OneShotTimer recently_audible_timer_; 5147+ 5148+ int base_background_color_ = 0xffffffff; 5149 }; 5150 5151 #endif // CEF_LIBCEF_BROWSER_ALLOY_ALLOY_BROWSER_HOST_IMPL_H_ 5152diff --git a/cef/libcef/browser/alloy/alloy_content_browser_client.cc b/cef/libcef/browser/alloy/alloy_content_browser_client.cc 5153index 33be06def0..2a2e3cf6ea 100644 5154--- a/cef/libcef/browser/alloy/alloy_content_browser_client.cc 5155+++ b/cef/libcef/browser/alloy/alloy_content_browser_client.cc 5156@@ -955,6 +955,16 @@ bool AlloyContentBrowserClient::CanCreateWindow( 5157 CEF_REQUIRE_UIT(); 5158 *no_javascript_access = false; 5159 5160+ content::WebContents* web_contents = 5161+ content::WebContents::FromRenderFrameHost(opener); 5162+ CefRefPtr<CefBrowserHostBase> browser_host = 5163+ CefBrowserHostBase::GetBrowserForContents(web_contents); 5164+ 5165+ if (!browser_host->settings().javascript_can_open_windows_automatically) { 5166+ LOG(INFO) << "javascript_can_open_windows_automatically false"; 5167+ return false; 5168+ } 5169+ 5170 return CefBrowserInfoManager::GetInstance()->CanCreateWindow( 5171 opener, target_url, referrer, frame_name, disposition, features, 5172 user_gesture, opener_suppressed, no_javascript_access); 5173@@ -998,9 +1008,8 @@ void AlloyContentBrowserClient::DidCreatePpapiPlugin( 5174 new ChromeBrowserPepperHostFactory(browser_host))); 5175 } 5176 5177-std::unique_ptr<content::DevToolsManagerDelegate> 5178-AlloyContentBrowserClient::CreateDevToolsManagerDelegate() { 5179- return std::make_unique<CefDevToolsManagerDelegate>(); 5180+content::DevToolsManagerDelegate* AlloyContentBrowserClient::GetDevToolsManagerDelegate() { 5181+ return new CefDevToolsManagerDelegate(); 5182 } 5183 5184 std::vector<std::unique_ptr<content::NavigationThrottle>> 5185@@ -1211,6 +1220,16 @@ void AlloyContentBrowserClient::ConfigureNetworkContextParams( 5186 cert_verifier_creation_params) { 5187 // This method may be called during shutdown when using multi-threaded 5188 // message loop mode. In that case exit early to avoid crashes. 5189+ AlloyBrowserContext* cef_context = static_cast<AlloyBrowserContext*>(CefBrowserContext::FromBrowserContext(context)); 5190+ 5191+ base::FilePath cache_path; 5192+ if (base::PathService::Get(base::DIR_CACHE, &cache_path)) { 5193+ if (cef_context->ShouldPersistSessionCookies()) { 5194+ network_context_params->cookie_path = cache_path.Append(base::FilePath("cookie.db")); 5195+ } 5196+ network_context_params->persist_session_cookies = cef_context->ShouldPersistSessionCookies(); 5197+ network_context_params->restore_old_session_cookies = cef_context->ShouldRestoreOldSessionCookies(); 5198+ } 5199 if (!SystemNetworkContextManager::GetInstance()) { 5200 // This must match the value expected in 5201 // StoragePartitionImpl::InitNetworkContext. 5202@@ -1218,8 +1237,6 @@ void AlloyContentBrowserClient::ConfigureNetworkContextParams( 5203 return; 5204 } 5205 5206- auto cef_context = CefBrowserContext::FromBrowserContext(context); 5207- 5208 Profile* profile = cef_context->AsProfile(); 5209 ProfileNetworkContextService* service = 5210 ProfileNetworkContextServiceFactory::GetForContext(profile); 5211diff --git a/cef/libcef/browser/alloy/alloy_content_browser_client.h b/cef/libcef/browser/alloy/alloy_content_browser_client.h 5212index 35b45c4f89..19b3cebebb 100644 5213--- a/cef/libcef/browser/alloy/alloy_content_browser_client.h 5214+++ b/cef/libcef/browser/alloy/alloy_content_browser_client.h 5215@@ -109,8 +109,7 @@ class AlloyContentBrowserClient : public content::ContentBrowserClient { 5216 void BrowserURLHandlerCreated(content::BrowserURLHandler* handler) override; 5217 std::string GetDefaultDownloadName() override; 5218 void DidCreatePpapiPlugin(content::BrowserPpapiHost* browser_host) override; 5219- std::unique_ptr<content::DevToolsManagerDelegate> 5220- CreateDevToolsManagerDelegate(); 5221+ content::DevToolsManagerDelegate* GetDevToolsManagerDelegate() override; 5222 std::vector<std::unique_ptr<content::NavigationThrottle>> 5223 CreateThrottlesForNavigation( 5224 content::NavigationHandle* navigation_handle) override; 5225diff --git a/cef/libcef/browser/alloy/browser_platform_delegate_alloy.cc b/cef/libcef/browser/alloy/browser_platform_delegate_alloy.cc 5226index 18aad738c2..099cfbec28 100644 5227--- a/cef/libcef/browser/alloy/browser_platform_delegate_alloy.cc 5228+++ b/cef/libcef/browser/alloy/browser_platform_delegate_alloy.cc 5229@@ -254,6 +254,15 @@ void CefBrowserPlatformDelegateAlloy::SendCaptureLostEvent() { 5230 widget->LostCapture(); 5231 } 5232 5233+void CefBrowserPlatformDelegateAlloy::SendTouchEventToRender(const CefTouchEvent& event) { 5234+ if (!browser_) 5235+ return; 5236+ auto frame = browser_->GetMainFrame(); 5237+ if (frame && frame->IsValid()) { 5238+ static_cast<CefFrameHostImpl*>(frame.get())->SendTouchEvent(event); 5239+ } 5240+} 5241+ 5242 #if defined(OS_WIN) || (defined(OS_POSIX) && !defined(OS_MAC)) 5243 void CefBrowserPlatformDelegateAlloy::NotifyMoveOrResizeStarted() { 5244 if (!browser_) 5245diff --git a/cef/libcef/browser/alloy/browser_platform_delegate_alloy.h b/cef/libcef/browser/alloy/browser_platform_delegate_alloy.h 5246index dcd8879cc0..8622f73c51 100644 5247--- a/cef/libcef/browser/alloy/browser_platform_delegate_alloy.h 5248+++ b/cef/libcef/browser/alloy/browser_platform_delegate_alloy.h 5249@@ -37,6 +37,7 @@ class CefBrowserPlatformDelegateAlloy : public CefBrowserPlatformDelegate { 5250 extensions::ExtensionHost* GetExtensionHost() const override; 5251 void BrowserDestroyed(CefBrowserHostBase* browser) override; 5252 void SendCaptureLostEvent() override; 5253+ void SendTouchEventToRender(const CefTouchEvent& event); 5254 #if defined(OS_WIN) || (defined(OS_POSIX) && !defined(OS_MAC)) 5255 void NotifyMoveOrResizeStarted() override; 5256 #endif 5257diff --git a/cef/libcef/browser/browser_contents_delegate.cc b/cef/libcef/browser/browser_contents_delegate.cc 5258index f6f26956c1..fca6d1e95f 100644 5259--- a/cef/libcef/browser/browser_contents_delegate.cc 5260+++ b/cef/libcef/browser/browser_contents_delegate.cc 5261@@ -1,12 +1,14 @@ 5262-// Copyright 2020 The Chromium Embedded Framework Authors. All rights reserved. 5263-// Use of this source code is governed by a BSD-style license that can be 5264-// found in the LICENSE file. 5265+// Copyright (c) 2022 Huawei Device Co., Ltd. 5266+// Copyright (c) 2012 The Chromium Embedded Framework Authors. All rights 5267+// reserved. Use of this source code is governed by a BSD-style license that can 5268+// be found in the LICENSE file. 5269 5270 #include "libcef/browser/browser_contents_delegate.h" 5271 5272 #include "libcef/browser/browser_host_base.h" 5273 #include "libcef/browser/browser_platform_delegate.h" 5274 #include "libcef/browser/browser_util.h" 5275+#include "libcef/common/request_impl.h" 5276 5277 #include "content/public/browser/keyboard_event_processing_result.h" 5278 #include "content/public/browser/native_web_keyboard_event.h" 5279@@ -29,7 +31,7 @@ CefBrowserContentsDelegate::CefBrowserContentsDelegate( 5280 void CefBrowserContentsDelegate::ObserveWebContents( 5281 content::WebContents* new_contents) { 5282 WebContentsObserver::Observe(new_contents); 5283- 5284+ icon_helper_->SetWebContents(new_contents); 5285 if (new_contents) { 5286 registrar_.reset(new content::NotificationRegistrar); 5287 5288@@ -410,7 +412,17 @@ void CefBrowserContentsDelegate::DidFinishNavigation( 5289 // If the error happened before commit then this call will originate from 5290 // RenderFrameHostImpl::OnDidFailProvisionalLoadWithError. 5291 // OnLoadStart/OnLoadEnd will not be called. 5292- OnLoadError(frame.get(), navigation_handle->GetURL(), error_code); 5293+ 5294+ CefRefPtr<CefRequestImpl> request = new CefRequestImpl(); 5295+ CefString cef_url(navigation_handle->GetURL().spec()); 5296+ CefString cef_method(navigation_handle->IsPost() ? "POST" : "GET"); 5297+ request->SetURL(cef_url); 5298+ request->SetMethod(cef_method); 5299+ request->Set(net::HttpRequestHeaders()); 5300+ OnLoadError(request, 5301+ navigation_handle->IsInMainFrame(), 5302+ navigation_handle->HasUserGesture(), 5303+ error_code); 5304 } 5305 } 5306 5307@@ -473,6 +485,7 @@ void CefBrowserContentsDelegate::DidUpdateFaviconURL( 5308 } 5309 } 5310 } 5311+ icon_helper_->OnUpdateFaviconURL(render_frame_host, candidates); 5312 } 5313 5314 void CefBrowserContentsDelegate::OnWebContentsFocused( 5315@@ -594,6 +607,23 @@ void CefBrowserContentsDelegate::OnLoadError(CefRefPtr<CefFrame> frame, 5316 } 5317 } 5318 5319+void CefBrowserContentsDelegate::OnLoadError(CefRefPtr<CefRequest> request, 5320+ bool is_main_frame, 5321+ bool has_user_gesture, 5322+ int error_code) { 5323+ if (auto c = client()) { 5324+ if (auto handler = c->GetLoadHandler()) { 5325+ auto navigation_lock = browser_info_->CreateNavigationLock(); 5326+ // On the handler that loading has failed. 5327+ handler->OnLoadErrorWithRequest(request, 5328+ is_main_frame, 5329+ has_user_gesture, 5330+ error_code, 5331+ net::ErrorToShortString(error_code)); 5332+ } 5333+ } 5334+} 5335+ 5336 void CefBrowserContentsDelegate::OnTitleChange(const std::u16string& title) { 5337 if (auto c = client()) { 5338 if (auto handler = c->GetDisplayHandler()) { 5339@@ -621,3 +651,15 @@ void CefBrowserContentsDelegate::OnStateChanged(State state_changed) { 5340 observer.OnStateChanged(state_changed); 5341 } 5342 } 5343+ 5344+void CefBrowserContentsDelegate::InitIconHelper() { 5345+ icon_helper_ = new IconHelper(); 5346+ icon_helper_->SetBrowser(CefBrowserContentsDelegate::browser()); 5347+ CefRefPtr<CefClient> client = CefBrowserContentsDelegate::client(); 5348+ if (client) { 5349+ CefRefPtr<CefDisplayHandler> handler = client->GetDisplayHandler(); 5350+ if (handler) { 5351+ icon_helper_->SetDisplayHandler(handler); 5352+ } 5353+ } 5354+} 5355diff --git a/cef/libcef/browser/browser_contents_delegate.h b/cef/libcef/browser/browser_contents_delegate.h 5356index 9977552a8f..991010f4f7 100644 5357--- a/cef/libcef/browser/browser_contents_delegate.h 5358+++ b/cef/libcef/browser/browser_contents_delegate.h 5359@@ -1,6 +1,7 @@ 5360-// Copyright 2020 The Chromium Embedded Framework Authors. All rights reserved. 5361-// Use of this source code is governed by a BSD-style license that can be 5362-// found in the LICENSE file. 5363+// Copyright (c) 2022 Huawei Device Co., Ltd. 5364+// Copyright (c) 2012 The Chromium Embedded Framework Authors. All rights 5365+// reserved. Use of this source code is governed by a BSD-style license that can 5366+// be found in the LICENSE file. 5367 5368 #ifndef CEF_LIBCEF_BROWSER_BROWSER_CONTENTS_DELEGATE_H_ 5369 #define CEF_LIBCEF_BROWSER_BROWSER_CONTENTS_DELEGATE_H_ 5370@@ -9,6 +10,7 @@ 5371 #include <memory> 5372 5373 #include "libcef/browser/frame_host_impl.h" 5374+#include "libcef/browser/icon_helper.h" 5375 5376 #include "base/observer_list.h" 5377 #include "content/public/browser/notification_observer.h" 5378@@ -153,6 +155,7 @@ class CefBrowserContentsDelegate : public content::WebContentsDelegate, 5379 const GURL& url, 5380 int http_status_code); 5381 bool OnSetFocus(cef_focus_source_t source); 5382+ void InitIconHelper(); 5383 5384 private: 5385 CefRefPtr<CefClient> client() const; 5386@@ -164,6 +167,10 @@ class CefBrowserContentsDelegate : public content::WebContentsDelegate, 5387 void OnLoadStart(CefRefPtr<CefFrame> frame, 5388 ui::PageTransition transition_type); 5389 void OnLoadError(CefRefPtr<CefFrame> frame, const GURL& url, int error_code); 5390+ void OnLoadError(CefRefPtr<CefRequest> request, 5391+ bool is_in_main_frame, 5392+ bool has_user_gesture, 5393+ int error_code); 5394 void OnTitleChange(const std::u16string& title); 5395 void OnFullscreenModeChange(bool fullscreen); 5396 5397@@ -192,6 +199,9 @@ class CefBrowserContentsDelegate : public content::WebContentsDelegate, 5398 // True if the focus is currently on an editable field on the page. 5399 bool focus_on_editable_field_ = false; 5400 5401+ // Store web site icon. 5402+ CefRefPtr<IconHelper> icon_helper_; 5403+ 5404 DISALLOW_COPY_AND_ASSIGN(CefBrowserContentsDelegate); 5405 }; 5406 5407diff --git a/cef/libcef/browser/browser_host_base.cc b/cef/libcef/browser/browser_host_base.cc 5408index 20760ddff7..9f046ffc57 100644 5409--- a/cef/libcef/browser/browser_host_base.cc 5410+++ b/cef/libcef/browser/browser_host_base.cc 5411@@ -1,20 +1,27 @@ 5412-// Copyright 2020 The Chromium Embedded Framework Authors. All rights reserved. 5413-// Use of this source code is governed by a BSD-style license that can be 5414-// found in the LICENSE file. 5415+// Copyright (c) 2022 Huawei Device Co., Ltd. 5416+// Copyright (c) 2012 The Chromium Embedded Framework Authors. All rights 5417+// reserved. Use of this source code is governed by a BSD-style license that can 5418+// be found in the LICENSE file. 5419+ 5420 5421 #include "libcef/browser/browser_host_base.h" 5422 5423+#include "cef/include/cef_parser.h" 5424 #include "libcef/browser/browser_info_manager.h" 5425 #include "libcef/browser/browser_platform_delegate.h" 5426 #include "libcef/browser/context.h" 5427 #include "libcef/browser/image_impl.h" 5428 #include "libcef/browser/navigation_entry_impl.h" 5429+#include "libcef/browser/permission/alloy_access_request.h" 5430+#include "libcef/browser/permission/alloy_geolocation_access.h" 5431 #include "libcef/browser/thread_util.h" 5432 #include "libcef/common/net/url_util.h" 5433 5434+#include "base/json/json_writer.h" 5435 #include "base/logging.h" 5436 #include "chrome/browser/spellchecker/spellcheck_factory.h" 5437 #include "chrome/browser/spellchecker/spellcheck_service.h" 5438+#include "components/embedder_support/user_agent_utils.h" 5439 #include "components/favicon/core/favicon_url.h" 5440 #include "components/spellcheck/common/spellcheck_features.h" 5441 #include "content/public/browser/browser_context.h" 5442@@ -27,6 +34,12 @@ 5443 #include "components/spellcheck/browser/spellcheck_platform.h" 5444 #endif 5445 5446+#include "content/browser/web_contents/web_contents_impl.h" 5447+ 5448+#if defined(OS_OHOS) 5449+#include "libcef/browser/javascript/oh_javascript_injector.h" 5450+#endif 5451+ 5452 namespace { 5453 5454 // Associates a CefBrowserHostBase instance with a WebContents. This object will 5455@@ -67,6 +80,7 @@ class WebContentsUserDataAdapter : public base::SupportsUserData::Data { 5456 5457 } // namespace 5458 5459+using namespace NWEB; 5460 // static 5461 CefRefPtr<CefBrowserHostBase> CefBrowserHostBase::GetBrowserForHost( 5462 const content::RenderViewHost* host) { 5463@@ -169,10 +183,12 @@ CefBrowserHostBase::CefBrowserHostBase( 5464 CEF_REQUIRE_UIT(); 5465 DCHECK(!browser_info_->browser().get()); 5466 browser_info_->SetBrowser(this); 5467- 5468 contents_delegate_ = 5469 std::make_unique<CefBrowserContentsDelegate>(browser_info_); 5470 contents_delegate_->AddObserver(this); 5471+ contents_delegate_->InitIconHelper(); 5472+ permission_request_handler_.reset(new AlloyPermissionRequestHandler( 5473+ client_->GetPermissionRequest(), GetWebContents())); 5474 } 5475 5476 void CefBrowserHostBase::InitializeBrowser() { 5477@@ -181,6 +197,10 @@ void CefBrowserHostBase::InitializeBrowser() { 5478 // Associate the WebContents with this browser object. 5479 DCHECK(GetWebContents()); 5480 WebContentsUserDataAdapter::Register(this); 5481+ 5482+#if defined(OS_OHOS) 5483+ new OhJavascriptInjector(GetWebContents(), client_); 5484+#endif 5485 } 5486 5487 void CefBrowserHostBase::DestroyBrowser() { 5488@@ -197,6 +217,16 @@ void CefBrowserHostBase::DestroyBrowser() { 5489 browser_info_->SetBrowser(nullptr); 5490 } 5491 5492+void CefBrowserHostBase::PostTaskToUIThread(CefRefPtr<CefTask> task) { 5493+ if (!CEF_CURRENTLY_ON_UIT()) { 5494+ CEF_POST_TASK( 5495+ CEF_UIT, 5496+ base::BindOnce(&CefBrowserHostBase::PostTaskToUIThread, this, task)); 5497+ return; 5498+ } 5499+ std::move(task)->Execute(); 5500+} 5501+ 5502 CefRefPtr<CefBrowser> CefBrowserHostBase::GetBrowser() { 5503 return this; 5504 } 5505@@ -397,6 +427,110 @@ CefRefPtr<CefNavigationEntry> CefBrowserHostBase::GetVisibleNavigationEntry() { 5506 return new CefNavigationEntryImpl(entry); 5507 } 5508 5509+#if defined(OS_OHOS) 5510+// copy settings string params 5511+#define SETTINGS_STRING_SET(src, target) \ 5512+ cef_string_set(src.str, src.length, &target, true) 5513+ 5514+void CefBrowserHostBase::UpdateBrowserSettings( 5515+ const CefBrowserSettings& browser_settings) { 5516+ /* font family */ 5517+ SETTINGS_STRING_SET(browser_settings.standard_font_family, settings_.standard_font_family); 5518+ SETTINGS_STRING_SET(browser_settings.fixed_font_family, settings_.fixed_font_family); 5519+ SETTINGS_STRING_SET(browser_settings.serif_font_family, settings_.serif_font_family); 5520+ SETTINGS_STRING_SET(browser_settings.sans_serif_font_family, settings_.sans_serif_font_family); 5521+ SETTINGS_STRING_SET(browser_settings.cursive_font_family, settings_.cursive_font_family); 5522+ SETTINGS_STRING_SET(browser_settings.fantasy_font_family, settings_.fantasy_font_family); 5523+ 5524+ /* font size*/ 5525+ settings_.default_font_size = browser_settings.default_font_size; 5526+ settings_.default_fixed_font_size = browser_settings.default_fixed_font_size; 5527+ settings_.minimum_font_size = browser_settings.minimum_font_size; 5528+ settings_.minimum_logical_font_size = 5529+ browser_settings.minimum_logical_font_size; 5530+ SETTINGS_STRING_SET(browser_settings.default_encoding, settings_.default_encoding); 5531+ settings_.javascript = browser_settings.javascript; 5532+ settings_.image_loading = browser_settings.image_loading; 5533+ settings_.local_storage = browser_settings.local_storage; 5534+ settings_.databases = browser_settings.databases; 5535+ settings_.universal_access_from_file_urls = 5536+ browser_settings.universal_access_from_file_urls; 5537+ settings_.file_access_from_file_urls = 5538+ browser_settings.file_access_from_file_urls; 5539+ /* ohos webview add*/ 5540+ settings_.force_dark_mode_enabled = browser_settings.force_dark_mode_enabled; 5541+ settings_.javascript_can_open_windows_automatically = 5542+ browser_settings.javascript_can_open_windows_automatically; 5543+ settings_.loads_images_automatically = 5544+ browser_settings.loads_images_automatically; 5545+ settings_.text_size_percent = browser_settings.text_size_percent; 5546+ settings_.mixed_content_mode = browser_settings.mixed_content_mode; 5547+ settings_.allow_running_insecure_content = 5548+ browser_settings.allow_running_insecure_content; 5549+ settings_.strict_mixed_content_checking = 5550+ browser_settings.strict_mixed_content_checking; 5551+ settings_.allow_mixed_content_upgrades = 5552+ browser_settings.allow_mixed_content_upgrades; 5553+ settings_.geolocation_enabled = browser_settings.geolocation_enabled; 5554+ settings_.supports_double_tap_zoom = 5555+ browser_settings.supports_double_tap_zoom; 5556+ settings_.supports_multi_touch_zoom = 5557+ browser_settings.supports_multi_touch_zoom; 5558+} 5559+ 5560+void CefBrowserHostBase::SetWebPreferences( 5561+ const CefBrowserSettings& browser_settings) { 5562+ UpdateBrowserSettings(browser_settings); 5563+ GetWebContents()->OnWebPreferencesChanged(); 5564+} 5565+ 5566+void CefBrowserHostBase::OnWebPreferencesChanged() { 5567+ GetWebContents()->OnWebPreferencesChanged(); 5568+} 5569+ 5570+void CefBrowserHostBase::PutUserAgent(const CefString& ua) { 5571+ if (!GetWebContents()) { 5572+ return; 5573+ } 5574+ 5575+ GetWebContents()->SetUserAgentOverride( 5576+ blink::UserAgentOverride::UserAgentOnly(ua), true); 5577+ 5578+ content::NavigationController& controller = GetWebContents()->GetController(); 5579+ for (int i = 0; i < controller.GetEntryCount(); ++i) { 5580+ controller.GetEntryAtIndex(i)->SetIsOverridingUserAgent(true); 5581+ } 5582+} 5583+ 5584+CefString CefBrowserHostBase::DefaultUserAgent() { 5585+ return embedder_support::GetUserAgent(); 5586+} 5587+ 5588+void CefBrowserHostBase::RegisterArkJSfunction( 5589+ const CefString& object_name, 5590+ const std::vector<CefString>& method_list) { 5591+ OhJavascriptInjector* javascriptInjector = 5592+ OhJavascriptInjector::FromWebContents(GetWebContents()); 5593+ std::vector<std::string> method_vector; 5594+ for (CefString method : method_list) { 5595+ method_vector.push_back(method.ToString()); 5596+ } 5597+ javascriptInjector->AddInterface(object_name.ToString(), method_vector); 5598+} 5599+ 5600+void CefBrowserHostBase::UnregisterArkJSfunction( 5601+ const CefString& object_name, 5602+ const std::vector<CefString>& method_list) { 5603+ OhJavascriptInjector* javascriptInjector = 5604+ OhJavascriptInjector::FromWebContents(GetWebContents()); 5605+ std::vector<std::string> method_vector; 5606+ for (CefString method : method_list) { 5607+ method_vector.push_back(method.ToString()); 5608+ } 5609+ javascriptInjector->RemoveInterface(object_name.ToString(), method_vector); 5610+} 5611+#endif 5612+ 5613 void CefBrowserHostBase::ReplaceMisspelling(const CefString& word) { 5614 if (!CEF_CURRENTLY_ON_UIT()) { 5615 CEF_POST_TASK( 5616@@ -545,6 +679,17 @@ void CefBrowserHostBase::GoForward() { 5617 } 5618 } 5619 5620+bool CefBrowserHostBase::CanGoBackOrForward(int num_steps) { 5621+ auto wc = GetWebContents(); 5622+ LOG(INFO) << "CanGoBackOrForward"; 5623+ if (wc != nullptr) { 5624+ LOG(INFO) << "CanGoBackOrForward:" 5625+ << wc->GetController().CanGoToOffset(num_steps); 5626+ return wc->GetController().CanGoToOffset(num_steps); 5627+ } 5628+ return false; 5629+} 5630+ 5631 bool CefBrowserHostBase::IsLoading() { 5632 base::AutoLock lock_scope(state_lock_); 5633 return is_loading_; 5634@@ -711,6 +856,131 @@ void CefBrowserHostBase::OnStateChanged(CefBrowserContentsState state_changed) { 5635 void CefBrowserHostBase::OnWebContentsDestroyed( 5636 content::WebContents* web_contents) {} 5637 5638+CefRefPtr<CefBrowserPermissionRequestDelegate> 5639+CefBrowserHostBase::GetPermissionRequestDelegate() { 5640+ return this; 5641+} 5642+ 5643+CefRefPtr<CefGeolocationAcess> CefBrowserHostBase::GetGeolocationPermissions() { 5644+ if (geolocation_permissions_ == nullptr) { 5645+ geolocation_permissions_ = new AlloyGeolocationAccess(); 5646+ } 5647+ return geolocation_permissions_; 5648+} 5649+ 5650+bool CefBrowserHostBase::UseLegacyGeolocationPermissionAPI() { 5651+ return true; 5652+} 5653+ 5654+void CefBrowserHostBase::AskGeolocationPermission( 5655+ const CefString& origin, 5656+ cef_permission_callback_t callback) { 5657+ if (UseLegacyGeolocationPermissionAPI()) { 5658+ PopupGeolocationPrompt(origin, std::move(callback)); 5659+ return; 5660+ } 5661+ permission_request_handler_->SendRequest(new AlloyAccessRequest( 5662+ origin, AlloyAccessRequest::Resources::GEOLOCATION, std::move(callback))); 5663+} 5664+ 5665+void CefBrowserHostBase::AbortAskGeolocationPermission( 5666+ const CefString& origin) { 5667+ RemoveGeolocationPrompt(origin); 5668+ return; 5669+} 5670+ 5671+void CefBrowserHostBase::PopupGeolocationPrompt( 5672+ std::string origin, 5673+ cef_permission_callback_t callback) { 5674+ DCHECK_CURRENTLY_ON(content::BrowserThread::UI); 5675+ bool show_prompt = unhandled_geolocation_prompts_.empty(); 5676+ unhandled_geolocation_prompts_.emplace_back(origin, std::move(callback)); 5677+ if (show_prompt) { 5678+ OnGeolocationShow(origin); 5679+ } 5680+} 5681+ 5682+void CefBrowserHostBase::OnGeolocationShow(std::string origin) { 5683+ // Reject if geoloaction is disabled, or the origin has a retained deny 5684+ if (!settings_.geolocation_enabled) { 5685+ NotifyGeolocationPermission(false, origin); 5686+ return; 5687+ } 5688+ 5689+ auto permissions = GetGeolocationPermissions(); 5690+ if (permissions->ContainOrigin(origin)) { 5691+ NotifyGeolocationPermission(permissions->IsOriginAccessEnabled(origin), 5692+ origin); 5693+ return; 5694+ } 5695+ 5696+ GetClient()->GetPermissionRequest()->OnGeolocationShow(origin); 5697+} 5698+ 5699+void CefBrowserHostBase::NotifyGeolocationPermission(bool value, 5700+ const CefString& origin) { 5701+ DCHECK_CURRENTLY_ON(content::BrowserThread::UI); 5702+ if (unhandled_geolocation_prompts_.empty()) 5703+ return; 5704+ if (origin == unhandled_geolocation_prompts_.front().first) { 5705+ std::move(unhandled_geolocation_prompts_.front().second).Run(value); 5706+ unhandled_geolocation_prompts_.pop_front(); 5707+ if (!unhandled_geolocation_prompts_.empty()) { 5708+ OnGeolocationShow(unhandled_geolocation_prompts_.front().first); 5709+ } 5710+ } 5711+} 5712+ 5713+void CefBrowserHostBase::RemoveGeolocationPrompt(std::string origin) { 5714+ DCHECK_CURRENTLY_ON(content::BrowserThread::UI); 5715+ bool removed_current_outstanding_callback = false; 5716+ std::list<OriginCallback>::iterator it = 5717+ unhandled_geolocation_prompts_.begin(); 5718+ while (it != unhandled_geolocation_prompts_.end()) { 5719+ if ((*it).first == origin) { 5720+ if (it == unhandled_geolocation_prompts_.begin()) { 5721+ removed_current_outstanding_callback = true; 5722+ } 5723+ it = unhandled_geolocation_prompts_.erase(it); 5724+ } else { 5725+ ++it; 5726+ } 5727+ } 5728+ 5729+ if (removed_current_outstanding_callback) { 5730+ GetClient()->GetPermissionRequest()->OnGeolocationHide(); 5731+ if (!unhandled_geolocation_prompts_.empty()) { 5732+ OnGeolocationShow(unhandled_geolocation_prompts_.front().first); 5733+ } 5734+ } 5735+} 5736+ 5737+void CefBrowserHostBase::AskProtectedMediaIdentifierPermission( 5738+ const CefString& origin, 5739+ cef_permission_callback_t callback) { 5740+ permission_request_handler_->SendRequest(new AlloyAccessRequest( 5741+ origin, AlloyAccessRequest::Resources::PROTECTED_MEDIA_ID, 5742+ std::move(callback))); 5743+} 5744+ 5745+void CefBrowserHostBase::AbortAskProtectedMediaIdentifierPermission( 5746+ const CefString& origin) { 5747+ permission_request_handler_->CancelRequest( 5748+ origin, AlloyAccessRequest::Resources::PROTECTED_MEDIA_ID); 5749+} 5750+ 5751+void CefBrowserHostBase::AskMIDISysexPermission( 5752+ const CefString& origin, 5753+ cef_permission_callback_t callback) { 5754+ permission_request_handler_->SendRequest(new AlloyAccessRequest( 5755+ origin, AlloyAccessRequest::Resources::MIDI_SYSEX, std::move(callback))); 5756+} 5757+ 5758+void CefBrowserHostBase::AbortAskMIDISysexPermission(const CefString& origin) { 5759+ permission_request_handler_->CancelRequest( 5760+ origin, AlloyAccessRequest::Resources::MIDI_SYSEX); 5761+} 5762+ 5763 CefRefPtr<CefFrame> CefBrowserHostBase::GetFrameForHost( 5764 const content::RenderFrameHost* host) { 5765 CEF_REQUIRE_UIT(); 5766@@ -781,6 +1051,11 @@ void CefBrowserHostBase::OnDidFinishLoad(CefRefPtr<CefFrameHostImpl> frame, 5767 contents_delegate_->OnLoadEnd(frame, validated_url, http_status_code); 5768 } 5769 5770+void CefBrowserHostBase::OnUpdateHitData(const int type, const CefString extra_data) { 5771+ cef_hit_data_.type = type; 5772+ cef_hit_data_.extra_data = extra_data; 5773+} 5774+ 5775 void CefBrowserHostBase::ViewText(const std::string& text) { 5776 if (!CEF_CURRENTLY_ON_UIT()) { 5777 CEF_POST_TASK(CEF_UIT, 5778@@ -850,7 +1125,7 @@ content::BrowserContext* CefBrowserHostBase::GetBrowserContext() const { 5779 return nullptr; 5780 } 5781 5782-#if defined(TOOLKIT_VIEWS) 5783+#if defined(TOOLKIT_VIEWS) || defined(OS_OHOS) 5784 views::Widget* CefBrowserHostBase::GetWindowWidget() const { 5785 CEF_REQUIRE_UIT(); 5786 if (!platform_delegate_) 5787@@ -892,3 +1167,126 @@ void CefBrowserHostBase::InitializeDevToolsRegistrationOnUIThread( 5788 return; 5789 devtools_manager_->InitializeRegistrationOnUIThread(registration); 5790 } 5791+ 5792+CefString CefBrowserHostBase::Title() { 5793+ auto web_contents = GetWebContents(); 5794+ if (web_contents) { 5795+ return web_contents->GetTitle(); 5796+ } 5797+ return ""; 5798+} 5799+ 5800+void CefBrowserHostBase::GetHitData(int& type, CefString& extra_data) { 5801+ type = cef_hit_data_.type; 5802+ extra_data = cef_hit_data_.extra_data; 5803+} 5804+ 5805+float CefBrowserHostBase::Scale() { 5806+ auto web_contents = GetWebContents(); 5807+ if (web_contents) { 5808+ return static_cast<content::WebContentsImpl*>(web_contents) 5809+ ->page_scale_factor(); 5810+ } 5811+ return 1.0; 5812+} 5813+ 5814+bool CefBrowserHostBase::IsBase64Encoded(std::string encoding) { 5815+ return "base64" == encoding; 5816+} 5817+ 5818+std::string CefBrowserHostBase::GetDataURI(const std::string& data) { 5819+ return CefURIEncode(CefBase64Encode(data.data(), data.size()), false) 5820+ .ToString(); 5821+} 5822+ 5823+int CefBrowserHostBase::PageLoadProgress() { 5824+ auto web_contents = GetWebContents(); 5825+ if (web_contents) { 5826+ if (!web_contents->IsLoading()) { 5827+ return 100; 5828+ } 5829+ return round(100 * web_contents->GetLoadProgress()); 5830+ } 5831+ return 0; 5832+} 5833+ 5834+void CefBrowserHostBase::LoadWithDataAndBaseUrl(const CefString& baseUrl, 5835+ const CefString& data, 5836+ const CefString& mimeType, 5837+ const CefString& encoding, 5838+ const CefString& historyUrl) { 5839+ std::string dataBase = data.empty() ? "" : data; 5840+ std::string mimeTypeBase = mimeType.empty() ? "text/html" : mimeType; 5841+ std::string url = baseUrl.empty() ? "about:blank" : baseUrl; 5842+ std::string historyUrlBase = historyUrl.empty() ? "about:blank" : historyUrl; 5843+ 5844+ std::string buildData = "data:"; 5845+ buildData.append(mimeTypeBase); 5846+ if (!encoding.empty()) { 5847+ buildData.append(";charset="); 5848+ buildData.append(encoding); 5849+ } 5850+ buildData.append(";base64"); 5851+ buildData.append(","); 5852+ dataBase = GetDataURI(dataBase); 5853+ buildData.append(dataBase); 5854+ GURL data_url = GURL(buildData); 5855+ content::NavigationController::LoadURLParams loadUrlParams(data_url); 5856+ 5857+ if (!(url.find("data:") == 0)) { 5858+ loadUrlParams.virtual_url_for_data_url = GURL(historyUrlBase); 5859+ loadUrlParams.base_url_for_data_url = GURL(url); 5860+ } 5861+ 5862+ auto web_contents = GetWebContents(); 5863+ if (web_contents) { 5864+ web_contents->GetController().LoadURLWithParams(loadUrlParams); 5865+ } 5866+} 5867+ 5868+void CefBrowserHostBase::LoadWithData(const CefString& data, 5869+ const CefString& mimeType, 5870+ const CefString& encoding) { 5871+ std::string dataBase = data.empty() ? "" : data; 5872+ std::string mimeTypeBase = mimeType.empty() ? "text/html" : mimeType; 5873+ 5874+ std::string buildData = "data:"; 5875+ buildData.append(mimeTypeBase); 5876+ if (encoding.ToString() == "base64") { 5877+ buildData.append(";base64"); 5878+ } 5879+ buildData.append(","); 5880+ buildData.append(dataBase); 5881+ GURL data_url = GURL(buildData); 5882+ content::NavigationController::LoadURLParams loadUrlParams(data_url); 5883+ 5884+ auto web_contents = GetWebContents(); 5885+ if (web_contents) { 5886+ LOG(INFO) << "load data"; 5887+ web_contents->GetController().LoadURLWithParams(loadUrlParams); 5888+ } 5889+} 5890+ 5891+void CefBrowserHostBase::ExecuteJavaScript( 5892+ const CefString& code, 5893+ CefRefPtr<CefJavaScriptResultCallback> callback) { 5894+ auto web_contents = GetWebContents(); 5895+ // enable inject javaScript 5896+ web_contents->GetMainFrame()->AllowInjectingJavaScript(); 5897+ if (web_contents) { 5898+ LOG(INFO) << "ExecuteJavaScript with callback"; 5899+ web_contents->GetMainFrame()->ExecuteJavaScript( 5900+ code.ToString16(), 5901+ base::BindOnce( 5902+ [](CefRefPtr<CefJavaScriptResultCallback> callback, 5903+ base::Value result) { 5904+ LOG(INFO) << "javascript result callback enter"; 5905+ std::string json; 5906+ base::JSONWriter::Write(result, &json); 5907+ if (callback != nullptr) { 5908+ callback->OnJavaScriptExeResult(json); 5909+ } 5910+ }, 5911+ callback)); 5912+ } 5913+} 5914\ No newline at end of file 5915diff --git a/cef/libcef/browser/browser_host_base.h b/cef/libcef/browser/browser_host_base.h 5916index d30f0b43d0..dc9f9be31f 100644 5917--- a/cef/libcef/browser/browser_host_base.h 5918+++ b/cef/libcef/browser/browser_host_base.h 5919@@ -1,6 +1,7 @@ 5920-// Copyright 2020 The Chromium Embedded Framework Authors. All rights reserved. 5921-// Use of this source code is governed by a BSD-style license that can be 5922-// found in the LICENSE file. 5923+// Copyright (c) 2022 Huawei Device Co., Ltd. 5924+// Copyright (c) 2012 The Chromium Embedded Framework Authors. All rights 5925+// reserved. Use of this source code is governed by a BSD-style license that can 5926+// be found in the LICENSE file. 5927 5928 #ifndef CEF_LIBCEF_BROWSER_BROWSER_HOST_BASE_H_ 5929 #define CEF_LIBCEF_BROWSER_BROWSER_HOST_BASE_H_ 5930@@ -8,12 +9,15 @@ 5931 5932 #include "include/cef_browser.h" 5933 #include "include/cef_client.h" 5934+#include "include/cef_permission_request.h" 5935+#include "include/cef_task.h" 5936 #include "include/views/cef_browser_view.h" 5937 #include "libcef/browser/browser_contents_delegate.h" 5938 #include "libcef/browser/browser_info.h" 5939 #include "libcef/browser/browser_platform_delegate.h" 5940 #include "libcef/browser/devtools/devtools_manager.h" 5941 #include "libcef/browser/frame_host_impl.h" 5942+#include "libcef/browser/permission/alloy_permission_request_handler.h" 5943 #include "libcef/browser/request_context_impl.h" 5944 5945 #include "base/observer_list.h" 5946@@ -24,6 +28,8 @@ namespace extensions { 5947 class Extension; 5948 } 5949 5950+class AlloyPermissionRequestHandler; 5951+ 5952 // Parameters that are passed to the runtime-specific Create methods. 5953 struct CefBrowserCreateParams { 5954 CefBrowserCreateParams() {} 5955@@ -90,12 +96,18 @@ struct CefBrowserCreateParams { 5956 extensions::mojom::ViewType::kInvalid; 5957 }; 5958 5959+struct CefHitData { 5960+ int type; 5961+ CefString extra_data; 5962+}; 5963+ 5964 // Base class for CefBrowserHost implementations. Includes functionality that is 5965 // shared by the alloy and chrome runtimes. All methods are thread-safe unless 5966 // otherwise indicated. 5967 class CefBrowserHostBase : public CefBrowserHost, 5968 public CefBrowser, 5969- public CefBrowserContentsDelegate::Observer { 5970+ public CefBrowserContentsDelegate::Observer, 5971+ public CefBrowserPermissionRequestDelegate { 5972 public: 5973 // Interface to implement for observers that wish to be informed of changes 5974 // to the CefBrowserHostBase. All methods will be called on the UI thread. 5975@@ -150,6 +162,8 @@ class CefBrowserHostBase : public CefBrowserHost, 5976 // was not properly shut down. 5977 virtual void DestroyBrowser(); 5978 5979+ void PostTaskToUIThread(CefRefPtr<CefTask> task) override; 5980+ 5981 // CefBrowserHost methods: 5982 CefRefPtr<CefBrowser> GetBrowser() override; 5983 CefRefPtr<CefClient> GetClient() override; 5984@@ -182,12 +196,29 @@ class CefBrowserHostBase : public CefBrowserHost, 5985 bool current_only) override; 5986 CefRefPtr<CefNavigationEntry> GetVisibleNavigationEntry() override; 5987 5988+#if defined(OS_OHOS) 5989+ /* ohos webview begin */ 5990+ void SetWebPreferences(const CefBrowserSettings& browser_settings) override; 5991+ void PutUserAgent(const CefString& ua) override; 5992+ CefString DefaultUserAgent() override; 5993+ void UpdateBrowserSettings(const CefBrowserSettings& browser_settings); 5994+ void RegisterArkJSfunction( 5995+ const CefString& object_name, 5996+ const std::vector<CefString>& method_list) override; 5997+ void UnregisterArkJSfunction( 5998+ const CefString& object_name, 5999+ const std::vector<CefString>& method_list) override; 6000+ void OnWebPreferencesChanged(); 6001+ /* ohos webview end */ 6002+#endif 6003+ 6004 // CefBrowser methods: 6005 CefRefPtr<CefBrowserHost> GetHost() override; 6006 bool CanGoBack() override; 6007 void GoBack() override; 6008 bool CanGoForward() override; 6009 void GoForward() override; 6010+ bool CanGoBackOrForward(int num_steps) override; 6011 bool IsLoading() override; 6012 void Reload() override; 6013 void ReloadIgnoreCache() override; 6014@@ -203,11 +234,54 @@ class CefBrowserHostBase : public CefBrowserHost, 6015 size_t GetFrameCount() override; 6016 void GetFrameIdentifiers(std::vector<int64>& identifiers) override; 6017 void GetFrameNames(std::vector<CefString>& names) override; 6018- 6019+ CefRefPtr<CefBrowserPermissionRequestDelegate> GetPermissionRequestDelegate() 6020+ override; 6021+ CefRefPtr<CefGeolocationAcess> GetGeolocationPermissions() override; 6022+ CefString Title() override; 6023+ void GetHitData(int& type, CefString& extra_data) override; 6024+ int PageLoadProgress() override; 6025+ float Scale() override; 6026+ void LoadWithDataAndBaseUrl(const CefString& baseUrl, 6027+ const CefString& data, 6028+ const CefString& mimeType, 6029+ const CefString& encoding, 6030+ const CefString& historyUrl) override; 6031+ 6032+ void LoadWithData(const CefString& data, 6033+ const CefString& mimeType, 6034+ const CefString& encoding) override; 6035+ 6036+ void ExecuteJavaScript( 6037+ const CefString& code, 6038+ CefRefPtr<CefJavaScriptResultCallback> callback) override; 6039 // CefBrowserContentsDelegate::Observer methods: 6040 void OnStateChanged(CefBrowserContentsState state_changed) override; 6041 void OnWebContentsDestroyed(content::WebContents* web_contents) override; 6042 6043+ AlloyPermissionRequestHandler* GetPermissionRequestHandler() { 6044+ return permission_request_handler_.get(); 6045+ } 6046+ 6047+ // CefBrowserPermissionRequestDelegate methods: 6048+ void AskGeolocationPermission(const CefString& origin, 6049+ cef_permission_callback_t callback) override; 6050+ void AbortAskGeolocationPermission(const CefString& origin) override; 6051+ void NotifyGeolocationPermission(bool value, 6052+ const CefString& origin) override; 6053+ void AskProtectedMediaIdentifierPermission( 6054+ const CefString& origin, 6055+ cef_permission_callback_t callback) override; 6056+ void AbortAskProtectedMediaIdentifierPermission(const CefString& origin) override; 6057+ void AskMIDISysexPermission(const CefString& origin, 6058+ cef_permission_callback_t callback) override; 6059+ void AbortAskMIDISysexPermission(const CefString& origin) override; 6060+ 6061+ // Geolocation API support 6062+ void PopupGeolocationPrompt(std::string origin, 6063+ cef_permission_callback_t callback); 6064+ void RemoveGeolocationPrompt(std::string origin); 6065+ void OnGeolocationShow(std::string origin); 6066+ 6067 // Returns the frame associated with the specified RenderFrameHost. 6068 CefRefPtr<CefFrame> GetFrameForHost(const content::RenderFrameHost* host); 6069 6070@@ -225,6 +299,7 @@ class CefBrowserHostBase : public CefBrowserHost, 6071 void OnDidFinishLoad(CefRefPtr<CefFrameHostImpl> frame, 6072 const GURL& validated_url, 6073 int http_status_code); 6074+ void OnUpdateHitData(const int type, const CefString extra_data); 6075 virtual void OnSetFocus(cef_focus_source_t source) = 0; 6076 void ViewText(const std::string& text); 6077 6078@@ -238,6 +313,9 @@ class CefBrowserHostBase : public CefBrowserHost, 6079 void OnBeforeClose(); 6080 void OnBrowserDestroyed(); 6081 6082+ bool IsBase64Encoded(std::string encoding); 6083+ std::string GetDataURI(const std::string& data); 6084+ 6085 // Thread-safe accessors. 6086 const CefBrowserSettings& settings() const { return settings_; } 6087 CefRefPtr<CefClient> client() const { return client_; } 6088@@ -309,6 +387,18 @@ class CefBrowserHostBase : public CefBrowserHost, 6089 std::unique_ptr<CefDevToolsManager> devtools_manager_; 6090 6091 private: 6092+ bool UseLegacyGeolocationPermissionAPI(); 6093+ // GURL is supplied by the content layer as requesting frame. 6094+ // Callback is supplied by the content layer, and is invoked with the result 6095+ // from the permission prompt. 6096+ typedef std::pair<std::string, cef_permission_callback_t> OriginCallback; 6097+ // The first element in the list is always the currently pending request. 6098+ std::list<OriginCallback> unhandled_geolocation_prompts_; 6099+ 6100+ CefHitData cef_hit_data_; 6101+ CefRefPtr<CefGeolocationAcess> geolocation_permissions_; 6102+ std::unique_ptr<AlloyPermissionRequestHandler> permission_request_handler_; 6103+ 6104 IMPLEMENT_REFCOUNTING(CefBrowserHostBase); 6105 DISALLOW_COPY_AND_ASSIGN(CefBrowserHostBase); 6106 }; 6107diff --git a/cef/libcef/browser/browser_host_create.cc b/cef/libcef/browser/browser_host_create.cc 6108index 10a3a4e256..21742d9599 100644 6109--- a/cef/libcef/browser/browser_host_create.cc 6110+++ b/cef/libcef/browser/browser_host_create.cc 6111@@ -82,20 +82,7 @@ bool CefBrowserHost::CreateBrowser( 6112 6113 auto helper = std::make_unique<CreateBrowserHelper>( 6114 windowInfo, client, url, settings, extra_info, request_context); 6115- 6116- auto request_context_impl = 6117- static_cast<CefRequestContextImpl*>(request_context.get()); 6118- 6119- // Wait for the browser context to be initialized before creating the browser. 6120- request_context_impl->ExecuteWhenBrowserContextInitialized(base::BindOnce( 6121- [](std::unique_ptr<CreateBrowserHelper> helper) { 6122- // Always execute asynchronously to avoid potential issues if we're 6123- // being called synchronously during app initialization. 6124- CEF_POST_TASK(CEF_UIT, base::BindOnce(&CreateBrowserHelper::Run, 6125- std::move(helper))); 6126- }, 6127- std::move(helper))); 6128- 6129+ helper->Run(); 6130 return true; 6131 } 6132 6133diff --git a/cef/libcef/browser/chrome/chrome_browser_host_impl.cc b/cef/libcef/browser/chrome/chrome_browser_host_impl.cc 6134index 76b5da71d9..5c8bd8fc17 100644 6135--- a/cef/libcef/browser/chrome/chrome_browser_host_impl.cc 6136+++ b/cef/libcef/browser/chrome/chrome_browser_host_impl.cc 6137@@ -593,3 +593,5 @@ int ChromeBrowserHostImpl::GetCurrentTabIndex() const { 6138 } 6139 return TabStripModel::kNoTab; 6140 } 6141+ 6142+void ChromeBrowserHostImpl::SetBackgroundColor(int color) {} 6143\ No newline at end of file 6144diff --git a/cef/libcef/browser/chrome/chrome_browser_host_impl.h b/cef/libcef/browser/chrome/chrome_browser_host_impl.h 6145index c15352b307..c73499622c 100644 6146--- a/cef/libcef/browser/chrome/chrome_browser_host_impl.h 6147+++ b/cef/libcef/browser/chrome/chrome_browser_host_impl.h 6148@@ -129,6 +129,9 @@ class ChromeBrowserHostImpl : public CefBrowserHostBase { 6149 CefRefPtr<CefExtension> GetExtension() override; 6150 bool IsBackgroundHost() override; 6151 6152+ /* ohos webview begin */ 6153+ void SetBackgroundColor(int color) override; 6154+ /* ohos webview end */ 6155 protected: 6156 bool Navigate(const content::OpenURLParams& params) override; 6157 6158diff --git a/cef/libcef/browser/context.cc b/cef/libcef/browser/context.cc 6159index 687e4b8df2..39b20a59ae 100644 6160--- a/cef/libcef/browser/context.cc 6161+++ b/cef/libcef/browser/context.cc 6162@@ -406,6 +406,7 @@ SkColor CefContext::GetBackgroundColor( 6163 !GetColor(browser_settings->background_color, is_windowless, &sk_color)) { 6164 GetColor(settings_.background_color, is_windowless, &sk_color); 6165 } 6166+ 6167 return sk_color; 6168 } 6169 6170diff --git a/cef/libcef/browser/frame_host_impl.cc b/cef/libcef/browser/frame_host_impl.cc 6171index 1daae18d75..4234984399 100644 6172--- a/cef/libcef/browser/frame_host_impl.cc 6173+++ b/cef/libcef/browser/frame_host_impl.cc 6174@@ -1,3 +1,4 @@ 6175+// Copyright (c) 2022 Huawei Device Co., Ltd. 6176 // Copyright (c) 2012 The Chromium Embedded Framework Authors. All rights 6177 // reserved. Use of this source code is governed by a BSD-style license that can 6178 // be found in the LICENSE file. 6179@@ -169,6 +170,10 @@ void CefFrameHostImpl::LoadURL(const CefString& url) { 6180 std::string()); 6181 } 6182 6183+void CefFrameHostImpl::LoadHeaderUrl(const CefString& url, const CefString& additionalHttpHeaders) { 6184+ LoadURLWithExtras(url, content::Referrer(), kPageTransitionExplicit, additionalHttpHeaders); 6185+} 6186+ 6187 void CefFrameHostImpl::ExecuteJavaScript(const CefString& jsCode, 6188 const CefString& scriptUrl, 6189 int startLine) { 6190@@ -303,6 +308,15 @@ void CefFrameHostImpl::RefreshAttributes() { 6191 parent_frame_id_ = MakeFrameId(render_frame_host_->GetParent()); 6192 } 6193 6194+void CefFrameHostImpl::SendTouchEvent(const CefTouchEvent& event) { 6195+ Cef_TouchEvent_Params touchEvent; 6196+ touchEvent.x = event.x; 6197+ touchEvent.y = event.y; 6198+ touchEvent.width = event.radius_x; 6199+ touchEvent.height = event.radius_y; 6200+ Send(new CefMsg_TouchEvent(MSG_ROUTING_NONE, touchEvent)); 6201+} 6202+ 6203 void CefFrameHostImpl::NotifyMoveOrResizeStarted() { 6204 Send(new CefMsg_MoveOrResizeStarted(MSG_ROUTING_NONE)); 6205 } 6206@@ -486,6 +500,7 @@ bool CefFrameHostImpl::OnMessageReceived(const IPC::Message& message) { 6207 IPC_BEGIN_MESSAGE_MAP(CefFrameHostImpl, message) 6208 IPC_MESSAGE_HANDLER(CefHostMsg_FrameAttached, OnAttached) 6209 IPC_MESSAGE_HANDLER(CefHostMsg_DidFinishLoad, OnDidFinishLoad) 6210+ IPC_MESSAGE_HANDLER(CefHostMsg_HitData, OnUpdateHitData) 6211 IPC_MESSAGE_HANDLER(CefHostMsg_UpdateDraggableRegions, 6212 OnUpdateDraggableRegions) 6213 IPC_MESSAGE_HANDLER(CefHostMsg_Request, OnRequest) 6214@@ -588,6 +603,12 @@ void CefFrameHostImpl::OnDidFinishLoad(const GURL& validated_url, 6215 browser->OnDidFinishLoad(this, validated_url, http_status_code); 6216 } 6217 6218+void CefFrameHostImpl::OnUpdateHitData(const Cef_HitData_Params param) { 6219+ auto browser = GetBrowserHostBase(); 6220+ if (browser) 6221+ browser->OnUpdateHitData(param.type, param.extra_data_for_type); 6222+} 6223+ 6224 void CefFrameHostImpl::OnUpdateDraggableRegions( 6225 const std::vector<Cef_DraggableRegion_Params>& regions) { 6226 auto browser = GetBrowserHostBase(); 6227@@ -657,6 +678,11 @@ void CefFrameHostImpl::OnResponse(const Cef_Response_Params& params) { 6228 Send(new CefMsg_ResponseAck(MSG_ROUTING_NONE, params.request_id)); 6229 } 6230 6231+void CefFrameHostImpl::PutZoomingForTextFactor(float factor) { 6232+ CEF_REQUIRE_UIT(); 6233+ Send(new CefMsg_PutZoomingForTextFactor(MSG_ROUTING_NONE, factor)); 6234+} 6235+ 6236 void CefFrameHostImpl::OnResponseAck(int request_id) { 6237 response_manager_->RunAckHandler(request_id); 6238 } 6239@@ -692,4 +718,4 @@ void CefExecuteJavaScriptWithUserGestureForTests(CefRefPtr<CefFrame> frame, 6240 CefFrameHostImpl* impl = static_cast<CefFrameHostImpl*>(frame.get()); 6241 if (impl) 6242 impl->ExecuteJavaScriptWithUserGestureForTests(javascript); 6243-} 6244+} 6245\ No newline at end of file 6246diff --git a/cef/libcef/browser/frame_host_impl.h b/cef/libcef/browser/frame_host_impl.h 6247index 4d5167b403..df9fdbe0c4 100644 6248--- a/cef/libcef/browser/frame_host_impl.h 6249+++ b/cef/libcef/browser/frame_host_impl.h 6250@@ -1,3 +1,4 @@ 6251+// Copyright (c) 2022 Huawei Device Co., Ltd. 6252 // Copyright (c) 2012 The Chromium Embedded Framework Authors. All rights 6253 // reserved. Use of this source code is governed by a BSD-style license that can 6254 // be found in the LICENSE file. 6255@@ -28,6 +29,8 @@ class Message; 6256 class GURL; 6257 6258 struct Cef_DraggableRegion_Params; 6259+struct Cef_TouchEvent_Params; 6260+struct Cef_HitData_Params; 6261 struct Cef_Request_Params; 6262 struct Cef_Response_Params; 6263 class CefBrowserInfo; 6264@@ -83,10 +86,14 @@ class CefFrameHostImpl : public CefFrame { 6265 CefRefPtr<CefURLRequestClient> client) override; 6266 void SendProcessMessage(CefProcessId target_process, 6267 CefRefPtr<CefProcessMessage> message) override; 6268+ void LoadHeaderUrl(const CefString& url, const CefString& additionalHttpHeaders) override; 6269 6270 void SetFocused(bool focused); 6271 void RefreshAttributes(); 6272 6273+ // Send the touch point to the rederer to get hitdata. 6274+ void SendTouchEvent(const CefTouchEvent& event); 6275+ 6276 // Notification that a move or resize of the renderer's containing window has 6277 // started. Used on Windows and Linux with the Alloy runtime. 6278 void NotifyMoveOrResizeStarted(); 6279@@ -115,6 +122,10 @@ class CefFrameHostImpl : public CefFrame { 6280 void SendJavaScript(const std::string& jsCode, 6281 const std::string& scriptUrl, 6282 int startLine); 6283+ 6284+ // Sets the zoom factor for text only. Used in layout modes other than 6285+ // Text Autosizing. 6286+ void PutZoomingForTextFactor(float factor); 6287 6288 // Called from CefBrowserHostBase::DidStopLoading. 6289 void MaybeSendDidStopLoading(); 6290@@ -154,6 +165,7 @@ class CefFrameHostImpl : public CefFrame { 6291 // OnMessageReceived message handlers. 6292 void OnAttached(); 6293 void OnDidFinishLoad(const GURL& validated_url, int http_status_code); 6294+ void OnUpdateHitData(const Cef_HitData_Params param); 6295 void OnUpdateDraggableRegions( 6296 const std::vector<Cef_DraggableRegion_Params>& regions); 6297 void OnRequest(const Cef_Request_Params& params); 6298diff --git a/cef/libcef/browser/icon_helper.cc b/cef/libcef/browser/icon_helper.cc 6299new file mode 100644 6300index 0000000000..beb0a12469 6301--- /dev/null 6302+++ b/cef/libcef/browser/icon_helper.cc 6303@@ -0,0 +1,150 @@ 6304+// Copyright (c) 2022 Huawei Device Co., Ltd. 6305+// Copyright 2018 The Chromium Authors. All rights reserved. 6306+// Use of this source code is governed by a BSD-style license that can be 6307+// found in the LICENSE file. 6308+ 6309+#include "libcef/browser/icon_helper.h" 6310+ 6311+#include "include/cef_display_handler.h" 6312+ 6313+#include "base/logging.h" 6314+#include "components/favicon_base/select_favicon_frames.h" 6315+#include "content/public/browser/web_contents.h" 6316+ 6317+namespace { 6318+ 6319+constexpr int LARGEST_ICON_SIZE = 192; 6320+ 6321+cef_color_type_t TransformSkColorType(SkColorType color_type) { 6322+ switch (color_type) { 6323+ case kRGBA_8888_SkColorType: 6324+ return CEF_COLOR_TYPE_RGBA_8888; 6325+ case kBGRA_8888_SkColorType: 6326+ return CEF_COLOR_TYPE_BGRA_8888; 6327+ default: 6328+ return CEF_COLOR_TYPE_UNKNOWN; 6329+ } 6330+} 6331+ 6332+cef_alpha_type_t TransformSkAlphaType(SkAlphaType alpha_type) { 6333+ switch (alpha_type) { 6334+ case kOpaque_SkAlphaType: 6335+ return CEF_ALPHA_TYPE_OPAQUE; 6336+ case kPremul_SkAlphaType: 6337+ return CEF_ALPHA_TYPE_PREMULTIPLIED; 6338+ case kUnpremul_SkAlphaType: 6339+ return CEF_ALPHA_TYPE_POSTMULTIPLIED; 6340+ default: 6341+ return CEF_ALPHA_TYPE_UNKNOWN; 6342+ } 6343+} 6344+ 6345+} // namespace 6346+ 6347+void IconHelper::SetDisplayHandler(const CefRefPtr<CefDisplayHandler>& handler) { 6348+ handler_ = handler; 6349+} 6350+ 6351+void IconHelper::SetBrowser(const CefRefPtr<CefBrowser>& browser) { 6352+ browser_ = browser; 6353+} 6354+ 6355+void IconHelper::SetWebContents(content::WebContents* new_contents) { 6356+ web_contents_ = new_contents; 6357+} 6358+ 6359+void IconHelper::OnUpdateFaviconURL( 6360+ content::RenderFrameHost* render_frame_host, 6361+ const std::vector<blink::mojom::FaviconURLPtr>& candidates) { 6362+ if (!handler_ || !browser_) { 6363+ LOG(ERROR) << "Initialized value is invalid"; 6364+ return; 6365+ } 6366+ for (const auto& candidate : candidates) { 6367+ if (!candidate->icon_url.is_valid()) 6368+ continue; 6369+ switch (candidate->icon_type) { 6370+ case blink::mojom::FaviconIconType::kFavicon: 6371+ DownloadFavicon(candidate); 6372+ break; 6373+ case blink::mojom::FaviconIconType::kTouchIcon: 6374+ handler_->OnReceivedTouchIconUrl(browser_, CefString(candidate->icon_url.spec()), false); 6375+ break; 6376+ case blink::mojom::FaviconIconType::kTouchPrecomposedIcon: 6377+ handler_->OnReceivedTouchIconUrl(browser_, CefString(candidate->icon_url.spec()), true); 6378+ break; 6379+ case blink::mojom::FaviconIconType::kInvalid: 6380+ LOG(INFO) << "An invalid icon type."; 6381+ break; 6382+ default: 6383+ NOTREACHED(); 6384+ break; 6385+ } 6386+ } 6387+} 6388+ 6389+void IconHelper::DownloadFavicon(const blink::mojom::FaviconURLPtr& candidate) { 6390+ if (!web_contents_) { 6391+ LOG(ERROR) << "WebContents is invalid"; 6392+ return; 6393+ } 6394+ web_contents_->DownloadImage( 6395+ candidate->icon_url, 6396+ true, // Is a favicon 6397+ 0, // No preferred size 6398+ LARGEST_ICON_SIZE, // Max bitmap size 192 6399+ false, // Normal cache policy 6400+ base::BindOnce(&IconHelper::DownloadFaviconCallback, this)); 6401+} 6402+ 6403+void IconHelper::DownloadFaviconCallback( 6404+ int id, 6405+ int http_status_code, 6406+ const GURL& image_url, 6407+ const std::vector<SkBitmap>& bitmaps, 6408+ const std::vector<gfx::Size>& original_bitmap_sizes) { 6409+ if (http_status_code == 404) { 6410+ return; 6411+ } 6412+ 6413+ if (bitmaps.size() == 0) { 6414+ return; 6415+ } 6416+ std::vector<size_t> best_indices; 6417+ SelectFaviconFrameIndices(original_bitmap_sizes, 6418+ std::vector<int>(1U, LARGEST_ICON_SIZE), 6419+ &best_indices, nullptr); 6420+ const auto& bitmap = bitmaps[best_indices.size() == 0 ? 0 : best_indices.front()]; 6421+ if (bitmap.drawsNothing()) { 6422+ return; 6423+ } 6424+ bitmap_ = bitmap; 6425+ auto ret = bitmap_.writePixels(bitmap.pixmap()); 6426+ if (!ret) { 6427+ LOG(ERROR) << "Copy pixels failed."; 6428+ return; 6429+ } 6430+ void* pixels = bitmap_.getPixels(); 6431+ size_t byte_size = bitmap_.computeByteSize(); 6432+ if (!pixels || byte_size == 0) { 6433+ LOG(ERROR) << "Pixels value is invalid."; 6434+ return; 6435+ } 6436+ auto color_type = TransformSkColorType(bitmap_.colorType()); 6437+ auto alpha_type = TransformSkAlphaType(bitmap_.alphaType()); 6438+ size_t pixel_width = bitmap_.width(); 6439+ size_t pixel_height = bitmap_.height(); 6440+ OnReceivedIcon(pixels, pixel_width, pixel_height, color_type, alpha_type); 6441+} 6442+ 6443+void IconHelper::OnReceivedIcon(const void* data, 6444+ size_t width, 6445+ size_t height, 6446+ cef_color_type_t color_type, 6447+ cef_alpha_type_t alpha_type) { 6448+ if (!handler_ || !browser_) { 6449+ LOG(ERROR) << "Initialized value is invalid"; 6450+ return; 6451+ } 6452+ handler_->OnReceivedIcon(data, width, height, color_type, alpha_type); 6453+} 6454\ No newline at end of file 6455diff --git a/cef/libcef/browser/icon_helper.h b/cef/libcef/browser/icon_helper.h 6456new file mode 100644 6457index 0000000000..7a397e057d 6458--- /dev/null 6459+++ b/cef/libcef/browser/icon_helper.h 6460@@ -0,0 +1,66 @@ 6461+// Copyright (c) 2022 Huawei Device Co., Ltd. 6462+// Copyright 2018 The Chromium Authors. All rights reserved. 6463+// Use of this source code is governed by a BSD-style license that can be 6464+// found in the LICENSE file. 6465+ 6466+#ifndef CEF_LIBCEF_BROWSER_ICON_HELPER_H_ 6467+#define CEF_LIBCEF_BROWSER_ICON_HELPER_H_ 6468+#pragma once 6469+ 6470+#include <vector> 6471+ 6472+#include "include/cef_base.h" 6473+#include "libcef/browser/thread_util.h" 6474+ 6475+#include "third_party/blink/public/mojom/favicon/favicon_url.mojom-forward.h" 6476+#include "third_party/skia/include/core/SkBitmap.h" 6477+ 6478+namespace gfx { 6479+class Size; 6480+} // namespace gfx 6481+ 6482+namespace content { 6483+class RenderFrameHost; 6484+class WebContents; 6485+} // namespace content 6486+ 6487+class CefBrowser; 6488+class CefDisplayHandler; 6489+class GURL; 6490+ 6491+class IconHelper : public virtual CefBaseRefCounted { 6492+ public: 6493+ IconHelper() = default; 6494+ ~IconHelper() { 6495+ web_contents_ = nullptr; 6496+ } 6497+ 6498+ void SetDisplayHandler(const CefRefPtr<CefDisplayHandler>& handler); 6499+ void SetBrowser(const CefRefPtr<CefBrowser>& browser); 6500+ void SetWebContents(content::WebContents* new_contents); 6501+ void OnUpdateFaviconURL(content::RenderFrameHost* render_frame_host, 6502+ const std::vector<blink::mojom::FaviconURLPtr>& candidates); 6503+ void DownloadFavicon(const blink::mojom::FaviconURLPtr& candidate); 6504+ void DownloadFaviconCallback(int id, 6505+ int http_status_code, 6506+ const GURL& image_url, 6507+ const std::vector<SkBitmap>& bitmaps, 6508+ const std::vector<gfx::Size>& original_bitmap_sizes); 6509+ void OnReceivedIcon(const void* data, 6510+ size_t width, 6511+ size_t height, 6512+ cef_color_type_t color_type, 6513+ cef_alpha_type_t alpha_type); 6514+ 6515+ private: 6516+ content::WebContents* web_contents_ = nullptr; 6517+ CefRefPtr<CefDisplayHandler> handler_ = nullptr; 6518+ CefRefPtr<CefBrowser> browser_ = nullptr; 6519+ SkBitmap bitmap_; 6520+ 6521+ IMPLEMENT_REFCOUNTING_DELETE_ON_UIT(IconHelper); 6522+ DISALLOW_COPY_AND_ASSIGN(IconHelper); 6523+ 6524+}; 6525+ 6526+#endif // CEF_LIBCEF_BROWSER_ICON_HELPER_H_ 6527\ No newline at end of file 6528diff --git a/cef/libcef/browser/javascript/oh_gin_javascript_bridge_dispatcher_host.cc b/cef/libcef/browser/javascript/oh_gin_javascript_bridge_dispatcher_host.cc 6529new file mode 100644 6530index 0000000000..821c07a73b 6531--- /dev/null 6532+++ b/cef/libcef/browser/javascript/oh_gin_javascript_bridge_dispatcher_host.cc 6533@@ -0,0 +1,292 @@ 6534+// Copyright (c) 2022 Huawei Device Co., Ltd. 6535+// Copyright 2018 The Chromium Authors. All rights reserved. 6536+// Use of this source code is governed by a BSD-style license that can be 6537+// found in the LICENSE file. 6538+ 6539+#include "oh_gin_javascript_bridge_dispatcher_host.h" 6540+ 6541+#include "content/browser/renderer_host/agent_scheduling_group_host.h" 6542+#include "content/browser/web_contents/web_contents_impl.h" 6543+#include "content/public/browser/browser_thread.h" 6544+#include "content/public/browser/web_contents.h" 6545+#include "libcef/browser/javascript/oh_gin_javascript_bridge_message_filter.h" 6546+#include "libcef/common/javascript/oh_gin_javascript_bridge_messages.h" 6547+#include "libcef/common/values_impl.h" 6548+#include "oh_gin_javascript_bridge_object_deletion_message_filter.h" 6549+ 6550+namespace NWEB { 6551+OhGinJavascriptBridgeDispatcherHost::OhGinJavascriptBridgeDispatcherHost( 6552+ content::WebContents* web_contents, 6553+ CefRefPtr<CefClient> client) 6554+ : content::WebContentsObserver(web_contents), client_(client) {} 6555+ 6556+OhGinJavascriptBridgeDispatcherHost::~OhGinJavascriptBridgeDispatcherHost() { 6557+ client_.reset(); 6558+ method_map_.clear(); 6559+} 6560+ 6561+// Run on the UI thread. 6562+void OhGinJavascriptBridgeDispatcherHost:: 6563+ InstallFilterAndRegisterAllRoutingIds() { 6564+ DCHECK_CURRENTLY_ON(content::BrowserThread::UI); 6565+ if (method_map_.empty() || 6566+ !web_contents()->GetMainFrame()->GetProcess()->GetChannel()) { 6567+ return; 6568+ } 6569+ 6570+ // Unretained() is safe because ForEachFrame() is synchronous. 6571+ web_contents()->ForEachFrame(base::BindRepeating( 6572+ [](OhGinJavascriptBridgeDispatcherHost* host, 6573+ content::RenderFrameHost* frame) { 6574+ content::AgentSchedulingGroupHost& agent_scheduling_group = 6575+ static_cast<content::RenderFrameHostImpl*>(frame) 6576+ ->GetAgentSchedulingGroup(); 6577+ 6578+ scoped_refptr<OhGinJavascriptBridgeMessageFilter> per_asg_filter = 6579+ OhGinJavascriptBridgeMessageFilter::FromHost( 6580+ agent_scheduling_group, 6581+ /*create_if_not_exists=*/true); 6582+ if (base::FeatureList::IsEnabled(features::kMBIMode)) { 6583+ scoped_refptr<OhGinJavascriptBridgeObjectDeletionMessageFilter> 6584+ process_global_filter = 6585+ OhGinJavascriptBridgeObjectDeletionMessageFilter::FromHost( 6586+ agent_scheduling_group.GetProcess(), 6587+ /*create_if_not_exists=*/true); 6588+ process_global_filter->AddRoutingIdForHost(host, frame); 6589+ } 6590+ 6591+ per_asg_filter->AddRoutingIdForHost(host, frame); 6592+ }, 6593+ base::Unretained(this))); 6594+} 6595+ 6596+void OhGinJavascriptBridgeDispatcherHost::RenderFrameCreated( 6597+ content::RenderFrameHost* render_frame_host) { 6598+ DCHECK_CURRENTLY_ON(content::BrowserThread::UI); 6599+ content::AgentSchedulingGroupHost& agent_scheduling_group = 6600+ static_cast<content::RenderFrameHostImpl*>(render_frame_host) 6601+ ->GetAgentSchedulingGroup(); 6602+ if (scoped_refptr<OhGinJavascriptBridgeMessageFilter> filter = 6603+ OhGinJavascriptBridgeMessageFilter::FromHost( 6604+ agent_scheduling_group, /*create_if_not_exists=*/false)) { 6605+ filter->AddRoutingIdForHost(this, render_frame_host); 6606+ } else { 6607+ InstallFilterAndRegisterAllRoutingIds(); 6608+ } 6609+ for (ObjectMethodMap::const_iterator iter = method_map_.begin(); 6610+ iter != method_map_.end(); ++iter) { 6611+ render_frame_host->Send(new OhGinJavascriptBridgeMsg_AddNamedObject( 6612+ render_frame_host->GetRoutingID(), iter->second.first, iter->first)); 6613+ } 6614+} 6615+ 6616+void OhGinJavascriptBridgeDispatcherHost::WebContentsDestroyed() { 6617+ // Unretained() is safe because ForEachFrame() is synchronous. 6618+ web_contents()->ForEachFrame(base::BindRepeating( 6619+ [](OhGinJavascriptBridgeDispatcherHost* host, 6620+ content::RenderFrameHost* frame) { 6621+ content::AgentSchedulingGroupHost& agent_scheduling_group = 6622+ static_cast<content::RenderFrameHostImpl*>(frame) 6623+ ->GetAgentSchedulingGroup(); 6624+ scoped_refptr<OhGinJavascriptBridgeMessageFilter> filter = 6625+ OhGinJavascriptBridgeMessageFilter::FromHost( 6626+ agent_scheduling_group, /*create_if_not_exists=*/false); 6627+ 6628+ if (filter) 6629+ filter->RemoveHost(host); 6630+ }, 6631+ base::Unretained(this))); 6632+} 6633+ 6634+void OhGinJavascriptBridgeDispatcherHost::RenderViewHostChanged( 6635+ content::RenderViewHost* old_host, 6636+ content::RenderViewHost* new_host) { 6637+ content::AgentSchedulingGroupHost& agent_scheduling_group = 6638+ static_cast<content::RenderViewHostImpl*>(new_host) 6639+ ->GetAgentSchedulingGroup(); 6640+ scoped_refptr<OhGinJavascriptBridgeMessageFilter> filter = 6641+ OhGinJavascriptBridgeMessageFilter::FromHost( 6642+ agent_scheduling_group, 6643+ /*create_if_not_exists=*/false); 6644+ if (!filter) 6645+ InstallFilterAndRegisterAllRoutingIds(); 6646+} 6647+ 6648+void OhGinJavascriptBridgeDispatcherHost::AddNamedObject( 6649+ const std::string& object_name, 6650+ const std::vector<std::string>& method_list) { 6651+ LOG(INFO) << "AddNamedObject::" << object_name; 6652+ DCHECK_CURRENTLY_ON(content::BrowserThread::UI); 6653+ { 6654+ std::unique_lock<std::mutex> lk(object_mtx_); 6655+ ObjectMethodMap::iterator it; 6656+ for (it = method_map_.begin(); it != method_map_.end(); ++it) { 6657+ if (it->second.first == object_name) { 6658+ std::unordered_set<std::string> method_set = it->second.second; 6659+ for (std::string method : method_list) { 6660+ method_set.emplace(method); 6661+ } 6662+ it->second.second = method_set; 6663+ return; 6664+ } 6665+ } 6666+ ++object_id_; 6667+ 6668+ MethodPair object_pair; 6669+ std::unordered_set<std::string> method_set; 6670+ for (std::string s : method_list) { 6671+ method_set.emplace(s); 6672+ } 6673+ object_pair.first = object_name; 6674+ object_pair.second = method_set; 6675+ method_map_[object_id_] = object_pair; 6676+ } 6677+ 6678+ InstallFilterAndRegisterAllRoutingIds(); 6679+ 6680+ content::WebContentsImpl* web_contents_impl = 6681+ static_cast<content::WebContentsImpl*>(web_contents()); 6682+ 6683+ web_contents_impl->SendToAllFramesIncludingPending( 6684+ new OhGinJavascriptBridgeMsg_AddNamedObject(MSG_ROUTING_NONE, object_name, 6685+ object_id_)); 6686+} 6687+ 6688+void OhGinJavascriptBridgeDispatcherHost::RemoveNamedObject( 6689+ const std::string& object_name, 6690+ const std::vector<std::string>& method_list) { 6691+ DCHECK_CURRENTLY_ON(content::BrowserThread::UI); 6692+ { 6693+ std::unique_lock<std::mutex> lk(object_mtx_); 6694+ ObjectMethodMap::iterator it; 6695+ for (it = method_map_.begin(); it != method_map_.end(); ++it) { 6696+ if (!(object_name == it->second.first)) { 6697+ continue; 6698+ } 6699+ method_map_.erase(it); 6700+ break; 6701+ } 6702+ } 6703+ 6704+ // |name| may come from |named_objects_|. Make a copy of name so that if 6705+ // |name| is from |named_objects_| it'll be valid after the remove below. 6706+ const std::string copied_name(object_name); 6707+ 6708+ content::WebContentsImpl* web_contents_impl = 6709+ static_cast<content::WebContentsImpl*>(web_contents()); 6710+ web_contents_impl->SendToAllFramesIncludingPending( 6711+ new OhGinJavascriptBridgeMsg_RemoveNamedObject(MSG_ROUTING_NONE, 6712+ copied_name)); 6713+} 6714+ 6715+void OhGinJavascriptBridgeDispatcherHost::DocumentAvailableInMainFrame( 6716+ content::RenderFrameHost* render_frame_host) { 6717+ DCHECK_CURRENTLY_ON(content::BrowserThread::UI); 6718+ (void)render_frame_host; 6719+} 6720+ 6721+// OhGinJavascriptBridgeDispatcherHost::FindObject( 6722+ 6723+void OhGinJavascriptBridgeDispatcherHost::OnGetMethods( 6724+ int32_t object_id, 6725+ std::set<std::string>* returned_method_names) { 6726+ LOG(INFO) << "OhGinJavascriptBridgeDispatcherHost::OnGetMethods::" 6727+ << object_id; 6728+ if (method_map_.find(object_id) == method_map_.end()) { 6729+ return; 6730+ } 6731+ MethodPair p = method_map_[object_id]; 6732+ for (auto iter = p.second.begin(); iter != p.second.end(); ++iter) { 6733+ returned_method_names->emplace(*iter); 6734+ } 6735+} 6736+ 6737+void OhGinJavascriptBridgeDispatcherHost::OnHasMethod( 6738+ int32_t object_id, 6739+ const std::string& method_name, 6740+ bool* result) { 6741+ LOG(INFO) << "OhGinJavascriptBridgeDispatcherHost::OnHasMethod::" 6742+ << method_name.c_str(); 6743+ if (method_map_.find(object_id) == method_map_.end()) { 6744+ *result = false; 6745+ return; 6746+ } 6747+ 6748+ MethodPair p = method_map_[object_id]; 6749+ if (p.second.find(method_name) == p.second.end()) { 6750+ *result = false; 6751+ return; 6752+ } 6753+ 6754+ *result = true; 6755+} 6756+ 6757+std::unique_ptr<base::Value> ParseValueTONWebValue( 6758+ CefRefPtr<CefListValue> result) { 6759+ std::unique_ptr<base::Value> value = std::make_unique<base::Value>(); 6760+ if (!result.get() || result->GetSize() == 0) { 6761+ return value; 6762+ } 6763+ 6764+ CefRefPtr<CefValue> argument = result->GetValue(0); 6765+ 6766+ switch (argument->GetType()) { 6767+ case CefValueType::VTYPE_INT: 6768+ value = std::make_unique<base::Value>(result->GetInt(0)); 6769+ break; 6770+ case CefValueType::VTYPE_DOUBLE: { 6771+ value = std::make_unique<base::Value>(result->GetDouble(0)); 6772+ break; 6773+ } 6774+ case CefValueType::VTYPE_BOOL: 6775+ value = std::make_unique<base::Value>(result->GetBool(0)); 6776+ break; 6777+ case CefValueType::VTYPE_STRING: 6778+ value = std::make_unique<base::Value>(result->GetString(0).ToString()); 6779+ break; 6780+ case CefValueType::VTYPE_INVALID: 6781+ value = std::make_unique<base::Value>(); 6782+ break; 6783+ default: 6784+ value = std::make_unique<base::Value>(); 6785+ break; 6786+ } 6787+ 6788+ return value; 6789+} 6790+ 6791+void OhGinJavascriptBridgeDispatcherHost::OnInvokeMethod( 6792+ int routing_id, 6793+ int32_t object_id, 6794+ const std::string& method_name, 6795+ const base::ListValue& arguments, 6796+ base::ListValue* wrapped_result, 6797+ OhGinJavascriptBridgeError* error_code) { 6798+ (void)routing_id; 6799+ LOG(INFO) << "OnInvokeMethod method_name : " << method_name.c_str(); 6800+ if (method_map_.find(object_id) == method_map_.end()) { 6801+ *error_code = kOhGinJavascriptBridgeUnknownObjectId; 6802+ return; 6803+ } 6804+ base::ListValue* argument = const_cast<base::ListValue*>(&arguments); 6805+ 6806+ CefRefPtr<CefListValueImpl> ceflistvalue = 6807+ new CefListValueImpl(argument, false, false); 6808+ 6809+ MethodPair object_pair = method_map_[object_id]; 6810+ 6811+ std::string method = method_name; 6812+ std::string classname = object_pair.first; 6813+ 6814+ CefRefPtr<CefListValue> result = CefListValue::Create(); 6815+ 6816+ int error = 6817+ client_->NotifyJavaScriptResult(ceflistvalue, method, classname, result); 6818+ *error_code = OhGinJavascriptBridgeError(error); 6819+ if (error != 0) { 6820+ return; 6821+ } 6822+ 6823+ wrapped_result->Append(ParseValueTONWebValue(result)); 6824+} 6825+} // namespace NWEB 6826\ No newline at end of file 6827diff --git a/cef/libcef/browser/javascript/oh_gin_javascript_bridge_dispatcher_host.h b/cef/libcef/browser/javascript/oh_gin_javascript_bridge_dispatcher_host.h 6828new file mode 100644 6829index 0000000000..79ce84aa74 6830--- /dev/null 6831+++ b/cef/libcef/browser/javascript/oh_gin_javascript_bridge_dispatcher_host.h 6832@@ -0,0 +1,77 @@ 6833+// Copyright (c) 2022 Huawei Device Co., Ltd. 6834+// Copyright 2018 The Chromium Authors. All rights reserved. 6835+// Use of this source code is governed by a BSD-style license that can be 6836+// found in the LICENSE file. 6837+ 6838+#ifndef OH_GIN_JAVASCRIPT_BRIDGE_DISPATCHEER_HOST_H 6839+#define OH_GIN_JAVASCRIPT_BRIDGE_DISPATCHEER_HOST_H 6840+ 6841+#include <mutex> 6842+#include <unordered_set> 6843+#include "base/memory/ref_counted.h" 6844+#include "content/public/browser/web_contents_observer.h" 6845+#include "include/cef_client.h" 6846+#include "libcef/browser/browser_info.h" 6847+#include "libcef/common/javascript/oh_gin_javascript_bridge_errors.h" 6848+ 6849+namespace NWEB { 6850+class OhGinJavascriptBridgeDispatcherHost 6851+ : public base::RefCountedThreadSafe<OhGinJavascriptBridgeDispatcherHost>, 6852+ public content::WebContentsObserver { 6853+ public: 6854+ OhGinJavascriptBridgeDispatcherHost(content::WebContents* web_contents, 6855+ CefRefPtr<CefClient> client); 6856+ OhGinJavascriptBridgeDispatcherHost( 6857+ const OhGinJavascriptBridgeDispatcherHost&) = delete; 6858+ OhGinJavascriptBridgeDispatcherHost& operator=( 6859+ const OhGinJavascriptBridgeDispatcherHost&) = delete; 6860+ 6861+ void AddNamedObject(const std::string& classname, 6862+ const std::vector<std::string>& method_list); 6863+ void RemoveNamedObject(const std::string& classname, 6864+ const std::vector<std::string>& method_list); 6865+ 6866+ // WebContentsObserver 6867+ void RenderFrameCreated(content::RenderFrameHost* render_frame_host) override; 6868+ void DocumentAvailableInMainFrame( 6869+ content::RenderFrameHost* render_frame_host) override; 6870+ void WebContentsDestroyed() override; 6871+ void RenderViewHostChanged(content::RenderViewHost* old_host, 6872+ content::RenderViewHost* new_host) override; 6873+ 6874+ // Run on the background thread. 6875+ void OnGetMethods(int32_t object_id, 6876+ std::set<std::string>* returned_method_names); 6877+ void OnHasMethod(int32_t object_id, 6878+ const std::string& method_name, 6879+ bool* result); 6880+ void OnInvokeMethod(int routing_id, 6881+ int32_t object_id, 6882+ const std::string& method_name, 6883+ const base::ListValue& arguments, 6884+ base::ListValue* result, 6885+ OhGinJavascriptBridgeError* error_code); 6886+ 6887+ private: 6888+ typedef int32_t ObjectID; 6889+ friend class base::RefCountedThreadSafe<OhGinJavascriptBridgeDispatcherHost>; 6890+ 6891+ // object id and ace js function name 6892+ typedef std::map<ObjectID, std::string> ObjectMap; 6893+ 6894+ ~OhGinJavascriptBridgeDispatcherHost(); 6895+ 6896+ // Run on the UI thread. 6897+ void InstallFilterAndRegisterAllRoutingIds(); 6898+ 6899+ // js property name and object id 6900+ using MethodPair = std::pair<std::string, std::unordered_set<std::string>>; 6901+ using ObjectMethodMap = std::map<ObjectID, MethodPair>; 6902+ ObjectMethodMap method_map_; 6903+ int32_t object_id_ = 0; 6904+ 6905+ std::mutex object_mtx_; 6906+ CefRefPtr<CefClient> client_; 6907+}; 6908+} // namespace NWEB 6909+#endif 6910\ No newline at end of file 6911diff --git a/cef/libcef/browser/javascript/oh_gin_javascript_bridge_message_filter.cc b/cef/libcef/browser/javascript/oh_gin_javascript_bridge_message_filter.cc 6912new file mode 100644 6913index 0000000000..b2d7083ba3 6914--- /dev/null 6915+++ b/cef/libcef/browser/javascript/oh_gin_javascript_bridge_message_filter.cc 6916@@ -0,0 +1,184 @@ 6917+// Copyright (c) 2022 Huawei Device Co., Ltd. 6918+// Copyright 2018 The Chromium Authors. All rights reserved. 6919+// Use of this source code is governed by a BSD-style license that can be 6920+// found in the LICENSE file. 6921+ 6922+#include "oh_gin_javascript_bridge_message_filter.h" 6923+ 6924+#include <thread> 6925+#include "base/types/pass_key.h" 6926+#include "cef/libcef/common/javascript/oh_gin_javascript_bridge_messages.h" 6927+#include "content/browser/renderer_host/agent_scheduling_group_host.h" 6928+#include "content/public/browser/browser_task_traits.h" 6929+#include "content/public/browser/browser_thread.h" 6930+#include "content/public/browser/render_frame_host.h" 6931+#include "content/public/browser/render_process_host.h" 6932+#include "content/public/browser/web_contents.h" 6933+#include "oh_gin_javascript_bridge_dispatcher_host.h" 6934+ 6935+namespace { 6936+ 6937+const char kOhGinJavascriptBridgeMessageFilterKey[] = 6938+ "OhGinJavascriptBridgeMessageFilter"; 6939+ 6940+} // namespace 6941+ 6942+namespace NWEB { 6943+OhGinJavascriptBridgeMessageFilter::OhGinJavascriptBridgeMessageFilter( 6944+ base::PassKey<OhGinJavascriptBridgeMessageFilter> pass_key, 6945+ content::AgentSchedulingGroupHost& agent_scheduling_group) 6946+ : BrowserMessageFilter(OhGinJavascriptBridgeMsgStart), 6947+ agent_scheduling_group_(agent_scheduling_group), 6948+ current_routing_id_(MSG_ROUTING_NONE) {} 6949+ 6950+OhGinJavascriptBridgeMessageFilter::~OhGinJavascriptBridgeMessageFilter() {} 6951+ 6952+void OhGinJavascriptBridgeMessageFilter::OnDestruct() const { 6953+ if (content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)) { 6954+ delete this; 6955+ } else { 6956+ content::GetUIThreadTaskRunner({})->DeleteSoon(FROM_HERE, this); 6957+ } 6958+} 6959+ 6960+bool OhGinJavascriptBridgeMessageFilter::OnMessageReceived( 6961+ const IPC::Message& message) { 6962+ std::thread dump_thread( 6963+ [message, this] { this->OnMessageReceivedThread(message); }); 6964+ dump_thread.detach(); 6965+ return true; 6966+} 6967+ 6968+bool OhGinJavascriptBridgeMessageFilter::OnMessageReceivedThread( 6969+ const IPC::Message& message) { 6970+ base::AutoReset<int32_t> routing_id(¤t_routing_id_, 6971+ message.routing_id()); 6972+ bool handled = true; 6973+ IPC_BEGIN_MESSAGE_MAP(OhGinJavascriptBridgeMessageFilter, message) 6974+ IPC_MESSAGE_HANDLER(OhGinJavascriptBridgeHostMsg_GetMethods, OnGetMethods) 6975+ IPC_MESSAGE_HANDLER(OhGinJavascriptBridgeHostMsg_HasMethod, OnHasMethod) 6976+ IPC_MESSAGE_HANDLER(OhGinJavascriptBridgeHostMsg_InvokeMethod, 6977+ OnInvokeMethod) 6978+ IPC_MESSAGE_HANDLER(OhGinJavascriptBridgeHostMsg_ObjectWrapperDeleted, 6979+ OnObjectWrapperDeleted) 6980+ IPC_MESSAGE_UNHANDLED(handled = false) 6981+ IPC_END_MESSAGE_MAP() 6982+ return handled; 6983+} 6984+ 6985+void OhGinJavascriptBridgeMessageFilter::AddRoutingIdForHost( 6986+ OhGinJavascriptBridgeDispatcherHost* host, 6987+ content::RenderFrameHost* render_frame_host) { 6988+ DCHECK_CURRENTLY_ON(content::BrowserThread::UI); 6989+ base::AutoLock locker(hosts_lock_); 6990+ hosts_[render_frame_host->GetRoutingID()] = host; 6991+} 6992+ 6993+void OhGinJavascriptBridgeMessageFilter::RemoveHost( 6994+ const OhGinJavascriptBridgeDispatcherHost* host) { 6995+ DCHECK_CURRENTLY_ON(content::BrowserThread::UI); 6996+ base::AutoLock locker(hosts_lock_); 6997+ auto iter = hosts_.begin(); 6998+ while (iter != hosts_.end()) { 6999+ if (iter->second == host) 7000+ hosts_.erase(iter++); 7001+ else 7002+ ++iter; 7003+ } 7004+} 7005+ 7006+void OhGinJavascriptBridgeMessageFilter::RenderProcessExited( 7007+ content::RenderProcessHost* rph, 7008+ const content::ChildProcessTerminationInfo& info) { 7009+#if DCHECK_IS_ON() 7010+ { 7011+ scoped_refptr<OhGinJavascriptBridgeMessageFilter> filter = 7012+ base::UserDataAdapter<OhGinJavascriptBridgeMessageFilter>::Get( 7013+ &agent_scheduling_group_, kOhGinJavascriptBridgeMessageFilterKey); 7014+ DCHECK_EQ(this, filter.get()); 7015+ } 7016+#endif 7017+ 7018+ rph->RemoveObserver(this); 7019+ 7020+ agent_scheduling_group_.RemoveUserData( 7021+ kOhGinJavascriptBridgeMessageFilterKey); 7022+} 7023+ 7024+scoped_refptr<OhGinJavascriptBridgeMessageFilter> 7025+OhGinJavascriptBridgeMessageFilter::FromHost( 7026+ content::AgentSchedulingGroupHost& agent_scheduling_group, 7027+ bool create_if_not_exists) { 7028+ scoped_refptr<OhGinJavascriptBridgeMessageFilter> filter = 7029+ base::UserDataAdapter<OhGinJavascriptBridgeMessageFilter>::Get( 7030+ &agent_scheduling_group, kOhGinJavascriptBridgeMessageFilterKey); 7031+ 7032+ if (!filter && create_if_not_exists) { 7033+ filter = base::MakeRefCounted<OhGinJavascriptBridgeMessageFilter>( 7034+ base::PassKey<OhGinJavascriptBridgeMessageFilter>(), 7035+ agent_scheduling_group); 7036+ agent_scheduling_group.AddFilter(filter.get()); 7037+ agent_scheduling_group.GetProcess()->AddObserver(filter.get()); 7038+ 7039+ agent_scheduling_group.SetUserData( 7040+ kOhGinJavascriptBridgeMessageFilterKey, 7041+ std::make_unique< 7042+ base::UserDataAdapter<OhGinJavascriptBridgeMessageFilter>>( 7043+ filter.get())); 7044+ } 7045+ return filter; 7046+} 7047+ 7048+scoped_refptr<OhGinJavascriptBridgeDispatcherHost> 7049+OhGinJavascriptBridgeMessageFilter::FindHost() { 7050+ base::AutoLock locker(hosts_lock_); 7051+ auto iter = hosts_.find(current_routing_id_); 7052+ if (iter != hosts_.end()) 7053+ return iter->second; 7054+ 7055+ return nullptr; 7056+} 7057+ 7058+void OhGinJavascriptBridgeMessageFilter::OnGetMethods( 7059+ int32_t object_id, 7060+ std::set<std::string>* returned_method_names) { 7061+ scoped_refptr<OhGinJavascriptBridgeDispatcherHost> host = FindHost(); 7062+ if (host) { 7063+ host->OnGetMethods(object_id, returned_method_names); 7064+ } else { 7065+ *returned_method_names = std::set<std::string>(); 7066+ } 7067+} 7068+ 7069+void OhGinJavascriptBridgeMessageFilter::OnHasMethod( 7070+ int32_t object_id, 7071+ const std::string& method_name, 7072+ bool* result) { 7073+ scoped_refptr<OhGinJavascriptBridgeDispatcherHost> host = FindHost(); 7074+ if (host) { 7075+ host->OnHasMethod(object_id, method_name, result); 7076+ } else { 7077+ *result = false; 7078+ } 7079+} 7080+ 7081+void OhGinJavascriptBridgeMessageFilter::OnInvokeMethod( 7082+ int32_t object_id, 7083+ const std::string& method_name, 7084+ const base::ListValue& arguments, 7085+ base::ListValue* wrapped_result, 7086+ OhGinJavascriptBridgeError* error_code) { 7087+ scoped_refptr<OhGinJavascriptBridgeDispatcherHost> host = FindHost(); 7088+ if (host) { 7089+ host->OnInvokeMethod(current_routing_id_, object_id, method_name, arguments, 7090+ wrapped_result, error_code); 7091+ } else { 7092+ wrapped_result->Append(std::make_unique<base::Value>()); 7093+ *error_code = kOhGinJavascriptBridgeRenderFrameDeleted; 7094+ } 7095+} 7096+ 7097+void OhGinJavascriptBridgeMessageFilter::OnObjectWrapperDeleted(int object_id) { 7098+ (void)object_id; 7099+} 7100+} // namespace NWEB 7101\ No newline at end of file 7102diff --git a/cef/libcef/browser/javascript/oh_gin_javascript_bridge_message_filter.h b/cef/libcef/browser/javascript/oh_gin_javascript_bridge_message_filter.h 7103new file mode 100644 7104index 0000000000..de1af8204b 7105--- /dev/null 7106+++ b/cef/libcef/browser/javascript/oh_gin_javascript_bridge_message_filter.h 7107@@ -0,0 +1,92 @@ 7108+// Copyright (c) 2022 Huawei Device Co., Ltd. 7109+// Copyright 2018 The Chromium Authors. All rights reserved. 7110+// Use of this source code is governed by a BSD-style license that can be 7111+// found in the LICENSE file. 7112+ 7113+#ifndef OH_GIN_JAVASCRIPT_BRIDGE_MESSAGE_FILTER_H 7114+#define OH_GIN_JAVASCRIPT_BRIDGE_MESSAGE_FILTER_H 7115+ 7116+#include "base/types/pass_key.h" 7117+#include "content/public/browser/browser_message_filter.h" 7118+#include "content/public/browser/render_process_host_observer.h" 7119+#include "libcef/common/javascript/oh_gin_javascript_bridge_errors.h" 7120+ 7121+namespace IPC { 7122+class Message; 7123+} 7124+ 7125+namespace content { 7126+class AgentSchedulingGroupHost; 7127+class RenderFrameHost; 7128+class BrowserThread; 7129+} // namespace content 7130+ 7131+namespace NWEB { 7132+class OhGinJavascriptBridgeDispatcherHost; 7133+class OhGinJavascriptBridgeMessageFilter 7134+ : public content::BrowserMessageFilter, 7135+ public content::RenderProcessHostObserver { 7136+ public: 7137+ OhGinJavascriptBridgeMessageFilter( 7138+ base::PassKey<OhGinJavascriptBridgeMessageFilter> pass_key, 7139+ content::AgentSchedulingGroupHost& agent_scheduling_group); 7140+ 7141+ // BrowserMessageFilter 7142+ void OnDestruct() const override; 7143+ bool OnMessageReceived(const IPC::Message& message) override; 7144+ // scoped_refptr<base::SequencedTaskRunner> OverrideTaskRunnerForMessage( 7145+ // const IPC::Message& message) override; 7146+ 7147+ // RenderProcessHostObserver 7148+ void RenderProcessExited( 7149+ content::RenderProcessHost* rph, 7150+ const content::ChildProcessTerminationInfo& info) override; 7151+ 7152+ // Called on the UI thread. 7153+ void AddRoutingIdForHost(OhGinJavascriptBridgeDispatcherHost* host, 7154+ content::RenderFrameHost* render_frame_host); 7155+ void RemoveHost(const OhGinJavascriptBridgeDispatcherHost* host); 7156+ 7157+ static scoped_refptr<OhGinJavascriptBridgeMessageFilter> FromHost( 7158+ content::AgentSchedulingGroupHost& agent_scheduling_group, 7159+ bool create_if_not_exists); 7160+ 7161+ private: 7162+ friend class BrowserThread; 7163+ friend class base::DeleteHelper<OhGinJavascriptBridgeMessageFilter>; 7164+ 7165+ typedef std::map<int32_t, scoped_refptr<OhGinJavascriptBridgeDispatcherHost>> 7166+ HostMap; 7167+ ~OhGinJavascriptBridgeMessageFilter() override; 7168+ 7169+ bool OnMessageReceivedThread(const IPC::Message& message); 7170+ 7171+ // Called on the background thread. 7172+ scoped_refptr<OhGinJavascriptBridgeDispatcherHost> FindHost(); 7173+ 7174+ void OnGetMethods(int32_t object_id, 7175+ std::set<std::string>* returned_method_names); 7176+ void OnHasMethod(int32_t object_id, 7177+ const std::string& method_name, 7178+ bool* result); 7179+ void OnInvokeMethod(int32_t object_id, 7180+ const std::string& method_name, 7181+ const base::ListValue& arguments, 7182+ base::ListValue* result, 7183+ OhGinJavascriptBridgeError* error_code); 7184+ void OnObjectWrapperDeleted(int object_id); 7185+ 7186+ // Accessed both from UI and background threads. 7187+ HostMap hosts_ GUARDED_BY(hosts_lock_); 7188+ base::Lock hosts_lock_; 7189+ 7190+ // The `AgentSchedulingGroupHost` that this object is associated with. This 7191+ // filter is installed on the host's channel. 7192+ content::AgentSchedulingGroupHost& agent_scheduling_group_; 7193+ 7194+ // The routing id of the RenderFrameHost whose request we are processing. 7195+ // Used on the background thread. 7196+ int32_t current_routing_id_; 7197+}; 7198+} // namespace NWEB 7199+#endif 7200\ No newline at end of file 7201diff --git a/cef/libcef/browser/javascript/oh_gin_javascript_bridge_object_deletion_message_filter.cc b/cef/libcef/browser/javascript/oh_gin_javascript_bridge_object_deletion_message_filter.cc 7202new file mode 100644 7203index 0000000000..6aa2ba2ec7 7204--- /dev/null 7205+++ b/cef/libcef/browser/javascript/oh_gin_javascript_bridge_object_deletion_message_filter.cc 7206@@ -0,0 +1,136 @@ 7207+// Copyright (c) 2022 Huawei Device Co., Ltd. 7208+// Copyright 2018 The Chromium Authors. All rights reserved. 7209+// Use of this source code is governed by a BSD-style license that can be 7210+// found in the LICENSE file. 7211+ 7212+#include "oh_gin_javascript_bridge_object_deletion_message_filter.h" 7213+ 7214+#include "base/auto_reset.h" 7215+#include "base/feature_list.h" 7216+#include "base/types/pass_key.h" 7217+#include "build/build_config.h" 7218+#include "content/public/browser/browser_task_traits.h" 7219+#include "content/public/browser/browser_thread.h" 7220+#include "content/public/browser/render_frame_host.h" 7221+#include "content/public/browser/render_process_host.h" 7222+#include "content/public/browser/web_contents.h" 7223+#include "content/public/common/content_features.h" 7224+#include "libcef/common/javascript/oh_gin_javascript_bridge_messages.h" 7225+#include "oh_gin_javascript_bridge_dispatcher_host.h" 7226+ 7227+namespace { 7228+ 7229+const char kOhGinJavascriptBridgeObjectDeletionMessageFilterKey[] = 7230+ "OhGinJavascriptBridgeObjectDeletionMessageFilter"; 7231+ 7232+} // namespace 7233+namespace NWEB { 7234+OhGinJavascriptBridgeObjectDeletionMessageFilter:: 7235+ OhGinJavascriptBridgeObjectDeletionMessageFilter( 7236+ base::PassKey<OhGinJavascriptBridgeObjectDeletionMessageFilter> 7237+ pass_key) 7238+ : BrowserMessageFilter(OhGinJavascriptBridgeMsgStart), 7239+ current_routing_id_(MSG_ROUTING_NONE) { 7240+ DCHECK(base::FeatureList::IsEnabled(features::kMBIMode)); 7241+} 7242+ 7243+OhGinJavascriptBridgeObjectDeletionMessageFilter:: 7244+ ~OhGinJavascriptBridgeObjectDeletionMessageFilter() {} 7245+ 7246+void OhGinJavascriptBridgeObjectDeletionMessageFilter::OnDestruct() const { 7247+ if (content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)) { 7248+ delete this; 7249+ } else { 7250+ content::GetUIThreadTaskRunner({})->DeleteSoon(FROM_HERE, this); 7251+ } 7252+} 7253+ 7254+bool OhGinJavascriptBridgeObjectDeletionMessageFilter::OnMessageReceived( 7255+ const IPC::Message& message) { 7256+ (void)message; 7257+ return false; 7258+} 7259+ 7260+scoped_refptr<base::SequencedTaskRunner> 7261+OhGinJavascriptBridgeObjectDeletionMessageFilter::OverrideTaskRunnerForMessage( 7262+ const IPC::Message& message) { 7263+ (void)message; 7264+ return nullptr; 7265+} 7266+ 7267+void OhGinJavascriptBridgeObjectDeletionMessageFilter::AddRoutingIdForHost( 7268+ OhGinJavascriptBridgeDispatcherHost* host, 7269+ content::RenderFrameHost* render_frame_host) { 7270+ DCHECK_CURRENTLY_ON(content::BrowserThread::UI); 7271+ base::AutoLock locker(hosts_lock_); 7272+ hosts_[render_frame_host->GetRoutingID()] = host; 7273+} 7274+ 7275+void OhGinJavascriptBridgeObjectDeletionMessageFilter::RemoveHost( 7276+ const OhGinJavascriptBridgeDispatcherHost* host) { 7277+ DCHECK_CURRENTLY_ON(content::BrowserThread::UI); 7278+ base::AutoLock locker(hosts_lock_); 7279+ auto iter = hosts_.begin(); 7280+ while (iter != hosts_.end()) { 7281+ if (iter->second == host) 7282+ hosts_.erase(iter++); 7283+ else 7284+ ++iter; 7285+ } 7286+} 7287+ 7288+void OhGinJavascriptBridgeObjectDeletionMessageFilter::RenderProcessExited( 7289+ content::RenderProcessHost* rph, 7290+ const content::ChildProcessTerminationInfo& info) { 7291+#if DCHECK_IS_ON() 7292+ { 7293+ scoped_refptr<OhGinJavascriptBridgeObjectDeletionMessageFilter> filter = 7294+ base::UserDataAdapter< 7295+ OhGinJavascriptBridgeObjectDeletionMessageFilter>:: 7296+ Get(rph, kOhGinJavascriptBridgeObjectDeletionMessageFilterKey); 7297+ DCHECK_EQ(this, filter.get()); 7298+ } 7299+#endif 7300+ rph->RemoveObserver(this); 7301+ rph->RemoveUserData(kOhGinJavascriptBridgeObjectDeletionMessageFilterKey); 7302+} 7303+ 7304+// static 7305+scoped_refptr<OhGinJavascriptBridgeObjectDeletionMessageFilter> 7306+OhGinJavascriptBridgeObjectDeletionMessageFilter::FromHost( 7307+ content::RenderProcessHost* rph, 7308+ bool create_if_not_exists) { 7309+ DCHECK(base::FeatureList::IsEnabled(features::kMBIMode)); 7310+ scoped_refptr<OhGinJavascriptBridgeObjectDeletionMessageFilter> filter = 7311+ base::UserDataAdapter<OhGinJavascriptBridgeObjectDeletionMessageFilter>:: 7312+ Get(rph, kOhGinJavascriptBridgeObjectDeletionMessageFilterKey); 7313+ if (!filter && create_if_not_exists) { 7314+ filter = 7315+ base::MakeRefCounted<OhGinJavascriptBridgeObjectDeletionMessageFilter>( 7316+ base::PassKey<OhGinJavascriptBridgeObjectDeletionMessageFilter>()); 7317+ rph->AddFilter(filter.get()); 7318+ rph->AddObserver(filter.get()); 7319+ 7320+ rph->SetUserData( 7321+ kOhGinJavascriptBridgeObjectDeletionMessageFilterKey, 7322+ std::make_unique<base::UserDataAdapter< 7323+ OhGinJavascriptBridgeObjectDeletionMessageFilter>>(filter.get())); 7324+ } 7325+ return filter; 7326+} 7327+ 7328+scoped_refptr<OhGinJavascriptBridgeDispatcherHost> 7329+OhGinJavascriptBridgeObjectDeletionMessageFilter::FindHost() { 7330+ base::AutoLock locker(hosts_lock_); 7331+ auto iter = hosts_.find(current_routing_id_); 7332+ if (iter != hosts_.end()) 7333+ return iter->second; 7334+ 7335+ return nullptr; 7336+} 7337+ 7338+void OhGinJavascriptBridgeObjectDeletionMessageFilter::OnObjectWrapperDeleted( 7339+ ObjectID object_id) { 7340+ (void)object_id; 7341+} 7342+} // namespace NWEB 7343\ No newline at end of file 7344diff --git a/cef/libcef/browser/javascript/oh_gin_javascript_bridge_object_deletion_message_filter.h b/cef/libcef/browser/javascript/oh_gin_javascript_bridge_object_deletion_message_filter.h 7345new file mode 100644 7346index 0000000000..68e9350f26 7347--- /dev/null 7348+++ b/cef/libcef/browser/javascript/oh_gin_javascript_bridge_object_deletion_message_filter.h 7349@@ -0,0 +1,85 @@ 7350+// Copyright (c) 2022 Huawei Device Co., Ltd. 7351+// Copyright 2018 The Chromium Authors. All rights reserved. 7352+// Use of this source code is governed by a BSD-style license that can be 7353+// found in the LICENSE file. 7354+ 7355+#ifndef OH_GIN_JAVASCRIPT_BRIDGE_OBJECT_DELETION_MESSAGE_FILTER_H 7356+#define OH_GIN_JAVASCRIPT_BRIDGE_OBJECT_DELETION_MESSAGE_FILTER_H 7357+ 7358+#include <stdint.h> 7359+ 7360+#include <map> 7361+#include <set> 7362+ 7363+#include "base/memory/ref_counted.h" 7364+#include "base/synchronization/lock.h" 7365+#include "base/thread_annotations.h" 7366+#include "base/types/pass_key.h" 7367+#include "content/public/browser/browser_message_filter.h" 7368+#include "content/public/browser/render_process_host_observer.h" 7369+ 7370+#include "content/public/browser/child_process_termination_info.h" 7371+ 7372+namespace IPC { 7373+class Message; 7374+} 7375+ 7376+namespace content { 7377+class RenderFrameHost; 7378+class BrowserThread; 7379+} // namespace content 7380+ 7381+namespace NWEB { 7382+class OhGinJavascriptBridgeDispatcherHost; 7383+class OhGinJavascriptBridgeObjectDeletionMessageFilter 7384+ : public content::BrowserMessageFilter, 7385+ public content::RenderProcessHostObserver { 7386+ public: 7387+ // BrowserMessageFilter 7388+ void OnDestruct() const override; 7389+ bool OnMessageReceived(const IPC::Message& message) override; 7390+ scoped_refptr<base::SequencedTaskRunner> OverrideTaskRunnerForMessage( 7391+ const IPC::Message& message) override; 7392+ 7393+ // RenderProcessHostObserver 7394+ void RenderProcessExited( 7395+ content::RenderProcessHost* rph, 7396+ const content ::ChildProcessTerminationInfo& info) override; 7397+ 7398+ // Called on the UI thread. 7399+ void AddRoutingIdForHost(OhGinJavascriptBridgeDispatcherHost* host, 7400+ content::RenderFrameHost* render_frame_host); 7401+ void RemoveHost(const OhGinJavascriptBridgeDispatcherHost* host); 7402+ 7403+ static scoped_refptr<OhGinJavascriptBridgeObjectDeletionMessageFilter> 7404+ FromHost(content::RenderProcessHost* rph, bool create_if_not_exists); 7405+ 7406+ OhGinJavascriptBridgeObjectDeletionMessageFilter( 7407+ base::PassKey<OhGinJavascriptBridgeObjectDeletionMessageFilter> pass_key); 7408+ 7409+ private: 7410+ typedef int32_t ObjectID; 7411+ 7412+ friend class BrowserThread; 7413+ friend class base::DeleteHelper< 7414+ OhGinJavascriptBridgeObjectDeletionMessageFilter>; 7415+ 7416+ typedef std::map<int32_t, scoped_refptr<OhGinJavascriptBridgeDispatcherHost>> 7417+ HostMap; 7418+ 7419+ ~OhGinJavascriptBridgeObjectDeletionMessageFilter() override; 7420+ 7421+ // Called on the background thread. 7422+ scoped_refptr<OhGinJavascriptBridgeDispatcherHost> FindHost(); 7423+ void OnObjectWrapperDeleted(ObjectID object_id); 7424+ 7425+ // Accessed both from UI and background threads. 7426+ HostMap hosts_ GUARDED_BY(hosts_lock_); 7427+ base::Lock hosts_lock_; 7428+ 7429+ // The routing id of the RenderFrameHost whose request we are processing. 7430+ // Used on the background thread. 7431+ int32_t current_routing_id_; 7432+}; 7433+} // namespace NWEB 7434+#endif 7435diff --git a/cef/libcef/browser/javascript/oh_javascript_injector.cc b/cef/libcef/browser/javascript/oh_javascript_injector.cc 7436new file mode 100644 7437index 0000000000..0a37d983e0 7438--- /dev/null 7439+++ b/cef/libcef/browser/javascript/oh_javascript_injector.cc 7440@@ -0,0 +1,33 @@ 7441+// Copyright (c) 2022 Huawei Device Co., Ltd. 7442+// Copyright 2018 The Chromium Authors. All rights reserved. 7443+// Use of this source code is governed by a BSD-style license that can be 7444+// found in the LICENSE file. 7445+ 7446+#include "oh_javascript_injector.h" 7447+#include "oh_gin_javascript_bridge_dispatcher_host.h" 7448+namespace NWEB { 7449+OhJavascriptInjector::OhJavascriptInjector(content::WebContents* web_contents, 7450+ CefRefPtr<CefClient> client) { 7451+ javascript_bridge_dispatcher_host_ = 7452+ new OhGinJavascriptBridgeDispatcherHost(web_contents, client); 7453+ web_contents->SetUserData(UserDataKey(), base::WrapUnique(this)); 7454+} 7455+ 7456+OhJavascriptInjector::~OhJavascriptInjector() {} 7457+ 7458+void OhJavascriptInjector::AddInterface( 7459+ const std::string& object_name, 7460+ const std::vector<std::string> method_list) { 7461+ LOG(INFO) << "AddInterface name : " << object_name.c_str(); 7462+ javascript_bridge_dispatcher_host_->AddNamedObject(object_name, method_list); 7463+} 7464+ 7465+void OhJavascriptInjector::RemoveInterface( 7466+ const std::string& object_name, 7467+ const std::vector<std::string> method_list) { 7468+ LOG(INFO) << "RemoveInterface name : " << object_name.c_str(); 7469+ javascript_bridge_dispatcher_host_->RemoveNamedObject(object_name, 7470+ method_list); 7471+} 7472+WEB_CONTENTS_USER_DATA_KEY_IMPL(OhJavascriptInjector); 7473+} // namespace NWEB 7474diff --git a/cef/libcef/browser/javascript/oh_javascript_injector.h b/cef/libcef/browser/javascript/oh_javascript_injector.h 7475new file mode 100644 7476index 0000000000..bc60a903da 7477--- /dev/null 7478+++ b/cef/libcef/browser/javascript/oh_javascript_injector.h 7479@@ -0,0 +1,39 @@ 7480+// Copyright (c) 2022 Huawei Device Co., Ltd. 7481+// Copyright 2018 The Chromium Authors. All rights reserved. 7482+// Use of this source code is governed by a BSD-style license that can be 7483+// found in the LICENSE file. 7484+ 7485+#ifndef OH_JAVASCRIPT_INJECTOR_H 7486+#define OH_JAVASCRIPT_INJECTOR_H 7487+ 7488+#include "content/public/browser/web_contents_user_data.h" 7489+#include "include/cef_client.h" 7490+#include "libcef/browser/browser_info.h" 7491+ 7492+namespace NWEB { 7493+class OhGinJavascriptBridgeDispatcherHost; 7494+ 7495+class OhJavascriptInjector 7496+ : public content::WebContentsUserData<OhJavascriptInjector> { 7497+ public: 7498+ OhJavascriptInjector(content::WebContents* web_contents, 7499+ CefRefPtr<CefClient> client); 7500+ 7501+ OhJavascriptInjector(const OhJavascriptInjector&) = delete; 7502+ OhJavascriptInjector& operator=(const OhJavascriptInjector&) = delete; 7503+ ~OhJavascriptInjector(); 7504+ 7505+ void AddInterface(const std::string& object_name, 7506+ const std::vector<std::string> method_list); 7507+ void RemoveInterface(const std::string& object_name, 7508+ const std::vector<std::string> method_list); 7509+ 7510+ private: 7511+ friend class content::WebContentsUserData<OhJavascriptInjector>; 7512+ 7513+ scoped_refptr<OhGinJavascriptBridgeDispatcherHost> 7514+ javascript_bridge_dispatcher_host_; 7515+ WEB_CONTENTS_USER_DATA_KEY_DECL(); 7516+}; 7517+} // namespace NWEB 7518+#endif 7519\ No newline at end of file 7520diff --git a/cef/libcef/browser/net_service/cookie_manager_impl.cc b/cef/libcef/browser/net_service/cookie_manager_impl.cc 7521index 935cad6c33..67c7419dd7 100644 7522--- a/cef/libcef/browser/net_service/cookie_manager_impl.cc 7523+++ b/cef/libcef/browser/net_service/cookie_manager_impl.cc 7524@@ -46,8 +46,9 @@ void RunAsyncCompletionOnUIThread(CefRefPtr<CefCompletionCallback> callback) { 7525 // Always execute the callback asynchronously. 7526 void SetCookieCallbackImpl(CefRefPtr<CefSetCookieCallback> callback, 7527 net::CookieAccessResult access_result) { 7528- if (!callback.get()) 7529+ if (!callback.get()) { 7530 return; 7531+ } 7532 const bool is_include = access_result.status.IsInclude(); 7533 if (!is_include) { 7534 LOG(WARNING) << "SetCookie failed with reason: " 7535@@ -78,6 +79,13 @@ void ExecuteVisitor(CefRefPtr<CefCookieVisitor> visitor, 7536 auto cookie_manager = GetCookieManager(browser_context); 7537 7538 int total = cookies.size(), count = 0; 7539+ if (total == 0) { 7540+ CefCookie cookie; 7541+ bool deleteCookie = false; 7542+ visitor->Visit(cookie, 0, 0, deleteCookie); 7543+ return; 7544+ } 7545+ 7546 for (const auto& cc : cookies) { 7547 CefCookie cookie; 7548 net_service::MakeCefCookie(cc, cookie); 7549@@ -92,6 +100,8 @@ void ExecuteVisitor(CefRefPtr<CefCookieVisitor> visitor, 7550 break; 7551 count++; 7552 } 7553+ std::string cookie_line = net::CanonicalCookie::BuildCookieLine(cookies); 7554+ visitor->SetCookieLine(CefString(cookie_line)); 7555 } 7556 7557 // Always execute the callback asynchronously. 7558@@ -114,7 +124,6 @@ void GetCookiesCallbackImpl( 7559 } 7560 GetAllCookiesCallbackImpl(visitor, browser_context_getter, cookies); 7561 } 7562- 7563 } // namespace 7564 7565 CefCookieManagerImpl::CefCookieManagerImpl() {} 7566@@ -139,6 +148,30 @@ void CefCookieManagerImpl::Initialize( 7567 RunAsyncCompletionOnUIThread(callback); 7568 } 7569 7570+bool CefCookieManagerImpl::IsAcceptCookieAllowed() { 7571+ return accept_cookies_; 7572+} 7573+ 7574+void CefCookieManagerImpl::PutAcceptCookieEnabled(bool accept) { 7575+ accept_cookies_ = accept; 7576+} 7577+ 7578+bool CefCookieManagerImpl::IsFileURLSchemeCookiesAllowed() { 7579+ return allow_file_scheme_cookies_; 7580+} 7581+ 7582+void CefCookieManagerImpl::PutAcceptFileURLSchemeCookiesEnabled(bool allow) { 7583+ if (!ValidContext()) { 7584+ StoreOrTriggerInitCallback(base::BindOnce( 7585+ base::IgnoreResult(&CefCookieManagerImpl:: 7586+ PutAcceptFileURLSchemeCookiesEnabledInternal), 7587+ this, allow)); 7588+ return; 7589+ } 7590+ 7591+ PutAcceptFileURLSchemeCookiesEnabledInternal(allow); 7592+} 7593+ 7594 bool CefCookieManagerImpl::VisitAllCookies( 7595 CefRefPtr<CefCookieVisitor> visitor) { 7596 if (!visitor.get()) 7597@@ -179,8 +212,9 @@ bool CefCookieManagerImpl::SetCookie(const CefString& url, 7598 const CefCookie& cookie, 7599 CefRefPtr<CefSetCookieCallback> callback) { 7600 GURL gurl = GURL(url.ToString()); 7601- if (!gurl.is_valid()) 7602+ if (!gurl.is_valid()) { 7603 return false; 7604+ } 7605 7606 if (!ValidContext()) { 7607 StoreOrTriggerInitCallback(base::BindOnce( 7608@@ -195,6 +229,7 @@ bool CefCookieManagerImpl::SetCookie(const CefString& url, 7609 bool CefCookieManagerImpl::DeleteCookies( 7610 const CefString& url, 7611 const CefString& cookie_name, 7612+ bool is_session, 7613 CefRefPtr<CefDeleteCookiesCallback> callback) { 7614 // Empty URLs are allowed but not invalid URLs. 7615 GURL gurl = GURL(url.ToString()); 7616@@ -204,11 +239,11 @@ bool CefCookieManagerImpl::DeleteCookies( 7617 if (!ValidContext()) { 7618 StoreOrTriggerInitCallback(base::BindOnce( 7619 base::IgnoreResult(&CefCookieManagerImpl::DeleteCookiesInternal), this, 7620- gurl, cookie_name, callback)); 7621+ gurl, cookie_name, is_session, callback)); 7622 return true; 7623 } 7624 7625- return DeleteCookiesInternal(gurl, cookie_name, callback); 7626+ return DeleteCookiesInternal(gurl, cookie_name, is_session, callback); 7627 } 7628 7629 bool CefCookieManagerImpl::FlushStore( 7630@@ -223,6 +258,30 @@ bool CefCookieManagerImpl::FlushStore( 7631 return FlushStoreInternal(callback); 7632 } 7633 7634+void CefCookieManagerImpl::PutAcceptFileURLSchemeCookiesEnabledCompleted( 7635+ bool allow, 7636+ bool can_change_schemes) { 7637+ if (can_change_schemes) { 7638+ allow_file_scheme_cookies_ = allow; 7639+ } 7640+} 7641+ 7642+bool CefCookieManagerImpl::PutAcceptFileURLSchemeCookiesEnabledInternal( 7643+ bool allow) { 7644+ DCHECK(ValidContext()); 7645+ auto browser_context = GetBrowserContext(browser_context_getter_); 7646+ if (!browser_context) 7647+ return false; 7648+ 7649+ GetCookieManager(browser_context) 7650+ ->AllowFileSchemeCookies( 7651+ allow, 7652+ base::BindOnce(&CefCookieManagerImpl:: 7653+ PutAcceptFileURLSchemeCookiesEnabledCompleted, 7654+ base::Unretained(this), allow)); 7655+ return true; 7656+} 7657+ 7658 bool CefCookieManagerImpl::VisitAllCookiesInternal( 7659 CefRefPtr<CefCookieVisitor> visitor) { 7660 DCHECK(ValidContext()); 7661@@ -308,7 +367,6 @@ bool CefCookieManagerImpl::SetCookieInternal( 7662 auto browser_context = GetBrowserContext(browser_context_getter_); 7663 if (!browser_context) 7664 return false; 7665- 7666 GetCookieManager(browser_context) 7667 ->SetCanonicalCookie(*canonical_cookie, url, options, 7668 base::Bind(SetCookieCallbackImpl, callback)); 7669@@ -318,6 +376,7 @@ bool CefCookieManagerImpl::SetCookieInternal( 7670 bool CefCookieManagerImpl::DeleteCookiesInternal( 7671 const GURL& url, 7672 const CefString& cookie_name, 7673+ bool is_session, 7674 CefRefPtr<CefDeleteCookiesCallback> callback) { 7675 DCHECK(ValidContext()); 7676 DCHECK(url.is_empty() || url.is_valid()); 7677@@ -336,6 +395,11 @@ bool CefCookieManagerImpl::DeleteCookiesInternal( 7678 deletion_filter->cookie_name = cookie_name; 7679 } 7680 7681+ if (is_session) { 7682+ deletion_filter->session_control = 7683+ network::mojom::CookieDeletionSessionControl::SESSION_COOKIES; 7684+ } 7685+ 7686 auto browser_context = GetBrowserContext(browser_context_getter_); 7687 if (!browser_context) 7688 return false; 7689@@ -388,3 +452,10 @@ CefRefPtr<CefCookieManager> CefCookieManager::GetGlobalManager( 7690 CefRefPtr<CefRequestContext> context = CefRequestContext::GetGlobalContext(); 7691 return context ? context->GetCookieManager(callback) : nullptr; 7692 } 7693+ 7694+bool CefCookieManager::CreateCefCookie(const CefString& url, 7695+ const CefString& value, 7696+ CefCookie& cef_cookie) { 7697+ return net_service::MakeCefCookie(GURL(url.ToString()), value.ToString(), 7698+ cef_cookie); 7699+} 7700diff --git a/cef/libcef/browser/net_service/cookie_manager_impl.h b/cef/libcef/browser/net_service/cookie_manager_impl.h 7701index 036cc3edfb..860ec7b90c 100644 7702--- a/cef/libcef/browser/net_service/cookie_manager_impl.h 7703+++ b/cef/libcef/browser/net_service/cookie_manager_impl.h 7704@@ -5,6 +5,8 @@ 7705 #ifndef CEF_LIBCEF_BROWSER_NET_SERVICE_COOKIE_MANAGER_IMPL_H_ 7706 #define CEF_LIBCEF_BROWSER_NET_SERVICE_COOKIE_MANAGER_IMPL_H_ 7707 7708+#include <atomic> 7709+ 7710 #include "include/cef_cookie.h" 7711 #include "libcef/browser/browser_context.h" 7712 #include "libcef/browser/thread_util.h" 7713@@ -23,6 +25,10 @@ class CefCookieManagerImpl : public CefCookieManager { 7714 CefRefPtr<CefCompletionCallback> callback); 7715 7716 // CefCookieManager methods. 7717+ bool IsAcceptCookieAllowed() override; 7718+ void PutAcceptCookieEnabled(bool accept) override; 7719+ bool IsFileURLSchemeCookiesAllowed() override; 7720+ void PutAcceptFileURLSchemeCookiesEnabled(bool allow) override; 7721 bool VisitAllCookies(CefRefPtr<CefCookieVisitor> visitor) override; 7722 bool VisitUrlCookies(const CefString& url, 7723 bool includeHttpOnly, 7724@@ -32,10 +38,13 @@ class CefCookieManagerImpl : public CefCookieManager { 7725 CefRefPtr<CefSetCookieCallback> callback) override; 7726 bool DeleteCookies(const CefString& url, 7727 const CefString& cookie_name, 7728+ bool is_session, 7729 CefRefPtr<CefDeleteCookiesCallback> callback) override; 7730 bool FlushStore(CefRefPtr<CefCompletionCallback> callback) override; 7731 7732 private: 7733+ void PutAcceptFileURLSchemeCookiesEnabledCompleted(bool allow, bool can_change_schemes); 7734+ bool PutAcceptFileURLSchemeCookiesEnabledInternal(bool allow); 7735 bool VisitAllCookiesInternal(CefRefPtr<CefCookieVisitor> visitor); 7736 bool VisitUrlCookiesInternal(const GURL& url, 7737 bool includeHttpOnly, 7738@@ -45,6 +54,7 @@ class CefCookieManagerImpl : public CefCookieManager { 7739 CefRefPtr<CefSetCookieCallback> callback); 7740 bool DeleteCookiesInternal(const GURL& url, 7741 const CefString& cookie_name, 7742+ bool is_session, 7743 CefRefPtr<CefDeleteCookiesCallback> callback); 7744 bool FlushStoreInternal(CefRefPtr<CefCompletionCallback> callback); 7745 7746@@ -58,6 +68,8 @@ class CefCookieManagerImpl : public CefCookieManager { 7747 CefBrowserContext::Getter browser_context_getter_; 7748 7749 bool initialized_ = false; 7750+ std::atomic<bool> accept_cookies_ = true; 7751+ std::atomic<bool> allow_file_scheme_cookies_ = false; 7752 std::vector<base::OnceClosure> init_callbacks_; 7753 7754 IMPLEMENT_REFCOUNTING(CefCookieManagerImpl); 7755diff --git a/cef/libcef/browser/net_service/net_helpers.cc b/cef/libcef/browser/net_service/net_helpers.cc 7756new file mode 100644 7757index 0000000000..e1a9b4cf59 7758--- /dev/null 7759+++ b/cef/libcef/browser/net_service/net_helpers.cc 7760@@ -0,0 +1,53 @@ 7761+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 7762+// Use of this source code is governed by a BSD-style license that can be 7763+// found in the LICENSE file. 7764+ 7765+#include "libcef/browser/net_service/net_helpers.h" 7766+ 7767+#include "url/gurl.h" 7768+#include "include/base/cef_logging.h" 7769+#include "base/strings/string_util.h" 7770+#include "base/path_service.h" 7771+#include "base/base_paths_ohos.h" 7772+#include "base/files/file_path.h" 7773+ 7774+namespace net_service { 7775+ 7776+bool NetHelpers::allow_content_access = false; 7777+bool NetHelpers::allow_file_access = false; 7778+ 7779+bool NetHelpers::ShouldBlockContentUrls() { 7780+ return !allow_content_access; 7781+} 7782+ 7783+bool NetHelpers::ShouldBlockFileUrls() { 7784+ return !allow_file_access; 7785+} 7786+ 7787+bool IsSpecialFileUrl(const GURL& url) { 7788+ if (!url.is_valid() || !url.SchemeIsFile() || !url.has_path()) 7789+ return false; 7790+ base::FilePath OhosAppDataPath; 7791+ if (!base::PathService::Get(base::DIR_OHOS_APP_DATA, &OhosAppDataPath)) { 7792+ return false; 7793+ } 7794+ LOG(INFO) << "AppDataPath:" << OhosAppDataPath.value(); 7795+ 7796+ return base::StartsWith(url.path(), OhosAppDataPath.value(), 7797+ base::CompareCase::SENSITIVE); 7798+} 7799+ 7800+bool IsURLBlocked(const GURL& url) { 7801+ // Part of implementation of NWebPreference.allowContentAccess. 7802+ if (url.SchemeIs(url::kContentScheme) && NetHelpers::ShouldBlockContentUrls()) 7803+ return true; 7804+ 7805+ // Part of implementation of NWebPreference.allowFileAccess. 7806+ if (url.SchemeIsFile() && NetHelpers::ShouldBlockFileUrls()) { 7807+ // Appdatas are always available. 7808+ return !IsSpecialFileUrl(url); 7809+ } 7810+ return false; 7811+} 7812+ 7813+} // namespace net_service 7814diff --git a/cef/libcef/browser/net_service/net_helpers.h b/cef/libcef/browser/net_service/net_helpers.h 7815new file mode 100644 7816index 0000000000..2bd485ad36 7817--- /dev/null 7818+++ b/cef/libcef/browser/net_service/net_helpers.h 7819@@ -0,0 +1,31 @@ 7820+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 7821+// Use of this source code is governed by a BSD-style license that can be 7822+// found in the LICENSE file. 7823+ 7824+#ifndef CEF_LIBCEF_BROWSER_NET_SERVICE_NET_HELPERS_H_ 7825+#define CEF_LIBCEF_BROWSER_NET_SERVICE_NET_HELPERS_H_ 7826+ 7827+class GURL; 7828+ 7829+namespace net_service { 7830+ 7831+#define NETHELPERS_EXPORT __attribute__((visibility("default"))) 7832+ 7833+class NETHELPERS_EXPORT NetHelpers { 7834+public: 7835+ static bool ShouldBlockContentUrls(); 7836+ static bool ShouldBlockFileUrls(); 7837+ 7838+ static bool allow_content_access; 7839+ static bool allow_file_access; 7840+}; 7841+ 7842+bool IsSpecialFileUrl(const GURL& url); 7843+ 7844+// Returns true if the given URL should be aborted with 7845+// net::ERR_ACCESS_DENIED. 7846+bool IsURLBlocked(const GURL& url); 7847+ 7848+} // namespace net_service 7849+ 7850+#endif // CEF_LIBCEF_BROWSER_NET_SERVICE_NET_HELPERS_H_ 7851diff --git a/cef/libcef/browser/net_service/proxy_url_loader_factory.cc b/cef/libcef/browser/net_service/proxy_url_loader_factory.cc 7852index c5546c29f0..6949ca15fb 100644 7853--- a/cef/libcef/browser/net_service/proxy_url_loader_factory.cc 7854+++ b/cef/libcef/browser/net_service/proxy_url_loader_factory.cc 7855@@ -1,16 +1,18 @@ 7856-// Copyright (c) 2019 The Chromium Embedded Framework Authors. Portions 7857-// Copyright (c) 2018 The Chromium Authors. All rights reserved. Use of this 7858-// source code is governed by a BSD-style license that can be found in the 7859-// LICENSE file. 7860+// Copyright (c) 2022 Huawei Device Co., Ltd. 7861+// Copyright (c) 2012 The Chromium Embedded Framework Authors. All rights 7862+// reserved. Use of this source code is governed by a BSD-style license that can 7863+// be found in the LICENSE file. 7864 7865 #include "libcef/browser/net_service/proxy_url_loader_factory.h" 7866 7867 #include "libcef/browser/context.h" 7868 #include "libcef/browser/origin_whitelist_impl.h" 7869 #include "libcef/browser/thread_util.h" 7870+#include "libcef/browser/net_service/net_helpers.h" 7871 #include "libcef/common/cef_switches.h" 7872 #include "libcef/common/net/scheme_registration.h" 7873 #include "libcef/common/net_service/net_service_util.h" 7874+#include "libcef/common/request_impl.h" 7875 7876 #include "base/barrier_closure.h" 7877 #include "base/command_line.h" 7878@@ -62,6 +64,28 @@ bool DisableRequestHandlingForTesting() { 7879 return disabled; 7880 } 7881 7882+CefRefPtr<CefResponse> ExtractHttpErrorResponse(const net::HttpResponseHeaders* headers) { 7883+ CefRefPtr<CefResponse> response = CefResponse::Create(); 7884+ response->SetStatus(headers->response_code()); 7885+ response->SetStatusText(headers->GetStatusText()); 7886+ 7887+ size_t headers_line = 0; 7888+ std::string header_name, header_value; 7889+ CefResponse::HeaderMap map; 7890+ while (headers->EnumerateHeaderLines( 7891+ &headers_line, &header_name, &header_value)) { 7892+ map.insert({CefString(header_name), CefString(header_value)}); 7893+ } 7894+ response->SetHeaderMap(map); 7895+ std::string mime_type; 7896+ std::string encoding; 7897+ headers->GetMimeType(&mime_type); 7898+ headers->GetCharset(&encoding); 7899+ response->SetMimeType(CefString(mime_type)); 7900+ response->SetCharset(CefString(encoding)); 7901+ return response; 7902+} 7903+ 7904 } // namespace 7905 7906 // Owns all of the ProxyURLLoaderFactorys for a given BrowserContext. Since 7907@@ -209,6 +233,12 @@ class InterceptedRequest : public network::mojom::URLLoader, 7908 // Called from InterceptDelegate::OnInputStreamOpenFailed. 7909 void InputStreamFailed(bool restart_needed); 7910 7911+ void OnHttpErrorForUIThread(int32_t, 7912+ CefRefPtr<CefRequest> request, 7913+ bool is_main_frame, 7914+ bool has_user_gesture, 7915+ CefRefPtr<CefResponse> error_response); 7916+ 7917 // mojom::TrustedHeaderClient methods: 7918 void OnBeforeSendHeaders(const net::HttpRequestHeaders& headers, 7919 OnBeforeSendHeadersCallback callback) override; 7920@@ -460,6 +490,12 @@ void InterceptedRequest::Restart() { 7921 } 7922 } 7923 7924+ if (IsURLBlocked(request_.url)) { 7925+ SendErrorAndCompleteImmediately(net::ERR_ACCESS_DENIED); 7926+ LOG(INFO) << "File url access denied! url=" << request_.url.spec(); 7927+ return; 7928+ } 7929+ 7930 const GURL original_url = request_.url; 7931 7932 factory_->request_handler_->OnBeforeRequest( 7933@@ -551,7 +587,23 @@ void InterceptedRequest::OnReceiveEarlyHints( 7934 void InterceptedRequest::OnReceiveResponse( 7935 network::mojom::URLResponseHeadPtr head) { 7936 current_response_ = std::move(head); 7937- 7938+ if (current_response_->headers && current_response_->headers->response_code() >= 400) { 7939+ // The WebViewClient onReceivedHttpError callback will be invoked for any resource 7940+ // (such as main page, iframe, image, etc.) with status code >= 400 7941+ auto error_reponse = ExtractHttpErrorResponse(current_response_->headers.get()); 7942+ CefRefPtr<CefRequestImpl> request = new CefRequestImpl(); 7943+ request->SetURL(CefString(request_.url.spec())); 7944+ request->SetMethod(CefString(request_.method)); 7945+ request->Set(request_.headers); 7946+ content::GetUIThreadTaskRunner({})->PostTask( 7947+ FROM_HERE, base::BindOnce(&InterceptedRequest::OnHttpErrorForUIThread, 7948+ base::Unretained(this), 7949+ id_, 7950+ request, 7951+ request_.is_main_frame, 7952+ request_.has_user_gesture, 7953+ error_reponse)); 7954+ } 7955 if (current_request_uses_header_client_) { 7956 // Use the headers we got from OnHeadersReceived as that'll contain 7957 // Set-Cookie if it existed. 7958@@ -1147,6 +1199,22 @@ void InterceptedRequest::OnUploadProgressACK() { 7959 waiting_for_upload_progress_ack_ = false; 7960 } 7961 7962+void InterceptedRequest::OnHttpErrorForUIThread(int32_t id, 7963+ CefRefPtr<CefRequest> request, 7964+ bool is_main_frame, 7965+ bool has_user_gesture, 7966+ CefRefPtr<CefResponse> error_response) { 7967+ if (!factory_) { 7968+ LOG(INFO) << "factory is invalid"; 7969+ return; 7970+ } 7971+ if (!factory_->request_handler_) { 7972+ LOG(INFO) << "request handler is invalid"; 7973+ return; 7974+ } 7975+ factory_->request_handler_->OnHttpError(id, request, is_main_frame, has_user_gesture, error_response); 7976+} 7977+ 7978 //============================== 7979 // InterceptedRequestHandler 7980 //============================== 7981diff --git a/cef/libcef/browser/net_service/proxy_url_loader_factory.h b/cef/libcef/browser/net_service/proxy_url_loader_factory.h 7982index 16bde50185..5f26acd9ff 100644 7983--- a/cef/libcef/browser/net_service/proxy_url_loader_factory.h 7984+++ b/cef/libcef/browser/net_service/proxy_url_loader_factory.h 7985@@ -1,11 +1,12 @@ 7986-// Copyright (c) 2019 The Chromium Embedded Framework Authors. Portions 7987-// Copyright (c) 2018 The Chromium Authors. All rights reserved. Use of this 7988-// source code is governed by a BSD-style license that can be found in the 7989-// LICENSE file. 7990+// Copyright (c) 2022 Huawei Device Co., Ltd. 7991+// Copyright (c) 2012 The Chromium Embedded Framework Authors. All rights 7992+// reserved. Use of this source code is governed by a BSD-style license that can 7993+// be found in the LICENSE file. 7994 7995 #ifndef CEF_LIBCEF_BROWSER_NET_SERVICE_PROXY_URL_LOADER_FACTORY_H_ 7996 #define CEF_LIBCEF_BROWSER_NET_SERVICE_PROXY_URL_LOADER_FACTORY_H_ 7997 7998+#include "include/internal/cef_ptr.h" 7999 #include "libcef/browser/net_service/stream_reader_url_loader.h" 8000 8001 #include "base/callback.h" 8002@@ -21,6 +22,9 @@ 8003 #include "services/network/public/mojom/network_context.mojom.h" 8004 #include "services/network/public/mojom/url_loader_factory.mojom.h" 8005 8006+class CefRequest; 8007+class CefResponse; 8008+ 8009 namespace content { 8010 class ResourceContext; 8011 } 8012@@ -125,6 +129,13 @@ class InterceptedRequestHandler { 8013 int error_code, 8014 bool safebrowsing_hit) {} 8015 8016+ // Called on received http request error. 8017+ virtual void OnHttpError(int32_t request_id, 8018+ CefRefPtr<CefRequest> request, 8019+ bool is_main_frame, 8020+ bool has_user_gesture, 8021+ CefRefPtr<CefResponse> error_response) {} 8022+ 8023 private: 8024 DISALLOW_COPY_AND_ASSIGN(InterceptedRequestHandler); 8025 }; 8026diff --git a/cef/libcef/browser/net_service/resource_request_handler_wrapper.cc b/cef/libcef/browser/net_service/resource_request_handler_wrapper.cc 8027index 1e57bef431..43d6fd9933 100644 8028--- a/cef/libcef/browser/net_service/resource_request_handler_wrapper.cc 8029+++ b/cef/libcef/browser/net_service/resource_request_handler_wrapper.cc 8030@@ -1,6 +1,7 @@ 8031-// Copyright (c) 2019 The Chromium Embedded Framework Authors. All rights 8032-// reserved. Use of this source code is governed by a BSD-style license that 8033-// can be found in the LICENSE file. 8034+// Copyright (c) 2022 Huawei Device Co., Ltd. 8035+// Copyright (c) 2012 The Chromium Embedded Framework Authors. All rights 8036+// reserved. Use of this source code is governed by a BSD-style license that can 8037+// be found in the LICENSE file. 8038 8039 #include "libcef/browser/net_service/resource_request_handler_wrapper.h" 8040 8041@@ -669,7 +670,6 @@ class InterceptedRequestHandlerWrapper : public InterceptedRequestHandler { 8042 // The request will be handled by the NetworkService. Remove the 8043 // "Accept-Language" header here so that it can be re-added in 8044 // URLRequestHttpJob::AddExtraHeaders with correct ordering applied. 8045- request->headers.RemoveHeader(net::HttpRequestHeaders::kAcceptLanguage); 8046 } 8047 8048 // Continue the request. 8049@@ -993,6 +993,27 @@ class InterceptedRequestHandlerWrapper : public InterceptedRequestHandler { 8050 RemoveState(request_id); 8051 } 8052 8053+ void OnHttpError(int32_t request_id, 8054+ CefRefPtr<CefRequest> request, 8055+ bool is_main_frame, 8056+ bool has_user_gesture, 8057+ CefRefPtr<CefResponse> error_response) override { 8058+ CEF_REQUIRE_UIT(); 8059+ if (!init_state_->browser_) { 8060+ return; 8061+ } 8062+ CefRefPtr<CefClient> client = init_state_->browser_->GetHost()->GetClient(); 8063+ if (!client) { 8064+ return; 8065+ } 8066+ CefRefPtr<CefLoadHandler> load_handler = client->GetLoadHandler(); 8067+ if (!load_handler) { 8068+ return; 8069+ } 8070+ load_handler->OnHttpError(request, is_main_frame, has_user_gesture, 8071+ error_response); 8072+ } 8073+ 8074 private: 8075 void CallHandlerOnComplete(RequestState* state, 8076 const network::URLLoaderCompletionStatus& status) { 8077diff --git a/cef/libcef/browser/net_service/resource_request_handler_wrapper.h b/cef/libcef/browser/net_service/resource_request_handler_wrapper.h 8078index 52d2b27921..60ffeb66bf 100644 8079--- a/cef/libcef/browser/net_service/resource_request_handler_wrapper.h 8080+++ b/cef/libcef/browser/net_service/resource_request_handler_wrapper.h 8081@@ -1,6 +1,7 @@ 8082-// Copyright (c) 2019 The Chromium Embedded Framework Authors. All rights 8083-// reserved. Use of this source code is governed by a BSD-style license that 8084-// can be found in the LICENSE file. 8085+// Copyright (c) 2022 Huawei Device Co., Ltd. 8086+// Copyright (c) 2012 The Chromium Embedded Framework Authors. All rights 8087+// reserved. Use of this source code is governed by a BSD-style license that can 8088+// be found in the LICENSE file. 8089 8090 #ifndef CEF_LIBCEF_BROWSER_NET_SERVICE_RESOURCE_REQUEST_HANDLER_WRAPPER_H_ 8091 #define CEF_LIBCEF_BROWSER_NET_SERVICE_RESOURCE_REQUEST_HANDLER_WRAPPER_H_ 8092diff --git a/cef/libcef/browser/osr/browser_platform_delegate_osr.cc b/cef/libcef/browser/osr/browser_platform_delegate_osr.cc 8093index a086176e84..c298893749 100644 8094--- a/cef/libcef/browser/osr/browser_platform_delegate_osr.cc 8095+++ b/cef/libcef/browser/osr/browser_platform_delegate_osr.cc 8096@@ -157,8 +157,10 @@ void CefBrowserPlatformDelegateOsr::SendMouseWheelEvent( 8097 8098 void CefBrowserPlatformDelegateOsr::SendTouchEvent(const CefTouchEvent& event) { 8099 CefRenderWidgetHostViewOSR* view = GetOSRHostView(); 8100- if (view) 8101- view->SendTouchEvent(event); 8102+ if (!view) 8103+ return; 8104+ view->SendTouchEvent(event); 8105+ SendTouchEventToRender(event); 8106 } 8107 8108 void CefBrowserPlatformDelegateOsr::SendFocusEvent(bool setFocus) { 8109diff --git a/cef/libcef/browser/osr/render_widget_host_view_osr.cc b/cef/libcef/browser/osr/render_widget_host_view_osr.cc 8110index 49c1568285..b8ccb16d4f 100644 8111--- a/cef/libcef/browser/osr/render_widget_host_view_osr.cc 8112+++ b/cef/libcef/browser/osr/render_widget_host_view_osr.cc 8113@@ -1,7 +1,7 @@ 8114-// Copyright (c) 2014 The Chromium Embedded Framework Authors. 8115-// Portions copyright (c) 2012 The Chromium Authors. All rights reserved. 8116-// Use of this source code is governed by a BSD-style license that can be 8117-// found in the LICENSE file. 8118+// Copyright (c) 2022 Huawei Device Co., Ltd. 8119+// Copyright (c) 2012 The Chromium Embedded Framework Authors. All rights 8120+// reserved. Use of this source code is governed by a BSD-style license that can 8121+// be found in the LICENSE file. 8122 8123 #include "libcef/browser/osr/render_widget_host_view_osr.h" 8124 8125@@ -931,6 +931,16 @@ void CefRenderWidgetHostViewOSR::OnRenderFrameMetadataChangedAfterActivation( 8126 weak_ptr_factory_.GetWeakPtr())); 8127 } 8128 } 8129+#if defined(OS_OHOS) 8130+ gfx::SizeF root_layer_size = metadata.root_layer_size; 8131+ if (root_layer_size != root_layer_size_) { 8132+ root_layer_size_ = root_layer_size; 8133+ 8134+ // Send the notification asynchronously. 8135+ CEF_POST_TASK(CEF_UIT, base::Bind(&CefRenderWidgetHostViewOSR::OnRootLayerChanged, 8136+ weak_ptr_factory_.GetWeakPtr())); 8137+ } 8138+#endif 8139 } 8140 8141 std::unique_ptr<viz::HostDisplayClient> 8142@@ -1622,6 +1632,18 @@ void CefRenderWidgetHostViewOSR::OnScrollOffsetChanged() { 8143 is_scroll_offset_changed_pending_ = false; 8144 } 8145 8146+#if defined(OS_OHOS) 8147+void CefRenderWidgetHostViewOSR::OnRootLayerChanged() { 8148+ if (browser_impl_.get()) { 8149+ CefRefPtr<CefRenderHandler> handler = 8150+ browser_impl_->client()->GetRenderHandler(); 8151+ CHECK(handler); 8152+ handler->OnRootLayerChanged(browser_impl_.get(), root_layer_size_.height(), 8153+ root_layer_size_.width()); 8154+ } 8155+} 8156+#endif 8157+ 8158 void CefRenderWidgetHostViewOSR::AddGuestHostView( 8159 CefRenderWidgetHostViewOSR* guest_host) { 8160 guest_host_views_.insert(guest_host); 8161@@ -1684,3 +1706,11 @@ void CefRenderWidgetHostViewOSR::UpdateBackgroundColorFromRenderer( 8162 GetRootLayer()->SetFillsBoundsOpaquely(opaque); 8163 GetRootLayer()->SetColor(color); 8164 } 8165+ 8166+void CefRenderWidgetHostViewOSR::SetDoubleTapSupportEnabled(bool enabled) { 8167+ gesture_provider_.SetDoubleTapSupportForPlatformEnabled(enabled); 8168+} 8169+ 8170+void CefRenderWidgetHostViewOSR::SetMultiTouchZoomSupportEnabled(bool enabled) { 8171+ gesture_provider_.SetMultiTouchZoomSupportEnabled(enabled); 8172+} 8173diff --git a/cef/libcef/browser/osr/render_widget_host_view_osr.h b/cef/libcef/browser/osr/render_widget_host_view_osr.h 8174index 2f63d0d7de..ce0fae2b71 100644 8175--- a/cef/libcef/browser/osr/render_widget_host_view_osr.h 8176+++ b/cef/libcef/browser/osr/render_widget_host_view_osr.h 8177@@ -1,7 +1,7 @@ 8178-// Copyright (c) 2014 The Chromium Embedded Framework Authors. 8179-// Portions copyright (c) 2012 The Chromium Authors. All rights reserved. 8180-// Use of this source code is governed by a BSD-style license that can be 8181-// found in the LICENSE file. 8182+// Copyright (c) 2022 Huawei Device Co., Ltd. 8183+// Copyright (c) 2012 The Chromium Embedded Framework Authors. All rights 8184+// reserved. Use of this source code is governed by a BSD-style license that can 8185+// be found in the LICENSE file. 8186 8187 #ifndef CEF_LIBCEF_BROWSER_OSR_RENDER_WIDGET_HOST_VIEW_OSR_H_ 8188 #define CEF_LIBCEF_BROWSER_OSR_RENDER_WIDGET_HOST_VIEW_OSR_H_ 8189@@ -274,6 +274,9 @@ class CefRenderWidgetHostViewOSR 8190 8191 void ReleaseCompositor(); 8192 8193+ void SetDoubleTapSupportEnabled(bool enabled); 8194+ void SetMultiTouchZoomSupportEnabled(bool enabled); 8195+ 8196 private: 8197 void SetFrameRate(); 8198 bool SetDeviceScaleFactor(); 8199@@ -288,6 +291,10 @@ class CefRenderWidgetHostViewOSR 8200 8201 void OnScrollOffsetChanged(); 8202 8203+#if defined(OS_OHOS) 8204+ void OnRootLayerChanged(); 8205+#endif 8206+ 8207 void AddGuestHostView(CefRenderWidgetHostViewOSR* guest_host); 8208 void RemoveGuestHostView(CefRenderWidgetHostViewOSR* guest_host); 8209 8210@@ -372,6 +379,9 @@ class CefRenderWidgetHostViewOSR 8211 CefRenderWidgetHostViewOSR* popup_host_view_ = nullptr; 8212 CefRenderWidgetHostViewOSR* child_host_view_ = nullptr; 8213 std::set<CefRenderWidgetHostViewOSR*> guest_host_views_; 8214+#if defined(OS_OHOS) 8215+ gfx::SizeF root_layer_size_; 8216+#endif 8217 8218 CefRefPtr<AlloyBrowserHostImpl> browser_impl_; 8219 8220diff --git a/cef/libcef/browser/permission/alloy_access_request.cc b/cef/libcef/browser/permission/alloy_access_request.cc 8221new file mode 100644 8222index 0000000000..c15d3bd73d 8223--- /dev/null 8224+++ b/cef/libcef/browser/permission/alloy_access_request.cc 8225@@ -0,0 +1,26 @@ 8226+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 8227+// Use of this source code is governed by a BSD-style license that can be 8228+// found in the LICENSE file. 8229+ 8230+#include "libcef/browser/permission/alloy_access_request.h" 8231+ 8232+AlloyAccessRequest::AlloyAccessRequest(const CefString& origin, 8233+ int resources, 8234+ cef_permission_callback_t callback) 8235+ : origin_(origin), resources_(resources), callback_(std::move(callback)) {} 8236+ 8237+AlloyAccessRequest::~AlloyAccessRequest() { 8238+ std::move(callback_).Run(false); 8239+} 8240+ 8241+CefString AlloyAccessRequest::Origin() { 8242+ return origin_; 8243+} 8244+ 8245+int AlloyAccessRequest::ResourceAcessId() { 8246+ return resources_; 8247+} 8248+ 8249+void AlloyAccessRequest::ReportRequestResult(bool allowed) { 8250+ std::move(callback_).Run(allowed); 8251+} 8252\ No newline at end of file 8253diff --git a/cef/libcef/browser/permission/alloy_access_request.h b/cef/libcef/browser/permission/alloy_access_request.h 8254new file mode 100644 8255index 0000000000..5342f0a3a4 8256--- /dev/null 8257+++ b/cef/libcef/browser/permission/alloy_access_request.h 8258@@ -0,0 +1,48 @@ 8259+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 8260+// Use of this source code is governed by a BSD-style license that can be 8261+// found in the LICENSE file. 8262+ 8263+#ifndef CEF_LIBCEF_BROWSER_PERMISSION_ALLOY_ACCESS_REQUEST_H_ 8264+#define CEF_LIBCEF_BROWSER_PERMISSION_ALLOY_ACCESS_REQUEST_H_ 8265+ 8266+#include <memory> 8267+ 8268+#include "base/macros.h" 8269+ 8270+#include "include/cef_permission_request.h" 8271+ 8272+// This class is used to handle the permission request which just needs 8273+// a callback with bool parameter to indicate the permission granted or not. It 8274+// works with PermissionRequestHandler. The specific permission request should 8275+// implement the CefAccessRequest. 8276+class AlloyAccessRequest : public CefAccessRequest { 8277+ public: 8278+ enum Resources { 8279+ GEOLOCATION = 1 << 0, 8280+ VIDEO_CAPTURE = 1 << 1, 8281+ AUDIO_CAPTURE = 1 << 2, 8282+ PROTECTED_MEDIA_ID = 1 << 3, 8283+ MIDI_SYSEX = 1 << 4, 8284+ }; 8285+ 8286+ AlloyAccessRequest(const CefString& origin, 8287+ int resources, 8288+ cef_permission_callback_t callback); 8289+ ~AlloyAccessRequest() override; 8290+ 8291+ CefString Origin() override; 8292+ 8293+ int ResourceAcessId() override; 8294+ 8295+ void ReportRequestResult(bool allowed) override; 8296+ 8297+ private: 8298+ const CefString& origin_; 8299+ int resources_; 8300+ cef_permission_callback_t callback_; 8301+ 8302+ IMPLEMENT_REFCOUNTING(AlloyAccessRequest); 8303+ DISALLOW_COPY_AND_ASSIGN(AlloyAccessRequest); 8304+}; 8305+ 8306+#endif // CEF_LIBCEF_BROWSER_PERMISSION_ALLOY_ACCESS_REQUEST_H_ 8307diff --git a/cef/libcef/browser/permission/alloy_geolocation_access.cc b/cef/libcef/browser/permission/alloy_geolocation_access.cc 8308new file mode 100644 8309index 0000000000..e45567a8c9 8310--- /dev/null 8311+++ b/cef/libcef/browser/permission/alloy_geolocation_access.cc 8312@@ -0,0 +1,23 @@ 8313+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 8314+// Use of this source code is governed by a BSD-style license that can be 8315+// found in the LICENSE file. 8316+ 8317+#include "libcef/browser/permission/alloy_geolocation_access.h" 8318+ 8319+#include "base/logging.h" 8320+ 8321+bool AlloyGeolocationAccess::ContainOrigin(const CefString& origin) { 8322+ return false; 8323+} 8324+ 8325+bool AlloyGeolocationAccess::IsOriginAccessEnabled(const CefString& origin) { 8326+ return true; 8327+} 8328+ 8329+void AlloyGeolocationAccess::Enabled(const CefString& origin) {} 8330+ 8331+void AlloyGeolocationAccess::Disabled(const CefString& origin) {} 8332+ 8333+std::string AlloyGeolocationAccess::GetOriginKey(std::string& origin) { 8334+ return pref_prefix_ + origin; 8335+} 8336diff --git a/cef/libcef/browser/permission/alloy_geolocation_access.h b/cef/libcef/browser/permission/alloy_geolocation_access.h 8337new file mode 100644 8338index 0000000000..e36e23e976 8339--- /dev/null 8340+++ b/cef/libcef/browser/permission/alloy_geolocation_access.h 8341@@ -0,0 +1,33 @@ 8342+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 8343+// Use of this source code is governed by a BSD-style license that can be 8344+// found in the LICENSE file. 8345+ 8346+#ifndef CEF_LIBCEF_BROWSER_ALLOY_GEOLOCATION_PERMISSIONS_H_ 8347+#define CEF_LIBCEF_BROWSER_ALLOY_GEOLOCATION_PERMISSIONS_H_ 8348+ 8349+#include <string> 8350+ 8351+#include "base/macros.h" 8352+#include "base/memory/weak_ptr.h" 8353+ 8354+#include "include/cef_permission_request.h" 8355+ 8356+class AlloyGeolocationAccess : public CefGeolocationAcess { 8357+ public: 8358+ AlloyGeolocationAccess() {}; 8359+ ~AlloyGeolocationAccess() {}; 8360+ 8361+ bool ContainOrigin(const CefString& origin) override; 8362+ bool IsOriginAccessEnabled(const CefString& origin) override; 8363+ void Enabled(const CefString& origin) override; 8364+ void Disabled(const CefString& origin) override; 8365+ 8366+ private: 8367+ std::string GetOriginKey(std::string& origin); 8368+ const std::string pref_prefix_ = "AlloyGeolocationAccess%"; 8369+ 8370+ IMPLEMENT_REFCOUNTING(AlloyGeolocationAccess); 8371+ DISALLOW_COPY_AND_ASSIGN(AlloyGeolocationAccess); 8372+}; 8373+ 8374+#endif // CEF_LIBCEF_BROWSER_ALLOY_GEOLOCATION_PERMISSIONS_H_ 8375diff --git a/cef/libcef/browser/permission/alloy_permission_manager.cc b/cef/libcef/browser/permission/alloy_permission_manager.cc 8376new file mode 100644 8377index 0000000000..4b24d0612b 8378--- /dev/null 8379+++ b/cef/libcef/browser/permission/alloy_permission_manager.cc 8380@@ -0,0 +1,422 @@ 8381+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 8382+// Use of this source code is governed by a BSD-style license that can be 8383+// found in the LICENSE file. 8384+ 8385+#include "libcef/browser/permission/alloy_permission_manager.h" 8386+ 8387+#include <memory> 8388+#include <string> 8389+ 8390+#include "base/callback.h" 8391+#include "base/logging.h" 8392+#include "content/public/browser/permission_controller.h" 8393+#include "content/public/browser/permission_type.h" 8394+#include "content/public/browser/render_frame_host.h" 8395+#include "content/public/browser/render_process_host.h" 8396+#include "content/public/browser/web_contents.h" 8397+ 8398+using blink::mojom::PermissionStatus; 8399+using content::PermissionType; 8400+ 8401+using RequestPermissionsCallback = 8402+ base::OnceCallback<void(const std::vector<PermissionStatus>&)>; 8403+ 8404+namespace { 8405+ 8406+void PermissionRequestResponseCallbackWrapper( 8407+ base::OnceCallback<void(PermissionStatus)> callback, 8408+ const std::vector<PermissionStatus>& vector) { 8409+ DCHECK_EQ(vector.size(), 1ul); 8410+ std::move(callback).Run(vector.at(0)); 8411+} 8412+ 8413+} // namespace 8414+ 8415+class AlloyPermissionManager::UnhandledRequest { 8416+ public: 8417+ UnhandledRequest(const std::vector<PermissionType> permissions, 8418+ content::RenderFrameHost* render_frame_host, 8419+ GURL requesting_origin, 8420+ RequestPermissionsCallback callback) 8421+ : permissions_(permissions), 8422+ render_frame_host_(render_frame_host), 8423+ requesting_origin_(requesting_origin), 8424+ callback_(std::move(callback)), 8425+ results_(permissions.size(), PermissionStatus::DENIED), 8426+ cancelled_(false) { 8427+ for (size_t i = 0; i < permissions.size(); ++i) 8428+ permission_index_map_.insert(std::make_pair(permissions[i], i)); 8429+ } 8430+ 8431+ ~UnhandledRequest() = default; 8432+ 8433+ bool HasPermissionType(PermissionType type) { 8434+ return permission_index_map_.find(type) != permission_index_map_.end(); 8435+ } 8436+ 8437+ bool IsCompleted(PermissionType type) const { 8438+ return resolved_permissions_.count(type) != 0; 8439+ } 8440+ 8441+ bool IsCompleted() const { 8442+ return results_.size() == resolved_permissions_.size(); 8443+ } 8444+ 8445+ void SetPermissionStatus(PermissionType type, PermissionStatus status) { 8446+ auto result = permission_index_map_.find(type); 8447+ if (result == permission_index_map_.end()) { 8448+ NOTREACHED(); 8449+ return; 8450+ } 8451+ DCHECK(!IsCompleted()); 8452+ results_[result->second] = status; 8453+ resolved_permissions_.insert(type); 8454+ } 8455+ 8456+ PermissionStatus GetPermissionStatus(PermissionType type) { 8457+ auto result = permission_index_map_.find(type); 8458+ if (result == permission_index_map_.end()) { 8459+ NOTREACHED(); 8460+ return PermissionStatus::DENIED; 8461+ } 8462+ return results_[result->second]; 8463+ } 8464+ 8465+ void Cancel() { cancelled_ = true; } 8466+ 8467+ bool IsCancelled() const { return cancelled_; } 8468+ 8469+ std::vector<PermissionType> permissions_; 8470+ content::RenderFrameHost* render_frame_host_; 8471+ GURL requesting_origin_; 8472+ RequestPermissionsCallback callback_; 8473+ std::vector<PermissionStatus> results_; 8474+ 8475+ private: 8476+ std::map<PermissionType, size_t> permission_index_map_; 8477+ std::set<PermissionType> resolved_permissions_; 8478+ bool cancelled_; 8479+}; 8480+ 8481+AlloyPermissionManager::AlloyPermissionManager() {} 8482+ 8483+AlloyPermissionManager::~AlloyPermissionManager() { 8484+ AbortPermissionRequests(); 8485+} 8486+ 8487+int AlloyPermissionManager::RequestPermission( 8488+ content::PermissionType permission, 8489+ content::RenderFrameHost* render_frame_host, 8490+ const GURL& requesting_origin, 8491+ bool user_gesture, 8492+ base::OnceCallback<void(blink::mojom::PermissionStatus)> callback) { 8493+ return RequestPermissions( 8494+ std::vector<PermissionType>(1, permission), render_frame_host, 8495+ requesting_origin, user_gesture, 8496+ base::BindOnce(&PermissionRequestResponseCallbackWrapper, 8497+ std::move(callback))); 8498+} 8499+ 8500+int AlloyPermissionManager::RequestPermissions( 8501+ const std::vector<content::PermissionType>& permissions, 8502+ content::RenderFrameHost* render_frame_host, 8503+ const GURL& requesting_origin, 8504+ bool user_gesture, 8505+ base::OnceCallback<void(const std::vector<blink::mojom::PermissionStatus>&)> 8506+ callback) { 8507+ if (permissions.empty()) { 8508+ std::move(callback).Run(std::vector<PermissionStatus>()); 8509+ return content::PermissionController::kNoPendingOperation; 8510+ } 8511+ 8512+ auto pending_request = std::make_unique<UnhandledRequest>( 8513+ permissions, render_frame_host, requesting_origin, std::move(callback)); 8514+ std::vector<bool> should_delegate_requests = 8515+ std::vector<bool>(permissions.size(), true); 8516+ for (size_t i = 0; i < permissions.size(); ++i) { 8517+ for (UnhandledRequestsMap::Iterator<UnhandledRequest> it( 8518+ &unhandled_requests_); 8519+ !it.IsAtEnd(); it.Advance()) { 8520+ if (!it.GetCurrentValue()->HasPermissionType(permissions[i]) || 8521+ it.GetCurrentValue()->requesting_origin_ != requesting_origin) { 8522+ continue; 8523+ } 8524+ if (it.GetCurrentValue()->IsCompleted(permissions[i])) { 8525+ pending_request->SetPermissionStatus( 8526+ permissions[i], 8527+ it.GetCurrentValue()->GetPermissionStatus(permissions[i])); 8528+ } 8529+ should_delegate_requests[i] = false; 8530+ break; 8531+ } 8532+ } 8533+ 8534+ // Keep copy of pointer for performing further operations after ownership is 8535+ // transferred to unhandled_requests_ 8536+ UnhandledRequest* pending_request_raw = pending_request.get(); 8537+ const int request_id = unhandled_requests_.Add(std::move(pending_request)); 8538+ 8539+ CefRefPtr<CefBrowserHostBase> browser = 8540+ CefBrowserHostBase::GetBrowserForHost(render_frame_host); 8541+ 8542+ for (size_t i = 0; i < permissions.size(); ++i) { 8543+ if (should_delegate_requests[i]) 8544+ RequestPermissionByType(permissions[i], browser, pending_request_raw, 8545+ request_id); 8546+ } 8547+ 8548+ // If delegate resolve the permission synchronously, all requests could be 8549+ // already resolved here. 8550+ if (!unhandled_requests_.Lookup(request_id)) 8551+ return content::PermissionController::kNoPendingOperation; 8552+ 8553+ // If requests are resolved without calling delegate functions, e.g. 8554+ // PermissionType::MIDI is permitted within the previous for-loop, all 8555+ // requests could be already resolved, but still in the |unhandled_requests_| 8556+ // without invoking the callback. 8557+ if (pending_request_raw->IsCompleted()) { 8558+ std::vector<PermissionStatus> results = pending_request_raw->results_; 8559+ RequestPermissionsCallback completed_callback = 8560+ std::move(pending_request_raw->callback_); 8561+ unhandled_requests_.Remove(request_id); 8562+ std::move(completed_callback).Run(results); 8563+ return content::PermissionController::kNoPendingOperation; 8564+ } 8565+ 8566+ return request_id; 8567+} 8568+ 8569+void AlloyPermissionManager::RequestPermissionByType( 8570+ const content::PermissionType permission_type, 8571+ CefRefPtr<CefBrowserHostBase> browser, 8572+ UnhandledRequest* pending_request_raw, 8573+ const int request_id) { 8574+ switch (permission_type) { 8575+ case PermissionType::GEOLOCATION: 8576+ if (browser) 8577+ browser->AskGeolocationPermission( 8578+ pending_request_raw->requesting_origin_.spec(), 8579+ base::Bind(&OnRequestResponseCallBack, 8580+ weak_ptr_factory_.GetWeakPtr(), request_id, 8581+ permission_type)); 8582+ break; 8583+ case PermissionType::PROTECTED_MEDIA_IDENTIFIER: 8584+ browser->AskProtectedMediaIdentifierPermission( 8585+ pending_request_raw->requesting_origin_.spec(), 8586+ base::Bind(&OnRequestResponseCallBack, 8587+ weak_ptr_factory_.GetWeakPtr(), request_id, 8588+ permission_type)); 8589+ break; 8590+ case PermissionType::MIDI_SYSEX: 8591+ browser->AskMIDISysexPermission( 8592+ pending_request_raw->requesting_origin_.spec(), 8593+ base::Bind(&OnRequestResponseCallBack, 8594+ weak_ptr_factory_.GetWeakPtr(), request_id, 8595+ permission_type)); 8596+ break; 8597+ case PermissionType::AUDIO_CAPTURE: 8598+ case PermissionType::VIDEO_CAPTURE: 8599+ case PermissionType::NOTIFICATIONS: 8600+ case PermissionType::DURABLE_STORAGE: 8601+ case PermissionType::BACKGROUND_SYNC: 8602+ case PermissionType::ACCESSIBILITY_EVENTS: 8603+ case PermissionType::CLIPBOARD_READ_WRITE: 8604+ case PermissionType::CLIPBOARD_SANITIZED_WRITE: 8605+ case PermissionType::PAYMENT_HANDLER: 8606+ case PermissionType::BACKGROUND_FETCH: 8607+ case PermissionType::IDLE_DETECTION: 8608+ case PermissionType::PERIODIC_BACKGROUND_SYNC: 8609+ case PermissionType::NFC: 8610+ case PermissionType::VR: 8611+ case PermissionType::AR: 8612+ case PermissionType::STORAGE_ACCESS_GRANT: 8613+ case PermissionType::CAMERA_PAN_TILT_ZOOM: 8614+ case PermissionType::WINDOW_PLACEMENT: 8615+ case PermissionType::FONT_ACCESS: 8616+ case PermissionType::DISPLAY_CAPTURE: 8617+ case PermissionType::MIDI: 8618+ case PermissionType::SENSORS: 8619+ case PermissionType::WAKE_LOCK_SCREEN: 8620+ case PermissionType::WAKE_LOCK_SYSTEM: 8621+ default: 8622+ NOTREACHED() << "Invalid PermissionType."; 8623+ pending_request_raw->SetPermissionStatus(permission_type, 8624+ PermissionStatus::DENIED); 8625+ break; 8626+ } 8627+} 8628+ 8629+void AlloyPermissionManager::OnRequestResponseCallBack( 8630+ const base::WeakPtr<AlloyPermissionManager>& manager, 8631+ int request_id, 8632+ PermissionType permission, 8633+ bool allowed) { 8634+ // All delegate functions should be cancelled when the manager runs 8635+ // destructor. Therefore |manager| should be always valid here. 8636+ DCHECK(manager); 8637+ PermissionStatus status = 8638+ allowed ? PermissionStatus::GRANTED : PermissionStatus::DENIED; 8639+ UnhandledRequest* pending_request = 8640+ manager->unhandled_requests_.Lookup(request_id); 8641+ std::vector<int> complete_request_ids; 8642+ std::vector< 8643+ std::pair<RequestPermissionsCallback, std::vector<PermissionStatus>>> 8644+ complete_request_pairs; 8645+ for (UnhandledRequestsMap::Iterator<UnhandledRequest> it( 8646+ &manager->unhandled_requests_); 8647+ !it.IsAtEnd(); it.Advance()) { 8648+ if (!it.GetCurrentValue()->HasPermissionType(permission) || 8649+ it.GetCurrentValue()->requesting_origin_ != 8650+ pending_request->requesting_origin_) { 8651+ continue; 8652+ } 8653+ it.GetCurrentValue()->SetPermissionStatus(permission, status); 8654+ if (it.GetCurrentValue()->IsCompleted()) { 8655+ complete_request_ids.push_back(it.GetCurrentKey()); 8656+ if (!it.GetCurrentValue()->IsCancelled()) { 8657+ complete_request_pairs.emplace_back( 8658+ std::move(it.GetCurrentValue()->callback_), 8659+ std::move(it.GetCurrentValue()->results_)); 8660+ } 8661+ } 8662+ } 8663+ for (auto id : complete_request_ids) 8664+ manager->unhandled_requests_.Remove(id); 8665+ for (auto& pair : complete_request_pairs) 8666+ std::move(pair.first).Run(pair.second); 8667+} 8668+ 8669+PermissionStatus AlloyPermissionManager::GetPermissionStatus( 8670+ PermissionType permission, 8671+ const GURL& requesting_origin, 8672+ const GURL& embedding_origin) { 8673+ return PermissionStatus::DENIED; 8674+} 8675+ 8676+PermissionStatus AlloyPermissionManager::GetPermissionStatusForFrame( 8677+ PermissionType permission, 8678+ content::RenderFrameHost* render_frame_host, 8679+ const GURL& requesting_origin) { 8680+ return GetPermissionStatus( 8681+ permission, requesting_origin, 8682+ content::WebContents::FromRenderFrameHost(render_frame_host) 8683+ ->GetLastCommittedURL() 8684+ .GetOrigin()); 8685+} 8686+ 8687+void AlloyPermissionManager::ResetPermission(PermissionType permission, 8688+ const GURL& requesting_origin, 8689+ const GURL& embedding_origin) {} 8690+ 8691+int AlloyPermissionManager::SubscribePermissionStatusChange( 8692+ content::PermissionType permission, 8693+ content::RenderFrameHost* render_frame_host, 8694+ const GURL& requesting_origin, 8695+ base::RepeatingCallback<void(PermissionStatus)> callback) { 8696+ return content::PermissionController::kNoPendingOperation; 8697+} 8698+ 8699+void AlloyPermissionManager::UnsubscribePermissionStatusChange( 8700+ int subscription_id) {} 8701+ 8702+void AlloyPermissionManager::AbortPermissionRequests() { 8703+ std::vector<int> request_ids; 8704+ for (UnhandledRequestsMap::Iterator<UnhandledRequest> it( 8705+ &unhandled_requests_); 8706+ !it.IsAtEnd(); it.Advance()) { 8707+ request_ids.push_back(it.GetCurrentKey()); 8708+ } 8709+ for (auto request_id : request_ids) 8710+ AbortPermissionRequest(request_id); 8711+ DCHECK(unhandled_requests_.IsEmpty()); 8712+} 8713+ 8714+void AlloyPermissionManager::AbortPermissionRequest(int request_id) { 8715+ UnhandledRequest* pending_request = unhandled_requests_.Lookup(request_id); 8716+ if (pending_request == nullptr || pending_request->IsCancelled()) 8717+ return; 8718+ pending_request->Cancel(); 8719+ 8720+ const GURL& requesting_origin = pending_request->requesting_origin_; 8721+ 8722+ CefRefPtr<CefBrowserHostBase> browser = CefBrowserHostBase::GetBrowserForHost( 8723+ pending_request->render_frame_host_); 8724+ 8725+ for (auto permission : pending_request->permissions_) { 8726+ // If the permission was already resolved, we do not need to cancel it. 8727+ if (pending_request->IsCompleted(permission)) 8728+ continue; 8729+ 8730+ // If another pending_request waits for the same permission being resolved, 8731+ // we should not cancel the delegate's request. 8732+ bool should_not_cancel_ = false; 8733+ for (UnhandledRequestsMap::Iterator<UnhandledRequest> it( 8734+ &unhandled_requests_); 8735+ !it.IsAtEnd(); it.Advance()) { 8736+ if (it.GetCurrentValue() != pending_request && 8737+ it.GetCurrentValue()->HasPermissionType(permission) && 8738+ it.GetCurrentValue()->requesting_origin_ == requesting_origin && 8739+ !it.GetCurrentValue()->IsCompleted(permission)) { 8740+ should_not_cancel_ = true; 8741+ break; 8742+ } 8743+ } 8744+ if (should_not_cancel_) 8745+ continue; 8746+ AbortPermissionRequestByType(permission, browser, requesting_origin); 8747+ pending_request->SetPermissionStatus(permission, PermissionStatus::DENIED); 8748+ } 8749+ 8750+ // If there are still active requests, we should not remove request_id here, 8751+ // but just do not invoke a relevant callback when the request is resolved in 8752+ // OnRequestResponseCallBack(). 8753+ if (pending_request->IsCompleted()) 8754+ unhandled_requests_.Remove(request_id); 8755+} 8756+ 8757+void AlloyPermissionManager::AbortPermissionRequestByType( 8758+ const content::PermissionType permission_type, 8759+ CefRefPtr<CefBrowserHostBase> browser, 8760+ const GURL& requesting_origin) { 8761+ switch (permission_type) { 8762+ case PermissionType::GEOLOCATION: 8763+ if (browser) 8764+ browser->AbortAskGeolocationPermission(requesting_origin.spec()); 8765+ break; 8766+ case PermissionType::PROTECTED_MEDIA_IDENTIFIER: 8767+ if (browser) 8768+ browser->AbortAskProtectedMediaIdentifierPermission(requesting_origin.spec()); 8769+ break; 8770+ case PermissionType::MIDI_SYSEX: 8771+ if (browser) 8772+ browser->AbortAskMIDISysexPermission(requesting_origin.spec()); 8773+ break; 8774+ case PermissionType::NOTIFICATIONS: 8775+ case PermissionType::DURABLE_STORAGE: 8776+ case PermissionType::AUDIO_CAPTURE: 8777+ case PermissionType::VIDEO_CAPTURE: 8778+ case PermissionType::BACKGROUND_SYNC: 8779+ case PermissionType::ACCESSIBILITY_EVENTS: 8780+ case PermissionType::CLIPBOARD_READ_WRITE: 8781+ case PermissionType::CLIPBOARD_SANITIZED_WRITE: 8782+ case PermissionType::PAYMENT_HANDLER: 8783+ case PermissionType::BACKGROUND_FETCH: 8784+ case PermissionType::IDLE_DETECTION: 8785+ case PermissionType::PERIODIC_BACKGROUND_SYNC: 8786+ case PermissionType::NFC: 8787+ case PermissionType::VR: 8788+ case PermissionType::AR: 8789+ case PermissionType::STORAGE_ACCESS_GRANT: 8790+ case PermissionType::CAMERA_PAN_TILT_ZOOM: 8791+ case PermissionType::WINDOW_PLACEMENT: 8792+ case PermissionType::FONT_ACCESS: 8793+ case PermissionType::DISPLAY_CAPTURE: 8794+ case PermissionType::MIDI: 8795+ case PermissionType::SENSORS: 8796+ case PermissionType::WAKE_LOCK_SCREEN: 8797+ case PermissionType::WAKE_LOCK_SYSTEM: 8798+ default: 8799+ NOTREACHED() << "Invalid PermissionType."; 8800+ break; 8801+ } 8802+} 8803diff --git a/cef/libcef/browser/permission/alloy_permission_manager.h b/cef/libcef/browser/permission/alloy_permission_manager.h 8804new file mode 100644 8805index 0000000000..e883cb7b9d 8806--- /dev/null 8807+++ b/cef/libcef/browser/permission/alloy_permission_manager.h 8808@@ -0,0 +1,92 @@ 8809+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 8810+// Use of this source code is governed by a BSD-style license that can be 8811+// found in the LICENSE file. 8812+ 8813+#ifndef CEF_LIBCEF_BROWSER_ALLOY_PERMISSION_MANAGER_H_ 8814+#define CEF_LIBCEF_BROWSER_ALLOY_PERMISSION_MANAGER_H_ 8815+ 8816+#include <memory> 8817+ 8818+#include "base/containers/id_map.h" 8819+#include "base/macros.h" 8820+#include "base/memory/weak_ptr.h" 8821+#include "content/public/browser/permission_controller_delegate.h" 8822+#include "libcef/browser/browser_host_base.h" 8823+ 8824+namespace content { 8825+class WebContents; 8826+} 8827+ 8828+class AlloyPermissionManager : public content::PermissionControllerDelegate { 8829+ public: 8830+ AlloyPermissionManager(); 8831+ ~AlloyPermissionManager() override; 8832+ 8833+ // PermissionControllerDelegate implementation. 8834+ int RequestPermission(content::PermissionType permission, 8835+ content::RenderFrameHost* render_frame_host, 8836+ const GURL& requesting_origin, 8837+ bool user_gesture, 8838+ base::OnceCallback<void(blink::mojom::PermissionStatus)> 8839+ callback) override; 8840+ int RequestPermissions( 8841+ const std::vector<content::PermissionType>& permissions, 8842+ content::RenderFrameHost* render_frame_host, 8843+ const GURL& requesting_origin, 8844+ bool user_gesture, 8845+ base::OnceCallback< 8846+ void(const std::vector<blink::mojom::PermissionStatus>&)> callback) 8847+ override; 8848+ blink::mojom::PermissionStatus GetPermissionStatus( 8849+ content::PermissionType permission, 8850+ const GURL& requesting_origin, 8851+ const GURL& embedding_origin) override; 8852+ blink::mojom::PermissionStatus GetPermissionStatusForFrame( 8853+ content::PermissionType permission, 8854+ content::RenderFrameHost* render_frame_host, 8855+ const GURL& requesting_origin) override; 8856+ void ResetPermission(content::PermissionType permission, 8857+ const GURL& requesting_origin, 8858+ const GURL& embedding_origin) override; 8859+ int SubscribePermissionStatusChange( 8860+ content::PermissionType permission, 8861+ content::RenderFrameHost* render_frame_host, 8862+ const GURL& requesting_origin, 8863+ base::RepeatingCallback<void(blink::mojom::PermissionStatus)> callback) 8864+ override; 8865+ void UnsubscribePermissionStatusChange(int subscription_id) override; 8866+ 8867+ protected: 8868+ void AbortPermissionRequest(int request_id); 8869+ void AbortPermissionRequests(); 8870+ 8871+ private: 8872+ class UnhandledRequest; 8873+ using UnhandledRequestsMap = base::IDMap<std::unique_ptr<UnhandledRequest>>; 8874+ 8875+ void RequestPermissionByType(const content::PermissionType permission_type, 8876+ CefRefPtr<CefBrowserHostBase> browser, 8877+ UnhandledRequest* pending_request_raw, 8878+ const int request_id); 8879+ 8880+ void AbortPermissionRequestByType( 8881+ const content::PermissionType permission_type, 8882+ CefRefPtr<CefBrowserHostBase> browser, 8883+ const GURL& requesting_origin); 8884+ // The weak pointer to this is used to clean up any information which is 8885+ // stored in the pending request or result cache maps. However, the callback 8886+ // should be run regardless of whether the class is still alive so the method 8887+ // is static. 8888+ static void OnRequestResponseCallBack( 8889+ const base::WeakPtr<AlloyPermissionManager>& manager, 8890+ int request_id, 8891+ content::PermissionType permission, 8892+ bool allowed); 8893+ 8894+ base::WeakPtrFactory<AlloyPermissionManager> weak_ptr_factory_{this}; 8895+ UnhandledRequestsMap unhandled_requests_; 8896+ 8897+ DISALLOW_COPY_AND_ASSIGN(AlloyPermissionManager); 8898+}; 8899+ 8900+#endif // CEF_LIBCEF_BROWSER_ALLOY_PERMISSION_MANAGER_H_ 8901diff --git a/cef/libcef/browser/permission/alloy_permission_request_handler.cc b/cef/libcef/browser/permission/alloy_permission_request_handler.cc 8902new file mode 100644 8903index 0000000000..3208fb2bf9 8904--- /dev/null 8905+++ b/cef/libcef/browser/permission/alloy_permission_request_handler.cc 8906@@ -0,0 +1,122 @@ 8907+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 8908+// Use of this source code is governed by a BSD-style license that can be 8909+// found in the LICENSE file. 8910+ 8911+#include "libcef/browser/permission/alloy_permission_request_handler.h" 8912+ 8913+#include "content/public/browser/navigation_details.h" 8914+#include "content/public/browser/navigation_entry.h" 8915+#include "content/public/browser/web_contents.h" 8916+#include "include/cef_permission_request.h" 8917+ 8918+namespace { 8919+int GetLastCommittedEntryID(content::WebContents* web_contents) { 8920+ if (!web_contents) 8921+ return 0; 8922+ 8923+ content::NavigationEntry* entry = 8924+ web_contents->GetController().GetLastCommittedEntry(); 8925+ return entry ? entry->GetUniqueID() : 0; 8926+} 8927+} // namespace 8928+ 8929+AlloyPermissionRequestHandler::AlloyPermissionRequestHandler( 8930+ CefRefPtr<CefPermissionRequest> client, 8931+ content::WebContents* web_contents) 8932+ : content::WebContentsObserver(web_contents), 8933+ client_(client), 8934+ contents_unique_id_(GetLastCommittedEntryID(web_contents)) {} 8935+ 8936+AlloyPermissionRequestHandler::~AlloyPermissionRequestHandler() { 8937+ CancelAllRequests(); 8938+} 8939+ 8940+void AlloyPermissionRequestHandler::SendRequest( 8941+ CefRefPtr<CefAccessRequest> request) { 8942+ if (Preauthorized(request->Origin(), request->ResourceAcessId())) { 8943+ request->ReportRequestResult(true); 8944+ return; 8945+ } 8946+ 8947+ requests_.push_back(request); 8948+ client_->OnPermissionRequest(request); 8949+ PruneRequests(); 8950+} 8951+ 8952+void AlloyPermissionRequestHandler::CancelRequest(const CefString& origin, 8953+ int resources) { 8954+ // The request list might have multiple requests with same origin and 8955+ // resources. 8956+ RequestIterator i = FindRequest(origin, resources); 8957+ while (i != requests_.end()) { 8958+ CancelRequestInternal(i); 8959+ requests_.erase(i); 8960+ i = FindRequest(origin, resources); 8961+ } 8962+} 8963+ 8964+void AlloyPermissionRequestHandler::CancelRequestInternal(RequestIterator i) { 8965+ CefRefPtr<CefAccessRequest> request = i->get(); 8966+ if (request) { 8967+ client_->OnPermissionRequestCanceled(request); 8968+ } 8969+} 8970+ 8971+void AlloyPermissionRequestHandler::CancelAllRequests() { 8972+ for (RequestIterator i = requests_.begin(); i != requests_.end(); ++i) 8973+ CancelRequestInternal(i); 8974+} 8975+ 8976+AlloyPermissionRequestHandler::RequestIterator 8977+AlloyPermissionRequestHandler::FindRequest(const CefString& origin, 8978+ int resources) { 8979+ RequestIterator i; 8980+ for (i = requests_.begin(); i != requests_.end(); ++i) { 8981+ if (i->get() && i->get()->Origin() == origin && 8982+ i->get()->ResourceAcessId() == resources) { 8983+ break; 8984+ } 8985+ } 8986+ return i; 8987+} 8988+ 8989+void AlloyPermissionRequestHandler::PreauthorizePermission( 8990+ const CefString& origin, 8991+ int resources) { 8992+ if (!resources) 8993+ return; 8994+ 8995+ if (origin.empty()) { 8996+ LOG(ERROR) << "The origin of preauthorization is empty, ignore it."; 8997+ return; 8998+ } 8999+ 9000+ preauthorized_permission_[origin] |= resources; 9001+} 9002+ 9003+void AlloyPermissionRequestHandler::NavigationEntryCommitted( 9004+ const content::LoadCommittedDetails& details) { 9005+ const ui::PageTransition transition = details.entry->GetTransitionType(); 9006+ if (details.is_navigation_to_different_page() || 9007+ ui::PageTransitionCoreTypeIs(transition, ui::PAGE_TRANSITION_RELOAD) || 9008+ contents_unique_id_ != details.entry->GetUniqueID()) { 9009+ CancelAllRequests(); 9010+ contents_unique_id_ = details.entry->GetUniqueID(); 9011+ } 9012+} 9013+ 9014+void AlloyPermissionRequestHandler::PruneRequests() { 9015+ for (RequestIterator i = requests_.begin(); i != requests_.end();) { 9016+ if (!i->get()) 9017+ i = requests_.erase(i); 9018+ else 9019+ ++i; 9020+ } 9021+} 9022+ 9023+bool AlloyPermissionRequestHandler::Preauthorized(const CefString& origin, 9024+ int resources) { 9025+ std::map<CefString, int>::iterator i = preauthorized_permission_.find(origin); 9026+ 9027+ return i != preauthorized_permission_.end() && i->second == resources; 9028+} 9029\ No newline at end of file 9030diff --git a/cef/libcef/browser/permission/alloy_permission_request_handler.h b/cef/libcef/browser/permission/alloy_permission_request_handler.h 9031new file mode 100644 9032index 0000000000..1e093121eb 9033--- /dev/null 9034+++ b/cef/libcef/browser/permission/alloy_permission_request_handler.h 9035@@ -0,0 +1,72 @@ 9036+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 9037+// Use of this source code is governed by a BSD-style license that can be 9038+// found in the LICENSE file. 9039+ 9040+#ifndef CEF_LIBCEF_BROWSER_ALLOY_PERMISSION_REQUEST_HANDLER_H_ 9041+#define CEF_LIBCEF_BROWSER_ALLOY_PERMISSION_REQUEST_HANDLER_H_ 9042+ 9043+#include <stdint.h> 9044+ 9045+#include <map> 9046+#include <memory> 9047+#include <vector> 9048+ 9049+#include "base/macros.h" 9050+#include "content/public/browser/web_contents_observer.h" 9051+#include "include/cef_permission_request.h" 9052+ 9053+// This class is used to send the permission requests, or cancel ongoing 9054+// requests. 9055+// It is owned by WebContents and has 1x1 mapping to WebContents. All methods 9056+// are running on UI thread. 9057+class AlloyPermissionRequestHandler : public content::WebContentsObserver { 9058+ public: 9059+ AlloyPermissionRequestHandler(CefRefPtr<CefPermissionRequest> client, 9060+ content::WebContents* web_contents); 9061+ ~AlloyPermissionRequestHandler() override; 9062+ 9063+ // Send the given |request| to CefPermissionRequest. 9064+ void SendRequest(CefRefPtr<CefAccessRequest> request); 9065+ 9066+ // Cancel the ongoing request initiated by |origin| for accessing |resources|. 9067+ void CancelRequest(const CefString& origin, int resources); 9068+ 9069+ // Allow |origin| to access the |resources|. 9070+ void PreauthorizePermission(const CefString& origin, int resources); 9071+ 9072+ // WebContentsObserver 9073+ void NavigationEntryCommitted( 9074+ const content::LoadCommittedDetails& load_details) override; 9075+ 9076+ private: 9077+ typedef std::vector<CefRefPtr<CefAccessRequest>>::iterator RequestIterator; 9078+ 9079+ // Return the request initiated by |origin| for accessing |resources|. 9080+ RequestIterator FindRequest(const CefString& origin, int resources); 9081+ 9082+ // Cancel the given request. 9083+ void CancelRequestInternal(RequestIterator i); 9084+ 9085+ void CancelAllRequests(); 9086+ 9087+ // Remove the invalid requests from requests_. 9088+ void PruneRequests(); 9089+ 9090+ // Return true if |origin| were preauthorized to access |resources|. 9091+ bool Preauthorized(const CefString& origin, int resources); 9092+ 9093+ CefRefPtr<CefPermissionRequest> client_; 9094+ 9095+ // A list of ongoing requests. 9096+ std::vector<CefRefPtr<CefAccessRequest>> requests_; 9097+ 9098+ std::map<CefString, int> preauthorized_permission_; 9099+ 9100+ // The unique id of the active NavigationEntry of the WebContents that we were 9101+ // opened for. Used to help expire on requests. 9102+ int contents_unique_id_; 9103+ 9104+ DISALLOW_COPY_AND_ASSIGN(AlloyPermissionRequestHandler); 9105+}; 9106+ 9107+#endif // CEF_LIBCEF_BROWSER_ALLOY_PERMISSION_REQUEST_HANDLER_H_ 9108diff --git a/cef/libcef/browser/prefs/renderer_prefs.cc b/cef/libcef/browser/prefs/renderer_prefs.cc 9109index d6521e2c15..7ed5929a4e 100644 9110--- a/cef/libcef/browser/prefs/renderer_prefs.cc 9111+++ b/cef/libcef/browser/prefs/renderer_prefs.cc 9112@@ -1,4 +1,5 @@ 9113-// Copyright (c) 2010 The Chromium Embedded Framework Authors. All rights 9114+// Copyright (c) 2022 Huawei Device Co., Ltd. 9115+// Copyright (c) 2012 The Chromium Embedded Framework Authors. All rights 9116 // reserved. Use of this source code is governed by a BSD-style license that can 9117 // be found in the LICENSE file. 9118 9119@@ -9,6 +10,7 @@ 9120 #include "libcef/browser/alloy/alloy_browser_host_impl.h" 9121 #include "libcef/browser/context.h" 9122 #include "libcef/browser/extensions/browser_extensions_util.h" 9123+#include "libcef/browser/osr/render_widget_host_view_osr.h" 9124 #include "libcef/common/cef_switches.h" 9125 #include "libcef/common/extensions/extensions_util.h" 9126 #include "libcef/features/runtime_checks.h" 9127@@ -32,6 +34,7 @@ 9128 #include "components/prefs/pref_store.h" 9129 #include "content/public/browser/render_process_host.h" 9130 #include "content/public/browser/render_view_host.h" 9131+#include "content/public/browser/render_widget_host.h" 9132 #include "content/public/browser/site_instance.h" 9133 #include "content/public/browser/web_contents.h" 9134 #include "content/public/common/url_constants.h" 9135@@ -226,6 +229,27 @@ bool UpdatePreferredColorScheme(blink::web_pref::WebPreferences* web_prefs, 9136 return old_preferred_color_scheme != web_prefs->preferred_color_scheme; 9137 } 9138 9139+void SetCefSpecialPrefs(content::RenderViewHost* rvh, 9140+ CefRefPtr<AlloyBrowserHostImpl> browser, 9141+ blink::web_pref::WebPreferences& web) { 9142+ auto frame = browser->GetMainFrame(); 9143+ if (frame && frame->IsValid() && 9144+ (browser->settings().text_size_percent > 0)) { 9145+ web.force_enable_zoom = false; 9146+ static_cast<CefFrameHostImpl*>(frame.get()) 9147+ ->PutZoomingForTextFactor(browser->settings().text_size_percent / 9148+ 100.0f); 9149+ } 9150+ CefRenderWidgetHostViewOSR* view = 9151+ static_cast<CefRenderWidgetHostViewOSR*>(rvh->GetWidget()->GetView()); 9152+ if (view) { 9153+ view->SetDoubleTapSupportEnabled( 9154+ browser->settings().supports_double_tap_zoom); 9155+ view->SetMultiTouchZoomSupportEnabled( 9156+ browser->settings().supports_multi_touch_zoom); 9157+ } 9158+} 9159+ 9160 } // namespace 9161 9162 void SetCommandLinePrefDefaults(CommandLinePrefStore* prefs) { 9163@@ -323,7 +347,7 @@ void SetCefPrefs(const CefBrowserSettings& cef, 9164 web.allow_universal_access_from_file_urls); 9165 SET_STATE(cef.file_access_from_file_urls, 9166 web.allow_file_access_from_file_urls); 9167- SET_STATE(cef.image_loading, web.loads_images_automatically); 9168+ SET_STATE(cef.image_loading, web.images_enabled); 9169 SET_STATE(cef.image_shrink_standalone_to_fit, 9170 web.shrinks_standalone_images_to_fit); 9171 SET_STATE(cef.text_area_resize, web.text_areas_are_resizable); 9172@@ -338,6 +362,16 @@ void SetCefPrefs(const CefBrowserSettings& cef, 9173 web.webgl1_enabled = false; 9174 web.webgl2_enabled = false; 9175 } 9176+ 9177+ /* ohos webview begin*/ 9178+ SET_STATE(cef.force_dark_mode_enabled, web.force_dark_mode_enabled); 9179+ SET_STATE(cef.loads_images_automatically, web.loads_images_automatically); 9180+ SET_STATE(cef.allow_running_insecure_content, 9181+ web.allow_running_insecure_content); 9182+ SET_STATE(cef.strict_mixed_content_checking, 9183+ web.strict_mixed_content_checking); 9184+ SET_STATE(cef.allow_mixed_content_upgrades, web.allow_mixed_content_upgrades); 9185+ /* ohos webview end */ 9186 } 9187 9188 void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, 9189@@ -418,6 +452,8 @@ void PopulateWebPreferences(content::RenderViewHost* rvh, 9190 // Set preferences based on CefBrowserSettings. 9191 SetCefPrefs(browser->settings(), web); 9192 9193+ SetCefSpecialPrefs(rvh, browser, web); 9194+ 9195 web.picture_in_picture_enabled = browser->IsPictureInPictureSupported(); 9196 9197 // Set the background color for the WebView. 9198diff --git a/cef/libcef/browser/prefs/renderer_prefs.h b/cef/libcef/browser/prefs/renderer_prefs.h 9199index 00ab48d225..a374247416 100644 9200--- a/cef/libcef/browser/prefs/renderer_prefs.h 9201+++ b/cef/libcef/browser/prefs/renderer_prefs.h 9202@@ -1,4 +1,5 @@ 9203-// Copyright (c) 2010 The Chromium Embedded Framework Authors. All rights 9204+// Copyright (c) 2022 Huawei Device Co., Ltd. 9205+// Copyright (c) 2012 The Chromium Embedded Framework Authors. All rights 9206 // reserved. Use of this source code is governed by a BSD-style license that can 9207 // be found in the LICENSE file. 9208 9209diff --git a/cef/libcef/common/cef_messages.h b/cef/libcef/common/cef_messages.h 9210index 82f161dd6f..9065e80cfb 100644 9211--- a/cef/libcef/common/cef_messages.h 9212+++ b/cef/libcef/common/cef_messages.h 9213@@ -46,6 +46,23 @@ struct ParamTraits<scoped_refptr<net::UploadData>> { 9214 9215 // Common types. 9216 9217+// Parameters structure for a hittestdata. 9218+IPC_STRUCT_BEGIN(Cef_HitData_Params) 9219+ IPC_STRUCT_MEMBER(int, type) 9220+ IPC_STRUCT_MEMBER(std::string, extra_data_for_type) 9221+ IPC_STRUCT_MEMBER(std::u16string, href) 9222+ IPC_STRUCT_MEMBER(std::u16string, anchor_text) 9223+ IPC_STRUCT_MEMBER(GURL, img_src) 9224+IPC_STRUCT_END() 9225+ 9226+// Parameters structure for a point event. 9227+IPC_STRUCT_BEGIN(Cef_TouchEvent_Params) 9228+ IPC_STRUCT_MEMBER(float, x) 9229+ IPC_STRUCT_MEMBER(float, y) 9230+ IPC_STRUCT_MEMBER(int, width) 9231+ IPC_STRUCT_MEMBER(int, height) 9232+IPC_STRUCT_END() 9233+ 9234 // Parameters structure for a request. 9235 IPC_STRUCT_BEGIN(Cef_Request_Params) 9236 // Unique request id to match requests and responses. 9237@@ -140,9 +157,15 @@ IPC_MESSAGE_ROUTED1(CefMsg_Response, Cef_Response_Params) 9238 // has been processed. 9239 IPC_MESSAGE_ROUTED1(CefMsg_ResponseAck, int /* request_id */) 9240 9241+// Sets the zoom factor for text only. Used in layout modes other than 9242+// Text Autosizing. 9243+IPC_MESSAGE_ROUTED1(CefMsg_PutZoomingForTextFactor, float /* zoom_factor */) 9244+ 9245 // Tells the renderer that loading has stopped. 9246 IPC_MESSAGE_ROUTED0(CefMsg_DidStopLoading) 9247 9248+// Tell the renderer that touch event has happened. 9249+IPC_MESSAGE_ROUTED1(CefMsg_TouchEvent, Cef_TouchEvent_Params) 9250 // Notification that a move or resize of the renderer's containing window has 9251 // started. Used on Windows and Linux with the Alloy runtime, and was 9252 // previously handled by RenderViewHost::NotifyMoveOrResizeStarted() prior to 9253@@ -207,3 +230,6 @@ IPC_MESSAGE_ROUTED1(CefHostMsg_ResponseAck, int /* request_id */) 9254 // Sent by the renderer when the draggable regions are updated. 9255 IPC_MESSAGE_ROUTED1(CefHostMsg_UpdateDraggableRegions, 9256 std::vector<Cef_DraggableRegion_Params> /* regions */) 9257+ 9258+// Sent by the renderer when the hit data updated. 9259+IPC_MESSAGE_ROUTED1(CefHostMsg_HitData, Cef_HitData_Params) 9260diff --git a/cef/libcef/common/javascript/oh_gin_javascript_bridge_errors.cc b/cef/libcef/common/javascript/oh_gin_javascript_bridge_errors.cc 9261new file mode 100644 9262index 0000000000..c583f8f893 9263--- /dev/null 9264+++ b/cef/libcef/common/javascript/oh_gin_javascript_bridge_errors.cc 9265@@ -0,0 +1,34 @@ 9266+// Copyright (c) 2022 Huawei Device Co., Ltd. 9267+// Copyright 2018 The Chromium Authors. All rights reserved. 9268+// Use of this source code is governed by a BSD-style license that can be 9269+// found in the LICENSE file. 9270+ 9271+#include "cef/libcef/common/javascript/oh_gin_javascript_bridge_errors.h" 9272+ 9273+#include "base/notreached.h" 9274+namespace NWEB { 9275+const char* OhGinJavascriptBridgeErrorToString( 9276+ OhGinJavascriptBridgeError error) { 9277+ switch (error) { 9278+ case kOhGinJavascriptBridgeNoError: 9279+ return "No error"; 9280+ case kOhGinJavascriptBridgeUnknownObjectId: 9281+ return "Unknown Ace object ID"; 9282+ case kOhGinJavascriptBridgeObjectIsGone: 9283+ return "Ace object is gone"; 9284+ case kOhGinJavascriptBridgeMethodNotFound: 9285+ return "Method not found"; 9286+ case kOhGinJavascriptBridgeAccessToObjectGetClassIsBlocked: 9287+ return "Access to Ace is blocked"; 9288+ case kOhGinJavascriptBridgeJavaExceptionRaised: 9289+ return "Ace exception was raised during method invocation"; 9290+ case kOhGinJavascriptBridgeNonAssignableTypes: 9291+ return "The type of the object passed to the method is incompatible " 9292+ "with the type of method's argument"; 9293+ case kOhGinJavascriptBridgeRenderFrameDeleted: 9294+ return "RenderFrame has been deleted"; 9295+ } 9296+ NOTREACHED(); 9297+ return "Unknown error"; 9298+} 9299+} // namespace NWEB 9300\ No newline at end of file 9301diff --git a/cef/libcef/common/javascript/oh_gin_javascript_bridge_errors.h b/cef/libcef/common/javascript/oh_gin_javascript_bridge_errors.h 9302new file mode 100644 9303index 0000000000..5ccc0196b9 9304--- /dev/null 9305+++ b/cef/libcef/common/javascript/oh_gin_javascript_bridge_errors.h 9306@@ -0,0 +1,25 @@ 9307+// Copyright (c) 2022 Huawei Device Co., Ltd. 9308+// Copyright 2018 The Chromium Authors. All rights reserved. 9309+// Use of this source code is governed by a BSD-style license that can be 9310+// found in the LICENSE file. 9311+ 9312+#ifndef OH_GIN_JAVASCRIPT_BRIDGE_ERRORS_H 9313+#define OH_GIN_JAVASCRIPT_BRIDGE_ERRORS_H 9314+ 9315+namespace NWEB { 9316+enum OhGinJavascriptBridgeError { 9317+ kOhGinJavascriptBridgeNoError = 0, 9318+ kOhGinJavascriptBridgeUnknownObjectId, 9319+ kOhGinJavascriptBridgeObjectIsGone, 9320+ kOhGinJavascriptBridgeMethodNotFound, 9321+ kOhGinJavascriptBridgeAccessToObjectGetClassIsBlocked, 9322+ kOhGinJavascriptBridgeJavaExceptionRaised, 9323+ kOhGinJavascriptBridgeNonAssignableTypes, 9324+ kOhGinJavascriptBridgeRenderFrameDeleted, 9325+ kOhGinJavascriptBridgeErrorLast = kOhGinJavascriptBridgeRenderFrameDeleted 9326+}; 9327+ 9328+__attribute__((visibility("default"))) const char* 9329+OhGinJavascriptBridgeErrorToString(OhGinJavascriptBridgeError error); 9330+} // namespace NWEB 9331+#endif 9332diff --git a/cef/libcef/common/javascript/oh_gin_javascript_bridge_message_generator.cc b/cef/libcef/common/javascript/oh_gin_javascript_bridge_message_generator.cc 9333new file mode 100644 9334index 0000000000..a87ad45510 9335--- /dev/null 9336+++ b/cef/libcef/common/javascript/oh_gin_javascript_bridge_message_generator.cc 9337@@ -0,0 +1,29 @@ 9338+// Copyright (c) 2022 Huawei Device Co., Ltd. 9339+// Copyright 2018 The Chromium Authors. All rights reserved. 9340+// Use of this source code is governed by a BSD-style license that can be 9341+// found in the LICENSE file. 9342+ 9343+#define IPC_MESSAGE_IMPL 9344+#include "libcef/common/javascript/oh_gin_javascript_bridge_message_generator.h" 9345+ 9346+// Generate constructors. 9347+#include "ipc/struct_constructor_macros.h" 9348+#include "libcef/common/javascript/oh_gin_javascript_bridge_message_generator.h" 9349+ 9350+// Generate param traits write methods. 9351+#include "ipc/param_traits_write_macros.h" 9352+namespace IPC { 9353+#include "libcef/common/javascript/oh_gin_javascript_bridge_message_generator.h" 9354+} // namespace IPC 9355+ 9356+// Generate param traits read methods. 9357+#include "ipc/param_traits_read_macros.h" 9358+namespace IPC { 9359+#include "libcef/common/javascript/oh_gin_javascript_bridge_message_generator.h" 9360+} // namespace IPC 9361+ 9362+// Generate param traits log methods. 9363+#include "ipc/param_traits_log_macros.h" 9364+namespace IPC { 9365+#include "libcef/common/javascript/oh_gin_javascript_bridge_message_generator.h" 9366+} // namespace IPC 9367\ No newline at end of file 9368diff --git a/cef/libcef/common/javascript/oh_gin_javascript_bridge_message_generator.h b/cef/libcef/common/javascript/oh_gin_javascript_bridge_message_generator.h 9369new file mode 100644 9370index 0000000000..aa7b64bd1d 9371--- /dev/null 9372+++ b/cef/libcef/common/javascript/oh_gin_javascript_bridge_message_generator.h 9373@@ -0,0 +1,6 @@ 9374+// Copyright (c) 2022 Huawei Device Co., Ltd. 9375+// Copyright 2018 The Chromium Authors. All rights reserved. 9376+// Use of this source code is governed by a BSD-style license that can be 9377+// found in the LICENSE file. 9378+ 9379+#include "libcef/common/javascript/oh_gin_javascript_bridge_messages.h" 9380\ No newline at end of file 9381diff --git a/cef/libcef/common/javascript/oh_gin_javascript_bridge_messages.h b/cef/libcef/common/javascript/oh_gin_javascript_bridge_messages.h 9382new file mode 100644 9383index 0000000000..d663f8d0fe 9384--- /dev/null 9385+++ b/cef/libcef/common/javascript/oh_gin_javascript_bridge_messages.h 9386@@ -0,0 +1,49 @@ 9387+// Copyright (c) 2022 Huawei Device Co., Ltd. 9388+// Copyright 2018 The Chromium Authors. All rights reserved. 9389+// Use of this source code is governed by a BSD-style license that can be 9390+// found in the LICENSE file. 9391+ 9392+// IPC messages for injected Javascript objects (Gin-based implementation). 9393+#include <stdint.h> 9394+#include "cef/libcef/common/javascript/oh_gin_javascript_bridge_errors.h" 9395+#include "content/common/content_export.h" 9396+#include "ipc/ipc_message_macros.h" 9397+#include "ipc/ipc_message_start.h" 9398+ 9399+#undef IPC_MESSAGE_EXPORT 9400+#define IPC_MESSAGE_EXPORT CONTENT_EXPORT 9401+#define IPC_MESSAGE_START OhGinJavascriptBridgeMsgStart 9402+ 9403+IPC_ENUM_TRAITS_MAX_VALUE(NWEB::OhGinJavascriptBridgeError, 9404+ NWEB::kOhGinJavascriptBridgeErrorLast) 9405+ 9406+// Sent from browser to renderer to add a Javascript object with the given 9407+// name. 9408+ 9409+IPC_MESSAGE_ROUTED2(OhGinJavascriptBridgeMsg_AddNamedObject, 9410+ std::string /* name */, 9411+ int32_t /* object_id */) 9412+ 9413+IPC_MESSAGE_ROUTED1(OhGinJavascriptBridgeMsg_RemoveNamedObject, 9414+ std::string /* name */) 9415+ 9416+IPC_SYNC_MESSAGE_ROUTED1_1(OhGinJavascriptBridgeHostMsg_GetMethods, 9417+ int32_t /* object_id */, 9418+ std::set<std::string> /* returned_method_names */) 9419+ 9420+// Sent from renderer to browser to find out, if an object has a method with 9421+// the given name. 9422+IPC_SYNC_MESSAGE_ROUTED2_1(OhGinJavascriptBridgeHostMsg_HasMethod, 9423+ int32_t /* object_id */, 9424+ std::string /* method_name */, 9425+ bool /* result */) 9426+ 9427+IPC_SYNC_MESSAGE_ROUTED3_2(OhGinJavascriptBridgeHostMsg_InvokeMethod, 9428+ int32_t /* object_id */, 9429+ std::string /* method_name */, 9430+ base::ListValue /* arguments */, 9431+ base::ListValue /* result */, 9432+ NWEB::OhGinJavascriptBridgeError /* error_code */) 9433+ 9434+IPC_MESSAGE_ROUTED1(OhGinJavascriptBridgeHostMsg_ObjectWrapperDeleted, 9435+ int32_t /* object_id */) 9436\ No newline at end of file 9437diff --git a/cef/libcef/common/javascript/oh_gin_javascript_bridge_value.cc b/cef/libcef/common/javascript/oh_gin_javascript_bridge_value.cc 9438new file mode 100644 9439index 0000000000..13250be521 9440--- /dev/null 9441+++ b/cef/libcef/common/javascript/oh_gin_javascript_bridge_value.cc 9442@@ -0,0 +1,147 @@ 9443+// Copyright (c) 2022 Huawei Device Co., Ltd. 9444+// Copyright 2018 The Chromium Authors. All rights reserved. 9445+// Use of this source code is governed by a BSD-style license that can be 9446+// found in the LICENSE file. 9447+ 9448+#include "cef/libcef/common/javascript/oh_gin_javascript_bridge_value.h" 9449+ 9450+#include "base/containers/span.h" 9451+ 9452+namespace { 9453+ 9454+// The magic value is only used to prevent accidental attempts of reading 9455+// OhGinJavascriptBridgeValue from a random BinaryValue. 9456+// OhGinJavascriptBridgeValue is not intended for scenarios where with 9457+// BinaryValues are being used for anything else than holding 9458+// OhGinJavascriptBridgeValue s. If a need for such scenario ever emerges, the 9459+// best solution would be to extend OhGinJavascriptBridgeValue to be able to 9460+// wrap raw BinaryValues. 9461+const uint32_t kHeaderMagic = 0xBEEFCAFE; 9462+ 9463+#pragma pack(push, 4) 9464+struct Header : public base::Pickle::Header { 9465+ uint32_t magic; 9466+ int32_t type; 9467+}; 9468+#pragma pack(pop) 9469+ 9470+} // namespace 9471+ 9472+// static 9473+std::unique_ptr<base::Value> 9474+OhGinJavascriptBridgeValue ::CreateUndefinedValue() { 9475+ OhGinJavascriptBridgeValue gin_value(TYPE_UNDEFINED); 9476+ return gin_value.SerializeToBinaryValue(); 9477+} 9478+ 9479+// static 9480+std::unique_ptr<base::Value> OhGinJavascriptBridgeValue ::CreateNonFiniteValue( 9481+ float in_value) { 9482+ OhGinJavascriptBridgeValue gin_value(TYPE_NONFINITE); 9483+ gin_value.pickle_.WriteFloat(in_value); 9484+ return gin_value.SerializeToBinaryValue(); 9485+} 9486+ 9487+// static 9488+std::unique_ptr<base::Value> OhGinJavascriptBridgeValue ::CreateNonFiniteValue( 9489+ double in_value) { 9490+ return CreateNonFiniteValue(static_cast<float>(in_value)); 9491+} 9492+ 9493+// static 9494+std::unique_ptr<base::Value> OhGinJavascriptBridgeValue ::CreateObjectIDValue( 9495+ int32_t in_value) { 9496+ OhGinJavascriptBridgeValue gin_value(TYPE_OBJECT_ID); 9497+ gin_value.pickle_.WriteInt(in_value); 9498+ return gin_value.SerializeToBinaryValue(); 9499+} 9500+ 9501+// static 9502+std::unique_ptr<base::Value> OhGinJavascriptBridgeValue ::CreateUInt32Value( 9503+ uint32_t in_value) { 9504+ OhGinJavascriptBridgeValue gin_value(TYPE_UINT32); 9505+ gin_value.pickle_.WriteUInt32(in_value); 9506+ return gin_value.SerializeToBinaryValue(); 9507+} 9508+ 9509+// static 9510+bool OhGinJavascriptBridgeValue ::ContainsOhGinJavascriptBridgeValue( 9511+ const base::Value* value) { 9512+ if (!value->is_blob()) 9513+ return false; 9514+ if (value->GetBlob().size() < sizeof(Header)) 9515+ return false; 9516+ base::Pickle pickle(reinterpret_cast<const char*>(value->GetBlob().data()), 9517+ value->GetBlob().size()); 9518+ // Broken binary value: payload or header size is wrong 9519+ if (!pickle.data() || pickle.size() - pickle.payload_size() != sizeof(Header)) 9520+ return false; 9521+ Header* header = pickle.headerT<Header>(); 9522+ return (header->magic == kHeaderMagic && header->type >= TYPE_FIRST_VALUE && 9523+ header->type < TYPE_LAST_VALUE); 9524+} 9525+ 9526+// static 9527+std::unique_ptr<const OhGinJavascriptBridgeValue> 9528+OhGinJavascriptBridgeValue ::FromValue(const base::Value* value) { 9529+ return std::unique_ptr<const OhGinJavascriptBridgeValue>( 9530+ value->is_blob() ? new OhGinJavascriptBridgeValue(value) : NULL); 9531+} 9532+ 9533+OhGinJavascriptBridgeValue ::Type OhGinJavascriptBridgeValue ::GetType() const { 9534+ const Header* header = pickle_.headerT<Header>(); 9535+ DCHECK(header->type >= TYPE_FIRST_VALUE && header->type < TYPE_LAST_VALUE); 9536+ return static_cast<Type>(header->type); 9537+} 9538+ 9539+bool OhGinJavascriptBridgeValue ::IsType(Type type) const { 9540+ return GetType() == type; 9541+} 9542+ 9543+bool OhGinJavascriptBridgeValue ::GetAsNonFinite(float* out_value) const { 9544+ if (GetType() == TYPE_NONFINITE) { 9545+ base::PickleIterator iter(pickle_); 9546+ return iter.ReadFloat(out_value); 9547+ } else { 9548+ return false; 9549+ } 9550+} 9551+ 9552+bool OhGinJavascriptBridgeValue ::GetAsObjectID(int32_t* out_object_id) const { 9553+ if (GetType() == TYPE_OBJECT_ID) { 9554+ base::PickleIterator iter(pickle_); 9555+ return iter.ReadInt(out_object_id); 9556+ } else { 9557+ return false; 9558+ } 9559+} 9560+ 9561+bool OhGinJavascriptBridgeValue ::GetAsUInt32(uint32_t* out_value) const { 9562+ if (GetType() == TYPE_UINT32) { 9563+ base::PickleIterator iter(pickle_); 9564+ return iter.ReadUInt32(out_value); 9565+ } else { 9566+ return false; 9567+ } 9568+} 9569+ 9570+OhGinJavascriptBridgeValue ::OhGinJavascriptBridgeValue(Type type) 9571+ : pickle_(sizeof(Header)) { 9572+ Header* header = pickle_.headerT<Header>(); 9573+ header->magic = kHeaderMagic; 9574+ header->type = type; 9575+} 9576+ 9577+OhGinJavascriptBridgeValue ::OhGinJavascriptBridgeValue( 9578+ const base::Value* value) 9579+ : pickle_(reinterpret_cast<const char*>(value->GetBlob().data()), 9580+ value->GetBlob().size()) { 9581+ DCHECK(ContainsOhGinJavascriptBridgeValue(value)); 9582+} 9583+ 9584+std::unique_ptr<base::Value> 9585+OhGinJavascriptBridgeValue ::SerializeToBinaryValue() { 9586+ const auto* data = static_cast<const uint8_t*>(pickle_.data()); 9587+ return base::Value::ToUniquePtrValue( 9588+ base::Value(base::make_span(data, pickle_.size()))); 9589+} 9590diff --git a/cef/libcef/common/javascript/oh_gin_javascript_bridge_value.h b/cef/libcef/common/javascript/oh_gin_javascript_bridge_value.h 9591new file mode 100644 9592index 0000000000..bf862f1c42 9593--- /dev/null 9594+++ b/cef/libcef/common/javascript/oh_gin_javascript_bridge_value.h 9595@@ -0,0 +1,66 @@ 9596+// Copyright (c) 2022 Huawei Device Co., Ltd. 9597+// Copyright 2018 The Chromium Authors. All rights reserved. 9598+// Use of this source code is governed by a BSD-style license that can be 9599+// found in the LICENSE file. 9600+ 9601+#ifndef OH_GIN_JAVASCRIPT_BRIDGE_VALUE_H 9602+#define OH_GIN_JAVASCRIPT_BRIDGE_VALUE_H 9603+ 9604+#include <stdint.h> 9605+ 9606+#include <memory> 9607+ 9608+#include "base/pickle.h" 9609+#include "base/values.h" 9610+ 9611+// In Javascript Bridge, we need to pass some kinds of values that can't 9612+// be put into base::Value. And since base::Value is not extensible, 9613+// we transfer these special values via base::Value. 9614+ 9615+class OhGinJavascriptBridgeValue { 9616+ public: 9617+ enum Type { 9618+ TYPE_FIRST_VALUE = 0, 9619+ // JavaScript 'undefined' 9620+ TYPE_UNDEFINED = 0, 9621+ // JavaScript NaN and Infinity 9622+ TYPE_NONFINITE, 9623+ // Bridge Object ID 9624+ TYPE_OBJECT_ID, 9625+ // Uint32 type 9626+ TYPE_UINT32, 9627+ TYPE_LAST_VALUE 9628+ }; 9629+ 9630+ OhGinJavascriptBridgeValue(const OhGinJavascriptBridgeValue&) = delete; 9631+ OhGinJavascriptBridgeValue& operator=(const OhGinJavascriptBridgeValue&) = 9632+ delete; 9633+ 9634+ // Serialization 9635+ static std::unique_ptr<base::Value> CreateUndefinedValue(); 9636+ static std::unique_ptr<base::Value> CreateNonFiniteValue(float in_value); 9637+ static std::unique_ptr<base::Value> CreateNonFiniteValue(double in_value); 9638+ static std::unique_ptr<base::Value> CreateObjectIDValue(int32_t in_value); 9639+ static std::unique_ptr<base::Value> CreateUInt32Value(uint32_t in_value); 9640+ 9641+ // De-serialization 9642+ static bool ContainsOhGinJavascriptBridgeValue(const base::Value* value); 9643+ static std::unique_ptr<const OhGinJavascriptBridgeValue> FromValue( 9644+ const base::Value* value); 9645+ 9646+ Type GetType() const; 9647+ bool IsType(Type type) const; 9648+ 9649+ bool GetAsNonFinite(float* out_value) const; 9650+ bool GetAsObjectID(int32_t* out_object_id) const; 9651+ bool GetAsUInt32(uint32_t* out_value) const; 9652+ 9653+ private: 9654+ explicit OhGinJavascriptBridgeValue(Type type); 9655+ explicit OhGinJavascriptBridgeValue(const base::Value* value); 9656+ std::unique_ptr<base::Value> SerializeToBinaryValue(); 9657+ 9658+ base::Pickle pickle_; 9659+}; 9660+ 9661+#endif // OH_GIN_JAVASCRIPT_BRIDGE_VALUE_H 9662\ No newline at end of file 9663diff --git a/cef/libcef/renderer/alloy/alloy_content_renderer_client.cc b/cef/libcef/renderer/alloy/alloy_content_renderer_client.cc 9664index 096412f29f..073ba4c7fb 100644 9665--- a/cef/libcef/renderer/alloy/alloy_content_renderer_client.cc 9666+++ b/cef/libcef/renderer/alloy/alloy_content_renderer_client.cc 9667@@ -30,6 +30,7 @@ 9668 #include "libcef/common/extensions/extensions_util.h" 9669 #include "libcef/common/request_impl.h" 9670 #include "libcef/features/runtime_checks.h" 9671+#include "libcef/renderer/alloy/alloy_content_settings_client.h" 9672 #include "libcef/renderer/alloy/alloy_render_frame_observer.h" 9673 #include "libcef/renderer/alloy/alloy_render_thread_observer.h" 9674 #include "libcef/renderer/alloy/url_loader_throttle_provider_impl.h" 9675@@ -272,6 +273,7 @@ void AlloyContentRendererClient::RenderThreadConnected() { 9676 9677 void AlloyContentRendererClient::RenderFrameCreated( 9678 content::RenderFrame* render_frame) { 9679+ new AlloyContentSettingsClient(render_frame); 9680 AlloyRenderFrameObserver* render_frame_observer = 9681 new AlloyRenderFrameObserver(render_frame); 9682 service_manager::BinderRegistry* registry = render_frame_observer->registry(); 9683diff --git a/cef/libcef/renderer/alloy/alloy_content_settings_client.cc b/cef/libcef/renderer/alloy/alloy_content_settings_client.cc 9684new file mode 100644 9685index 0000000000..031ea46a42 9686--- /dev/null 9687+++ b/cef/libcef/renderer/alloy/alloy_content_settings_client.cc 9688@@ -0,0 +1,25 @@ 9689+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 9690+// Use of this source code is governed by a BSD-style license that can be 9691+// found in the LICENSE file. 9692+ 9693+#include "libcef/renderer/alloy/alloy_content_settings_client.h" 9694+ 9695+#include "content/public/renderer/render_frame.h" 9696+#include "third_party/blink/public/common/web_preferences/web_preferences.h" 9697+#include "third_party/blink/public/web/web_local_frame.h" 9698+ 9699+AlloyContentSettingsClient::AlloyContentSettingsClient( 9700+ content::RenderFrame* render_frame) 9701+ : content::RenderFrameObserver(render_frame) { 9702+ render_frame->GetWebFrame()->SetContentSettingsClient(this); 9703+} 9704+ 9705+AlloyContentSettingsClient::~AlloyContentSettingsClient() {} 9706+ 9707+bool AlloyContentSettingsClient::ShouldAutoupgradeMixedContent() { 9708+ return render_frame()->GetBlinkPreferences().allow_mixed_content_upgrades; 9709+} 9710+ 9711+void AlloyContentSettingsClient::OnDestruct() { 9712+ delete this; 9713+} 9714diff --git a/cef/libcef/renderer/alloy/alloy_content_settings_client.h b/cef/libcef/renderer/alloy/alloy_content_settings_client.h 9715new file mode 100644 9716index 0000000000..29e885110a 9717--- /dev/null 9718+++ b/cef/libcef/renderer/alloy/alloy_content_settings_client.h 9719@@ -0,0 +1,29 @@ 9720+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 9721+// Use of this source code is governed by a BSD-style license that can be 9722+// found in the LICENSE file. 9723+ 9724+#ifndef CEF_LIBCEF_RENDERER_ALLOY_ALLOY_CONTENT_SETTINGS_CLIENT_H_ 9725+#define CEF_LIBCEF_RENDERER_ALLOY_ALLOY_CONTENT_SETTINGS_CLIENT_H_ 9726+ 9727+#include "base/macros.h" 9728+#include "content/public/renderer/render_frame_observer.h" 9729+#include "third_party/blink/public/platform/web_content_settings_client.h" 9730+ 9731+// NWeb implementation of blink::WebContentSettingsClient. 9732+class AlloyContentSettingsClient : public content::RenderFrameObserver, 9733+ public blink::WebContentSettingsClient { 9734+ public: 9735+ explicit AlloyContentSettingsClient(content::RenderFrame* render_view); 9736+ 9737+ private: 9738+ ~AlloyContentSettingsClient() override; 9739+ 9740+ // content::RenderFrameObserver implementation. 9741+ void OnDestruct() override; 9742+ 9743+ bool ShouldAutoupgradeMixedContent() override; 9744+ 9745+ DISALLOW_COPY_AND_ASSIGN(AlloyContentSettingsClient); 9746+}; 9747+ 9748+#endif // CEF_LIBCEF_RENDERER_ALLOY_ALLOY_CONTENT_SETTINGS_CLIENT_H_ 9749diff --git a/cef/libcef/renderer/blink_glue.cc b/cef/libcef/renderer/blink_glue.cc 9750index a730e12921..67907ccf03 100644 9751--- a/cef/libcef/renderer/blink_glue.cc 9752+++ b/cef/libcef/renderer/blink_glue.cc 9753@@ -57,6 +57,21 @@ bool CanGoForward(blink::WebView* view) { 9754 return view->HistoryForwardListCount() > 0; 9755 } 9756 9757+bool CanGoBackOrForward(blink::WebView* view, int num_steps) { 9758+ if (!view) 9759+ return false; 9760+ if (num_steps == 0) { 9761+ return true; 9762+ } 9763+ if (num_steps > 0 && view->HistoryForwardListCount() >= num_steps) { 9764+ return true; 9765+ } 9766+ if (num_steps < 0 && view->HistoryBackListCount() >= -num_steps) { 9767+ return true; 9768+ } 9769+ return false; 9770+} 9771+ 9772 void GoBack(blink::WebView* view) { 9773 if (!view) 9774 return; 9775diff --git a/cef/libcef/renderer/blink_glue.h b/cef/libcef/renderer/blink_glue.h 9776index a7db3ef456..46fc4f596e 100644 9777--- a/cef/libcef/renderer/blink_glue.h 9778+++ b/cef/libcef/renderer/blink_glue.h 9779@@ -39,6 +39,7 @@ BLINK_EXPORT bool CanGoBack(blink::WebView* view); 9780 BLINK_EXPORT bool CanGoForward(blink::WebView* view); 9781 BLINK_EXPORT void GoBack(blink::WebView* view); 9782 BLINK_EXPORT void GoForward(blink::WebView* view); 9783+BLINK_EXPORT bool CanGoBackOrForward(blink::WebView* view, int num_steps); 9784 9785 // Returns the text of the document element. 9786 BLINK_EXPORT std::string DumpDocumentText(blink::WebLocalFrame* frame); 9787diff --git a/cef/libcef/renderer/browser_impl.cc b/cef/libcef/renderer/browser_impl.cc 9788index 007692926a..80a4444232 100644 9789--- a/cef/libcef/renderer/browser_impl.cc 9790+++ b/cef/libcef/renderer/browser_impl.cc 9791@@ -1,7 +1,7 @@ 9792-// Copyright (c) 2012 The Chromium Embedded Framework Authors. 9793-// Portions copyright (c) 2011 The Chromium Authors. All rights reserved. 9794-// Use of this source code is governed by a BSD-style license that can be 9795-// found in the LICENSE file. 9796+// Copyright (c) 2022 Huawei Device Co., Ltd. 9797+// Copyright (c) 2012 The Chromium Embedded Framework Authors. All rights 9798+// reserved. Use of this source code is governed by a BSD-style license that can 9799+// be found in the LICENSE file. 9800 9801 #include "libcef/renderer/browser_impl.h" 9802 9803@@ -68,7 +68,6 @@ void CefBrowserImpl::GoBack() { 9804 9805 bool CefBrowserImpl::CanGoForward() { 9806 CEF_REQUIRE_RT_RETURN(false); 9807- 9808 return blink_glue::CanGoForward(GetWebView()); 9809 } 9810 9811@@ -78,6 +77,12 @@ void CefBrowserImpl::GoForward() { 9812 blink_glue::GoForward(GetWebView()); 9813 } 9814 9815+bool CefBrowserImpl::CanGoBackOrForward(int num_steps) { 9816+ CEF_REQUIRE_RT_RETURN(false); 9817+ 9818+ return blink_glue::CanGoBackOrForward(GetWebView(), num_steps); 9819+} 9820+ 9821 bool CefBrowserImpl::IsLoading() { 9822 CEF_REQUIRE_RT_RETURN(false); 9823 9824@@ -259,6 +264,16 @@ void CefBrowserImpl::GetFrameNames(std::vector<CefString>& names) { 9825 } 9826 } 9827 9828+CefRefPtr<CefBrowserPermissionRequestDelegate> 9829+CefBrowserImpl::GetPermissionRequestDelegate() { 9830+ return nullptr; 9831+} 9832+ 9833+CefRefPtr<CefGeolocationAcess> 9834+CefBrowserImpl::GetGeolocationPermissions() { 9835+ return nullptr; 9836+} 9837+ 9838 // CefBrowserImpl public methods. 9839 // ----------------------------------------------------------------------------- 9840 9841diff --git a/cef/libcef/renderer/browser_impl.h b/cef/libcef/renderer/browser_impl.h 9842index cb422a4460..0f6711a91d 100644 9843--- a/cef/libcef/renderer/browser_impl.h 9844+++ b/cef/libcef/renderer/browser_impl.h 9845@@ -1,7 +1,7 @@ 9846-// Copyright (c) 2012 The Chromium Embedded Framework Authors. 9847-// Portions copyright (c) 2011 The Chromium Authors. All rights reserved. 9848-// Use of this source code is governed by a BSD-style license that can be 9849-// found in the LICENSE file. 9850+// Copyright (c) 2022 Huawei Device Co., Ltd. 9851+// Copyright (c) 2012 The Chromium Embedded Framework Authors. All rights 9852+// reserved. Use of this source code is governed by a BSD-style license that can 9853+// be found in the LICENSE file. 9854 9855 #ifndef CEF_LIBCEF_RENDERER_BROWSER_IMPL_H_ 9856 #define CEF_LIBCEF_RENDERER_BROWSER_IMPL_H_ 9857@@ -49,6 +49,7 @@ class CefBrowserImpl : public CefBrowser, public blink::WebViewObserver { 9858 void GoBack() override; 9859 bool CanGoForward() override; 9860 void GoForward() override; 9861+ bool CanGoBackOrForward(int num_steps) override; 9862 bool IsLoading() override; 9863 void Reload() override; 9864 void ReloadIgnoreCache() override; 9865@@ -64,6 +65,9 @@ class CefBrowserImpl : public CefBrowser, public blink::WebViewObserver { 9866 size_t GetFrameCount() override; 9867 void GetFrameIdentifiers(std::vector<int64>& identifiers) override; 9868 void GetFrameNames(std::vector<CefString>& names) override; 9869+ CefRefPtr<CefBrowserPermissionRequestDelegate> GetPermissionRequestDelegate() 9870+ override; 9871+ CefRefPtr<CefGeolocationAcess> GetGeolocationPermissions() override; 9872 9873 CefBrowserImpl(content::RenderView* render_view, 9874 int browser_id, 9875diff --git a/cef/libcef/renderer/frame_impl.cc b/cef/libcef/renderer/frame_impl.cc 9876index d02fbb5eaf..393ae6f30b 100644 9877--- a/cef/libcef/renderer/frame_impl.cc 9878+++ b/cef/libcef/renderer/frame_impl.cc 9879@@ -1,3 +1,4 @@ 9880+// Copyright (c) 2022 Huawei Device Co., Ltd. 9881 // Copyright (c) 2012 The Chromium Embedded Framework Authors. All rights 9882 // reserved. Use of this source code is governed by a BSD-style license that can 9883 // be found in the LICENSE file. 9884@@ -42,12 +43,29 @@ 9885 #include "third_party/blink/public/web/blink.h" 9886 #include "third_party/blink/public/web/web_document.h" 9887 #include "third_party/blink/public/web/web_document_loader.h" 9888+#include "third_party/blink/public/web/web_element_collection.h" 9889 #include "third_party/blink/public/web/web_frame_content_dumper.h" 9890+#include "third_party/blink/public/web/web_frame_widget.h" 9891 #include "third_party/blink/public/web/web_local_frame.h" 9892 #include "third_party/blink/public/web/web_navigation_control.h" 9893 #include "third_party/blink/public/web/web_script_source.h" 9894 #include "third_party/blink/public/web/web_view.h" 9895 9896+const std::string kAddressPrefix = "geo:0,0?q="; 9897+const std::string kEmailPrefix = "mailto:"; 9898+const std::string kPhoneNumberPrefix = "tel:"; 9899+ 9900+enum HitTestDataType { 9901+ kUnknown = 0, 9902+ kPhone = 2, 9903+ kGeo = 3, 9904+ kEmail = 4, 9905+ kImage = 5, 9906+ kSrcLink = 7, 9907+ kSrcImageLink = 8, 9908+ kEditText = 9, 9909+}; 9910+ 9911 CefFrameImpl::CefFrameImpl(CefBrowserImpl* browser, 9912 blink::WebLocalFrame* frame, 9913 int64_t frame_id) 9914@@ -154,6 +172,21 @@ void CefFrameImpl::LoadURL(const CefString& url) { 9915 OnLoadRequest(params); 9916 } 9917 9918+void CefFrameImpl::LoadHeaderUrl(const CefString& url, 9919+ const CefString& additionalHttpHeaders) { 9920+ CEF_REQUIRE_RT_RETURN_VOID(); 9921+ 9922+ if (!frame_) 9923+ return; 9924+ 9925+ CefMsg_LoadRequest_Params params; 9926+ params.url = GURL(url.ToString()); 9927+ params.method = "GET"; 9928+ params.headers = additionalHttpHeaders; 9929+ 9930+ OnLoadRequest(params); 9931+} 9932+ 9933 void CefFrameImpl::ExecuteJavaScript(const CefString& jsCode, 9934 const CefString& scriptUrl, 9935 int startLine) { 9936@@ -334,8 +367,10 @@ bool CefFrameImpl::OnMessageReceived(const IPC::Message& message) { 9937 IPC_MESSAGE_HANDLER(CefMsg_Response, OnResponse) 9938 IPC_MESSAGE_HANDLER(CefMsg_ResponseAck, OnResponseAck) 9939 IPC_MESSAGE_HANDLER(CefMsg_LoadRequest, OnLoadRequest) 9940+ IPC_MESSAGE_HANDLER(CefMsg_TouchEvent, SendTouchEvent) 9941 IPC_MESSAGE_HANDLER(CefMsg_DidStopLoading, OnDidStopLoading) 9942 IPC_MESSAGE_HANDLER(CefMsg_MoveOrResizeStarted, OnMoveOrResizeStarted) 9943+ IPC_MESSAGE_HANDLER(CefMsg_PutZoomingForTextFactor, PutZoomingForTextFactor) 9944 IPC_MESSAGE_UNHANDLED(handled = false) 9945 IPC_END_MESSAGE_MAP() 9946 return handled; 9947@@ -364,6 +399,113 @@ void CefFrameImpl::OnDidFinishLoad() { 9948 } 9949 } 9950 9951+GURL CefFrameImpl::GetAbsoluteUrl(const blink::WebNode& node, 9952+ const std::u16string& url_fragment) { 9953+ return GURL(node.GetDocument().CompleteURL( 9954+ blink::WebString::FromUTF16(url_fragment))); 9955+} 9956+ 9957+GURL CefFrameImpl::GetAbsoluteSrcUrl(const blink::WebElement& element) { 9958+ if (element.IsNull()) 9959+ return GURL(); 9960+ return GetAbsoluteUrl(element, element.GetAttribute("src").Utf16()); 9961+} 9962+ 9963+blink::WebElement CefFrameImpl::GetImgChild(const blink::WebNode& node) { 9964+ blink::WebElementCollection collection = node.GetElementsByHTMLTagName("img"); 9965+ DCHECK(!collection.IsNull()); 9966+ return collection.FirstItem(); 9967+} 9968+ 9969+GURL CefFrameImpl::GetChildImageUrlFromElement( 9970+ const blink::WebElement& element) { 9971+ const blink::WebElement child_img = GetImgChild(element); 9972+ if (child_img.IsNull()) 9973+ return GURL(); 9974+ return GetAbsoluteSrcUrl(child_img); 9975+} 9976+ 9977+bool CefFrameImpl::RemovePrefixAndAssignIfMatches(const std::string prefix, 9978+ const GURL& url, 9979+ std::string* dest) { 9980+ const base::StringPiece spec(url.possibly_invalid_spec()); 9981+ 9982+ if (base::StartsWith(spec, prefix)) { 9983+ url::RawCanonOutputW<1024> output; 9984+ url::DecodeURLEscapeSequences( 9985+ spec.data() + prefix.length(), spec.length() - prefix.length(), 9986+ url::DecodeURLMode::kUTF8OrIsomorphic, &output); 9987+ *dest = 9988+ base::UTF16ToUTF8(base::StringPiece16(output.data(), output.length())); 9989+ return true; 9990+ } 9991+ return false; 9992+} 9993+ 9994+void CefFrameImpl::DistinguishAndAssignSrcLinkType(const GURL& url, 9995+ Cef_HitData_Params* data) { 9996+ if (RemovePrefixAndAssignIfMatches(kAddressPrefix, url, 9997+ &data->extra_data_for_type)) { 9998+ data->type = HitTestDataType::kGeo; 9999+ } else if (RemovePrefixAndAssignIfMatches(kPhoneNumberPrefix, url, 10000+ &data->extra_data_for_type)) { 10001+ data->type = HitTestDataType::kPhone; 10002+ } else if (RemovePrefixAndAssignIfMatches(kEmailPrefix, url, 10003+ &data->extra_data_for_type)) { 10004+ data->type = HitTestDataType::kEmail; 10005+ } else { 10006+ data->type = HitTestDataType::kSrcLink; 10007+ data->extra_data_for_type = url.possibly_invalid_spec(); 10008+ if (!data->extra_data_for_type.empty()) 10009+ data->href = base::UTF8ToUTF16(data->extra_data_for_type); 10010+ } 10011+} 10012+ 10013+void CefFrameImpl::PopulateHitTestData(const GURL& absolute_link_url, 10014+ const GURL& absolute_image_url, 10015+ bool is_editable, 10016+ Cef_HitData_Params* data) { 10017+ if (!absolute_image_url.is_empty()) 10018+ data->img_src = absolute_image_url; 10019+ 10020+ const bool is_javascript_scheme = 10021+ absolute_link_url.SchemeIs(url::kJavaScriptScheme); 10022+ const bool has_link_url = !absolute_link_url.is_empty(); 10023+ const bool has_image_url = !absolute_image_url.is_empty(); 10024+ if (has_link_url && !has_image_url && !is_javascript_scheme) { 10025+ DistinguishAndAssignSrcLinkType(absolute_link_url, data); 10026+ } else if (has_link_url && has_image_url && !is_javascript_scheme) { 10027+ data->type = HitTestDataType::kSrcImageLink; 10028+ data->extra_data_for_type = data->img_src.possibly_invalid_spec(); 10029+ if (absolute_link_url.is_valid()) 10030+ data->href = base::UTF8ToUTF16(absolute_link_url.possibly_invalid_spec()); 10031+ } else if (!has_link_url && has_image_url) { 10032+ data->type = HitTestDataType::kImage; 10033+ data->extra_data_for_type = data->img_src.possibly_invalid_spec(); 10034+ } else if (is_editable) { 10035+ data->type = HitTestDataType::kEditText; 10036+ DCHECK_EQ(0u, data->extra_data_for_type.length()); 10037+ } 10038+} 10039+ 10040+void CefFrameImpl::OnFocusedNodeChanged(const blink::WebElement& element) { 10041+ Cef_HitData_Params data; 10042+ if (element.IsNull()) { 10043+ LOG(INFO) << "FocusedHitDataChange element is NULL"; 10044+ return; 10045+ } 10046+ LOG(INFO) << "FocusedHitDataChangeBegin"; 10047+ data.href = element.GetAttribute("href").Utf16(); 10048+ data.anchor_text = element.TextContent().Utf16(); 10049+ GURL absolute_link_url; 10050+ if (element.IsLink()) 10051+ absolute_link_url = GetAbsoluteUrl(element, data.href); 10052+ GURL absolute_image_url = GetChildImageUrlFromElement(element); 10053+ PopulateHitTestData(absolute_link_url, absolute_image_url, 10054+ element.IsEditable(), &data); 10055+ LOG(INFO) << "FocusedHitDataChangeEnd"; 10056+ Send(new CefHostMsg_HitData(MSG_ROUTING_NONE, data)); 10057+} 10058 void CefFrameImpl::OnDraggableRegionsChanged() { 10059 blink::WebVector<blink::WebDraggableRegion> webregions = 10060 frame_->GetDocument().DraggableRegions(); 10061@@ -534,6 +676,30 @@ void CefFrameImpl::OnDidStopLoading() { 10062 browser_->OnLoadingStateChange(false); 10063 } 10064 10065+void CefFrameImpl::SendTouchEvent(const Cef_TouchEvent_Params& params) { 10066+ auto render_frame = content::RenderFrame::FromWebFrame(frame_); 10067+ DCHECK(render_frame->IsMainFrame()); 10068+ blink::WebView* webview = render_frame->GetRenderView()->GetWebView(); 10069+ if (!webview) { 10070+ LOG(INFO) << "SendTouchEvent webview is NULL"; 10071+ return; 10072+ } 10073+ const blink::WebHitTestResult result = webview->HitTestResultForTap( 10074+ gfx::Point(params.x, params.y), gfx::Size(params.width, params.height)); 10075+ Cef_HitData_Params data; 10076+ GURL absolute_image_url = result.AbsoluteImageURL(); 10077+ if (!result.UrlElement().IsNull()) { 10078+ data.anchor_text = result.UrlElement().TextContent().Utf16(); 10079+ data.href = result.UrlElement().GetAttribute("href").Utf16(); 10080+ if (absolute_image_url.is_empty()) 10081+ absolute_image_url = GetChildImageUrlFromElement(result.UrlElement()); 10082+ } 10083+ 10084+ PopulateHitTestData(result.AbsoluteLinkURL(), absolute_image_url, 10085+ result.IsContentEditable(), &data); 10086+ Send(new CefHostMsg_HitData(MSG_ROUTING_NONE, data)); 10087+} 10088+ 10089 void CefFrameImpl::OnMoveOrResizeStarted() { 10090 if (frame_) { 10091 auto web_view = frame_->View(); 10092@@ -551,6 +717,19 @@ void CefFrameImpl::OnLoadRequest(const CefMsg_LoadRequest_Params& params) { 10093 blink_glue::StartNavigation(frame_, request); 10094 } 10095 10096+void CefFrameImpl::PutZoomingForTextFactor(float factor) { 10097+ auto render_frame = content::RenderFrame::FromWebFrame(frame_); 10098+ DCHECK(render_frame->IsMainFrame()); 10099+ blink::WebView* webview = render_frame->GetRenderView()->GetWebView(); 10100+ 10101+ if (!webview) 10102+ return; 10103+ // Hide selection and autofill popups. 10104+ webview->CancelPagePopup(); 10105+ 10106+ render_frame->GetWebFrame()->FrameWidget()->SetTextZoomFactor(factor); 10107+} 10108+ 10109 // Enable deprecation warnings on Windows. See http://crbug.com/585142. 10110 #if defined(OS_WIN) 10111 #if defined(__clang__) 10112diff --git a/cef/libcef/renderer/frame_impl.h b/cef/libcef/renderer/frame_impl.h 10113index f587e0340e..2912625df3 100644 10114--- a/cef/libcef/renderer/frame_impl.h 10115+++ b/cef/libcef/renderer/frame_impl.h 10116@@ -1,3 +1,4 @@ 10117+// Copyright (c) 2022 Huawei Device Co., Ltd. 10118 // Copyright (c) 2012 The Chromium Embedded Framework Authors. All rights 10119 // reserved. Use of this source code is governed by a BSD-style license that can 10120 // be found in the LICENSE file. 10121@@ -9,6 +10,7 @@ 10122 #include <string> 10123 #include "include/cef_frame.h" 10124 #include "include/cef_v8.h" 10125+#include "third_party/blink/public/web/web_element.h" 10126 10127 namespace base { 10128 class ListValue; 10129@@ -29,6 +31,8 @@ class GURL; 10130 10131 class CefBrowserImpl; 10132 class CefResponseManager; 10133+struct Cef_HitData_Params; 10134+struct Cef_TouchEvent_Params; 10135 struct CefMsg_LoadRequest_Params; 10136 struct Cef_Request_Params; 10137 struct Cef_Response_Params; 10138@@ -74,6 +78,7 @@ class CefFrameImpl : public CefFrame { 10139 CefRefPtr<CefURLRequestClient> client) override; 10140 void SendProcessMessage(CefProcessId target_process, 10141 CefRefPtr<CefProcessMessage> message) override; 10142+ void LoadHeaderUrl(const CefString& url, const CefString& additionalHttpHeaders) override; 10143 10144 // Used by CefRenderURLRequest. 10145 std::unique_ptr<blink::WebURLLoader> CreateURLLoader(); 10146@@ -82,6 +87,7 @@ class CefFrameImpl : public CefFrame { 10147 10148 // Forwarded from CefRenderFrameObserver. 10149 void OnAttached(); 10150+ void OnFocusedNodeChanged(const blink::WebElement& element); 10151 bool OnMessageReceived(const IPC::Message& message); 10152 void OnDidFinishLoad(); 10153 void OnDraggableRegionsChanged(); 10154@@ -106,8 +112,24 @@ class CefFrameImpl : public CefFrame { 10155 void OnResponse(const Cef_Response_Params& params); 10156 void OnResponseAck(int request_id); 10157 void OnDidStopLoading(); 10158+ void SendTouchEvent(const Cef_TouchEvent_Params& params); 10159 void OnMoveOrResizeStarted(); 10160 void OnLoadRequest(const CefMsg_LoadRequest_Params& params); 10161+ void PutZoomingForTextFactor(float factor); 10162+ GURL GetAbsoluteUrl(const blink::WebNode& node, 10163+ const std::u16string& url_fragment); 10164+ GURL GetAbsoluteSrcUrl(const blink::WebElement& element); 10165+ blink::WebElement GetImgChild(const blink::WebNode& node); 10166+ GURL GetChildImageUrlFromElement(const blink::WebElement& element); 10167+ bool RemovePrefixAndAssignIfMatches(const std::string prefix, 10168+ const GURL& url, 10169+ std::string* dest); 10170+ void DistinguishAndAssignSrcLinkType(const GURL& url, 10171+ Cef_HitData_Params* data); 10172+ void PopulateHitTestData(const GURL& absolute_link_url, 10173+ const GURL& absolute_image_url, 10174+ bool is_editable, 10175+ Cef_HitData_Params* data); 10176 10177 CefBrowserImpl* browser_; 10178 blink::WebLocalFrame* frame_; 10179diff --git a/cef/libcef/renderer/javascript/oh_gin_javascript_bridge_dispatcher.cc b/cef/libcef/renderer/javascript/oh_gin_javascript_bridge_dispatcher.cc 10180new file mode 100644 10181index 0000000000..30c0568a71 10182--- /dev/null 10183+++ b/cef/libcef/renderer/javascript/oh_gin_javascript_bridge_dispatcher.cc 10184@@ -0,0 +1,136 @@ 10185+// Copyright (c) 2022 Huawei Device Co., Ltd. 10186+// Copyright 2018 The Chromium Authors. All rights reserved. 10187+// Use of this source code is governed by a BSD-style license that can be 10188+// found in the LICENSE file. 10189+ 10190+#include "oh_gin_javascript_bridge_dispatcher.h" 10191+#include "base/auto_reset.h" 10192+#include "cef/libcef/common/javascript/oh_gin_javascript_bridge_messages.h" 10193+#include "cef/libcef/renderer/javascript/oh_gin_javascript_bridge_object.h" 10194+#include "content/public/renderer/render_frame.h" 10195+ 10196+#include "third_party/blink/public/web/web_local_frame.h" 10197+#include "third_party/blink/public/web/web_view.h" 10198+namespace NWEB { 10199+OhGinJavascriptBridgeDispatcher::OhGinJavascriptBridgeDispatcher( 10200+ content::RenderFrame* render_frame) 10201+ : content::RenderFrameObserver(render_frame), 10202+ inside_did_clear_window_object_(false) {} 10203+ 10204+OhGinJavascriptBridgeDispatcher::~OhGinJavascriptBridgeDispatcher() {} 10205+ 10206+bool OhGinJavascriptBridgeDispatcher::OnMessageReceived( 10207+ const IPC::Message& msg) { 10208+ bool handled = true; 10209+ IPC_BEGIN_MESSAGE_MAP(OhGinJavascriptBridgeDispatcher, msg) 10210+ IPC_MESSAGE_HANDLER(OhGinJavascriptBridgeMsg_AddNamedObject, 10211+ OnAddNamedObject) 10212+ IPC_MESSAGE_HANDLER(OhGinJavascriptBridgeMsg_RemoveNamedObject, 10213+ OnRemoveNamedObject) 10214+ IPC_MESSAGE_UNHANDLED(handled = false) 10215+ IPC_END_MESSAGE_MAP() 10216+ return handled; 10217+} 10218+ 10219+void OhGinJavascriptBridgeDispatcher::DidClearWindowObject() { 10220+ if (inside_did_clear_window_object_) 10221+ return; 10222+ base::AutoReset<bool> flag_entry(&inside_did_clear_window_object_, true); 10223+ for (NamedObjectMap::const_iterator iter = named_objects_.begin(); 10224+ iter != named_objects_.end(); ++iter) { 10225+ if (objects_.Lookup(iter->second)) 10226+ objects_.Remove(iter->second); 10227+ 10228+ OhGinJavascriptBridgeObject* object = 10229+ OhGinJavascriptBridgeObject::InjectNamed(render_frame()->GetWebFrame(), 10230+ AsWeakPtr(), iter->first, 10231+ iter->second); 10232+ if (object) { 10233+ objects_.AddWithID(object, iter->second); 10234+ } else { 10235+ // Inform the host about wrapper creation failure. 10236+ render_frame()->Send( 10237+ new OhGinJavascriptBridgeHostMsg_ObjectWrapperDeleted(routing_id(), 10238+ iter->second)); 10239+ } 10240+ } 10241+} 10242+ 10243+void OhGinJavascriptBridgeDispatcher::OnAddNamedObject(const std::string& name, 10244+ ObjectID object_id) { 10245+ LOG(INFO) << "OnAddNamedObject name : " << name 10246+ << " object_id : " << object_id; 10247+ named_objects_.insert(std::make_pair(name, object_id)); 10248+} 10249+ 10250+void OhGinJavascriptBridgeDispatcher::OnRemoveNamedObject( 10251+ const std::string& name) { 10252+ // Removal becomes in effect on next reload. We simply removing the entry 10253+ // from the map here. 10254+ NamedObjectMap::iterator iter = named_objects_.find(name); 10255+ DCHECK(iter != named_objects_.end()); 10256+ named_objects_.erase(iter); 10257+} 10258+ 10259+void OhGinJavascriptBridgeDispatcher::GetJavascriptMethods( 10260+ ObjectID object_id, 10261+ std::set<std::string>* methods) { 10262+ render_frame()->Send(new OhGinJavascriptBridgeHostMsg_GetMethods( 10263+ routing_id(), object_id, methods)); 10264+} 10265+ 10266+bool OhGinJavascriptBridgeDispatcher::HasJavascriptMethod( 10267+ ObjectID object_id, 10268+ const std::string& method_name) { 10269+ LOG(INFO) << "HasJavascriptMethod"; 10270+ bool result; 10271+ render_frame()->Send(new OhGinJavascriptBridgeHostMsg_HasMethod( 10272+ routing_id(), object_id, method_name, &result)); 10273+ return result; 10274+} 10275+ 10276+std::unique_ptr<base::Value> 10277+OhGinJavascriptBridgeDispatcher::InvokeJavascriptMethod( 10278+ ObjectID object_id, 10279+ const std::string& method_name, 10280+ const base::ListValue& arguments, 10281+ OhGinJavascriptBridgeError* error) { 10282+ base::ListValue result_wrapper; 10283+ render_frame()->Send(new OhGinJavascriptBridgeHostMsg_InvokeMethod( 10284+ routing_id(), object_id, method_name, arguments, &result_wrapper, error)); 10285+ base::Value* result; 10286+ if (result_wrapper.Get(0, &result)) { 10287+ return std::unique_ptr<base::Value>(result->DeepCopy()); 10288+ } else { 10289+ return std::unique_ptr<base::Value>(); 10290+ } 10291+} 10292+ 10293+OhGinJavascriptBridgeObject* OhGinJavascriptBridgeDispatcher::GetObject( 10294+ const ObjectID object_id) { 10295+ LOG(INFO) << "GetObject"; 10296+ OhGinJavascriptBridgeObject* result = objects_.Lookup(object_id); 10297+ if (!result) { 10298+ result = 10299+ OhGinJavascriptBridgeObject::InjectAnonymous(AsWeakPtr(), object_id); 10300+ if (result) 10301+ objects_.AddWithID(result, object_id); 10302+ } 10303+ return result; 10304+} 10305+ 10306+void OhGinJavascriptBridgeDispatcher::OnOhGinJavascriptBridgeObjectDeleted( 10307+ const OhGinJavascriptBridgeObject* object) { 10308+ int object_id = object->object_id(); 10309+ // Ignore cleaning up of old object wrappers. 10310+ if (objects_.Lookup(object_id) != object) 10311+ return; 10312+ objects_.Remove(object_id); 10313+ render_frame()->Send(new OhGinJavascriptBridgeHostMsg_ObjectWrapperDeleted( 10314+ routing_id(), object_id)); 10315+} 10316+ 10317+void OhGinJavascriptBridgeDispatcher::OnDestruct() { 10318+ delete this; 10319+} 10320+} // namespace NWEB 10321diff --git a/cef/libcef/renderer/javascript/oh_gin_javascript_bridge_dispatcher.h b/cef/libcef/renderer/javascript/oh_gin_javascript_bridge_dispatcher.h 10322new file mode 100644 10323index 0000000000..f9707de97e 10324--- /dev/null 10325+++ b/cef/libcef/renderer/javascript/oh_gin_javascript_bridge_dispatcher.h 10326@@ -0,0 +1,63 @@ 10327+// Copyright (c) 2022 Huawei Device Co., Ltd. 10328+// Copyright 2018 The Chromium Authors. All rights reserved. 10329+// Use of this source code is governed by a BSD-style license that can be 10330+// found in the LICENSE file. 10331+ 10332+#ifndef OH_GIN_JAVASCRIPT_BRIDGE_DISPATCHER_H 10333+#define OH_GIN_JAVASCRIPT_BRIDGE_DISPATCHER_H 10334+ 10335+#include <map> 10336+#include <memory> 10337+#include <set> 10338+#include "base/containers/id_map.h" 10339+#include "base/macros.h" 10340+#include "base/memory/weak_ptr.h" 10341+#include "base/values.h" 10342+#include "cef/libcef/common/javascript/oh_gin_javascript_bridge_errors.h" 10343+#include "content/public/renderer/render_frame_observer.h" 10344+ 10345+namespace NWEB { 10346+class OhGinJavascriptBridgeObject; 10347+class OhGinJavascriptBridgeDispatcher 10348+ : public base::SupportsWeakPtr<OhGinJavascriptBridgeDispatcher>, 10349+ public content::RenderFrameObserver { 10350+ public: 10351+ using ObjectMap = base::IDMap<OhGinJavascriptBridgeObject*>; 10352+ using ObjectID = ObjectMap::KeyType; 10353+ 10354+ explicit OhGinJavascriptBridgeDispatcher(content::RenderFrame* render_frame); 10355+ 10356+ ~OhGinJavascriptBridgeDispatcher() override; 10357+ 10358+ // RenderFrameObserver override: 10359+ bool OnMessageReceived(const IPC::Message& message) override; 10360+ void DidClearWindowObject() override; 10361+ 10362+ void GetJavascriptMethods(ObjectID object_id, std::set<std::string>* methods); 10363+ bool HasJavascriptMethod(ObjectID object_id, const std::string& method_name); 10364+ 10365+ std::unique_ptr<base::Value> InvokeJavascriptMethod( 10366+ ObjectID object_id, 10367+ const std::string& method_name, 10368+ const base::ListValue& arguments, 10369+ OhGinJavascriptBridgeError* error); 10370+ 10371+ OhGinJavascriptBridgeObject* GetObject(const ObjectID object_id); 10372+ void OnOhGinJavascriptBridgeObjectDeleted( 10373+ const OhGinJavascriptBridgeObject* object); 10374+ 10375+ private: 10376+ // RenderFrameObserver implementation. 10377+ void OnDestruct() override; 10378+ void OnAddNamedObject(const std::string& name, ObjectID object_id); 10379+ void OnRemoveNamedObject(const std::string& name); 10380+ 10381+ typedef std::map<std::string, ObjectID> NamedObjectMap; 10382+ NamedObjectMap named_objects_; 10383+ ObjectMap objects_; 10384+ bool inside_did_clear_window_object_; 10385+ 10386+ DISALLOW_COPY_AND_ASSIGN(OhGinJavascriptBridgeDispatcher); 10387+}; 10388+} // namespace NWEB 10389+#endif 10390\ No newline at end of file 10391diff --git a/cef/libcef/renderer/javascript/oh_gin_javascript_bridge_object.cc b/cef/libcef/renderer/javascript/oh_gin_javascript_bridge_object.cc 10392new file mode 100644 10393index 0000000000..cc627de10a 10394--- /dev/null 10395+++ b/cef/libcef/renderer/javascript/oh_gin_javascript_bridge_object.cc 10396@@ -0,0 +1,133 @@ 10397+// Copyright (c) 2022 Huawei Device Co., Ltd. 10398+// Copyright 2018 The Chromium Authors. All rights reserved. 10399+// Use of this source code is governed by a BSD-style license that can be 10400+// found in the LICENSE file. 10401+ 10402+#include "libcef/renderer/javascript/oh_gin_javascript_bridge_object.h" 10403+ 10404+#include "base/bind.h" 10405+#include "content/public/renderer/render_thread.h" 10406+#include "gin/function_template.h" 10407+#include "libcef/common/javascript/oh_gin_javascript_bridge_messages.h" 10408+#include "libcef/renderer/javascript/oh_gin_javascript_bridge_dispatcher.h" 10409+#include "libcef/renderer/javascript/oh_gin_javascript_function_invocation_helper.h" 10410+#include "third_party/blink/public/web/blink.h" 10411+#include "third_party/blink/public/web/web_local_frame.h" 10412+ 10413+namespace NWEB { 10414+gin::WrapperInfo OhGinJavascriptBridgeObject::kWrapperInfo = { 10415+ gin::kEmbedderNativeGin}; 10416+ 10417+// static 10418+OhGinJavascriptBridgeObject* OhGinJavascriptBridgeObject::InjectNamed( 10419+ blink::WebLocalFrame* frame, 10420+ const base::WeakPtr<OhGinJavascriptBridgeDispatcher>& dispatcher, 10421+ const std::string& object_name, 10422+ OhGinJavascriptBridgeDispatcher::ObjectID object_id) { 10423+ v8::Isolate* isolate = blink::MainThreadIsolate(); 10424+ v8::HandleScope handle_scope(isolate); 10425+ v8::Local<v8::Context> context = frame->MainWorldScriptContext(); 10426+ if (context.IsEmpty()) 10427+ return NULL; 10428+ 10429+ OhGinJavascriptBridgeObject* object = 10430+ new OhGinJavascriptBridgeObject(isolate, dispatcher, object_id); 10431+ 10432+ v8::Context::Scope context_scope(context); 10433+ v8::Local<v8::Object> global = context->Global(); 10434+ gin::Handle<OhGinJavascriptBridgeObject> controller = 10435+ gin::CreateHandle(isolate, object); 10436+ // WrappableBase instance deletes itself in case of a wrapper 10437+ // creation failure, thus there is no need to delete |object|. 10438+ if (controller.IsEmpty()) 10439+ return NULL; 10440+ 10441+ global->Set(context, gin::StringToV8(isolate, object_name), controller.ToV8()) 10442+ .Check(); 10443+ 10444+ return object; 10445+} 10446+ 10447+// static 10448+OhGinJavascriptBridgeObject* OhGinJavascriptBridgeObject::InjectAnonymous( 10449+ const base::WeakPtr<OhGinJavascriptBridgeDispatcher>& dispatcher, 10450+ OhGinJavascriptBridgeDispatcher::ObjectID object_id) { 10451+ return new OhGinJavascriptBridgeObject(blink::MainThreadIsolate(), dispatcher, 10452+ object_id); 10453+} 10454+ 10455+OhGinJavascriptBridgeObject::OhGinJavascriptBridgeObject( 10456+ v8::Isolate* isolate, 10457+ const base::WeakPtr<OhGinJavascriptBridgeDispatcher>& dispatcher, 10458+ OhGinJavascriptBridgeDispatcher::ObjectID object_id) 10459+ : gin::NamedPropertyInterceptor(isolate, this), 10460+ dispatcher_(dispatcher), 10461+ object_id_(object_id), 10462+ frame_routing_id_(dispatcher_->routing_id()), 10463+ template_cache_(isolate) {} 10464+ 10465+OhGinJavascriptBridgeObject::~OhGinJavascriptBridgeObject() { 10466+ if (dispatcher_) { 10467+ dispatcher_->OnOhGinJavascriptBridgeObjectDeleted(this); 10468+ } else { 10469+ // A wrapper can outlive a render frame, and thus the dispatcher. 10470+ // Note that we intercept GinJavaBridgeHostMsg messages in a browser filter 10471+ // thus it's OK to send the message with a routing id of a ceased frame. 10472+ content::RenderThread::Get()->Send( 10473+ new OhGinJavascriptBridgeHostMsg_ObjectWrapperDeleted(frame_routing_id_, 10474+ object_id_)); 10475+ } 10476+} 10477+ 10478+gin::ObjectTemplateBuilder 10479+OhGinJavascriptBridgeObject::GetObjectTemplateBuilder(v8::Isolate* isolate) { 10480+ return gin::Wrappable<OhGinJavascriptBridgeObject>::GetObjectTemplateBuilder( 10481+ isolate) 10482+ .AddNamedPropertyInterceptor(); 10483+} 10484+ 10485+v8::Local<v8::Value> OhGinJavascriptBridgeObject::GetNamedProperty( 10486+ v8::Isolate* isolate, 10487+ const std::string& property) { 10488+ std::map<std::string, bool>::iterator method_pos = 10489+ known_methods_.find(property); 10490+ if (method_pos == known_methods_.end()) { 10491+ if (!dispatcher_) { 10492+ return v8::Local<v8::Value>(); 10493+ } 10494+ known_methods_[property] = 10495+ dispatcher_->HasJavascriptMethod(object_id_, property); 10496+ } 10497+ if (known_methods_[property]) { 10498+ return GetFunctionTemplate(isolate, property) 10499+ ->GetFunction(isolate->GetCurrentContext()) 10500+ .FromMaybe(v8::Local<v8::Value>()); 10501+ } else { 10502+ return v8::Local<v8::Value>(); 10503+ } 10504+} 10505+ 10506+std::vector<std::string> OhGinJavascriptBridgeObject::EnumerateNamedProperties( 10507+ v8::Isolate* isolate) { 10508+ std::set<std::string> method_names; 10509+ if (dispatcher_) 10510+ dispatcher_->GetJavascriptMethods(object_id_, &method_names); 10511+ return std::vector<std::string>(method_names.begin(), method_names.end()); 10512+} 10513+ 10514+v8::Local<v8::FunctionTemplate> 10515+OhGinJavascriptBridgeObject::GetFunctionTemplate(v8::Isolate* isolate, 10516+ const std::string& name) { 10517+ LOG(INFO) << "GetFunctionTemplate name : " << name.c_str(); 10518+ v8::Local<v8::FunctionTemplate> function_template = template_cache_.Get(name); 10519+ if (!function_template.IsEmpty()) 10520+ return function_template; 10521+ function_template = gin::CreateFunctionTemplate( 10522+ isolate, base::BindRepeating( 10523+ &OhGinJavascriptFunctionInvocationHelper::Invoke, 10524+ base::Owned(new OhGinJavascriptFunctionInvocationHelper( 10525+ name, dispatcher_)))); 10526+ template_cache_.Set(name, function_template); 10527+ return function_template; 10528+} 10529+} // namespace NWEB 10530\ No newline at end of file 10531diff --git a/cef/libcef/renderer/javascript/oh_gin_javascript_bridge_object.h b/cef/libcef/renderer/javascript/oh_gin_javascript_bridge_object.h 10532new file mode 100644 10533index 0000000000..f7eb636810 10534--- /dev/null 10535+++ b/cef/libcef/renderer/javascript/oh_gin_javascript_bridge_object.h 10536@@ -0,0 +1,75 @@ 10537+// Copyright (c) 2022 Huawei Device Co., Ltd. 10538+// Copyright 2018 The Chromium Authors. All rights reserved. 10539+// Use of this source code is governed by a BSD-style license that can be 10540+// found in the LICENSE file. 10541+ 10542+#ifndef OH_GIN_JAVASCRIPT_BRIDGE_OBJECT_H 10543+#define OH_GIN_JAVASCRIPT_BRIDGE_OBJECT_H 10544+ 10545+#include <map> 10546+ 10547+#include "base/macros.h" 10548+#include "base/memory/weak_ptr.h" 10549+#include "cef/libcef/renderer/javascript/oh_gin_javascript_bridge_dispatcher.h" 10550+#include "gin/handle.h" 10551+#include "gin/interceptor.h" 10552+#include "gin/object_template_builder.h" 10553+#include "gin/wrappable.h" 10554+#include "v8/include/v8-util.h" 10555+ 10556+namespace blink { 10557+class WebLocalFrame; 10558+} 10559+ 10560+namespace NWEB { 10561+class OhGinJavascriptBridgeObject 10562+ : public gin::Wrappable<OhGinJavascriptBridgeObject>, 10563+ public gin::NamedPropertyInterceptor { 10564+ public: 10565+ static gin::WrapperInfo kWrapperInfo; 10566+ 10567+ OhGinJavascriptBridgeDispatcher::ObjectID object_id() const { 10568+ return object_id_; 10569+ } 10570+ 10571+ // gin::Wrappable. 10572+ gin::ObjectTemplateBuilder GetObjectTemplateBuilder( 10573+ v8::Isolate* isolate) override; 10574+ 10575+ // gin::NamedPropertyInterceptor 10576+ v8::Local<v8::Value> GetNamedProperty(v8::Isolate* isolate, 10577+ const std::string& property) override; 10578+ std::vector<std::string> EnumerateNamedProperties( 10579+ v8::Isolate* isolate) override; 10580+ 10581+ static OhGinJavascriptBridgeObject* InjectNamed( 10582+ blink::WebLocalFrame* frame, 10583+ const base::WeakPtr<OhGinJavascriptBridgeDispatcher>& dispatcher, 10584+ const std::string& object_name, 10585+ OhGinJavascriptBridgeDispatcher::ObjectID object_id); 10586+ 10587+ static OhGinJavascriptBridgeObject* InjectAnonymous( 10588+ const base::WeakPtr<OhGinJavascriptBridgeDispatcher>& dispatcher, 10589+ OhGinJavascriptBridgeDispatcher::ObjectID object_id); 10590+ 10591+ private: 10592+ OhGinJavascriptBridgeObject( 10593+ v8::Isolate* isolate, 10594+ const base::WeakPtr<OhGinJavascriptBridgeDispatcher>& dispatcher, 10595+ OhGinJavascriptBridgeDispatcher::ObjectID object_id); 10596+ 10597+ ~OhGinJavascriptBridgeObject() override; 10598+ 10599+ v8::Local<v8::FunctionTemplate> GetFunctionTemplate(v8::Isolate* isolate, 10600+ const std::string& name); 10601+ 10602+ base::WeakPtr<OhGinJavascriptBridgeDispatcher> dispatcher_; 10603+ OhGinJavascriptBridgeDispatcher::ObjectID object_id_; 10604+ int frame_routing_id_; 10605+ std::map<std::string, bool> known_methods_; 10606+ v8::StdGlobalValueMap<std::string, v8::FunctionTemplate> template_cache_; 10607+ 10608+ DISALLOW_COPY_AND_ASSIGN(OhGinJavascriptBridgeObject); 10609+}; 10610+} // namespace NWEB 10611+#endif 10612\ No newline at end of file 10613diff --git a/cef/libcef/renderer/javascript/oh_gin_javascript_bridge_value_converter.cc b/cef/libcef/renderer/javascript/oh_gin_javascript_bridge_value_converter.cc 10614new file mode 100644 10615index 0000000000..0a3a9f3670 10616--- /dev/null 10617+++ b/cef/libcef/renderer/javascript/oh_gin_javascript_bridge_value_converter.cc 10618@@ -0,0 +1,178 @@ 10619+// Copyright (c) 2022 Huawei Device Co., Ltd. 10620+// Copyright 2018 The Chromium Authors. All rights reserved. 10621+// Use of this source code is governed by a BSD-style license that can be 10622+// found in the LICENSE file. 10623+ 10624+#include "libcef/renderer/javascript/oh_gin_javascript_bridge_value_converter.h" 10625+ 10626+#include <stddef.h> 10627+#include <stdint.h> 10628+ 10629+#include <cmath> 10630+ 10631+#include "base/memory/ptr_util.h" 10632+#include "base/values.h" 10633+#include "gin/array_buffer.h" 10634+#include "libcef/common/javascript/oh_gin_javascript_bridge_value.h" 10635+#include "libcef/renderer/javascript/oh_gin_javascript_bridge_object.h" 10636+ 10637+namespace NWEB { 10638+OhGinJavascriptBridgeValueConverter::OhGinJavascriptBridgeValueConverter() 10639+ : converter_(content::V8ValueConverter::Create()) { 10640+ converter_->SetDateAllowed(false); 10641+ converter_->SetRegExpAllowed(false); 10642+ converter_->SetFunctionAllowed(true); 10643+ converter_->SetStrategy(this); 10644+} 10645+ 10646+OhGinJavascriptBridgeValueConverter::~OhGinJavascriptBridgeValueConverter() {} 10647+ 10648+v8::Local<v8::Value> OhGinJavascriptBridgeValueConverter::ToV8Value( 10649+ const base::Value* value, 10650+ v8::Local<v8::Context> context) const { 10651+ return converter_->ToV8Value(value, context); 10652+} 10653+ 10654+std::unique_ptr<base::Value> OhGinJavascriptBridgeValueConverter::FromV8Value( 10655+ v8::Local<v8::Value> value, 10656+ v8::Local<v8::Context> context) const { 10657+ return converter_->FromV8Value(value, context); 10658+} 10659+ 10660+bool OhGinJavascriptBridgeValueConverter::FromV8Object( 10661+ v8::Local<v8::Object> value, 10662+ std::unique_ptr<base::Value>* out, 10663+ v8::Isolate* isolate) { 10664+ OhGinJavascriptBridgeObject* unwrapped; 10665+ if (!gin::ConvertFromV8(isolate, value, &unwrapped)) { 10666+ return false; 10667+ } 10668+ *out = 10669+ OhGinJavascriptBridgeValue::CreateObjectIDValue(unwrapped->object_id()); 10670+ return true; 10671+} 10672+ 10673+namespace { 10674+ 10675+class TypedArraySerializer { 10676+ public: 10677+ virtual ~TypedArraySerializer() {} 10678+ static std::unique_ptr<TypedArraySerializer> Create( 10679+ v8::Local<v8::TypedArray> typed_array); 10680+ virtual void serializeTo(char* data, 10681+ size_t data_length, 10682+ base::ListValue* out) = 0; 10683+ 10684+ protected: 10685+ TypedArraySerializer() {} 10686+}; 10687+ 10688+template <typename ElementType, typename ListType> 10689+class TypedArraySerializerImpl : public TypedArraySerializer { 10690+ public: 10691+ static std::unique_ptr<TypedArraySerializer> Create( 10692+ v8::Local<v8::TypedArray> typed_array) { 10693+ return base::WrapUnique( 10694+ new TypedArraySerializerImpl<ElementType, ListType>(typed_array)); 10695+ } 10696+ 10697+ TypedArraySerializerImpl(const TypedArraySerializerImpl&) = delete; 10698+ TypedArraySerializerImpl& operator=(const TypedArraySerializerImpl&) = delete; 10699+ 10700+ void serializeTo(char* data, 10701+ size_t data_length, 10702+ base::ListValue* out) override { 10703+ DCHECK_EQ(data_length, typed_array_->Length() * sizeof(ElementType)); 10704+ for (ElementType *element = reinterpret_cast<ElementType*>(data), 10705+ *end = element + typed_array_->Length(); 10706+ element != end; ++element) { 10707+ // Serialize the uint32 value as the binary type since base::Value 10708+ // supports only int for the integer type, and the uint8 and the uint16 10709+ // with Base::Value since they fit into int. 10710+ if (std::is_same<ElementType, uint32_t>::value) { 10711+ out->Append(OhGinJavascriptBridgeValue::CreateUInt32Value(*element)); 10712+ } else { 10713+ out->Append(std::make_unique<base::Value>(ListType(*element))); 10714+ } 10715+ } 10716+ } 10717+ 10718+ private: 10719+ explicit TypedArraySerializerImpl(v8::Local<v8::TypedArray> typed_array) 10720+ : typed_array_(typed_array) {} 10721+ 10722+ v8::Local<v8::TypedArray> typed_array_; 10723+}; 10724+ 10725+// static 10726+std::unique_ptr<TypedArraySerializer> TypedArraySerializer::Create( 10727+ v8::Local<v8::TypedArray> typed_array) { 10728+ if (typed_array->IsInt8Array()) { 10729+ return TypedArraySerializerImpl<int8_t, int>::Create(typed_array); 10730+ } else if (typed_array->IsUint8Array() || 10731+ typed_array->IsUint8ClampedArray()) { 10732+ return TypedArraySerializerImpl<uint8_t, int>::Create(typed_array); 10733+ } else if (typed_array->IsInt16Array()) { 10734+ return TypedArraySerializerImpl<int16_t, int>::Create(typed_array); 10735+ } else if (typed_array->IsUint16Array()) { 10736+ return TypedArraySerializerImpl<uint16_t, int>::Create(typed_array); 10737+ } else if (typed_array->IsInt32Array()) { 10738+ return TypedArraySerializerImpl<int32_t, int>::Create(typed_array); 10739+ } else if (typed_array->IsUint32Array()) { 10740+ return TypedArraySerializerImpl<uint32_t, int>::Create(typed_array); 10741+ } else if (typed_array->IsFloat32Array()) { 10742+ return TypedArraySerializerImpl<float, double>::Create(typed_array); 10743+ } else if (typed_array->IsFloat64Array()) { 10744+ return TypedArraySerializerImpl<double, double>::Create(typed_array); 10745+ } 10746+ NOTREACHED(); 10747+ return nullptr; 10748+} 10749+ 10750+} // namespace 10751+ 10752+bool OhGinJavascriptBridgeValueConverter::FromV8ArrayBuffer( 10753+ v8::Local<v8::Object> value, 10754+ std::unique_ptr<base::Value>* out, 10755+ v8::Isolate* isolate) { 10756+ if (!value->IsTypedArray()) { 10757+ *out = OhGinJavascriptBridgeValue::CreateUndefinedValue(); 10758+ return true; 10759+ } 10760+ 10761+ char* data = NULL; 10762+ size_t data_length = 0; 10763+ gin::ArrayBufferView view; 10764+ if (ConvertFromV8(isolate, value.As<v8::ArrayBufferView>(), &view)) { 10765+ data = reinterpret_cast<char*>(view.bytes()); 10766+ data_length = view.num_bytes(); 10767+ } 10768+ if (!data) { 10769+ *out = OhGinJavascriptBridgeValue::CreateUndefinedValue(); 10770+ return true; 10771+ } 10772+ 10773+ std::unique_ptr<base::ListValue> result = std::make_unique<base::ListValue>(); 10774+ std::unique_ptr<TypedArraySerializer> serializer( 10775+ TypedArraySerializer::Create(value.As<v8::TypedArray>())); 10776+ serializer->serializeTo(data, data_length, result.get()); 10777+ *out = std::move(result); 10778+ return true; 10779+} 10780+ 10781+bool OhGinJavascriptBridgeValueConverter::FromV8Number( 10782+ v8::Local<v8::Number> value, 10783+ std::unique_ptr<base::Value>* out) { 10784+ double double_value = value->Value(); 10785+ if (std::isfinite(double_value)) 10786+ return false; 10787+ *out = OhGinJavascriptBridgeValue::CreateNonFiniteValue(double_value); 10788+ return true; 10789+} 10790+ 10791+bool OhGinJavascriptBridgeValueConverter::FromV8Undefined( 10792+ std::unique_ptr<base::Value>* out) { 10793+ *out = OhGinJavascriptBridgeValue::CreateUndefinedValue(); 10794+ return true; 10795+} 10796+} // namespace NWEB 10797diff --git a/cef/libcef/renderer/javascript/oh_gin_javascript_bridge_value_converter.h b/cef/libcef/renderer/javascript/oh_gin_javascript_bridge_value_converter.h 10798new file mode 100644 10799index 0000000000..8795c124ef 10800--- /dev/null 10801+++ b/cef/libcef/renderer/javascript/oh_gin_javascript_bridge_value_converter.h 10802@@ -0,0 +1,47 @@ 10803+// Copyright (c) 2022 Huawei Device Co., Ltd. 10804+// Copyright 2018 The Chromium Authors. All rights reserved. 10805+// Use of this source code is governed by a BSD-style license that can be 10806+// found in the LICENSE file. 10807+ 10808+#ifndef OH_GIN_JAVASCRIPT_BRIDGE_VALUE_CONVERTER_H 10809+#define OH_GIN_JAVASCRIPT_BRIDGE_VALUE_CONVERTER_H 10810+ 10811+#include <memory> 10812+ 10813+#include "content/public/renderer/v8_value_converter.h" 10814+ 10815+namespace NWEB { 10816+class OhGinJavascriptBridgeValueConverter 10817+ : public content::V8ValueConverter::Strategy { 10818+ public: 10819+ OhGinJavascriptBridgeValueConverter(); 10820+ 10821+ OhGinJavascriptBridgeValueConverter( 10822+ const OhGinJavascriptBridgeValueConverter&) = delete; 10823+ OhGinJavascriptBridgeValueConverter& operator=( 10824+ const OhGinJavascriptBridgeValueConverter&) = delete; 10825+ 10826+ ~OhGinJavascriptBridgeValueConverter() override; 10827+ 10828+ v8::Local<v8::Value> ToV8Value(const base::Value* value, 10829+ v8::Local<v8::Context> context) const; 10830+ std::unique_ptr<base::Value> FromV8Value( 10831+ v8::Local<v8::Value> value, 10832+ v8::Local<v8::Context> context) const; 10833+ 10834+ // content::V8ValueConverter::Strategy 10835+ bool FromV8Object(v8::Local<v8::Object> value, 10836+ std::unique_ptr<base::Value>* out, 10837+ v8::Isolate* isolate) override; 10838+ bool FromV8ArrayBuffer(v8::Local<v8::Object> value, 10839+ std::unique_ptr<base::Value>* out, 10840+ v8::Isolate* isolate) override; 10841+ bool FromV8Number(v8::Local<v8::Number> value, 10842+ std::unique_ptr<base::Value>* out) override; 10843+ bool FromV8Undefined(std::unique_ptr<base::Value>* out) override; 10844+ 10845+ private: 10846+ std::unique_ptr<content::V8ValueConverter> converter_; 10847+}; 10848+} // namespace NWEB 10849+#endif 10850diff --git a/cef/libcef/renderer/javascript/oh_gin_javascript_function_invocation_helper.cc b/cef/libcef/renderer/javascript/oh_gin_javascript_function_invocation_helper.cc 10851new file mode 100644 10852index 0000000000..078c4b84cf 10853--- /dev/null 10854+++ b/cef/libcef/renderer/javascript/oh_gin_javascript_function_invocation_helper.cc 10855@@ -0,0 +1,111 @@ 10856+// Copyright (c) 2022 Huawei Device Co., Ltd. 10857+// Copyright 2018 The Chromium Authors. All rights reserved. 10858+// Use of this source code is governed by a BSD-style license that can be 10859+// found in the LICENSE file. 10860+ 10861+#include "libcef/renderer/javascript/oh_gin_javascript_function_invocation_helper.h" 10862+ 10863+#include <utility> 10864+ 10865+#include "base/values.h" 10866+#include "content/public/renderer/v8_value_converter.h" 10867+#include "libcef/common/javascript/oh_gin_javascript_bridge_errors.h" 10868+#include "libcef/common/javascript/oh_gin_javascript_bridge_value.h" 10869+#include "libcef/renderer/javascript/oh_gin_javascript_bridge_object.h" 10870+#include "libcef/renderer/javascript/oh_gin_javascript_bridge_value_converter.h" 10871+ 10872+namespace { 10873+ 10874+const char kMethodInvocationAsConstructorDisallowed[] = 10875+ "Javascript bridge method can't be invoked as a constructor"; 10876+const char kMethodInvocationOnNonInjectedObjectDisallowed[] = 10877+ "Javascript bridge method can't be invoked on a non-injected object"; 10878+const char kMethodInvocationErrorMessage[] = 10879+ "Javascript bridge method invocation error"; 10880+ 10881+} // namespace 10882+ 10883+namespace NWEB { 10884+OhGinJavascriptFunctionInvocationHelper:: 10885+ OhGinJavascriptFunctionInvocationHelper( 10886+ const std::string& method_name, 10887+ const base::WeakPtr<OhGinJavascriptBridgeDispatcher>& dispatcher) 10888+ : method_name_(method_name), 10889+ dispatcher_(dispatcher), 10890+ converter_(new OhGinJavascriptBridgeValueConverter()) {} 10891+ 10892+OhGinJavascriptFunctionInvocationHelper:: 10893+ ~OhGinJavascriptFunctionInvocationHelper() {} 10894+ 10895+v8::Local<v8::Value> OhGinJavascriptFunctionInvocationHelper::Invoke( 10896+ gin::Arguments* args) { 10897+ LOG(INFO) << "OhGinJavascriptFunctionInvocationHelper Invoke"; 10898+ if (!dispatcher_) { 10899+ args->isolate()->ThrowException(v8::Exception::Error( 10900+ gin::StringToV8(args->isolate(), kMethodInvocationErrorMessage))); 10901+ return v8::Undefined(args->isolate()); 10902+ } 10903+ 10904+ if (args->IsConstructCall()) { 10905+ args->isolate()->ThrowException(v8::Exception::Error(gin::StringToV8( 10906+ args->isolate(), kMethodInvocationAsConstructorDisallowed))); 10907+ return v8::Undefined(args->isolate()); 10908+ } 10909+ 10910+ OhGinJavascriptBridgeObject* object = NULL; 10911+ if (!args->GetHolder(&object) || !object) { 10912+ args->isolate()->ThrowException(v8::Exception::Error(gin::StringToV8( 10913+ args->isolate(), kMethodInvocationOnNonInjectedObjectDisallowed))); 10914+ return v8::Undefined(args->isolate()); 10915+ } 10916+ 10917+ base::ListValue arguments; 10918+ { 10919+ v8::HandleScope handle_scope(args->isolate()); 10920+ v8::Local<v8::Context> context = args->isolate()->GetCurrentContext(); 10921+ v8::Local<v8::Value> val; 10922+ while (args->GetNext(&val)) { 10923+ std::unique_ptr<base::Value> arg(converter_->FromV8Value(val, context)); 10924+ if (arg.get()) 10925+ arguments.Append(std::move(arg)); 10926+ else 10927+ arguments.Append(std::make_unique<base::Value>()); 10928+ } 10929+ } 10930+ 10931+ OhGinJavascriptBridgeError error; 10932+ std::unique_ptr<base::Value> result = dispatcher_->InvokeJavascriptMethod( 10933+ object->object_id(), method_name_, arguments, &error); 10934+ if (!result.get()) { 10935+ args->isolate()->ThrowException(v8::Exception::Error(gin::StringToV8( 10936+ args->isolate(), OhGinJavascriptBridgeErrorToString(error)))); 10937+ return v8::Undefined(args->isolate()); 10938+ } 10939+ if (!result->is_blob()) { 10940+ return converter_->ToV8Value(result.get(), 10941+ args->isolate()->GetCurrentContext()); 10942+ } 10943+ 10944+ std::unique_ptr<const OhGinJavascriptBridgeValue> gin_value = 10945+ OhGinJavascriptBridgeValue::FromValue(result.get()); 10946+ if (gin_value->IsType(OhGinJavascriptBridgeValue::TYPE_OBJECT_ID)) { 10947+ OhGinJavascriptBridgeObject* object_result = NULL; 10948+ OhGinJavascriptBridgeDispatcher::ObjectID object_id; 10949+ if (gin_value->GetAsObjectID(&object_id)) { 10950+ object_result = dispatcher_->GetObject(object_id); 10951+ } 10952+ if (object_result) { 10953+ gin::Handle<OhGinJavascriptBridgeObject> controller = 10954+ gin::CreateHandle(args->isolate(), object_result); 10955+ if (controller.IsEmpty()) 10956+ return v8::Undefined(args->isolate()); 10957+ return controller.ToV8(); 10958+ } 10959+ } else if (gin_value->IsType(OhGinJavascriptBridgeValue::TYPE_NONFINITE)) { 10960+ float float_value; 10961+ gin_value->GetAsNonFinite(&float_value); 10962+ return v8::Number::New(args->isolate(), float_value); 10963+ } 10964+ return v8::Undefined(args->isolate()); 10965+} 10966+} // namespace NWEB 10967diff --git a/cef/libcef/renderer/javascript/oh_gin_javascript_function_invocation_helper.h b/cef/libcef/renderer/javascript/oh_gin_javascript_function_invocation_helper.h 10968new file mode 100644 10969index 0000000000..4f3fd697f3 10970--- /dev/null 10971+++ b/cef/libcef/renderer/javascript/oh_gin_javascript_function_invocation_helper.h 10972@@ -0,0 +1,40 @@ 10973+// Copyright (c) 2022 Huawei Device Co., Ltd. 10974+// Copyright 2018 The Chromium Authors. All rights reserved. 10975+// Use of this source code is governed by a BSD-style license that can be 10976+// found in the LICENSE file. 10977+ 10978+#ifndef OH_GIN_JAVASCRIPT_FUNCTION_INVOCATION_HELPER_H 10979+#define OH_GIN_JAVASCRIPT_FUNCTION_INVOCATION_HELPER_H 10980+ 10981+#include <memory> 10982+ 10983+#include "base/memory/weak_ptr.h" 10984+#include "cef/libcef/renderer/javascript/oh_gin_javascript_bridge_dispatcher.h" 10985+#include "gin/arguments.h" 10986+#include "gin/handle.h" 10987+ 10988+namespace NWEB { 10989+class OhGinJavascriptBridgeValueConverter; 10990+ 10991+class OhGinJavascriptFunctionInvocationHelper { 10992+ public: 10993+ OhGinJavascriptFunctionInvocationHelper( 10994+ const std::string& method_name, 10995+ const base::WeakPtr<OhGinJavascriptBridgeDispatcher>& dispatcher); 10996+ 10997+ OhGinJavascriptFunctionInvocationHelper( 10998+ const OhGinJavascriptFunctionInvocationHelper&) = delete; 10999+ OhGinJavascriptFunctionInvocationHelper& operator=( 11000+ const OhGinJavascriptFunctionInvocationHelper&) = delete; 11001+ 11002+ ~OhGinJavascriptFunctionInvocationHelper(); 11003+ 11004+ v8::Local<v8::Value> Invoke(gin::Arguments* args); 11005+ 11006+ private: 11007+ std::string method_name_; 11008+ base::WeakPtr<OhGinJavascriptBridgeDispatcher> dispatcher_; 11009+ std::unique_ptr<OhGinJavascriptBridgeValueConverter> converter_; 11010+}; 11011+} // namespace NWEB 11012+#endif 11013diff --git a/cef/libcef/renderer/render_frame_observer.cc b/cef/libcef/renderer/render_frame_observer.cc 11014index 0459ab60e5..6504da052f 100644 11015--- a/cef/libcef/renderer/render_frame_observer.cc 11016+++ b/cef/libcef/renderer/render_frame_observer.cc 11017@@ -20,6 +20,7 @@ 11018 #include "libcef/common/app_manager.h" 11019 #include "libcef/renderer/blink_glue.h" 11020 #include "libcef/renderer/browser_impl.h" 11021+#include "libcef/common/cef_messages.h" 11022 #include "libcef/renderer/dom_document_impl.h" 11023 #include "libcef/renderer/v8_impl.h" 11024 11025@@ -73,7 +74,7 @@ void CefRenderFrameObserver::FocusedElementChanged( 11026 const blink::WebElement& element) { 11027 if (!frame_) 11028 return; 11029- 11030+ frame_->OnFocusedNodeChanged(element); 11031 blink::WebLocalFrame* frame = render_frame()->GetWebFrame(); 11032 CefRefPtr<CefBrowserImpl> browserPtr = 11033 CefBrowserImpl::GetBrowserForMainFrame(frame->Top()); 11034diff --git a/cef/libcef/renderer/render_frame_observer.h b/cef/libcef/renderer/render_frame_observer.h 11035index efd93bc652..ed505e7960 100644 11036--- a/cef/libcef/renderer/render_frame_observer.h 11037+++ b/cef/libcef/renderer/render_frame_observer.h 11038@@ -38,6 +38,7 @@ class CefRenderFrameObserver : public content::RenderFrameObserver { 11039 private: 11040 void OnLoadStart(); 11041 void OnLoadError(); 11042+ void FocusedHitDataChange(const blink::WebElement& element); 11043 11044 CefFrameImpl* frame_ = nullptr; 11045 11046diff --git a/cef/libcef_dll/cpptoc/access_request_cpptoc.cc b/cef/libcef_dll/cpptoc/access_request_cpptoc.cc 11047new file mode 100644 11048index 0000000000..d97849ec3b 11049--- /dev/null 11050+++ b/cef/libcef_dll/cpptoc/access_request_cpptoc.cc 11051@@ -0,0 +1,102 @@ 11052+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 11053+// reserved. Use of this source code is governed by a BSD-style license that 11054+// can be found in the LICENSE file. 11055+// 11056+// --------------------------------------------------------------------------- 11057+// 11058+// This file was generated by the CEF translator tool. If making changes by 11059+// hand only do so within the body of existing method and function 11060+// implementations. See the translator.README.txt file in the tools directory 11061+// for more information. 11062+// 11063+// $hash=6b186aa2b1640034df797d439745503309071680$ 11064+// 11065+ 11066+#include "libcef_dll/cpptoc/access_request_cpptoc.h" 11067+#include "libcef_dll/shutdown_checker.h" 11068+ 11069+namespace { 11070+ 11071+// MEMBER FUNCTIONS - Body may be edited by hand. 11072+ 11073+cef_string_userfree_t CEF_CALLBACK 11074+access_request_origin(struct _cef_access_request_t* self) { 11075+ shutdown_checker::AssertNotShutdown(); 11076+ 11077+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 11078+ 11079+ DCHECK(self); 11080+ if (!self) 11081+ return NULL; 11082+ 11083+ // Execute 11084+ CefString _retval = CefAccessRequestCppToC::Get(self)->Origin(); 11085+ 11086+ // Return type: string 11087+ return _retval.DetachToUserFree(); 11088+} 11089+ 11090+int CEF_CALLBACK 11091+access_request_resource_acess_id(struct _cef_access_request_t* self) { 11092+ shutdown_checker::AssertNotShutdown(); 11093+ 11094+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 11095+ 11096+ DCHECK(self); 11097+ if (!self) 11098+ return 0; 11099+ 11100+ // Execute 11101+ int _retval = CefAccessRequestCppToC::Get(self)->ResourceAcessId(); 11102+ 11103+ // Return type: simple 11104+ return _retval; 11105+} 11106+ 11107+void CEF_CALLBACK 11108+access_request_report_request_result(struct _cef_access_request_t* self, 11109+ int allowed) { 11110+ shutdown_checker::AssertNotShutdown(); 11111+ 11112+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 11113+ 11114+ DCHECK(self); 11115+ if (!self) 11116+ return; 11117+ 11118+ // Execute 11119+ CefAccessRequestCppToC::Get(self)->ReportRequestResult(allowed ? true 11120+ : false); 11121+} 11122+ 11123+} // namespace 11124+ 11125+// CONSTRUCTOR - Do not edit by hand. 11126+ 11127+CefAccessRequestCppToC::CefAccessRequestCppToC() { 11128+ GetStruct()->origin = access_request_origin; 11129+ GetStruct()->resource_acess_id = access_request_resource_acess_id; 11130+ GetStruct()->report_request_result = access_request_report_request_result; 11131+} 11132+ 11133+// DESTRUCTOR - Do not edit by hand. 11134+ 11135+CefAccessRequestCppToC::~CefAccessRequestCppToC() { 11136+ shutdown_checker::AssertNotShutdown(); 11137+} 11138+ 11139+template <> 11140+CefRefPtr<CefAccessRequest> CefCppToCRefCounted< 11141+ CefAccessRequestCppToC, 11142+ CefAccessRequest, 11143+ cef_access_request_t>::UnwrapDerived(CefWrapperType type, 11144+ cef_access_request_t* s) { 11145+ NOTREACHED() << "Unexpected class type: " << type; 11146+ return nullptr; 11147+} 11148+ 11149+template <> 11150+CefWrapperType CefCppToCRefCounted<CefAccessRequestCppToC, 11151+ CefAccessRequest, 11152+ cef_access_request_t>::kWrapperType = 11153+ WT_ACCESS_REQUEST; 11154diff --git a/cef/libcef_dll/cpptoc/access_request_cpptoc.h b/cef/libcef_dll/cpptoc/access_request_cpptoc.h 11155new file mode 100644 11156index 0000000000..c5262807d7 11157--- /dev/null 11158+++ b/cef/libcef_dll/cpptoc/access_request_cpptoc.h 11159@@ -0,0 +1,38 @@ 11160+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 11161+// reserved. Use of this source code is governed by a BSD-style license that 11162+// can be found in the LICENSE file. 11163+// 11164+// --------------------------------------------------------------------------- 11165+// 11166+// This file was generated by the CEF translator tool. If making changes by 11167+// hand only do so within the body of existing method and function 11168+// implementations. See the translator.README.txt file in the tools directory 11169+// for more information. 11170+// 11171+// $hash=7f780d77c50f8f64713a51f886c76adc70e44357$ 11172+// 11173+ 11174+#ifndef CEF_LIBCEF_DLL_CPPTOC_ACCESS_REQUEST_CPPTOC_H_ 11175+#define CEF_LIBCEF_DLL_CPPTOC_ACCESS_REQUEST_CPPTOC_H_ 11176+#pragma once 11177+ 11178+#if !defined(BUILDING_CEF_SHARED) 11179+#error This file can be included DLL-side only 11180+#endif 11181+ 11182+#include "include/capi/cef_permission_request_capi.h" 11183+#include "include/cef_permission_request.h" 11184+#include "libcef_dll/cpptoc/cpptoc_ref_counted.h" 11185+ 11186+// Wrap a C++ class with a C structure. 11187+// This class may be instantiated and accessed DLL-side only. 11188+class CefAccessRequestCppToC 11189+ : public CefCppToCRefCounted<CefAccessRequestCppToC, 11190+ CefAccessRequest, 11191+ cef_access_request_t> { 11192+ public: 11193+ CefAccessRequestCppToC(); 11194+ virtual ~CefAccessRequestCppToC(); 11195+}; 11196+ 11197+#endif // CEF_LIBCEF_DLL_CPPTOC_ACCESS_REQUEST_CPPTOC_H_ 11198diff --git a/cef/libcef_dll/cpptoc/accessibility_handler_cpptoc.cc b/cef/libcef_dll/cpptoc/accessibility_handler_cpptoc.cc 11199index 6928523ec5..992a81d609 100644 11200--- a/cef/libcef_dll/cpptoc/accessibility_handler_cpptoc.cc 11201+++ b/cef/libcef_dll/cpptoc/accessibility_handler_cpptoc.cc 11202@@ -1,4 +1,4 @@ 11203-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 11204+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 11205 // reserved. Use of this source code is governed by a BSD-style license that 11206 // can be found in the LICENSE file. 11207 // 11208@@ -9,7 +9,7 @@ 11209 // implementations. See the translator.README.txt file in the tools directory 11210 // for more information. 11211 // 11212-// $hash=d13edb3e144059dce3337ab5781fffbae7a7ead2$ 11213+// $hash=f20a2530c9b5ad72cccd301ee4234a16132c487d$ 11214 // 11215 11216 #include "libcef_dll/cpptoc/accessibility_handler_cpptoc.h" 11217diff --git a/cef/libcef_dll/cpptoc/accessibility_handler_cpptoc.h b/cef/libcef_dll/cpptoc/accessibility_handler_cpptoc.h 11218index ea01945a6a..b6dce7abc8 100644 11219--- a/cef/libcef_dll/cpptoc/accessibility_handler_cpptoc.h 11220+++ b/cef/libcef_dll/cpptoc/accessibility_handler_cpptoc.h 11221@@ -1,4 +1,4 @@ 11222-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 11223+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 11224 // reserved. Use of this source code is governed by a BSD-style license that 11225 // can be found in the LICENSE file. 11226 // 11227@@ -9,7 +9,7 @@ 11228 // implementations. See the translator.README.txt file in the tools directory 11229 // for more information. 11230 // 11231-// $hash=948aad5c459d9e8317428559b6c6b7ab0467c0ed$ 11232+// $hash=0605de17534cba62d36fc1160997660c4a38e40b$ 11233 // 11234 11235 #ifndef CEF_LIBCEF_DLL_CPPTOC_ACCESSIBILITY_HANDLER_CPPTOC_H_ 11236diff --git a/cef/libcef_dll/cpptoc/app_cpptoc.cc b/cef/libcef_dll/cpptoc/app_cpptoc.cc 11237index c39287fa83..bc6f55efe8 100644 11238--- a/cef/libcef_dll/cpptoc/app_cpptoc.cc 11239+++ b/cef/libcef_dll/cpptoc/app_cpptoc.cc 11240@@ -1,4 +1,4 @@ 11241-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 11242+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 11243 // reserved. Use of this source code is governed by a BSD-style license that 11244 // can be found in the LICENSE file. 11245 // 11246@@ -9,7 +9,7 @@ 11247 // implementations. See the translator.README.txt file in the tools directory 11248 // for more information. 11249 // 11250-// $hash=3d9026243d2086b44cd99c460a82848837672131$ 11251+// $hash=ee267b6567062246b9f82b4b50b68d82d2cc939f$ 11252 // 11253 11254 #include "libcef_dll/cpptoc/app_cpptoc.h" 11255diff --git a/cef/libcef_dll/cpptoc/app_cpptoc.h b/cef/libcef_dll/cpptoc/app_cpptoc.h 11256index 7e391a66e2..c705f806df 100644 11257--- a/cef/libcef_dll/cpptoc/app_cpptoc.h 11258+++ b/cef/libcef_dll/cpptoc/app_cpptoc.h 11259@@ -1,4 +1,4 @@ 11260-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 11261+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 11262 // reserved. Use of this source code is governed by a BSD-style license that 11263 // can be found in the LICENSE file. 11264 // 11265@@ -9,7 +9,7 @@ 11266 // implementations. See the translator.README.txt file in the tools directory 11267 // for more information. 11268 // 11269-// $hash=0ca0d5506a28dbf7e1d36e00e8f8de07da222411$ 11270+// $hash=601455da6a16a7212debdb8184b8f731be4e2f8d$ 11271 // 11272 11273 #ifndef CEF_LIBCEF_DLL_CPPTOC_APP_CPPTOC_H_ 11274diff --git a/cef/libcef_dll/cpptoc/audio_handler_cpptoc.cc b/cef/libcef_dll/cpptoc/audio_handler_cpptoc.cc 11275index 44396046df..0317067179 100644 11276--- a/cef/libcef_dll/cpptoc/audio_handler_cpptoc.cc 11277+++ b/cef/libcef_dll/cpptoc/audio_handler_cpptoc.cc 11278@@ -1,4 +1,4 @@ 11279-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 11280+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 11281 // reserved. Use of this source code is governed by a BSD-style license that 11282 // can be found in the LICENSE file. 11283 // 11284@@ -9,7 +9,7 @@ 11285 // implementations. See the translator.README.txt file in the tools directory 11286 // for more information. 11287 // 11288-// $hash=4874d395bcbe824a8ddd9394cec1b56bfee5000b$ 11289+// $hash=519a82bbea84ea39cadc72c55291e15cb2a74072$ 11290 // 11291 11292 #include "libcef_dll/cpptoc/audio_handler_cpptoc.h" 11293diff --git a/cef/libcef_dll/cpptoc/audio_handler_cpptoc.h b/cef/libcef_dll/cpptoc/audio_handler_cpptoc.h 11294index 24bbfacd91..d2574a797a 100644 11295--- a/cef/libcef_dll/cpptoc/audio_handler_cpptoc.h 11296+++ b/cef/libcef_dll/cpptoc/audio_handler_cpptoc.h 11297@@ -1,4 +1,4 @@ 11298-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 11299+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 11300 // reserved. Use of this source code is governed by a BSD-style license that 11301 // can be found in the LICENSE file. 11302 // 11303@@ -9,7 +9,7 @@ 11304 // implementations. See the translator.README.txt file in the tools directory 11305 // for more information. 11306 // 11307-// $hash=b84737f07d28a6a8a602729a851b206d42868833$ 11308+// $hash=352ed71e6c70ef8e5f38e635ed8fc17b2fcc2b4e$ 11309 // 11310 11311 #ifndef CEF_LIBCEF_DLL_CPPTOC_AUDIO_HANDLER_CPPTOC_H_ 11312diff --git a/cef/libcef_dll/cpptoc/auth_callback_cpptoc.cc b/cef/libcef_dll/cpptoc/auth_callback_cpptoc.cc 11313index bcd7d463d1..c9733c0168 100644 11314--- a/cef/libcef_dll/cpptoc/auth_callback_cpptoc.cc 11315+++ b/cef/libcef_dll/cpptoc/auth_callback_cpptoc.cc 11316@@ -1,4 +1,4 @@ 11317-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 11318+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 11319 // reserved. Use of this source code is governed by a BSD-style license that 11320 // can be found in the LICENSE file. 11321 // 11322@@ -9,7 +9,7 @@ 11323 // implementations. See the translator.README.txt file in the tools directory 11324 // for more information. 11325 // 11326-// $hash=6d0b1ff7c3c5bfdbfb339036c7fa7e36ee2ebaf9$ 11327+// $hash=7497a44116b3cfc86eb309dc940c91c7cca78353$ 11328 // 11329 11330 #include "libcef_dll/cpptoc/auth_callback_cpptoc.h" 11331diff --git a/cef/libcef_dll/cpptoc/auth_callback_cpptoc.h b/cef/libcef_dll/cpptoc/auth_callback_cpptoc.h 11332index 37a8c23fb9..b9aae72ade 100644 11333--- a/cef/libcef_dll/cpptoc/auth_callback_cpptoc.h 11334+++ b/cef/libcef_dll/cpptoc/auth_callback_cpptoc.h 11335@@ -1,4 +1,4 @@ 11336-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 11337+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 11338 // reserved. Use of this source code is governed by a BSD-style license that 11339 // can be found in the LICENSE file. 11340 // 11341@@ -9,7 +9,7 @@ 11342 // implementations. See the translator.README.txt file in the tools directory 11343 // for more information. 11344 // 11345-// $hash=d230ed608200d25f8efb032971ff796bc4401f62$ 11346+// $hash=036ebbbaaa86b497dda11ef6371e5bc6c9171b04$ 11347 // 11348 11349 #ifndef CEF_LIBCEF_DLL_CPPTOC_AUTH_CALLBACK_CPPTOC_H_ 11350diff --git a/cef/libcef_dll/cpptoc/before_download_callback_cpptoc.cc b/cef/libcef_dll/cpptoc/before_download_callback_cpptoc.cc 11351index 364acc406f..6187dfa3f3 100644 11352--- a/cef/libcef_dll/cpptoc/before_download_callback_cpptoc.cc 11353+++ b/cef/libcef_dll/cpptoc/before_download_callback_cpptoc.cc 11354@@ -1,4 +1,4 @@ 11355-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 11356+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 11357 // reserved. Use of this source code is governed by a BSD-style license that 11358 // can be found in the LICENSE file. 11359 // 11360@@ -9,7 +9,7 @@ 11361 // implementations. See the translator.README.txt file in the tools directory 11362 // for more information. 11363 // 11364-// $hash=e33b28b1b5a88aece1ba705cfd2f9e22ab2e04fd$ 11365+// $hash=0f0475ffcd9ea6ca7f91616c52c21b3e51b075f3$ 11366 // 11367 11368 #include "libcef_dll/cpptoc/before_download_callback_cpptoc.h" 11369diff --git a/cef/libcef_dll/cpptoc/before_download_callback_cpptoc.h b/cef/libcef_dll/cpptoc/before_download_callback_cpptoc.h 11370index 9005865fb7..fc31cf8417 100644 11371--- a/cef/libcef_dll/cpptoc/before_download_callback_cpptoc.h 11372+++ b/cef/libcef_dll/cpptoc/before_download_callback_cpptoc.h 11373@@ -1,4 +1,4 @@ 11374-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 11375+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 11376 // reserved. Use of this source code is governed by a BSD-style license that 11377 // can be found in the LICENSE file. 11378 // 11379@@ -9,7 +9,7 @@ 11380 // implementations. See the translator.README.txt file in the tools directory 11381 // for more information. 11382 // 11383-// $hash=b11017f368ab5c6b1dd1c481dec048ceaf86bbb1$ 11384+// $hash=53a024e4e503f7e107c19ed638684c5708efd6e6$ 11385 // 11386 11387 #ifndef CEF_LIBCEF_DLL_CPPTOC_BEFORE_DOWNLOAD_CALLBACK_CPPTOC_H_ 11388diff --git a/cef/libcef_dll/cpptoc/binary_value_cpptoc.cc b/cef/libcef_dll/cpptoc/binary_value_cpptoc.cc 11389index f179d1384d..51659b1677 100644 11390--- a/cef/libcef_dll/cpptoc/binary_value_cpptoc.cc 11391+++ b/cef/libcef_dll/cpptoc/binary_value_cpptoc.cc 11392@@ -1,4 +1,4 @@ 11393-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 11394+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 11395 // reserved. Use of this source code is governed by a BSD-style license that 11396 // can be found in the LICENSE file. 11397 // 11398@@ -9,7 +9,7 @@ 11399 // implementations. See the translator.README.txt file in the tools directory 11400 // for more information. 11401 // 11402-// $hash=60f72b2e1a5118e01de182a9d10d4e2b2c236bd1$ 11403+// $hash=fd59a248f99060800fc3bab5c381784eb3309a57$ 11404 // 11405 11406 #include "libcef_dll/cpptoc/binary_value_cpptoc.h" 11407diff --git a/cef/libcef_dll/cpptoc/binary_value_cpptoc.h b/cef/libcef_dll/cpptoc/binary_value_cpptoc.h 11408index 380907574f..994621aa25 100644 11409--- a/cef/libcef_dll/cpptoc/binary_value_cpptoc.h 11410+++ b/cef/libcef_dll/cpptoc/binary_value_cpptoc.h 11411@@ -1,4 +1,4 @@ 11412-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 11413+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 11414 // reserved. Use of this source code is governed by a BSD-style license that 11415 // can be found in the LICENSE file. 11416 // 11417@@ -9,7 +9,7 @@ 11418 // implementations. See the translator.README.txt file in the tools directory 11419 // for more information. 11420 // 11421-// $hash=8f13b32d7b16d6ad756c50755bc8268ec24d782d$ 11422+// $hash=83361bb9395a566ef5bfcd9d87eade8df222d075$ 11423 // 11424 11425 #ifndef CEF_LIBCEF_DLL_CPPTOC_BINARY_VALUE_CPPTOC_H_ 11426diff --git a/cef/libcef_dll/cpptoc/browser_cpptoc.cc b/cef/libcef_dll/cpptoc/browser_cpptoc.cc 11427index 5bb98a30e7..3105dcd17b 100644 11428--- a/cef/libcef_dll/cpptoc/browser_cpptoc.cc 11429+++ b/cef/libcef_dll/cpptoc/browser_cpptoc.cc 11430@@ -1,4 +1,4 @@ 11431-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 11432+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 11433 // reserved. Use of this source code is governed by a BSD-style license that 11434 // can be found in the LICENSE file. 11435 // 11436@@ -9,13 +9,15 @@ 11437 // implementations. See the translator.README.txt file in the tools directory 11438 // for more information. 11439 // 11440-// $hash=b573d2840558cbf17908a16d3e92c3196c84b1c7$ 11441+// $hash=37305a392b6fceed48564b7a7d5f0d2811c537f4$ 11442 // 11443 11444 #include "libcef_dll/cpptoc/browser_cpptoc.h" 11445 #include <algorithm> 11446 #include "libcef_dll/cpptoc/browser_host_cpptoc.h" 11447+#include "libcef_dll/cpptoc/browser_permission_request_delegate_cpptoc.h" 11448 #include "libcef_dll/cpptoc/frame_cpptoc.h" 11449+#include "libcef_dll/cpptoc/geolocation_acess_cpptoc.h" 11450 #include "libcef_dll/shutdown_checker.h" 11451 #include "libcef_dll/transfer_util.h" 11452 11453@@ -98,6 +100,23 @@ void CEF_CALLBACK browser_go_forward(struct _cef_browser_t* self) { 11454 CefBrowserCppToC::Get(self)->GoForward(); 11455 } 11456 11457+int CEF_CALLBACK browser_can_go_back_or_forward(struct _cef_browser_t* self, 11458+ int num_steps) { 11459+ shutdown_checker::AssertNotShutdown(); 11460+ 11461+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 11462+ 11463+ DCHECK(self); 11464+ if (!self) 11465+ return 0; 11466+ 11467+ // Execute 11468+ bool _retval = CefBrowserCppToC::Get(self)->CanGoBackOrForward(num_steps); 11469+ 11470+ // Return type: bool 11471+ return _retval; 11472+} 11473+ 11474 int CEF_CALLBACK browser_is_loading(struct _cef_browser_t* self) { 11475 shutdown_checker::AssertNotShutdown(); 11476 11477@@ -373,6 +392,42 @@ void CEF_CALLBACK browser_get_frame_names(struct _cef_browser_t* self, 11478 transfer_string_list_contents(namesList, names); 11479 } 11480 11481+struct _cef_browser_permission_request_delegate_t* CEF_CALLBACK 11482+browser_get_permission_request_delegate(struct _cef_browser_t* self) { 11483+ shutdown_checker::AssertNotShutdown(); 11484+ 11485+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 11486+ 11487+ DCHECK(self); 11488+ if (!self) 11489+ return NULL; 11490+ 11491+ // Execute 11492+ CefRefPtr<CefBrowserPermissionRequestDelegate> _retval = 11493+ CefBrowserCppToC::Get(self)->GetPermissionRequestDelegate(); 11494+ 11495+ // Return type: refptr_same 11496+ return CefBrowserPermissionRequestDelegateCppToC::Wrap(_retval); 11497+} 11498+ 11499+struct _cef_geolocation_acess_t* CEF_CALLBACK 11500+browser_get_geolocation_permissions(struct _cef_browser_t* self) { 11501+ shutdown_checker::AssertNotShutdown(); 11502+ 11503+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 11504+ 11505+ DCHECK(self); 11506+ if (!self) 11507+ return NULL; 11508+ 11509+ // Execute 11510+ CefRefPtr<CefGeolocationAcess> _retval = 11511+ CefBrowserCppToC::Get(self)->GetGeolocationPermissions(); 11512+ 11513+ // Return type: refptr_same 11514+ return CefGeolocationAcessCppToC::Wrap(_retval); 11515+} 11516+ 11517 } // namespace 11518 11519 // CONSTRUCTOR - Do not edit by hand. 11520@@ -383,6 +438,7 @@ CefBrowserCppToC::CefBrowserCppToC() { 11521 GetStruct()->go_back = browser_go_back; 11522 GetStruct()->can_go_forward = browser_can_go_forward; 11523 GetStruct()->go_forward = browser_go_forward; 11524+ GetStruct()->can_go_back_or_forward = browser_can_go_back_or_forward; 11525 GetStruct()->is_loading = browser_is_loading; 11526 GetStruct()->reload = browser_reload; 11527 GetStruct()->reload_ignore_cache = browser_reload_ignore_cache; 11528@@ -398,6 +454,10 @@ CefBrowserCppToC::CefBrowserCppToC() { 11529 GetStruct()->get_frame_count = browser_get_frame_count; 11530 GetStruct()->get_frame_identifiers = browser_get_frame_identifiers; 11531 GetStruct()->get_frame_names = browser_get_frame_names; 11532+ GetStruct()->get_permission_request_delegate = 11533+ browser_get_permission_request_delegate; 11534+ GetStruct()->get_geolocation_permissions = 11535+ browser_get_geolocation_permissions; 11536 } 11537 11538 // DESTRUCTOR - Do not edit by hand. 11539diff --git a/cef/libcef_dll/cpptoc/browser_cpptoc.h b/cef/libcef_dll/cpptoc/browser_cpptoc.h 11540index 2c92c98b33..08c927b498 100644 11541--- a/cef/libcef_dll/cpptoc/browser_cpptoc.h 11542+++ b/cef/libcef_dll/cpptoc/browser_cpptoc.h 11543@@ -1,4 +1,4 @@ 11544-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 11545+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 11546 // reserved. Use of this source code is governed by a BSD-style license that 11547 // can be found in the LICENSE file. 11548 // 11549@@ -9,7 +9,7 @@ 11550 // implementations. See the translator.README.txt file in the tools directory 11551 // for more information. 11552 // 11553-// $hash=524016208502fc4afb767c79320d5568ce1987d7$ 11554+// $hash=68e6a8ff4e47ec0c3c767d80746091550b9d11dc$ 11555 // 11556 11557 #ifndef CEF_LIBCEF_DLL_CPPTOC_BROWSER_CPPTOC_H_ 11558diff --git a/cef/libcef_dll/cpptoc/browser_host_cpptoc.cc b/cef/libcef_dll/cpptoc/browser_host_cpptoc.cc 11559index 9514635efa..63bc4cc194 100644 11560--- a/cef/libcef_dll/cpptoc/browser_host_cpptoc.cc 11561+++ b/cef/libcef_dll/cpptoc/browser_host_cpptoc.cc 11562@@ -1,4 +1,4 @@ 11563-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 11564+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 11565 // reserved. Use of this source code is governed by a BSD-style license that 11566 // can be found in the LICENSE file. 11567 // 11568@@ -9,7 +9,7 @@ 11569 // implementations. See the translator.README.txt file in the tools directory 11570 // for more information. 11571 // 11572-// $hash=0109529f61a92116f73bc6c0ff47bfd0423b6f07$ 11573+// $hash=30942a6f9c376a901f337c13dbbb65417e9b1c5d$ 11574 // 11575 11576 #include "libcef_dll/cpptoc/browser_host_cpptoc.h" 11577@@ -23,9 +23,11 @@ 11578 #include "libcef_dll/ctocpp/client_ctocpp.h" 11579 #include "libcef_dll/ctocpp/dev_tools_message_observer_ctocpp.h" 11580 #include "libcef_dll/ctocpp/download_image_callback_ctocpp.h" 11581+#include "libcef_dll/ctocpp/java_script_result_callback_ctocpp.h" 11582 #include "libcef_dll/ctocpp/navigation_entry_visitor_ctocpp.h" 11583 #include "libcef_dll/ctocpp/pdf_print_callback_ctocpp.h" 11584 #include "libcef_dll/ctocpp/run_file_dialog_callback_ctocpp.h" 11585+#include "libcef_dll/ctocpp/task_ctocpp.h" 11586 #include "libcef_dll/shutdown_checker.h" 11587 #include "libcef_dll/transfer_util.h" 11588 11589@@ -132,6 +134,26 @@ browser_host_get_browser(struct _cef_browser_host_t* self) { 11590 return CefBrowserCppToC::Wrap(_retval); 11591 } 11592 11593+void CEF_CALLBACK 11594+browser_host_post_task_to_uithread(struct _cef_browser_host_t* self, 11595+ struct _cef_task_t* task) { 11596+ shutdown_checker::AssertNotShutdown(); 11597+ 11598+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 11599+ 11600+ DCHECK(self); 11601+ if (!self) 11602+ return; 11603+ // Verify param: task; type: refptr_diff 11604+ DCHECK(task); 11605+ if (!task) 11606+ return; 11607+ 11608+ // Execute 11609+ CefBrowserHostCppToC::Get(self)->PostTaskToUIThread( 11610+ CefTaskCToCpp::Wrap(task)); 11611+} 11612+ 11613 void CEF_CALLBACK browser_host_close_browser(struct _cef_browser_host_t* self, 11614 int force_close) { 11615 shutdown_checker::AssertNotShutdown(); 11616@@ -948,6 +970,276 @@ browser_host_set_windowless_frame_rate(struct _cef_browser_host_t* self, 11617 CefBrowserHostCppToC::Get(self)->SetWindowlessFrameRate(frame_rate); 11618 } 11619 11620+void CEF_CALLBACK browser_host_set_web_preferences( 11621+ struct _cef_browser_host_t* self, 11622+ const struct _cef_browser_settings_t* browser_settings) { 11623+ shutdown_checker::AssertNotShutdown(); 11624+ 11625+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 11626+ 11627+ DCHECK(self); 11628+ if (!self) 11629+ return; 11630+ // Verify param: browser_settings; type: struct_byref_const 11631+ DCHECK(browser_settings); 11632+ if (!browser_settings) 11633+ return; 11634+ 11635+ // Translate param: browser_settings; type: struct_byref_const 11636+ CefBrowserSettings browser_settingsObj; 11637+ if (browser_settings) 11638+ browser_settingsObj.Set(*browser_settings, false); 11639+ 11640+ // Execute 11641+ CefBrowserHostCppToC::Get(self)->SetWebPreferences(browser_settingsObj); 11642+} 11643+ 11644+void CEF_CALLBACK browser_host_put_user_agent(struct _cef_browser_host_t* self, 11645+ const cef_string_t* ua) { 11646+ shutdown_checker::AssertNotShutdown(); 11647+ 11648+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 11649+ 11650+ DCHECK(self); 11651+ if (!self) 11652+ return; 11653+ // Verify param: ua; type: string_byref_const 11654+ DCHECK(ua); 11655+ if (!ua) 11656+ return; 11657+ 11658+ // Execute 11659+ CefBrowserHostCppToC::Get(self)->PutUserAgent(CefString(ua)); 11660+} 11661+ 11662+cef_string_userfree_t CEF_CALLBACK 11663+browser_host_default_user_agent(struct _cef_browser_host_t* self) { 11664+ shutdown_checker::AssertNotShutdown(); 11665+ 11666+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 11667+ 11668+ DCHECK(self); 11669+ if (!self) 11670+ return NULL; 11671+ 11672+ // Execute 11673+ CefString _retval = CefBrowserHostCppToC::Get(self)->DefaultUserAgent(); 11674+ 11675+ // Return type: string 11676+ return _retval.DetachToUserFree(); 11677+} 11678+ 11679+void CEF_CALLBACK 11680+browser_host_set_background_color(struct _cef_browser_host_t* self, int color) { 11681+ shutdown_checker::AssertNotShutdown(); 11682+ 11683+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 11684+ 11685+ DCHECK(self); 11686+ if (!self) 11687+ return; 11688+ 11689+ // Execute 11690+ CefBrowserHostCppToC::Get(self)->SetBackgroundColor(color); 11691+} 11692+ 11693+void CEF_CALLBACK 11694+browser_host_register_ark_jsfunction(struct _cef_browser_host_t* self, 11695+ const cef_string_t* object_name, 11696+ cef_string_list_t method_list) { 11697+ shutdown_checker::AssertNotShutdown(); 11698+ 11699+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 11700+ 11701+ DCHECK(self); 11702+ if (!self) 11703+ return; 11704+ // Verify param: object_name; type: string_byref_const 11705+ DCHECK(object_name); 11706+ if (!object_name) 11707+ return; 11708+ // Verify param: method_list; type: string_vec_byref_const 11709+ DCHECK(method_list); 11710+ if (!method_list) 11711+ return; 11712+ 11713+ // Translate param: method_list; type: string_vec_byref_const 11714+ std::vector<CefString> method_listList; 11715+ transfer_string_list_contents(method_list, method_listList); 11716+ 11717+ // Execute 11718+ CefBrowserHostCppToC::Get(self)->RegisterArkJSfunction(CefString(object_name), 11719+ method_listList); 11720+} 11721+ 11722+void CEF_CALLBACK 11723+browser_host_unregister_ark_jsfunction(struct _cef_browser_host_t* self, 11724+ const cef_string_t* object_name, 11725+ cef_string_list_t method_list) { 11726+ shutdown_checker::AssertNotShutdown(); 11727+ 11728+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 11729+ 11730+ DCHECK(self); 11731+ if (!self) 11732+ return; 11733+ // Verify param: object_name; type: string_byref_const 11734+ DCHECK(object_name); 11735+ if (!object_name) 11736+ return; 11737+ // Unverified params: method_list 11738+ 11739+ // Translate param: method_list; type: string_vec_byref_const 11740+ std::vector<CefString> method_listList; 11741+ transfer_string_list_contents(method_list, method_listList); 11742+ 11743+ // Execute 11744+ CefBrowserHostCppToC::Get(self)->UnregisterArkJSfunction( 11745+ CefString(object_name), method_listList); 11746+} 11747+ 11748+cef_string_userfree_t CEF_CALLBACK 11749+browser_host_title(struct _cef_browser_host_t* self) { 11750+ shutdown_checker::AssertNotShutdown(); 11751+ 11752+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 11753+ 11754+ DCHECK(self); 11755+ if (!self) 11756+ return NULL; 11757+ 11758+ // Execute 11759+ CefString _retval = CefBrowserHostCppToC::Get(self)->Title(); 11760+ 11761+ // Return type: string 11762+ return _retval.DetachToUserFree(); 11763+} 11764+ 11765+void CEF_CALLBACK browser_host_get_hit_data(struct _cef_browser_host_t* self, 11766+ int* type, 11767+ cef_string_t* extra_data) { 11768+ shutdown_checker::AssertNotShutdown(); 11769+ 11770+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 11771+ 11772+ DCHECK(self); 11773+ if (!self) 11774+ return; 11775+ // Verify param: type; type: simple_byref 11776+ DCHECK(type); 11777+ if (!type) 11778+ return; 11779+ // Verify param: extra_data; type: string_byref 11780+ DCHECK(extra_data); 11781+ if (!extra_data) 11782+ return; 11783+ 11784+ // Translate param: type; type: simple_byref 11785+ int typeVal = type ? *type : 0; 11786+ // Translate param: extra_data; type: string_byref 11787+ CefString extra_dataStr(extra_data); 11788+ 11789+ // Execute 11790+ CefBrowserHostCppToC::Get(self)->GetHitData(typeVal, extra_dataStr); 11791+ 11792+ // Restore param: type; type: simple_byref 11793+ if (type) 11794+ *type = typeVal; 11795+} 11796+ 11797+int CEF_CALLBACK 11798+browser_host_page_load_progress(struct _cef_browser_host_t* self) { 11799+ shutdown_checker::AssertNotShutdown(); 11800+ 11801+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 11802+ 11803+ DCHECK(self); 11804+ if (!self) 11805+ return 0; 11806+ 11807+ // Execute 11808+ int _retval = CefBrowserHostCppToC::Get(self)->PageLoadProgress(); 11809+ 11810+ // Return type: simple 11811+ return _retval; 11812+} 11813+ 11814+float CEF_CALLBACK browser_host_scale(struct _cef_browser_host_t* self) { 11815+ shutdown_checker::AssertNotShutdown(); 11816+ 11817+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 11818+ 11819+ DCHECK(self); 11820+ if (!self) 11821+ return 0; 11822+ 11823+ // Execute 11824+ float _retval = CefBrowserHostCppToC::Get(self)->Scale(); 11825+ 11826+ // Return type: simple 11827+ return _retval; 11828+} 11829+ 11830+void CEF_CALLBACK 11831+browser_host_load_with_data_and_base_url(struct _cef_browser_host_t* self, 11832+ const cef_string_t* baseUrl, 11833+ const cef_string_t* data, 11834+ const cef_string_t* mimeType, 11835+ const cef_string_t* encoding, 11836+ const cef_string_t* historyUrl) { 11837+ shutdown_checker::AssertNotShutdown(); 11838+ 11839+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 11840+ 11841+ DCHECK(self); 11842+ if (!self) 11843+ return; 11844+ // Unverified params: baseUrl, data, mimeType, encoding, historyUrl 11845+ 11846+ // Execute 11847+ CefBrowserHostCppToC::Get(self)->LoadWithDataAndBaseUrl( 11848+ CefString(baseUrl), CefString(data), CefString(mimeType), 11849+ CefString(encoding), CefString(historyUrl)); 11850+} 11851+ 11852+void CEF_CALLBACK browser_host_load_with_data(struct _cef_browser_host_t* self, 11853+ const cef_string_t* data, 11854+ const cef_string_t* mimeType, 11855+ const cef_string_t* encoding) { 11856+ shutdown_checker::AssertNotShutdown(); 11857+ 11858+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 11859+ 11860+ DCHECK(self); 11861+ if (!self) 11862+ return; 11863+ // Unverified params: data, mimeType, encoding 11864+ 11865+ // Execute 11866+ CefBrowserHostCppToC::Get(self)->LoadWithData( 11867+ CefString(data), CefString(mimeType), CefString(encoding)); 11868+} 11869+ 11870+void CEF_CALLBACK 11871+browser_host_add_visited_links(struct _cef_browser_host_t* self, 11872+ cef_string_list_t urls) { 11873+ shutdown_checker::AssertNotShutdown(); 11874+ 11875+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 11876+ 11877+ DCHECK(self); 11878+ if (!self) 11879+ return; 11880+ // Unverified params: urls 11881+ 11882+ // Translate param: urls; type: string_vec_byref_const 11883+ std::vector<CefString> urlsList; 11884+ transfer_string_list_contents(urls, urlsList); 11885+ 11886+ // Execute 11887+ CefBrowserHostCppToC::Get(self)->AddVisitedLinks(urlsList); 11888+} 11889+ 11890 void CEF_CALLBACK 11891 browser_host_ime_set_composition(struct _cef_browser_host_t* self, 11892 const cef_string_t* text, 11893@@ -1303,12 +1595,38 @@ int CEF_CALLBACK browser_host_is_audio_muted(struct _cef_browser_host_t* self) { 11894 return _retval; 11895 } 11896 11897+void CEF_CALLBACK browser_host_execute_java_script( 11898+ struct _cef_browser_host_t* self, 11899+ const cef_string_t* code, 11900+ struct _cef_java_script_result_callback_t* callback) { 11901+ shutdown_checker::AssertNotShutdown(); 11902+ 11903+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 11904+ 11905+ DCHECK(self); 11906+ if (!self) 11907+ return; 11908+ // Verify param: code; type: string_byref_const 11909+ DCHECK(code); 11910+ if (!code) 11911+ return; 11912+ // Verify param: callback; type: refptr_diff 11913+ DCHECK(callback); 11914+ if (!callback) 11915+ return; 11916+ 11917+ // Execute 11918+ CefBrowserHostCppToC::Get(self)->ExecuteJavaScript( 11919+ CefString(code), CefJavaScriptResultCallbackCToCpp::Wrap(callback)); 11920+} 11921+ 11922 } // namespace 11923 11924 // CONSTRUCTOR - Do not edit by hand. 11925 11926 CefBrowserHostCppToC::CefBrowserHostCppToC() { 11927 GetStruct()->get_browser = browser_host_get_browser; 11928+ GetStruct()->post_task_to_uithread = browser_host_post_task_to_uithread; 11929 GetStruct()->close_browser = browser_host_close_browser; 11930 GetStruct()->try_close_browser = browser_host_try_close_browser; 11931 GetStruct()->set_focus = browser_host_set_focus; 11932@@ -1358,6 +1676,21 @@ CefBrowserHostCppToC::CefBrowserHostCppToC() { 11933 browser_host_get_windowless_frame_rate; 11934 GetStruct()->set_windowless_frame_rate = 11935 browser_host_set_windowless_frame_rate; 11936+ GetStruct()->set_web_preferences = browser_host_set_web_preferences; 11937+ GetStruct()->put_user_agent = browser_host_put_user_agent; 11938+ GetStruct()->default_user_agent = browser_host_default_user_agent; 11939+ GetStruct()->set_background_color = browser_host_set_background_color; 11940+ GetStruct()->register_ark_jsfunction = browser_host_register_ark_jsfunction; 11941+ GetStruct()->unregister_ark_jsfunction = 11942+ browser_host_unregister_ark_jsfunction; 11943+ GetStruct()->title = browser_host_title; 11944+ GetStruct()->get_hit_data = browser_host_get_hit_data; 11945+ GetStruct()->page_load_progress = browser_host_page_load_progress; 11946+ GetStruct()->scale = browser_host_scale; 11947+ GetStruct()->load_with_data_and_base_url = 11948+ browser_host_load_with_data_and_base_url; 11949+ GetStruct()->load_with_data = browser_host_load_with_data; 11950+ GetStruct()->add_visited_links = browser_host_add_visited_links; 11951 GetStruct()->ime_set_composition = browser_host_ime_set_composition; 11952 GetStruct()->ime_commit_text = browser_host_ime_commit_text; 11953 GetStruct()->ime_finish_composing_text = 11954@@ -1378,6 +1711,7 @@ CefBrowserHostCppToC::CefBrowserHostCppToC() { 11955 GetStruct()->is_background_host = browser_host_is_background_host; 11956 GetStruct()->set_audio_muted = browser_host_set_audio_muted; 11957 GetStruct()->is_audio_muted = browser_host_is_audio_muted; 11958+ GetStruct()->execute_java_script = browser_host_execute_java_script; 11959 } 11960 11961 // DESTRUCTOR - Do not edit by hand. 11962diff --git a/cef/libcef_dll/cpptoc/browser_host_cpptoc.h b/cef/libcef_dll/cpptoc/browser_host_cpptoc.h 11963index 2afe298c8f..3a7c593329 100644 11964--- a/cef/libcef_dll/cpptoc/browser_host_cpptoc.h 11965+++ b/cef/libcef_dll/cpptoc/browser_host_cpptoc.h 11966@@ -1,4 +1,4 @@ 11967-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 11968+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 11969 // reserved. Use of this source code is governed by a BSD-style license that 11970 // can be found in the LICENSE file. 11971 // 11972@@ -9,7 +9,7 @@ 11973 // implementations. See the translator.README.txt file in the tools directory 11974 // for more information. 11975 // 11976-// $hash=65fa250d1ab296dd74f4047aef707a4a9e41a772$ 11977+// $hash=244bcb519cd21d6febf70c4ce40fbc1cbb18176c$ 11978 // 11979 11980 #ifndef CEF_LIBCEF_DLL_CPPTOC_BROWSER_HOST_CPPTOC_H_ 11981diff --git a/cef/libcef_dll/cpptoc/browser_permission_request_delegate_cpptoc.cc b/cef/libcef_dll/cpptoc/browser_permission_request_delegate_cpptoc.cc 11982new file mode 100644 11983index 0000000000..82e01abae7 11984--- /dev/null 11985+++ b/cef/libcef_dll/cpptoc/browser_permission_request_delegate_cpptoc.cc 11986@@ -0,0 +1,217 @@ 11987+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 11988+// reserved. Use of this source code is governed by a BSD-style license that 11989+// can be found in the LICENSE file. 11990+// 11991+// --------------------------------------------------------------------------- 11992+// 11993+// This file was generated by the CEF translator tool. If making changes by 11994+// hand only do so within the body of existing method and function 11995+// implementations. See the translator.README.txt file in the tools directory 11996+// for more information. 11997+// 11998+// $hash=2f9f0ebd4c8a44fb9c2d2136e0791770fc72dfe0$ 11999+// 12000+ 12001+#include "libcef_dll/cpptoc/browser_permission_request_delegate_cpptoc.h" 12002+#include "libcef_dll/shutdown_checker.h" 12003+ 12004+namespace { 12005+ 12006+// MEMBER FUNCTIONS - Body may be edited by hand. 12007+ 12008+void CEF_CALLBACK 12009+browser_permission_request_delegate_ask_geolocation_permission( 12010+ struct _cef_browser_permission_request_delegate_t* self, 12011+ const cef_string_t* origin, 12012+ cef_permission_callback_t callback) { 12013+ shutdown_checker::AssertNotShutdown(); 12014+ 12015+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 12016+ 12017+ DCHECK(self); 12018+ if (!self) 12019+ return; 12020+ // Verify param: origin; type: string_byref_const 12021+ DCHECK(origin); 12022+ if (!origin) 12023+ return; 12024+ 12025+ // Execute 12026+ CefBrowserPermissionRequestDelegateCppToC::Get(self) 12027+ ->AskGeolocationPermission(CefString(origin), callback); 12028+} 12029+ 12030+void CEF_CALLBACK 12031+browser_permission_request_delegate_abort_ask_geolocation_permission( 12032+ struct _cef_browser_permission_request_delegate_t* self, 12033+ const cef_string_t* origin) { 12034+ shutdown_checker::AssertNotShutdown(); 12035+ 12036+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 12037+ 12038+ DCHECK(self); 12039+ if (!self) 12040+ return; 12041+ // Verify param: origin; type: string_byref_const 12042+ DCHECK(origin); 12043+ if (!origin) 12044+ return; 12045+ 12046+ // Execute 12047+ CefBrowserPermissionRequestDelegateCppToC::Get(self) 12048+ ->AbortAskGeolocationPermission(CefString(origin)); 12049+} 12050+ 12051+void CEF_CALLBACK 12052+browser_permission_request_delegate_ask_protected_media_identifier_permission( 12053+ struct _cef_browser_permission_request_delegate_t* self, 12054+ const cef_string_t* origin, 12055+ cef_permission_callback_t callback) { 12056+ shutdown_checker::AssertNotShutdown(); 12057+ 12058+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 12059+ 12060+ DCHECK(self); 12061+ if (!self) 12062+ return; 12063+ // Verify param: origin; type: string_byref_const 12064+ DCHECK(origin); 12065+ if (!origin) 12066+ return; 12067+ 12068+ // Execute 12069+ CefBrowserPermissionRequestDelegateCppToC::Get(self) 12070+ ->AskProtectedMediaIdentifierPermission(CefString(origin), callback); 12071+} 12072+ 12073+void CEF_CALLBACK 12074+browser_permission_request_delegate_abort_ask_protected_media_identifier_permission( 12075+ struct _cef_browser_permission_request_delegate_t* self, 12076+ const cef_string_t* origin) { 12077+ shutdown_checker::AssertNotShutdown(); 12078+ 12079+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 12080+ 12081+ DCHECK(self); 12082+ if (!self) 12083+ return; 12084+ // Verify param: origin; type: string_byref_const 12085+ DCHECK(origin); 12086+ if (!origin) 12087+ return; 12088+ 12089+ // Execute 12090+ CefBrowserPermissionRequestDelegateCppToC::Get(self) 12091+ ->AbortAskProtectedMediaIdentifierPermission(CefString(origin)); 12092+} 12093+ 12094+void CEF_CALLBACK browser_permission_request_delegate_ask_midisysex_permission( 12095+ struct _cef_browser_permission_request_delegate_t* self, 12096+ const cef_string_t* origin, 12097+ cef_permission_callback_t callback) { 12098+ shutdown_checker::AssertNotShutdown(); 12099+ 12100+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 12101+ 12102+ DCHECK(self); 12103+ if (!self) 12104+ return; 12105+ // Verify param: origin; type: string_byref_const 12106+ DCHECK(origin); 12107+ if (!origin) 12108+ return; 12109+ 12110+ // Execute 12111+ CefBrowserPermissionRequestDelegateCppToC::Get(self)->AskMIDISysexPermission( 12112+ CefString(origin), callback); 12113+} 12114+ 12115+void CEF_CALLBACK 12116+browser_permission_request_delegate_abort_ask_midisysex_permission( 12117+ struct _cef_browser_permission_request_delegate_t* self, 12118+ const cef_string_t* origin) { 12119+ shutdown_checker::AssertNotShutdown(); 12120+ 12121+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 12122+ 12123+ DCHECK(self); 12124+ if (!self) 12125+ return; 12126+ // Verify param: origin; type: string_byref_const 12127+ DCHECK(origin); 12128+ if (!origin) 12129+ return; 12130+ 12131+ // Execute 12132+ CefBrowserPermissionRequestDelegateCppToC::Get(self) 12133+ ->AbortAskMIDISysexPermission(CefString(origin)); 12134+} 12135+ 12136+void CEF_CALLBACK 12137+browser_permission_request_delegate_notify_geolocation_permission( 12138+ struct _cef_browser_permission_request_delegate_t* self, 12139+ int value, 12140+ const cef_string_t* origin) { 12141+ shutdown_checker::AssertNotShutdown(); 12142+ 12143+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 12144+ 12145+ DCHECK(self); 12146+ if (!self) 12147+ return; 12148+ // Verify param: origin; type: string_byref_const 12149+ DCHECK(origin); 12150+ if (!origin) 12151+ return; 12152+ 12153+ // Execute 12154+ CefBrowserPermissionRequestDelegateCppToC::Get(self) 12155+ ->NotifyGeolocationPermission(value ? true : false, CefString(origin)); 12156+} 12157+ 12158+} // namespace 12159+ 12160+// CONSTRUCTOR - Do not edit by hand. 12161+ 12162+CefBrowserPermissionRequestDelegateCppToC:: 12163+ CefBrowserPermissionRequestDelegateCppToC() { 12164+ GetStruct()->ask_geolocation_permission = 12165+ browser_permission_request_delegate_ask_geolocation_permission; 12166+ GetStruct()->abort_ask_geolocation_permission = 12167+ browser_permission_request_delegate_abort_ask_geolocation_permission; 12168+ GetStruct()->ask_protected_media_identifier_permission = 12169+ browser_permission_request_delegate_ask_protected_media_identifier_permission; 12170+ GetStruct()->abort_ask_protected_media_identifier_permission = 12171+ browser_permission_request_delegate_abort_ask_protected_media_identifier_permission; 12172+ GetStruct()->ask_midisysex_permission = 12173+ browser_permission_request_delegate_ask_midisysex_permission; 12174+ GetStruct()->abort_ask_midisysex_permission = 12175+ browser_permission_request_delegate_abort_ask_midisysex_permission; 12176+ GetStruct()->notify_geolocation_permission = 12177+ browser_permission_request_delegate_notify_geolocation_permission; 12178+} 12179+ 12180+// DESTRUCTOR - Do not edit by hand. 12181+ 12182+CefBrowserPermissionRequestDelegateCppToC:: 12183+ ~CefBrowserPermissionRequestDelegateCppToC() { 12184+ shutdown_checker::AssertNotShutdown(); 12185+} 12186+ 12187+template <> 12188+CefRefPtr<CefBrowserPermissionRequestDelegate> 12189+CefCppToCRefCounted<CefBrowserPermissionRequestDelegateCppToC, 12190+ CefBrowserPermissionRequestDelegate, 12191+ cef_browser_permission_request_delegate_t>:: 12192+ UnwrapDerived(CefWrapperType type, 12193+ cef_browser_permission_request_delegate_t* s) { 12194+ NOTREACHED() << "Unexpected class type: " << type; 12195+ return nullptr; 12196+} 12197+ 12198+template <> 12199+CefWrapperType CefCppToCRefCounted< 12200+ CefBrowserPermissionRequestDelegateCppToC, 12201+ CefBrowserPermissionRequestDelegate, 12202+ cef_browser_permission_request_delegate_t>::kWrapperType = 12203+ WT_BROWSER_PERMISSION_REQUEST_DELEGATE; 12204diff --git a/cef/libcef_dll/cpptoc/browser_permission_request_delegate_cpptoc.h b/cef/libcef_dll/cpptoc/browser_permission_request_delegate_cpptoc.h 12205new file mode 100644 12206index 0000000000..34e1571c8b 12207--- /dev/null 12208+++ b/cef/libcef_dll/cpptoc/browser_permission_request_delegate_cpptoc.h 12209@@ -0,0 +1,38 @@ 12210+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 12211+// reserved. Use of this source code is governed by a BSD-style license that 12212+// can be found in the LICENSE file. 12213+// 12214+// --------------------------------------------------------------------------- 12215+// 12216+// This file was generated by the CEF translator tool. If making changes by 12217+// hand only do so within the body of existing method and function 12218+// implementations. See the translator.README.txt file in the tools directory 12219+// for more information. 12220+// 12221+// $hash=56d5e14a811fca57a762921bdef1270c44af6b4c$ 12222+// 12223+ 12224+#ifndef CEF_LIBCEF_DLL_CPPTOC_BROWSER_PERMISSION_REQUEST_DELEGATE_CPPTOC_H_ 12225+#define CEF_LIBCEF_DLL_CPPTOC_BROWSER_PERMISSION_REQUEST_DELEGATE_CPPTOC_H_ 12226+#pragma once 12227+ 12228+#if !defined(BUILDING_CEF_SHARED) 12229+#error This file can be included DLL-side only 12230+#endif 12231+ 12232+#include "include/capi/cef_permission_request_capi.h" 12233+#include "include/cef_permission_request.h" 12234+#include "libcef_dll/cpptoc/cpptoc_ref_counted.h" 12235+ 12236+// Wrap a C++ class with a C structure. 12237+// This class may be instantiated and accessed DLL-side only. 12238+class CefBrowserPermissionRequestDelegateCppToC 12239+ : public CefCppToCRefCounted<CefBrowserPermissionRequestDelegateCppToC, 12240+ CefBrowserPermissionRequestDelegate, 12241+ cef_browser_permission_request_delegate_t> { 12242+ public: 12243+ CefBrowserPermissionRequestDelegateCppToC(); 12244+ virtual ~CefBrowserPermissionRequestDelegateCppToC(); 12245+}; 12246+ 12247+#endif // CEF_LIBCEF_DLL_CPPTOC_BROWSER_PERMISSION_REQUEST_DELEGATE_CPPTOC_H_ 12248diff --git a/cef/libcef_dll/cpptoc/browser_process_handler_cpptoc.cc b/cef/libcef_dll/cpptoc/browser_process_handler_cpptoc.cc 12249index 908e0f7b22..0a3e0b0e0a 100644 12250--- a/cef/libcef_dll/cpptoc/browser_process_handler_cpptoc.cc 12251+++ b/cef/libcef_dll/cpptoc/browser_process_handler_cpptoc.cc 12252@@ -1,4 +1,4 @@ 12253-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 12254+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 12255 // reserved. Use of this source code is governed by a BSD-style license that 12256 // can be found in the LICENSE file. 12257 // 12258@@ -9,7 +9,7 @@ 12259 // implementations. See the translator.README.txt file in the tools directory 12260 // for more information. 12261 // 12262-// $hash=160f499a80898e5b6934960c4f41764c0610458e$ 12263+// $hash=452f119327aff2ec0aaed162adf85bbd239b9033$ 12264 // 12265 12266 #include "libcef_dll/cpptoc/browser_process_handler_cpptoc.h" 12267diff --git a/cef/libcef_dll/cpptoc/browser_process_handler_cpptoc.h b/cef/libcef_dll/cpptoc/browser_process_handler_cpptoc.h 12268index df662553aa..5ee18f0f52 100644 12269--- a/cef/libcef_dll/cpptoc/browser_process_handler_cpptoc.h 12270+++ b/cef/libcef_dll/cpptoc/browser_process_handler_cpptoc.h 12271@@ -1,4 +1,4 @@ 12272-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 12273+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 12274 // reserved. Use of this source code is governed by a BSD-style license that 12275 // can be found in the LICENSE file. 12276 // 12277@@ -9,7 +9,7 @@ 12278 // implementations. See the translator.README.txt file in the tools directory 12279 // for more information. 12280 // 12281-// $hash=780d6faccdcc4a4f1a2a3f1f8b2bd0f780f739be$ 12282+// $hash=ebbabaa3d73f0266003818a764f8ca677a9ec6b2$ 12283 // 12284 12285 #ifndef CEF_LIBCEF_DLL_CPPTOC_BROWSER_PROCESS_HANDLER_CPPTOC_H_ 12286diff --git a/cef/libcef_dll/cpptoc/callback_cpptoc.cc b/cef/libcef_dll/cpptoc/callback_cpptoc.cc 12287index 6b51cd29cb..5deff72b31 100644 12288--- a/cef/libcef_dll/cpptoc/callback_cpptoc.cc 12289+++ b/cef/libcef_dll/cpptoc/callback_cpptoc.cc 12290@@ -1,4 +1,4 @@ 12291-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 12292+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 12293 // reserved. Use of this source code is governed by a BSD-style license that 12294 // can be found in the LICENSE file. 12295 // 12296@@ -9,7 +9,7 @@ 12297 // implementations. See the translator.README.txt file in the tools directory 12298 // for more information. 12299 // 12300-// $hash=e4fe3ae042f545ad36a92c641823a25e0502c93d$ 12301+// $hash=01b8f661ca054d4a48ee00f1163011688b32e9f1$ 12302 // 12303 12304 #include "libcef_dll/cpptoc/callback_cpptoc.h" 12305diff --git a/cef/libcef_dll/cpptoc/callback_cpptoc.h b/cef/libcef_dll/cpptoc/callback_cpptoc.h 12306index 40c13ca4c3..8850a48171 100644 12307--- a/cef/libcef_dll/cpptoc/callback_cpptoc.h 12308+++ b/cef/libcef_dll/cpptoc/callback_cpptoc.h 12309@@ -1,4 +1,4 @@ 12310-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 12311+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 12312 // reserved. Use of this source code is governed by a BSD-style license that 12313 // can be found in the LICENSE file. 12314 // 12315@@ -9,7 +9,7 @@ 12316 // implementations. See the translator.README.txt file in the tools directory 12317 // for more information. 12318 // 12319-// $hash=0f7c4746faf3da0cfc56a9d083dc814e4d753494$ 12320+// $hash=5b2fa7fef3cde7efde7df615769b6361ea81ce46$ 12321 // 12322 12323 #ifndef CEF_LIBCEF_DLL_CPPTOC_CALLBACK_CPPTOC_H_ 12324diff --git a/cef/libcef_dll/cpptoc/client_cpptoc.cc b/cef/libcef_dll/cpptoc/client_cpptoc.cc 12325index a8c9c4bed9..2e399963b6 100644 12326--- a/cef/libcef_dll/cpptoc/client_cpptoc.cc 12327+++ b/cef/libcef_dll/cpptoc/client_cpptoc.cc 12328@@ -1,4 +1,4 @@ 12329-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 12330+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 12331 // reserved. Use of this source code is governed by a BSD-style license that 12332 // can be found in the LICENSE file. 12333 // 12334@@ -9,7 +9,7 @@ 12335 // implementations. See the translator.README.txt file in the tools directory 12336 // for more information. 12337 // 12338-// $hash=bdbe1ed03a5ab0ca22668417c329555a3b0d9cea$ 12339+// $hash=f75b1d4f0b40dc405cdad086256df8feee38f56a$ 12340 // 12341 12342 #include "libcef_dll/cpptoc/client_cpptoc.h" 12343@@ -25,11 +25,13 @@ 12344 #include "libcef_dll/cpptoc/keyboard_handler_cpptoc.h" 12345 #include "libcef_dll/cpptoc/life_span_handler_cpptoc.h" 12346 #include "libcef_dll/cpptoc/load_handler_cpptoc.h" 12347+#include "libcef_dll/cpptoc/permission_request_cpptoc.h" 12348 #include "libcef_dll/cpptoc/print_handler_cpptoc.h" 12349 #include "libcef_dll/cpptoc/render_handler_cpptoc.h" 12350 #include "libcef_dll/cpptoc/request_handler_cpptoc.h" 12351 #include "libcef_dll/ctocpp/browser_ctocpp.h" 12352 #include "libcef_dll/ctocpp/frame_ctocpp.h" 12353+#include "libcef_dll/ctocpp/list_value_ctocpp.h" 12354 #include "libcef_dll/ctocpp/process_message_ctocpp.h" 12355 12356 namespace { 12357@@ -276,6 +278,22 @@ client_get_request_handler(struct _cef_client_t* self) { 12358 return CefRequestHandlerCppToC::Wrap(_retval); 12359 } 12360 12361+struct _cef_permission_request_t* CEF_CALLBACK 12362+client_get_permission_request(struct _cef_client_t* self) { 12363+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 12364+ 12365+ DCHECK(self); 12366+ if (!self) 12367+ return NULL; 12368+ 12369+ // Execute 12370+ CefRefPtr<CefPermissionRequest> _retval = 12371+ CefClientCppToC::Get(self)->GetPermissionRequest(); 12372+ 12373+ // Return type: refptr_same 12374+ return CefPermissionRequestCppToC::Wrap(_retval); 12375+} 12376+ 12377 int CEF_CALLBACK 12378 client_on_process_message_received(struct _cef_client_t* self, 12379 cef_browser_t* browser, 12380@@ -309,6 +327,43 @@ client_on_process_message_received(struct _cef_client_t* self, 12381 return _retval; 12382 } 12383 12384+int CEF_CALLBACK 12385+client_notify_java_script_result(struct _cef_client_t* self, 12386+ struct _cef_list_value_t* args, 12387+ const cef_string_t* method, 12388+ const cef_string_t* object_name, 12389+ struct _cef_list_value_t* result) { 12390+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 12391+ 12392+ DCHECK(self); 12393+ if (!self) 12394+ return 0; 12395+ // Verify param: args; type: refptr_diff 12396+ DCHECK(args); 12397+ if (!args) 12398+ return 0; 12399+ // Verify param: method; type: string_byref_const 12400+ DCHECK(method); 12401+ if (!method) 12402+ return 0; 12403+ // Verify param: object_name; type: string_byref_const 12404+ DCHECK(object_name); 12405+ if (!object_name) 12406+ return 0; 12407+ // Verify param: result; type: refptr_diff 12408+ DCHECK(result); 12409+ if (!result) 12410+ return 0; 12411+ 12412+ // Execute 12413+ int _retval = CefClientCppToC::Get(self)->NotifyJavaScriptResult( 12414+ CefListValueCToCpp::Wrap(args), CefString(method), CefString(object_name), 12415+ CefListValueCToCpp::Wrap(result)); 12416+ 12417+ // Return type: simple 12418+ return _retval; 12419+} 12420+ 12421 } // namespace 12422 12423 // CONSTRUCTOR - Do not edit by hand. 12424@@ -329,7 +384,9 @@ CefClientCppToC::CefClientCppToC() { 12425 GetStruct()->get_print_handler = client_get_print_handler; 12426 GetStruct()->get_render_handler = client_get_render_handler; 12427 GetStruct()->get_request_handler = client_get_request_handler; 12428+ GetStruct()->get_permission_request = client_get_permission_request; 12429 GetStruct()->on_process_message_received = client_on_process_message_received; 12430+ GetStruct()->notify_java_script_result = client_notify_java_script_result; 12431 } 12432 12433 // DESTRUCTOR - Do not edit by hand. 12434diff --git a/cef/libcef_dll/cpptoc/client_cpptoc.h b/cef/libcef_dll/cpptoc/client_cpptoc.h 12435index 2cc1906fb6..e33730c9b5 100644 12436--- a/cef/libcef_dll/cpptoc/client_cpptoc.h 12437+++ b/cef/libcef_dll/cpptoc/client_cpptoc.h 12438@@ -1,4 +1,4 @@ 12439-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 12440+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 12441 // reserved. Use of this source code is governed by a BSD-style license that 12442 // can be found in the LICENSE file. 12443 // 12444@@ -9,7 +9,7 @@ 12445 // implementations. See the translator.README.txt file in the tools directory 12446 // for more information. 12447 // 12448-// $hash=add3a870eb1069fd05d8c2adae9b89a4ef559e11$ 12449+// $hash=30d4264433606a5e29f5ec2a325f630b278d4be9$ 12450 // 12451 12452 #ifndef CEF_LIBCEF_DLL_CPPTOC_CLIENT_CPPTOC_H_ 12453diff --git a/cef/libcef_dll/cpptoc/command_line_cpptoc.cc b/cef/libcef_dll/cpptoc/command_line_cpptoc.cc 12454index 5ee236f051..97e1a5ef50 100644 12455--- a/cef/libcef_dll/cpptoc/command_line_cpptoc.cc 12456+++ b/cef/libcef_dll/cpptoc/command_line_cpptoc.cc 12457@@ -1,4 +1,4 @@ 12458-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 12459+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 12460 // reserved. Use of this source code is governed by a BSD-style license that 12461 // can be found in the LICENSE file. 12462 // 12463@@ -9,7 +9,7 @@ 12464 // implementations. See the translator.README.txt file in the tools directory 12465 // for more information. 12466 // 12467-// $hash=91a5cb8087aef1db3e5b2ac423f345a574b1e67f$ 12468+// $hash=fec108946a9d826210e4fa3746839b56a123316c$ 12469 // 12470 12471 #include "libcef_dll/cpptoc/command_line_cpptoc.h" 12472diff --git a/cef/libcef_dll/cpptoc/command_line_cpptoc.h b/cef/libcef_dll/cpptoc/command_line_cpptoc.h 12473index 9c2cfef3a9..a466cc76fd 100644 12474--- a/cef/libcef_dll/cpptoc/command_line_cpptoc.h 12475+++ b/cef/libcef_dll/cpptoc/command_line_cpptoc.h 12476@@ -1,4 +1,4 @@ 12477-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 12478+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 12479 // reserved. Use of this source code is governed by a BSD-style license that 12480 // can be found in the LICENSE file. 12481 // 12482@@ -9,7 +9,7 @@ 12483 // implementations. See the translator.README.txt file in the tools directory 12484 // for more information. 12485 // 12486-// $hash=86f69fdf227ecb61f15f83cc1e57aadd93169076$ 12487+// $hash=395fccd246892782a1c4a26a87baa43f75436bd8$ 12488 // 12489 12490 #ifndef CEF_LIBCEF_DLL_CPPTOC_COMMAND_LINE_CPPTOC_H_ 12491diff --git a/cef/libcef_dll/cpptoc/completion_callback_cpptoc.cc b/cef/libcef_dll/cpptoc/completion_callback_cpptoc.cc 12492index 7a41014445..dbfc0cab56 100644 12493--- a/cef/libcef_dll/cpptoc/completion_callback_cpptoc.cc 12494+++ b/cef/libcef_dll/cpptoc/completion_callback_cpptoc.cc 12495@@ -1,4 +1,4 @@ 12496-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 12497+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 12498 // reserved. Use of this source code is governed by a BSD-style license that 12499 // can be found in the LICENSE file. 12500 // 12501@@ -9,7 +9,7 @@ 12502 // implementations. See the translator.README.txt file in the tools directory 12503 // for more information. 12504 // 12505-// $hash=f4cf5ba559fdc51bcc7e5fa88416d509664c5239$ 12506+// $hash=c16d5dc361785c620c9066fc473a443651afa7ab$ 12507 // 12508 12509 #include "libcef_dll/cpptoc/completion_callback_cpptoc.h" 12510diff --git a/cef/libcef_dll/cpptoc/completion_callback_cpptoc.h b/cef/libcef_dll/cpptoc/completion_callback_cpptoc.h 12511index c94f9a469d..96b2bb1c78 100644 12512--- a/cef/libcef_dll/cpptoc/completion_callback_cpptoc.h 12513+++ b/cef/libcef_dll/cpptoc/completion_callback_cpptoc.h 12514@@ -1,4 +1,4 @@ 12515-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 12516+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 12517 // reserved. Use of this source code is governed by a BSD-style license that 12518 // can be found in the LICENSE file. 12519 // 12520@@ -9,7 +9,7 @@ 12521 // implementations. See the translator.README.txt file in the tools directory 12522 // for more information. 12523 // 12524-// $hash=dfe9244d4a99e0760b1de909640b1ac625d66cd2$ 12525+// $hash=7ac48d4ac56f3e31947f8f3b9d9bf54a3bc3383c$ 12526 // 12527 12528 #ifndef CEF_LIBCEF_DLL_CPPTOC_COMPLETION_CALLBACK_CPPTOC_H_ 12529diff --git a/cef/libcef_dll/cpptoc/context_menu_handler_cpptoc.cc b/cef/libcef_dll/cpptoc/context_menu_handler_cpptoc.cc 12530index 86f870eee7..9f3981569e 100644 12531--- a/cef/libcef_dll/cpptoc/context_menu_handler_cpptoc.cc 12532+++ b/cef/libcef_dll/cpptoc/context_menu_handler_cpptoc.cc 12533@@ -1,4 +1,4 @@ 12534-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 12535+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 12536 // reserved. Use of this source code is governed by a BSD-style license that 12537 // can be found in the LICENSE file. 12538 // 12539@@ -9,7 +9,7 @@ 12540 // implementations. See the translator.README.txt file in the tools directory 12541 // for more information. 12542 // 12543-// $hash=7d14f8464796fb174c6b8d35d049f20a054ab03b$ 12544+// $hash=a689271e9c27cfd0d6f6fadb8bb624898f165934$ 12545 // 12546 12547 #include "libcef_dll/cpptoc/context_menu_handler_cpptoc.h" 12548diff --git a/cef/libcef_dll/cpptoc/context_menu_handler_cpptoc.h b/cef/libcef_dll/cpptoc/context_menu_handler_cpptoc.h 12549index 007d99e65b..f429b4b859 100644 12550--- a/cef/libcef_dll/cpptoc/context_menu_handler_cpptoc.h 12551+++ b/cef/libcef_dll/cpptoc/context_menu_handler_cpptoc.h 12552@@ -1,4 +1,4 @@ 12553-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 12554+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 12555 // reserved. Use of this source code is governed by a BSD-style license that 12556 // can be found in the LICENSE file. 12557 // 12558@@ -9,7 +9,7 @@ 12559 // implementations. See the translator.README.txt file in the tools directory 12560 // for more information. 12561 // 12562-// $hash=559fa8da353ae9f961720df55b72bc59811fcf1e$ 12563+// $hash=51d213cb8d40ba1f608944422e0522749e433a6f$ 12564 // 12565 12566 #ifndef CEF_LIBCEF_DLL_CPPTOC_CONTEXT_MENU_HANDLER_CPPTOC_H_ 12567diff --git a/cef/libcef_dll/cpptoc/context_menu_params_cpptoc.cc b/cef/libcef_dll/cpptoc/context_menu_params_cpptoc.cc 12568index 1f0541664a..6c26eac307 100644 12569--- a/cef/libcef_dll/cpptoc/context_menu_params_cpptoc.cc 12570+++ b/cef/libcef_dll/cpptoc/context_menu_params_cpptoc.cc 12571@@ -1,4 +1,4 @@ 12572-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 12573+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 12574 // reserved. Use of this source code is governed by a BSD-style license that 12575 // can be found in the LICENSE file. 12576 // 12577@@ -9,7 +9,7 @@ 12578 // implementations. See the translator.README.txt file in the tools directory 12579 // for more information. 12580 // 12581-// $hash=4ff1017b303be65e38e293470384dc891bb26b15$ 12582+// $hash=e2f6dee4f74c0eb0979d7a557b007fb8e495bcbb$ 12583 // 12584 12585 #include "libcef_dll/cpptoc/context_menu_params_cpptoc.h" 12586diff --git a/cef/libcef_dll/cpptoc/context_menu_params_cpptoc.h b/cef/libcef_dll/cpptoc/context_menu_params_cpptoc.h 12587index 15fec7b9ef..e4cc567718 100644 12588--- a/cef/libcef_dll/cpptoc/context_menu_params_cpptoc.h 12589+++ b/cef/libcef_dll/cpptoc/context_menu_params_cpptoc.h 12590@@ -1,4 +1,4 @@ 12591-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 12592+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 12593 // reserved. Use of this source code is governed by a BSD-style license that 12594 // can be found in the LICENSE file. 12595 // 12596@@ -9,7 +9,7 @@ 12597 // implementations. See the translator.README.txt file in the tools directory 12598 // for more information. 12599 // 12600-// $hash=1e0be158c3f98733b0eff48e68b24d592c4ced20$ 12601+// $hash=9612bbf58cbf1ee4c41d9cec79267e473d130172$ 12602 // 12603 12604 #ifndef CEF_LIBCEF_DLL_CPPTOC_CONTEXT_MENU_PARAMS_CPPTOC_H_ 12605diff --git a/cef/libcef_dll/cpptoc/cookie_access_filter_cpptoc.cc b/cef/libcef_dll/cpptoc/cookie_access_filter_cpptoc.cc 12606index 90420bd7ec..eb095602c2 100644 12607--- a/cef/libcef_dll/cpptoc/cookie_access_filter_cpptoc.cc 12608+++ b/cef/libcef_dll/cpptoc/cookie_access_filter_cpptoc.cc 12609@@ -1,4 +1,4 @@ 12610-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 12611+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 12612 // reserved. Use of this source code is governed by a BSD-style license that 12613 // can be found in the LICENSE file. 12614 // 12615@@ -9,7 +9,7 @@ 12616 // implementations. See the translator.README.txt file in the tools directory 12617 // for more information. 12618 // 12619-// $hash=f4b9b2362826114b98103317ecc50839a7bf46b1$ 12620+// $hash=8a64cdcb148bd7c9cad278d57c353ebf48386a16$ 12621 // 12622 12623 #include "libcef_dll/cpptoc/cookie_access_filter_cpptoc.h" 12624diff --git a/cef/libcef_dll/cpptoc/cookie_access_filter_cpptoc.h b/cef/libcef_dll/cpptoc/cookie_access_filter_cpptoc.h 12625index c9816ea1d5..32c7864d66 100644 12626--- a/cef/libcef_dll/cpptoc/cookie_access_filter_cpptoc.h 12627+++ b/cef/libcef_dll/cpptoc/cookie_access_filter_cpptoc.h 12628@@ -1,4 +1,4 @@ 12629-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 12630+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 12631 // reserved. Use of this source code is governed by a BSD-style license that 12632 // can be found in the LICENSE file. 12633 // 12634@@ -9,7 +9,7 @@ 12635 // implementations. See the translator.README.txt file in the tools directory 12636 // for more information. 12637 // 12638-// $hash=04d9ec7e72314a01a154debc4742e7921f018efb$ 12639+// $hash=16e58fb5b73a0c13602b01a14afb4f6a882c094d$ 12640 // 12641 12642 #ifndef CEF_LIBCEF_DLL_CPPTOC_COOKIE_ACCESS_FILTER_CPPTOC_H_ 12643diff --git a/cef/libcef_dll/cpptoc/cookie_manager_cpptoc.cc b/cef/libcef_dll/cpptoc/cookie_manager_cpptoc.cc 12644index 53caa6c4fc..e5abda9d95 100644 12645--- a/cef/libcef_dll/cpptoc/cookie_manager_cpptoc.cc 12646+++ b/cef/libcef_dll/cpptoc/cookie_manager_cpptoc.cc 12647@@ -1,4 +1,4 @@ 12648-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 12649+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 12650 // reserved. Use of this source code is governed by a BSD-style license that 12651 // can be found in the LICENSE file. 12652 // 12653@@ -9,7 +9,7 @@ 12654 // implementations. See the translator.README.txt file in the tools directory 12655 // for more information. 12656 // 12657-// $hash=0307287ed355556f7c6dab1e4a4fd188ce11d919$ 12658+// $hash=de992f1be99ed2d831e840e60f8fb318ca433265$ 12659 // 12660 12661 #include "libcef_dll/cpptoc/cookie_manager_cpptoc.h" 12662@@ -34,10 +34,105 @@ CEF_EXPORT cef_cookie_manager_t* cef_cookie_manager_get_global_manager( 12663 return CefCookieManagerCppToC::Wrap(_retval); 12664 } 12665 12666+CEF_EXPORT int cef_cookie_manager_create_cef_cookie( 12667+ const cef_string_t* url, 12668+ const cef_string_t* value, 12669+ struct _cef_cookie_t* cef_cookie) { 12670+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 12671+ 12672+ // Verify param: url; type: string_byref_const 12673+ DCHECK(url); 12674+ if (!url) 12675+ return 0; 12676+ // Verify param: value; type: string_byref_const 12677+ DCHECK(value); 12678+ if (!value) 12679+ return 0; 12680+ // Verify param: cef_cookie; type: struct_byref 12681+ DCHECK(cef_cookie); 12682+ if (!cef_cookie) 12683+ return 0; 12684+ 12685+ // Translate param: cef_cookie; type: struct_byref 12686+ CefCookie cef_cookieObj; 12687+ if (cef_cookie) 12688+ cef_cookieObj.AttachTo(*cef_cookie); 12689+ 12690+ // Execute 12691+ bool _retval = CefCookieManager::CreateCefCookie( 12692+ CefString(url), CefString(value), cef_cookieObj); 12693+ 12694+ // Restore param: cef_cookie; type: struct_byref 12695+ if (cef_cookie) 12696+ cef_cookieObj.DetachTo(*cef_cookie); 12697+ 12698+ // Return type: bool 12699+ return _retval; 12700+} 12701+ 12702 namespace { 12703 12704 // MEMBER FUNCTIONS - Body may be edited by hand. 12705 12706+int CEF_CALLBACK 12707+cookie_manager_is_accept_cookie_allowed(struct _cef_cookie_manager_t* self) { 12708+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 12709+ 12710+ DCHECK(self); 12711+ if (!self) 12712+ return 0; 12713+ 12714+ // Execute 12715+ bool _retval = CefCookieManagerCppToC::Get(self)->IsAcceptCookieAllowed(); 12716+ 12717+ // Return type: bool 12718+ return _retval; 12719+} 12720+ 12721+void CEF_CALLBACK 12722+cookie_manager_put_accept_cookie_enabled(struct _cef_cookie_manager_t* self, 12723+ int accept) { 12724+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 12725+ 12726+ DCHECK(self); 12727+ if (!self) 12728+ return; 12729+ 12730+ // Execute 12731+ CefCookieManagerCppToC::Get(self)->PutAcceptCookieEnabled(accept ? true 12732+ : false); 12733+} 12734+ 12735+int CEF_CALLBACK cookie_manager_is_file_urlscheme_cookies_allowed( 12736+ struct _cef_cookie_manager_t* self) { 12737+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 12738+ 12739+ DCHECK(self); 12740+ if (!self) 12741+ return 0; 12742+ 12743+ // Execute 12744+ bool _retval = 12745+ CefCookieManagerCppToC::Get(self)->IsFileURLSchemeCookiesAllowed(); 12746+ 12747+ // Return type: bool 12748+ return _retval; 12749+} 12750+ 12751+void CEF_CALLBACK cookie_manager_put_accept_file_urlscheme_cookies_enabled( 12752+ struct _cef_cookie_manager_t* self, 12753+ int allow) { 12754+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 12755+ 12756+ DCHECK(self); 12757+ if (!self) 12758+ return; 12759+ 12760+ // Execute 12761+ CefCookieManagerCppToC::Get(self)->PutAcceptFileURLSchemeCookiesEnabled( 12762+ allow ? true : false); 12763+} 12764+ 12765 int CEF_CALLBACK 12766 cookie_manager_visit_all_cookies(struct _cef_cookie_manager_t* self, 12767 struct _cef_cookie_visitor_t* visitor) { 12768@@ -124,6 +219,7 @@ int CEF_CALLBACK 12769 cookie_manager_delete_cookies(struct _cef_cookie_manager_t* self, 12770 const cef_string_t* url, 12771 const cef_string_t* cookie_name, 12772+ int is_session, 12773 struct _cef_delete_cookies_callback_t* callback) { 12774 // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 12775 12776@@ -134,7 +230,7 @@ cookie_manager_delete_cookies(struct _cef_cookie_manager_t* self, 12777 12778 // Execute 12779 bool _retval = CefCookieManagerCppToC::Get(self)->DeleteCookies( 12780- CefString(url), CefString(cookie_name), 12781+ CefString(url), CefString(cookie_name), is_session ? true : false, 12782 CefDeleteCookiesCallbackCToCpp::Wrap(callback)); 12783 12784 // Return type: bool 12785@@ -164,6 +260,14 @@ cookie_manager_flush_store(struct _cef_cookie_manager_t* self, 12786 // CONSTRUCTOR - Do not edit by hand. 12787 12788 CefCookieManagerCppToC::CefCookieManagerCppToC() { 12789+ GetStruct()->is_accept_cookie_allowed = 12790+ cookie_manager_is_accept_cookie_allowed; 12791+ GetStruct()->put_accept_cookie_enabled = 12792+ cookie_manager_put_accept_cookie_enabled; 12793+ GetStruct()->is_file_urlscheme_cookies_allowed = 12794+ cookie_manager_is_file_urlscheme_cookies_allowed; 12795+ GetStruct()->put_accept_file_urlscheme_cookies_enabled = 12796+ cookie_manager_put_accept_file_urlscheme_cookies_enabled; 12797 GetStruct()->visit_all_cookies = cookie_manager_visit_all_cookies; 12798 GetStruct()->visit_url_cookies = cookie_manager_visit_url_cookies; 12799 GetStruct()->set_cookie = cookie_manager_set_cookie; 12800diff --git a/cef/libcef_dll/cpptoc/cookie_manager_cpptoc.h b/cef/libcef_dll/cpptoc/cookie_manager_cpptoc.h 12801index 785436edf6..b1088b7340 100644 12802--- a/cef/libcef_dll/cpptoc/cookie_manager_cpptoc.h 12803+++ b/cef/libcef_dll/cpptoc/cookie_manager_cpptoc.h 12804@@ -1,4 +1,4 @@ 12805-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 12806+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 12807 // reserved. Use of this source code is governed by a BSD-style license that 12808 // can be found in the LICENSE file. 12809 // 12810@@ -9,7 +9,7 @@ 12811 // implementations. See the translator.README.txt file in the tools directory 12812 // for more information. 12813 // 12814-// $hash=1506d130763fdc06c9346895dbbc2fd9aed0b65f$ 12815+// $hash=75170ff033e8e382ba463d350493fab6e12e4192$ 12816 // 12817 12818 #ifndef CEF_LIBCEF_DLL_CPPTOC_COOKIE_MANAGER_CPPTOC_H_ 12819diff --git a/cef/libcef_dll/cpptoc/cookie_visitor_cpptoc.cc b/cef/libcef_dll/cpptoc/cookie_visitor_cpptoc.cc 12820index 6f3be6beb6..d3d5ef0895 100644 12821--- a/cef/libcef_dll/cpptoc/cookie_visitor_cpptoc.cc 12822+++ b/cef/libcef_dll/cpptoc/cookie_visitor_cpptoc.cc 12823@@ -1,4 +1,4 @@ 12824-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 12825+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 12826 // reserved. Use of this source code is governed by a BSD-style license that 12827 // can be found in the LICENSE file. 12828 // 12829@@ -9,7 +9,7 @@ 12830 // implementations. See the translator.README.txt file in the tools directory 12831 // for more information. 12832 // 12833-// $hash=097662e392b7121bf63eef79696420041d753978$ 12834+// $hash=07483aea0b811fedba3da36f7a598f06edd22faf$ 12835 // 12836 12837 #include "libcef_dll/cpptoc/cookie_visitor_cpptoc.h" 12838@@ -59,12 +59,32 @@ int CEF_CALLBACK cookie_visitor_visit(struct _cef_cookie_visitor_t* self, 12839 return _retval; 12840 } 12841 12842+void CEF_CALLBACK 12843+cookie_visitor_set_cookie_line(struct _cef_cookie_visitor_t* self, 12844+ const cef_string_t* cookieLine) { 12845+ shutdown_checker::AssertNotShutdown(); 12846+ 12847+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 12848+ 12849+ DCHECK(self); 12850+ if (!self) 12851+ return; 12852+ // Verify param: cookieLine; type: string_byref_const 12853+ DCHECK(cookieLine); 12854+ if (!cookieLine) 12855+ return; 12856+ 12857+ // Execute 12858+ CefCookieVisitorCppToC::Get(self)->SetCookieLine(CefString(cookieLine)); 12859+} 12860+ 12861 } // namespace 12862 12863 // CONSTRUCTOR - Do not edit by hand. 12864 12865 CefCookieVisitorCppToC::CefCookieVisitorCppToC() { 12866 GetStruct()->visit = cookie_visitor_visit; 12867+ GetStruct()->set_cookie_line = cookie_visitor_set_cookie_line; 12868 } 12869 12870 // DESTRUCTOR - Do not edit by hand. 12871diff --git a/cef/libcef_dll/cpptoc/cookie_visitor_cpptoc.h b/cef/libcef_dll/cpptoc/cookie_visitor_cpptoc.h 12872index 2d3e4f4a22..130318cd07 100644 12873--- a/cef/libcef_dll/cpptoc/cookie_visitor_cpptoc.h 12874+++ b/cef/libcef_dll/cpptoc/cookie_visitor_cpptoc.h 12875@@ -1,4 +1,4 @@ 12876-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 12877+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 12878 // reserved. Use of this source code is governed by a BSD-style license that 12879 // can be found in the LICENSE file. 12880 // 12881@@ -9,7 +9,7 @@ 12882 // implementations. See the translator.README.txt file in the tools directory 12883 // for more information. 12884 // 12885-// $hash=badac918a8a378ce2d89a3c2d5c4fe9cdaaa7d15$ 12886+// $hash=2c087a5613a69038aa9bba45c46a56d96c6a60ba$ 12887 // 12888 12889 #ifndef CEF_LIBCEF_DLL_CPPTOC_COOKIE_VISITOR_CPPTOC_H_ 12890diff --git a/cef/libcef_dll/cpptoc/delete_cookies_callback_cpptoc.cc b/cef/libcef_dll/cpptoc/delete_cookies_callback_cpptoc.cc 12891index 096a8b64a0..8c5b758b23 100644 12892--- a/cef/libcef_dll/cpptoc/delete_cookies_callback_cpptoc.cc 12893+++ b/cef/libcef_dll/cpptoc/delete_cookies_callback_cpptoc.cc 12894@@ -1,4 +1,4 @@ 12895-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 12896+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 12897 // reserved. Use of this source code is governed by a BSD-style license that 12898 // can be found in the LICENSE file. 12899 // 12900@@ -9,7 +9,7 @@ 12901 // implementations. See the translator.README.txt file in the tools directory 12902 // for more information. 12903 // 12904-// $hash=35218b8c1049df57946037a75907ea3a2774d473$ 12905+// $hash=0d2b19ca10e7a4ad389d3ce8de83addc1cad4b63$ 12906 // 12907 12908 #include "libcef_dll/cpptoc/delete_cookies_callback_cpptoc.h" 12909diff --git a/cef/libcef_dll/cpptoc/delete_cookies_callback_cpptoc.h b/cef/libcef_dll/cpptoc/delete_cookies_callback_cpptoc.h 12910index 2da23ce189..5f8c4f6db1 100644 12911--- a/cef/libcef_dll/cpptoc/delete_cookies_callback_cpptoc.h 12912+++ b/cef/libcef_dll/cpptoc/delete_cookies_callback_cpptoc.h 12913@@ -1,4 +1,4 @@ 12914-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 12915+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 12916 // reserved. Use of this source code is governed by a BSD-style license that 12917 // can be found in the LICENSE file. 12918 // 12919@@ -9,7 +9,7 @@ 12920 // implementations. See the translator.README.txt file in the tools directory 12921 // for more information. 12922 // 12923-// $hash=867dea9b048c71bbbb7ba593a60cfd9c572646e2$ 12924+// $hash=424b81efdcb5b86629d8388df5df13b1229155bb$ 12925 // 12926 12927 #ifndef CEF_LIBCEF_DLL_CPPTOC_DELETE_COOKIES_CALLBACK_CPPTOC_H_ 12928diff --git a/cef/libcef_dll/cpptoc/dev_tools_message_observer_cpptoc.cc b/cef/libcef_dll/cpptoc/dev_tools_message_observer_cpptoc.cc 12929index d3edfa574e..534d94072a 100644 12930--- a/cef/libcef_dll/cpptoc/dev_tools_message_observer_cpptoc.cc 12931+++ b/cef/libcef_dll/cpptoc/dev_tools_message_observer_cpptoc.cc 12932@@ -1,4 +1,4 @@ 12933-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 12934+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 12935 // reserved. Use of this source code is governed by a BSD-style license that 12936 // can be found in the LICENSE file. 12937 // 12938@@ -9,7 +9,7 @@ 12939 // implementations. See the translator.README.txt file in the tools directory 12940 // for more information. 12941 // 12942-// $hash=d675fee9716fb6801ed17dea7d57a7c427c4ba5f$ 12943+// $hash=a8a10af1258edd37dbb8d079a10943070c1e9c4c$ 12944 // 12945 12946 #include "libcef_dll/cpptoc/dev_tools_message_observer_cpptoc.h" 12947diff --git a/cef/libcef_dll/cpptoc/dev_tools_message_observer_cpptoc.h b/cef/libcef_dll/cpptoc/dev_tools_message_observer_cpptoc.h 12948index 80c9939e1e..cd0396a86b 100644 12949--- a/cef/libcef_dll/cpptoc/dev_tools_message_observer_cpptoc.h 12950+++ b/cef/libcef_dll/cpptoc/dev_tools_message_observer_cpptoc.h 12951@@ -1,4 +1,4 @@ 12952-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 12953+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 12954 // reserved. Use of this source code is governed by a BSD-style license that 12955 // can be found in the LICENSE file. 12956 // 12957@@ -9,7 +9,7 @@ 12958 // implementations. See the translator.README.txt file in the tools directory 12959 // for more information. 12960 // 12961-// $hash=41e7f0fbaa447820c81bf49d1f02040a04d814a3$ 12962+// $hash=309236e96bdbd2d39e63f94872d2de18552bec80$ 12963 // 12964 12965 #ifndef CEF_LIBCEF_DLL_CPPTOC_DEV_TOOLS_MESSAGE_OBSERVER_CPPTOC_H_ 12966diff --git a/cef/libcef_dll/cpptoc/dialog_handler_cpptoc.cc b/cef/libcef_dll/cpptoc/dialog_handler_cpptoc.cc 12967index f0822febac..6dcffbb174 100644 12968--- a/cef/libcef_dll/cpptoc/dialog_handler_cpptoc.cc 12969+++ b/cef/libcef_dll/cpptoc/dialog_handler_cpptoc.cc 12970@@ -1,4 +1,4 @@ 12971-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 12972+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 12973 // reserved. Use of this source code is governed by a BSD-style license that 12974 // can be found in the LICENSE file. 12975 // 12976@@ -9,7 +9,7 @@ 12977 // implementations. See the translator.README.txt file in the tools directory 12978 // for more information. 12979 // 12980-// $hash=01fbdd3bbe7d3cfd39c7d9ae93d8930ac6bd8f39$ 12981+// $hash=639576c610ca3898809cdee6d19c45253e9ea4d2$ 12982 // 12983 12984 #include "libcef_dll/cpptoc/dialog_handler_cpptoc.h" 12985diff --git a/cef/libcef_dll/cpptoc/dialog_handler_cpptoc.h b/cef/libcef_dll/cpptoc/dialog_handler_cpptoc.h 12986index d587913fcb..d1dbb38f3a 100644 12987--- a/cef/libcef_dll/cpptoc/dialog_handler_cpptoc.h 12988+++ b/cef/libcef_dll/cpptoc/dialog_handler_cpptoc.h 12989@@ -1,4 +1,4 @@ 12990-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 12991+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 12992 // reserved. Use of this source code is governed by a BSD-style license that 12993 // can be found in the LICENSE file. 12994 // 12995@@ -9,7 +9,7 @@ 12996 // implementations. See the translator.README.txt file in the tools directory 12997 // for more information. 12998 // 12999-// $hash=7a95491bece16f5cac5eb7b50188a27b22ee6f9d$ 13000+// $hash=52c108ee7b518b733b331b7d172f16bf3126fe3d$ 13001 // 13002 13003 #ifndef CEF_LIBCEF_DLL_CPPTOC_DIALOG_HANDLER_CPPTOC_H_ 13004diff --git a/cef/libcef_dll/cpptoc/dictionary_value_cpptoc.cc b/cef/libcef_dll/cpptoc/dictionary_value_cpptoc.cc 13005index 657b28622c..450903a13b 100644 13006--- a/cef/libcef_dll/cpptoc/dictionary_value_cpptoc.cc 13007+++ b/cef/libcef_dll/cpptoc/dictionary_value_cpptoc.cc 13008@@ -1,4 +1,4 @@ 13009-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 13010+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 13011 // reserved. Use of this source code is governed by a BSD-style license that 13012 // can be found in the LICENSE file. 13013 // 13014@@ -9,7 +9,7 @@ 13015 // implementations. See the translator.README.txt file in the tools directory 13016 // for more information. 13017 // 13018-// $hash=75a1a43dc9ee88124580e8eff4f7c86b13f03625$ 13019+// $hash=c55e53ae76eba8e90a364cd6768764a4c56967ff$ 13020 // 13021 13022 #include "libcef_dll/cpptoc/dictionary_value_cpptoc.h" 13023diff --git a/cef/libcef_dll/cpptoc/dictionary_value_cpptoc.h b/cef/libcef_dll/cpptoc/dictionary_value_cpptoc.h 13024index db288ad47b..4b2aeae7eb 100644 13025--- a/cef/libcef_dll/cpptoc/dictionary_value_cpptoc.h 13026+++ b/cef/libcef_dll/cpptoc/dictionary_value_cpptoc.h 13027@@ -1,4 +1,4 @@ 13028-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 13029+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 13030 // reserved. Use of this source code is governed by a BSD-style license that 13031 // can be found in the LICENSE file. 13032 // 13033@@ -9,7 +9,7 @@ 13034 // implementations. See the translator.README.txt file in the tools directory 13035 // for more information. 13036 // 13037-// $hash=e436cb8a857b96370525bfb29ff2045d0bfc6ec6$ 13038+// $hash=ddb7429c3059bb7af3a285adde53aab78a99d39d$ 13039 // 13040 13041 #ifndef CEF_LIBCEF_DLL_CPPTOC_DICTIONARY_VALUE_CPPTOC_H_ 13042diff --git a/cef/libcef_dll/cpptoc/display_handler_cpptoc.cc b/cef/libcef_dll/cpptoc/display_handler_cpptoc.cc 13043index c8605c5c88..6f0058a9a1 100644 13044--- a/cef/libcef_dll/cpptoc/display_handler_cpptoc.cc 13045+++ b/cef/libcef_dll/cpptoc/display_handler_cpptoc.cc 13046@@ -1,4 +1,4 @@ 13047-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 13048+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 13049 // reserved. Use of this source code is governed by a BSD-style license that 13050 // can be found in the LICENSE file. 13051 // 13052@@ -9,7 +9,7 @@ 13053 // implementations. See the translator.README.txt file in the tools directory 13054 // for more information. 13055 // 13056-// $hash=caf5dead1197de40a4038520f33e48739949d4a0$ 13057+// $hash=b990f1a9bafcdd5be19363932738a3f2e778e769$ 13058 // 13059 13060 #include "libcef_dll/cpptoc/display_handler_cpptoc.h" 13061@@ -101,6 +101,57 @@ display_handler_on_favicon_urlchange(struct _cef_display_handler_t* self, 13062 CefBrowserCToCpp::Wrap(browser), icon_urlsList); 13063 } 13064 13065+void CEF_CALLBACK 13066+display_handler_on_received_touch_icon_url(struct _cef_display_handler_t* self, 13067+ cef_browser_t* browser, 13068+ const cef_string_t* icon_url, 13069+ int precomposed) { 13070+ shutdown_checker::AssertNotShutdown(); 13071+ 13072+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 13073+ 13074+ DCHECK(self); 13075+ if (!self) 13076+ return; 13077+ // Verify param: browser; type: refptr_diff 13078+ DCHECK(browser); 13079+ if (!browser) 13080+ return; 13081+ // Verify param: icon_url; type: string_byref_const 13082+ DCHECK(icon_url); 13083+ if (!icon_url) 13084+ return; 13085+ 13086+ // Execute 13087+ CefDisplayHandlerCppToC::Get(self)->OnReceivedTouchIconUrl( 13088+ CefBrowserCToCpp::Wrap(browser), CefString(icon_url), 13089+ precomposed ? true : false); 13090+} 13091+ 13092+void CEF_CALLBACK 13093+display_handler_on_received_icon(struct _cef_display_handler_t* self, 13094+ const void* data, 13095+ size_t width, 13096+ size_t height, 13097+ cef_color_type_t color_type, 13098+ cef_alpha_type_t alpha_type) { 13099+ shutdown_checker::AssertNotShutdown(); 13100+ 13101+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 13102+ 13103+ DCHECK(self); 13104+ if (!self) 13105+ return; 13106+ // Verify param: data; type: simple_byaddr 13107+ DCHECK(data); 13108+ if (!data) 13109+ return; 13110+ 13111+ // Execute 13112+ CefDisplayHandlerCppToC::Get(self)->OnReceivedIcon(data, width, height, 13113+ color_type, alpha_type); 13114+} 13115+ 13116 void CEF_CALLBACK 13117 display_handler_on_fullscreen_mode_change(struct _cef_display_handler_t* self, 13118 cef_browser_t* browser, 13119@@ -295,6 +346,9 @@ CefDisplayHandlerCppToC::CefDisplayHandlerCppToC() { 13120 GetStruct()->on_address_change = display_handler_on_address_change; 13121 GetStruct()->on_title_change = display_handler_on_title_change; 13122 GetStruct()->on_favicon_urlchange = display_handler_on_favicon_urlchange; 13123+ GetStruct()->on_received_touch_icon_url = 13124+ display_handler_on_received_touch_icon_url; 13125+ GetStruct()->on_received_icon = display_handler_on_received_icon; 13126 GetStruct()->on_fullscreen_mode_change = 13127 display_handler_on_fullscreen_mode_change; 13128 GetStruct()->on_tooltip = display_handler_on_tooltip; 13129diff --git a/cef/libcef_dll/cpptoc/display_handler_cpptoc.h b/cef/libcef_dll/cpptoc/display_handler_cpptoc.h 13130index 8e15fb7d36..9d5121a244 100644 13131--- a/cef/libcef_dll/cpptoc/display_handler_cpptoc.h 13132+++ b/cef/libcef_dll/cpptoc/display_handler_cpptoc.h 13133@@ -1,4 +1,4 @@ 13134-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 13135+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 13136 // reserved. Use of this source code is governed by a BSD-style license that 13137 // can be found in the LICENSE file. 13138 // 13139@@ -9,7 +9,7 @@ 13140 // implementations. See the translator.README.txt file in the tools directory 13141 // for more information. 13142 // 13143-// $hash=f73c1983623b5163268cccd0526d7772a987173b$ 13144+// $hash=db9ca0d224aa971d8912fc577c53cc9abe52fe58$ 13145 // 13146 13147 #ifndef CEF_LIBCEF_DLL_CPPTOC_DISPLAY_HANDLER_CPPTOC_H_ 13148diff --git a/cef/libcef_dll/cpptoc/domdocument_cpptoc.cc b/cef/libcef_dll/cpptoc/domdocument_cpptoc.cc 13149index aa9e6a8511..4850dcd185 100644 13150--- a/cef/libcef_dll/cpptoc/domdocument_cpptoc.cc 13151+++ b/cef/libcef_dll/cpptoc/domdocument_cpptoc.cc 13152@@ -1,4 +1,4 @@ 13153-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 13154+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 13155 // reserved. Use of this source code is governed by a BSD-style license that 13156 // can be found in the LICENSE file. 13157 // 13158@@ -9,7 +9,7 @@ 13159 // implementations. See the translator.README.txt file in the tools directory 13160 // for more information. 13161 // 13162-// $hash=6478a60c9da50d426e6e4baaa2a08b87e1263179$ 13163+// $hash=c4cad301694f35ea716d7c4376252140fcb0d78f$ 13164 // 13165 13166 #include "libcef_dll/cpptoc/domdocument_cpptoc.h" 13167diff --git a/cef/libcef_dll/cpptoc/domdocument_cpptoc.h b/cef/libcef_dll/cpptoc/domdocument_cpptoc.h 13168index 48910ee02d..919eb2a288 100644 13169--- a/cef/libcef_dll/cpptoc/domdocument_cpptoc.h 13170+++ b/cef/libcef_dll/cpptoc/domdocument_cpptoc.h 13171@@ -1,4 +1,4 @@ 13172-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 13173+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 13174 // reserved. Use of this source code is governed by a BSD-style license that 13175 // can be found in the LICENSE file. 13176 // 13177@@ -9,7 +9,7 @@ 13178 // implementations. See the translator.README.txt file in the tools directory 13179 // for more information. 13180 // 13181-// $hash=c424b9ae21add2404156a766a322bb5843570492$ 13182+// $hash=8aea7ead4b6cbdefba65a1234213fee4eb4a1952$ 13183 // 13184 13185 #ifndef CEF_LIBCEF_DLL_CPPTOC_DOMDOCUMENT_CPPTOC_H_ 13186diff --git a/cef/libcef_dll/cpptoc/domnode_cpptoc.cc b/cef/libcef_dll/cpptoc/domnode_cpptoc.cc 13187index cbf2e2b0d1..6496648c82 100644 13188--- a/cef/libcef_dll/cpptoc/domnode_cpptoc.cc 13189+++ b/cef/libcef_dll/cpptoc/domnode_cpptoc.cc 13190@@ -1,4 +1,4 @@ 13191-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 13192+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 13193 // reserved. Use of this source code is governed by a BSD-style license that 13194 // can be found in the LICENSE file. 13195 // 13196@@ -9,7 +9,7 @@ 13197 // implementations. See the translator.README.txt file in the tools directory 13198 // for more information. 13199 // 13200-// $hash=178f5f1c60b6e540f465abc8d7fead1a90c044c6$ 13201+// $hash=d352693e8728b1ed586dc62d69a91dd92667760a$ 13202 // 13203 13204 #include "libcef_dll/cpptoc/domnode_cpptoc.h" 13205diff --git a/cef/libcef_dll/cpptoc/domnode_cpptoc.h b/cef/libcef_dll/cpptoc/domnode_cpptoc.h 13206index 85e42d6a98..a9325b62b0 100644 13207--- a/cef/libcef_dll/cpptoc/domnode_cpptoc.h 13208+++ b/cef/libcef_dll/cpptoc/domnode_cpptoc.h 13209@@ -1,4 +1,4 @@ 13210-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 13211+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 13212 // reserved. Use of this source code is governed by a BSD-style license that 13213 // can be found in the LICENSE file. 13214 // 13215@@ -9,7 +9,7 @@ 13216 // implementations. See the translator.README.txt file in the tools directory 13217 // for more information. 13218 // 13219-// $hash=38aef0aaf02bbd77f9b53cbde53bcaf92cc62800$ 13220+// $hash=e5c97231e7d369e8fb4bd73611ec49d7289af076$ 13221 // 13222 13223 #ifndef CEF_LIBCEF_DLL_CPPTOC_DOMNODE_CPPTOC_H_ 13224diff --git a/cef/libcef_dll/cpptoc/domvisitor_cpptoc.cc b/cef/libcef_dll/cpptoc/domvisitor_cpptoc.cc 13225index 37c2b1a233..fd1cff6281 100644 13226--- a/cef/libcef_dll/cpptoc/domvisitor_cpptoc.cc 13227+++ b/cef/libcef_dll/cpptoc/domvisitor_cpptoc.cc 13228@@ -1,4 +1,4 @@ 13229-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 13230+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 13231 // reserved. Use of this source code is governed by a BSD-style license that 13232 // can be found in the LICENSE file. 13233 // 13234@@ -9,7 +9,7 @@ 13235 // implementations. See the translator.README.txt file in the tools directory 13236 // for more information. 13237 // 13238-// $hash=be3a37f8b7472c46512ce6fb910957d36a03da5e$ 13239+// $hash=f809bcb5a3f1246b3a94aebe14ad36bbb7e185c7$ 13240 // 13241 13242 #include "libcef_dll/cpptoc/domvisitor_cpptoc.h" 13243diff --git a/cef/libcef_dll/cpptoc/domvisitor_cpptoc.h b/cef/libcef_dll/cpptoc/domvisitor_cpptoc.h 13244index 07356d2aa3..84a2b75baa 100644 13245--- a/cef/libcef_dll/cpptoc/domvisitor_cpptoc.h 13246+++ b/cef/libcef_dll/cpptoc/domvisitor_cpptoc.h 13247@@ -1,4 +1,4 @@ 13248-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 13249+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 13250 // reserved. Use of this source code is governed by a BSD-style license that 13251 // can be found in the LICENSE file. 13252 // 13253@@ -9,7 +9,7 @@ 13254 // implementations. See the translator.README.txt file in the tools directory 13255 // for more information. 13256 // 13257-// $hash=dd9ebd1d2d03dc18467d9e944925b5ce6768dc22$ 13258+// $hash=974358c3bab311f8a19af125f5ccf2dfd13ad8e7$ 13259 // 13260 13261 #ifndef CEF_LIBCEF_DLL_CPPTOC_DOMVISITOR_CPPTOC_H_ 13262diff --git a/cef/libcef_dll/cpptoc/download_handler_cpptoc.cc b/cef/libcef_dll/cpptoc/download_handler_cpptoc.cc 13263index e922b99d29..8c2aa1f202 100644 13264--- a/cef/libcef_dll/cpptoc/download_handler_cpptoc.cc 13265+++ b/cef/libcef_dll/cpptoc/download_handler_cpptoc.cc 13266@@ -1,4 +1,4 @@ 13267-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 13268+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 13269 // reserved. Use of this source code is governed by a BSD-style license that 13270 // can be found in the LICENSE file. 13271 // 13272@@ -9,7 +9,7 @@ 13273 // implementations. See the translator.README.txt file in the tools directory 13274 // for more information. 13275 // 13276-// $hash=eb3787c594889d79bb9c1cfed9bdc5ed6b55f7aa$ 13277+// $hash=496b226297ba7d5fa5e7e7bd4117c417e26fae59$ 13278 // 13279 13280 #include "libcef_dll/cpptoc/download_handler_cpptoc.h" 13281diff --git a/cef/libcef_dll/cpptoc/download_handler_cpptoc.h b/cef/libcef_dll/cpptoc/download_handler_cpptoc.h 13282index 185eea5692..cd7580f8ab 100644 13283--- a/cef/libcef_dll/cpptoc/download_handler_cpptoc.h 13284+++ b/cef/libcef_dll/cpptoc/download_handler_cpptoc.h 13285@@ -1,4 +1,4 @@ 13286-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 13287+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 13288 // reserved. Use of this source code is governed by a BSD-style license that 13289 // can be found in the LICENSE file. 13290 // 13291@@ -9,7 +9,7 @@ 13292 // implementations. See the translator.README.txt file in the tools directory 13293 // for more information. 13294 // 13295-// $hash=7f7550fe074374d10b0601de008eaa81c72f8758$ 13296+// $hash=d8c8f94bad7ee32841d16658b106158880edb5e0$ 13297 // 13298 13299 #ifndef CEF_LIBCEF_DLL_CPPTOC_DOWNLOAD_HANDLER_CPPTOC_H_ 13300diff --git a/cef/libcef_dll/cpptoc/download_image_callback_cpptoc.cc b/cef/libcef_dll/cpptoc/download_image_callback_cpptoc.cc 13301index 47402be7ab..9b31d1e296 100644 13302--- a/cef/libcef_dll/cpptoc/download_image_callback_cpptoc.cc 13303+++ b/cef/libcef_dll/cpptoc/download_image_callback_cpptoc.cc 13304@@ -1,4 +1,4 @@ 13305-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 13306+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 13307 // reserved. Use of this source code is governed by a BSD-style license that 13308 // can be found in the LICENSE file. 13309 // 13310@@ -9,7 +9,7 @@ 13311 // implementations. See the translator.README.txt file in the tools directory 13312 // for more information. 13313 // 13314-// $hash=bd98cacb709cbd923c79cf8d61847e0bd6a2e3d9$ 13315+// $hash=9313088260606d8b5a57b7e75c1d37e724924a40$ 13316 // 13317 13318 #include "libcef_dll/cpptoc/download_image_callback_cpptoc.h" 13319diff --git a/cef/libcef_dll/cpptoc/download_image_callback_cpptoc.h b/cef/libcef_dll/cpptoc/download_image_callback_cpptoc.h 13320index ab340cba33..c7d6125bbb 100644 13321--- a/cef/libcef_dll/cpptoc/download_image_callback_cpptoc.h 13322+++ b/cef/libcef_dll/cpptoc/download_image_callback_cpptoc.h 13323@@ -1,4 +1,4 @@ 13324-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 13325+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 13326 // reserved. Use of this source code is governed by a BSD-style license that 13327 // can be found in the LICENSE file. 13328 // 13329@@ -9,7 +9,7 @@ 13330 // implementations. See the translator.README.txt file in the tools directory 13331 // for more information. 13332 // 13333-// $hash=a3b02330389789479f880c0b333632c3c2ddf835$ 13334+// $hash=c5f83abc0a8e18b3f0c87d39f83df687dfff22e1$ 13335 // 13336 13337 #ifndef CEF_LIBCEF_DLL_CPPTOC_DOWNLOAD_IMAGE_CALLBACK_CPPTOC_H_ 13338diff --git a/cef/libcef_dll/cpptoc/download_item_callback_cpptoc.cc b/cef/libcef_dll/cpptoc/download_item_callback_cpptoc.cc 13339index 9c406cf9d4..7ef2878221 100644 13340--- a/cef/libcef_dll/cpptoc/download_item_callback_cpptoc.cc 13341+++ b/cef/libcef_dll/cpptoc/download_item_callback_cpptoc.cc 13342@@ -1,4 +1,4 @@ 13343-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 13344+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 13345 // reserved. Use of this source code is governed by a BSD-style license that 13346 // can be found in the LICENSE file. 13347 // 13348@@ -9,7 +9,7 @@ 13349 // implementations. See the translator.README.txt file in the tools directory 13350 // for more information. 13351 // 13352-// $hash=b5c79b2579c5bd4abcd4514214aa2bad8e6c5d08$ 13353+// $hash=7cb000dca30be501541fc16036c585a3cd6618cb$ 13354 // 13355 13356 #include "libcef_dll/cpptoc/download_item_callback_cpptoc.h" 13357diff --git a/cef/libcef_dll/cpptoc/download_item_callback_cpptoc.h b/cef/libcef_dll/cpptoc/download_item_callback_cpptoc.h 13358index 0c0610c2c6..bd9dec4ef2 100644 13359--- a/cef/libcef_dll/cpptoc/download_item_callback_cpptoc.h 13360+++ b/cef/libcef_dll/cpptoc/download_item_callback_cpptoc.h 13361@@ -1,4 +1,4 @@ 13362-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 13363+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 13364 // reserved. Use of this source code is governed by a BSD-style license that 13365 // can be found in the LICENSE file. 13366 // 13367@@ -9,7 +9,7 @@ 13368 // implementations. See the translator.README.txt file in the tools directory 13369 // for more information. 13370 // 13371-// $hash=0437928c10d1860236103d10041bfc2093b29e15$ 13372+// $hash=d0baa6c264292da99e5c909d18450486435c9a8e$ 13373 // 13374 13375 #ifndef CEF_LIBCEF_DLL_CPPTOC_DOWNLOAD_ITEM_CALLBACK_CPPTOC_H_ 13376diff --git a/cef/libcef_dll/cpptoc/download_item_cpptoc.cc b/cef/libcef_dll/cpptoc/download_item_cpptoc.cc 13377index 24adcedf08..357d285c90 100644 13378--- a/cef/libcef_dll/cpptoc/download_item_cpptoc.cc 13379+++ b/cef/libcef_dll/cpptoc/download_item_cpptoc.cc 13380@@ -1,4 +1,4 @@ 13381-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 13382+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 13383 // reserved. Use of this source code is governed by a BSD-style license that 13384 // can be found in the LICENSE file. 13385 // 13386@@ -9,7 +9,7 @@ 13387 // implementations. See the translator.README.txt file in the tools directory 13388 // for more information. 13389 // 13390-// $hash=c8e0b5428ea91a7fc739e52e632d66b5a64c9b47$ 13391+// $hash=64b3cee6b2de98140a1dc6f6aabff6b2c4ac7d78$ 13392 // 13393 13394 #include "libcef_dll/cpptoc/download_item_cpptoc.h" 13395diff --git a/cef/libcef_dll/cpptoc/download_item_cpptoc.h b/cef/libcef_dll/cpptoc/download_item_cpptoc.h 13396index 38c0546f3d..559b6c8f2d 100644 13397--- a/cef/libcef_dll/cpptoc/download_item_cpptoc.h 13398+++ b/cef/libcef_dll/cpptoc/download_item_cpptoc.h 13399@@ -1,4 +1,4 @@ 13400-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 13401+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 13402 // reserved. Use of this source code is governed by a BSD-style license that 13403 // can be found in the LICENSE file. 13404 // 13405@@ -9,7 +9,7 @@ 13406 // implementations. See the translator.README.txt file in the tools directory 13407 // for more information. 13408 // 13409-// $hash=4daa4f692a70672c84ac6aa3131d94ef7db16769$ 13410+// $hash=72609007d48530320ae4a0f210c4604108d896d9$ 13411 // 13412 13413 #ifndef CEF_LIBCEF_DLL_CPPTOC_DOWNLOAD_ITEM_CPPTOC_H_ 13414diff --git a/cef/libcef_dll/cpptoc/drag_data_cpptoc.cc b/cef/libcef_dll/cpptoc/drag_data_cpptoc.cc 13415index 3e4eaa50d8..6e682e5d89 100644 13416--- a/cef/libcef_dll/cpptoc/drag_data_cpptoc.cc 13417+++ b/cef/libcef_dll/cpptoc/drag_data_cpptoc.cc 13418@@ -1,4 +1,4 @@ 13419-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 13420+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 13421 // reserved. Use of this source code is governed by a BSD-style license that 13422 // can be found in the LICENSE file. 13423 // 13424@@ -9,7 +9,7 @@ 13425 // implementations. See the translator.README.txt file in the tools directory 13426 // for more information. 13427 // 13428-// $hash=da31b4510fabf162d7a456350d493511c7aa115b$ 13429+// $hash=2a39ab30ca26c5c63ce557b31f86a5557cd96ebc$ 13430 // 13431 13432 #include "libcef_dll/cpptoc/drag_data_cpptoc.h" 13433diff --git a/cef/libcef_dll/cpptoc/drag_data_cpptoc.h b/cef/libcef_dll/cpptoc/drag_data_cpptoc.h 13434index aea7ebbc2b..fbeafd0745 100644 13435--- a/cef/libcef_dll/cpptoc/drag_data_cpptoc.h 13436+++ b/cef/libcef_dll/cpptoc/drag_data_cpptoc.h 13437@@ -1,4 +1,4 @@ 13438-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 13439+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 13440 // reserved. Use of this source code is governed by a BSD-style license that 13441 // can be found in the LICENSE file. 13442 // 13443@@ -9,7 +9,7 @@ 13444 // implementations. See the translator.README.txt file in the tools directory 13445 // for more information. 13446 // 13447-// $hash=a09c182c6c031b3ab85700173d5597ef9667468e$ 13448+// $hash=c267ab21bb2e49ecade7ba3c7545003d7e072373$ 13449 // 13450 13451 #ifndef CEF_LIBCEF_DLL_CPPTOC_DRAG_DATA_CPPTOC_H_ 13452diff --git a/cef/libcef_dll/cpptoc/drag_handler_cpptoc.cc b/cef/libcef_dll/cpptoc/drag_handler_cpptoc.cc 13453index 21f5edf82a..833c0cbeef 100644 13454--- a/cef/libcef_dll/cpptoc/drag_handler_cpptoc.cc 13455+++ b/cef/libcef_dll/cpptoc/drag_handler_cpptoc.cc 13456@@ -1,4 +1,4 @@ 13457-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 13458+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 13459 // reserved. Use of this source code is governed by a BSD-style license that 13460 // can be found in the LICENSE file. 13461 // 13462@@ -9,7 +9,7 @@ 13463 // implementations. See the translator.README.txt file in the tools directory 13464 // for more information. 13465 // 13466-// $hash=ea86117d7727f8a72eb4d6bdd3abb39f6f986ddd$ 13467+// $hash=53febc1355422739c9de942f67f52fb4de462571$ 13468 // 13469 13470 #include "libcef_dll/cpptoc/drag_handler_cpptoc.h" 13471diff --git a/cef/libcef_dll/cpptoc/drag_handler_cpptoc.h b/cef/libcef_dll/cpptoc/drag_handler_cpptoc.h 13472index a1eb28ca6d..865b8c94a9 100644 13473--- a/cef/libcef_dll/cpptoc/drag_handler_cpptoc.h 13474+++ b/cef/libcef_dll/cpptoc/drag_handler_cpptoc.h 13475@@ -1,4 +1,4 @@ 13476-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 13477+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 13478 // reserved. Use of this source code is governed by a BSD-style license that 13479 // can be found in the LICENSE file. 13480 // 13481@@ -9,7 +9,7 @@ 13482 // implementations. See the translator.README.txt file in the tools directory 13483 // for more information. 13484 // 13485-// $hash=7ef7668148af4ad90257fe5e469ba360fb27cad2$ 13486+// $hash=39ab6f4e1f88efb2d726995d7075c904e11091e6$ 13487 // 13488 13489 #ifndef CEF_LIBCEF_DLL_CPPTOC_DRAG_HANDLER_CPPTOC_H_ 13490diff --git a/cef/libcef_dll/cpptoc/end_tracing_callback_cpptoc.cc b/cef/libcef_dll/cpptoc/end_tracing_callback_cpptoc.cc 13491index e2a1d75a8e..efc5b12922 100644 13492--- a/cef/libcef_dll/cpptoc/end_tracing_callback_cpptoc.cc 13493+++ b/cef/libcef_dll/cpptoc/end_tracing_callback_cpptoc.cc 13494@@ -1,4 +1,4 @@ 13495-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 13496+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 13497 // reserved. Use of this source code is governed by a BSD-style license that 13498 // can be found in the LICENSE file. 13499 // 13500@@ -9,7 +9,7 @@ 13501 // implementations. See the translator.README.txt file in the tools directory 13502 // for more information. 13503 // 13504-// $hash=27526065862cb1b69968994cea5258a59bfa9c30$ 13505+// $hash=67836a9b2dfec98cab93231cb7e07ca2b9696123$ 13506 // 13507 13508 #include "libcef_dll/cpptoc/end_tracing_callback_cpptoc.h" 13509diff --git a/cef/libcef_dll/cpptoc/end_tracing_callback_cpptoc.h b/cef/libcef_dll/cpptoc/end_tracing_callback_cpptoc.h 13510index 6f990429ba..89668d4d52 100644 13511--- a/cef/libcef_dll/cpptoc/end_tracing_callback_cpptoc.h 13512+++ b/cef/libcef_dll/cpptoc/end_tracing_callback_cpptoc.h 13513@@ -1,4 +1,4 @@ 13514-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 13515+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 13516 // reserved. Use of this source code is governed by a BSD-style license that 13517 // can be found in the LICENSE file. 13518 // 13519@@ -9,7 +9,7 @@ 13520 // implementations. See the translator.README.txt file in the tools directory 13521 // for more information. 13522 // 13523-// $hash=9c3325aa86df8f76a5e517c609a8560c1bc32ff1$ 13524+// $hash=0769e0fec9a6f3c0e33d35b23ebf1bec4a205844$ 13525 // 13526 13527 #ifndef CEF_LIBCEF_DLL_CPPTOC_END_TRACING_CALLBACK_CPPTOC_H_ 13528diff --git a/cef/libcef_dll/cpptoc/extension_cpptoc.cc b/cef/libcef_dll/cpptoc/extension_cpptoc.cc 13529index 950a28a334..f601bb51c6 100644 13530--- a/cef/libcef_dll/cpptoc/extension_cpptoc.cc 13531+++ b/cef/libcef_dll/cpptoc/extension_cpptoc.cc 13532@@ -1,4 +1,4 @@ 13533-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 13534+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 13535 // reserved. Use of this source code is governed by a BSD-style license that 13536 // can be found in the LICENSE file. 13537 // 13538@@ -9,7 +9,7 @@ 13539 // implementations. See the translator.README.txt file in the tools directory 13540 // for more information. 13541 // 13542-// $hash=46f1330dc50f407b9d0048c0110fa03ef1496fb7$ 13543+// $hash=5ae76b861609dc9f1b0d033dcebf514d8ef68a57$ 13544 // 13545 13546 #include "libcef_dll/cpptoc/extension_cpptoc.h" 13547diff --git a/cef/libcef_dll/cpptoc/extension_cpptoc.h b/cef/libcef_dll/cpptoc/extension_cpptoc.h 13548index 4ff4075fda..f2c06267c0 100644 13549--- a/cef/libcef_dll/cpptoc/extension_cpptoc.h 13550+++ b/cef/libcef_dll/cpptoc/extension_cpptoc.h 13551@@ -1,4 +1,4 @@ 13552-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 13553+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 13554 // reserved. Use of this source code is governed by a BSD-style license that 13555 // can be found in the LICENSE file. 13556 // 13557@@ -9,7 +9,7 @@ 13558 // implementations. See the translator.README.txt file in the tools directory 13559 // for more information. 13560 // 13561-// $hash=53061b2630f0dbffa826ecd372ae6f8c911c3e16$ 13562+// $hash=46725937bd7ba35ca8ea8fb2d1bbdeac0c53dc80$ 13563 // 13564 13565 #ifndef CEF_LIBCEF_DLL_CPPTOC_EXTENSION_CPPTOC_H_ 13566diff --git a/cef/libcef_dll/cpptoc/extension_handler_cpptoc.cc b/cef/libcef_dll/cpptoc/extension_handler_cpptoc.cc 13567index 5878f1b499..2aaccfbc5a 100644 13568--- a/cef/libcef_dll/cpptoc/extension_handler_cpptoc.cc 13569+++ b/cef/libcef_dll/cpptoc/extension_handler_cpptoc.cc 13570@@ -1,4 +1,4 @@ 13571-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 13572+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 13573 // reserved. Use of this source code is governed by a BSD-style license that 13574 // can be found in the LICENSE file. 13575 // 13576@@ -9,7 +9,7 @@ 13577 // implementations. See the translator.README.txt file in the tools directory 13578 // for more information. 13579 // 13580-// $hash=5f749f292c2c8c39e7c1bb01b84a36ec8d182e2a$ 13581+// $hash=7cdd0564d9b129bf9f068764d4d1588645445d5b$ 13582 // 13583 13584 #include "libcef_dll/cpptoc/extension_handler_cpptoc.h" 13585diff --git a/cef/libcef_dll/cpptoc/extension_handler_cpptoc.h b/cef/libcef_dll/cpptoc/extension_handler_cpptoc.h 13586index 5ae40e2c4a..fc3ff5d6a6 100644 13587--- a/cef/libcef_dll/cpptoc/extension_handler_cpptoc.h 13588+++ b/cef/libcef_dll/cpptoc/extension_handler_cpptoc.h 13589@@ -1,4 +1,4 @@ 13590-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 13591+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 13592 // reserved. Use of this source code is governed by a BSD-style license that 13593 // can be found in the LICENSE file. 13594 // 13595@@ -9,7 +9,7 @@ 13596 // implementations. See the translator.README.txt file in the tools directory 13597 // for more information. 13598 // 13599-// $hash=5cac87c4d641ef2037416771a535c4cd3b9c2a0f$ 13600+// $hash=b695266a9c10c4fc0b68f96b64a77cc5c0235827$ 13601 // 13602 13603 #ifndef CEF_LIBCEF_DLL_CPPTOC_EXTENSION_HANDLER_CPPTOC_H_ 13604diff --git a/cef/libcef_dll/cpptoc/file_dialog_callback_cpptoc.cc b/cef/libcef_dll/cpptoc/file_dialog_callback_cpptoc.cc 13605index 5866e20267..7a4bdbcf8d 100644 13606--- a/cef/libcef_dll/cpptoc/file_dialog_callback_cpptoc.cc 13607+++ b/cef/libcef_dll/cpptoc/file_dialog_callback_cpptoc.cc 13608@@ -1,4 +1,4 @@ 13609-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 13610+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 13611 // reserved. Use of this source code is governed by a BSD-style license that 13612 // can be found in the LICENSE file. 13613 // 13614@@ -9,7 +9,7 @@ 13615 // implementations. See the translator.README.txt file in the tools directory 13616 // for more information. 13617 // 13618-// $hash=87cc07146ea03201324443a1abb7bc6fdb4dd472$ 13619+// $hash=d334e579f498ad7727721dfe4e10ad810b81035a$ 13620 // 13621 13622 #include "libcef_dll/cpptoc/file_dialog_callback_cpptoc.h" 13623diff --git a/cef/libcef_dll/cpptoc/file_dialog_callback_cpptoc.h b/cef/libcef_dll/cpptoc/file_dialog_callback_cpptoc.h 13624index 10bedbc839..046c02aa5f 100644 13625--- a/cef/libcef_dll/cpptoc/file_dialog_callback_cpptoc.h 13626+++ b/cef/libcef_dll/cpptoc/file_dialog_callback_cpptoc.h 13627@@ -1,4 +1,4 @@ 13628-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 13629+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 13630 // reserved. Use of this source code is governed by a BSD-style license that 13631 // can be found in the LICENSE file. 13632 // 13633@@ -9,7 +9,7 @@ 13634 // implementations. See the translator.README.txt file in the tools directory 13635 // for more information. 13636 // 13637-// $hash=2d6cfc2f723c4cb0afbe193fb540af66c3261715$ 13638+// $hash=2b6c5e5bd0bb44f1c916b317bccb0e0794c28f91$ 13639 // 13640 13641 #ifndef CEF_LIBCEF_DLL_CPPTOC_FILE_DIALOG_CALLBACK_CPPTOC_H_ 13642diff --git a/cef/libcef_dll/cpptoc/find_handler_cpptoc.cc b/cef/libcef_dll/cpptoc/find_handler_cpptoc.cc 13643index 897837f228..7130f8058d 100644 13644--- a/cef/libcef_dll/cpptoc/find_handler_cpptoc.cc 13645+++ b/cef/libcef_dll/cpptoc/find_handler_cpptoc.cc 13646@@ -1,4 +1,4 @@ 13647-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 13648+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 13649 // reserved. Use of this source code is governed by a BSD-style license that 13650 // can be found in the LICENSE file. 13651 // 13652@@ -9,7 +9,7 @@ 13653 // implementations. See the translator.README.txt file in the tools directory 13654 // for more information. 13655 // 13656-// $hash=0d144f7fa17062b3708f16a0232a9a0c7f0467d8$ 13657+// $hash=022bd3d1f8fd0eb3de156647dd4f50d688747534$ 13658 // 13659 13660 #include "libcef_dll/cpptoc/find_handler_cpptoc.h" 13661diff --git a/cef/libcef_dll/cpptoc/find_handler_cpptoc.h b/cef/libcef_dll/cpptoc/find_handler_cpptoc.h 13662index c7cc001343..0d2193718e 100644 13663--- a/cef/libcef_dll/cpptoc/find_handler_cpptoc.h 13664+++ b/cef/libcef_dll/cpptoc/find_handler_cpptoc.h 13665@@ -1,4 +1,4 @@ 13666-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 13667+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 13668 // reserved. Use of this source code is governed by a BSD-style license that 13669 // can be found in the LICENSE file. 13670 // 13671@@ -9,7 +9,7 @@ 13672 // implementations. See the translator.README.txt file in the tools directory 13673 // for more information. 13674 // 13675-// $hash=880a3e0dab84306fb5f44c6b2a28c62e149beda9$ 13676+// $hash=c6408d6714984291379f0113e7806cac21aee934$ 13677 // 13678 13679 #ifndef CEF_LIBCEF_DLL_CPPTOC_FIND_HANDLER_CPPTOC_H_ 13680diff --git a/cef/libcef_dll/cpptoc/focus_handler_cpptoc.cc b/cef/libcef_dll/cpptoc/focus_handler_cpptoc.cc 13681index a8f33a7c96..2549edd6d6 100644 13682--- a/cef/libcef_dll/cpptoc/focus_handler_cpptoc.cc 13683+++ b/cef/libcef_dll/cpptoc/focus_handler_cpptoc.cc 13684@@ -1,4 +1,4 @@ 13685-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 13686+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 13687 // reserved. Use of this source code is governed by a BSD-style license that 13688 // can be found in the LICENSE file. 13689 // 13690@@ -9,7 +9,7 @@ 13691 // implementations. See the translator.README.txt file in the tools directory 13692 // for more information. 13693 // 13694-// $hash=fb56495a48efa0319e4ed8789305c5106707e7b6$ 13695+// $hash=6d554e767e9e5eea0d9caefba61e35fbe4fff231$ 13696 // 13697 13698 #include "libcef_dll/cpptoc/focus_handler_cpptoc.h" 13699diff --git a/cef/libcef_dll/cpptoc/focus_handler_cpptoc.h b/cef/libcef_dll/cpptoc/focus_handler_cpptoc.h 13700index ab2a586449..d384176fe8 100644 13701--- a/cef/libcef_dll/cpptoc/focus_handler_cpptoc.h 13702+++ b/cef/libcef_dll/cpptoc/focus_handler_cpptoc.h 13703@@ -1,4 +1,4 @@ 13704-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 13705+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 13706 // reserved. Use of this source code is governed by a BSD-style license that 13707 // can be found in the LICENSE file. 13708 // 13709@@ -9,7 +9,7 @@ 13710 // implementations. See the translator.README.txt file in the tools directory 13711 // for more information. 13712 // 13713-// $hash=dd23aa5e43b06eb8d4975d17cd61c47b77998736$ 13714+// $hash=def50c909d368ef1d03f1932f2b0283c3cbf8165$ 13715 // 13716 13717 #ifndef CEF_LIBCEF_DLL_CPPTOC_FOCUS_HANDLER_CPPTOC_H_ 13718diff --git a/cef/libcef_dll/cpptoc/frame_cpptoc.cc b/cef/libcef_dll/cpptoc/frame_cpptoc.cc 13719index 06db65ffc5..9c3a4a4fdd 100644 13720--- a/cef/libcef_dll/cpptoc/frame_cpptoc.cc 13721+++ b/cef/libcef_dll/cpptoc/frame_cpptoc.cc 13722@@ -1,4 +1,4 @@ 13723-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 13724+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 13725 // reserved. Use of this source code is governed by a BSD-style license that 13726 // can be found in the LICENSE file. 13727 // 13728@@ -9,7 +9,7 @@ 13729 // implementations. See the translator.README.txt file in the tools directory 13730 // for more information. 13731 // 13732-// $hash=d9b002e6ccad765d9a03d757e97e35cdc35c95b6$ 13733+// $hash=e94035efbcc27884df78e43f4540ac38002c01e7$ 13734 // 13735 13736 #include "libcef_dll/cpptoc/frame_cpptoc.h" 13737@@ -388,6 +388,24 @@ void CEF_CALLBACK frame_visit_dom(struct _cef_frame_t* self, 13738 CefFrameCppToC::Get(self)->VisitDOM(CefDOMVisitorCToCpp::Wrap(visitor)); 13739 } 13740 13741+void CEF_CALLBACK 13742+frame_load_header_url(struct _cef_frame_t* self, 13743+ const cef_string_t* url, 13744+ const cef_string_t* additionalHttpHeaders) { 13745+ shutdown_checker::AssertNotShutdown(); 13746+ 13747+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 13748+ 13749+ DCHECK(self); 13750+ if (!self) 13751+ return; 13752+ // Unverified params: url, additionalHttpHeaders 13753+ 13754+ // Execute 13755+ CefFrameCppToC::Get(self)->LoadHeaderUrl(CefString(url), 13756+ CefString(additionalHttpHeaders)); 13757+} 13758+ 13759 struct _cef_urlrequest_t* CEF_CALLBACK 13760 frame_create_urlrequest(struct _cef_frame_t* self, 13761 struct _cef_request_t* request, 13762@@ -467,6 +485,7 @@ CefFrameCppToC::CefFrameCppToC() { 13763 GetStruct()->get_browser = frame_get_browser; 13764 GetStruct()->get_v8context = frame_get_v8context; 13765 GetStruct()->visit_dom = frame_visit_dom; 13766+ GetStruct()->load_header_url = frame_load_header_url; 13767 GetStruct()->create_urlrequest = frame_create_urlrequest; 13768 GetStruct()->send_process_message = frame_send_process_message; 13769 } 13770diff --git a/cef/libcef_dll/cpptoc/frame_cpptoc.h b/cef/libcef_dll/cpptoc/frame_cpptoc.h 13771index 935e97f3f5..3e1e27fe92 100644 13772--- a/cef/libcef_dll/cpptoc/frame_cpptoc.h 13773+++ b/cef/libcef_dll/cpptoc/frame_cpptoc.h 13774@@ -1,4 +1,4 @@ 13775-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 13776+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 13777 // reserved. Use of this source code is governed by a BSD-style license that 13778 // can be found in the LICENSE file. 13779 // 13780@@ -9,7 +9,7 @@ 13781 // implementations. See the translator.README.txt file in the tools directory 13782 // for more information. 13783 // 13784-// $hash=2f4364d696c512ecbe2a16fe77bd1cf3b7c9a34b$ 13785+// $hash=5154f627049509d38f098549ea08fb26a0712963$ 13786 // 13787 13788 #ifndef CEF_LIBCEF_DLL_CPPTOC_FRAME_CPPTOC_H_ 13789diff --git a/cef/libcef_dll/cpptoc/geolocation_acess_cpptoc.cc b/cef/libcef_dll/cpptoc/geolocation_acess_cpptoc.cc 13790new file mode 100644 13791index 0000000000..da6eb4aac5 13792--- /dev/null 13793+++ b/cef/libcef_dll/cpptoc/geolocation_acess_cpptoc.cc 13794@@ -0,0 +1,138 @@ 13795+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 13796+// reserved. Use of this source code is governed by a BSD-style license that 13797+// can be found in the LICENSE file. 13798+// 13799+// --------------------------------------------------------------------------- 13800+// 13801+// This file was generated by the CEF translator tool. If making changes by 13802+// hand only do so within the body of existing method and function 13803+// implementations. See the translator.README.txt file in the tools directory 13804+// for more information. 13805+// 13806+// $hash=a21b3afd08841726e90bdc044e0dd0d22b277264$ 13807+// 13808+ 13809+#include "libcef_dll/cpptoc/geolocation_acess_cpptoc.h" 13810+#include "libcef_dll/shutdown_checker.h" 13811+ 13812+namespace { 13813+ 13814+// MEMBER FUNCTIONS - Body may be edited by hand. 13815+ 13816+int CEF_CALLBACK 13817+geolocation_acess_contain_origin(struct _cef_geolocation_acess_t* self, 13818+ const cef_string_t* origin) { 13819+ shutdown_checker::AssertNotShutdown(); 13820+ 13821+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 13822+ 13823+ DCHECK(self); 13824+ if (!self) 13825+ return 0; 13826+ // Verify param: origin; type: string_byref_const 13827+ DCHECK(origin); 13828+ if (!origin) 13829+ return 0; 13830+ 13831+ // Execute 13832+ bool _retval = 13833+ CefGeolocationAcessCppToC::Get(self)->ContainOrigin(CefString(origin)); 13834+ 13835+ // Return type: bool 13836+ return _retval; 13837+} 13838+ 13839+int CEF_CALLBACK geolocation_acess_is_origin_access_enabled( 13840+ struct _cef_geolocation_acess_t* self, 13841+ const cef_string_t* origin) { 13842+ shutdown_checker::AssertNotShutdown(); 13843+ 13844+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 13845+ 13846+ DCHECK(self); 13847+ if (!self) 13848+ return 0; 13849+ // Verify param: origin; type: string_byref_const 13850+ DCHECK(origin); 13851+ if (!origin) 13852+ return 0; 13853+ 13854+ // Execute 13855+ bool _retval = CefGeolocationAcessCppToC::Get(self)->IsOriginAccessEnabled( 13856+ CefString(origin)); 13857+ 13858+ // Return type: bool 13859+ return _retval; 13860+} 13861+ 13862+void CEF_CALLBACK 13863+geolocation_acess_enabled(struct _cef_geolocation_acess_t* self, 13864+ const cef_string_t* origin) { 13865+ shutdown_checker::AssertNotShutdown(); 13866+ 13867+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 13868+ 13869+ DCHECK(self); 13870+ if (!self) 13871+ return; 13872+ // Verify param: origin; type: string_byref_const 13873+ DCHECK(origin); 13874+ if (!origin) 13875+ return; 13876+ 13877+ // Execute 13878+ CefGeolocationAcessCppToC::Get(self)->Enabled(CefString(origin)); 13879+} 13880+ 13881+void CEF_CALLBACK 13882+geolocation_acess_disabled(struct _cef_geolocation_acess_t* self, 13883+ const cef_string_t* origin) { 13884+ shutdown_checker::AssertNotShutdown(); 13885+ 13886+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 13887+ 13888+ DCHECK(self); 13889+ if (!self) 13890+ return; 13891+ // Verify param: origin; type: string_byref_const 13892+ DCHECK(origin); 13893+ if (!origin) 13894+ return; 13895+ 13896+ // Execute 13897+ CefGeolocationAcessCppToC::Get(self)->Disabled(CefString(origin)); 13898+} 13899+ 13900+} // namespace 13901+ 13902+// CONSTRUCTOR - Do not edit by hand. 13903+ 13904+CefGeolocationAcessCppToC::CefGeolocationAcessCppToC() { 13905+ GetStruct()->contain_origin = geolocation_acess_contain_origin; 13906+ GetStruct()->is_origin_access_enabled = 13907+ geolocation_acess_is_origin_access_enabled; 13908+ GetStruct()->enabled = geolocation_acess_enabled; 13909+ GetStruct()->disabled = geolocation_acess_disabled; 13910+} 13911+ 13912+// DESTRUCTOR - Do not edit by hand. 13913+ 13914+CefGeolocationAcessCppToC::~CefGeolocationAcessCppToC() { 13915+ shutdown_checker::AssertNotShutdown(); 13916+} 13917+ 13918+template <> 13919+CefRefPtr<CefGeolocationAcess> CefCppToCRefCounted< 13920+ CefGeolocationAcessCppToC, 13921+ CefGeolocationAcess, 13922+ cef_geolocation_acess_t>::UnwrapDerived(CefWrapperType type, 13923+ cef_geolocation_acess_t* s) { 13924+ NOTREACHED() << "Unexpected class type: " << type; 13925+ return nullptr; 13926+} 13927+ 13928+template <> 13929+CefWrapperType CefCppToCRefCounted<CefGeolocationAcessCppToC, 13930+ CefGeolocationAcess, 13931+ cef_geolocation_acess_t>::kWrapperType = 13932+ WT_GEOLOCATION_ACESS; 13933diff --git a/cef/libcef_dll/cpptoc/geolocation_acess_cpptoc.h b/cef/libcef_dll/cpptoc/geolocation_acess_cpptoc.h 13934new file mode 100644 13935index 0000000000..97b335d034 13936--- /dev/null 13937+++ b/cef/libcef_dll/cpptoc/geolocation_acess_cpptoc.h 13938@@ -0,0 +1,38 @@ 13939+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 13940+// reserved. Use of this source code is governed by a BSD-style license that 13941+// can be found in the LICENSE file. 13942+// 13943+// --------------------------------------------------------------------------- 13944+// 13945+// This file was generated by the CEF translator tool. If making changes by 13946+// hand only do so within the body of existing method and function 13947+// implementations. See the translator.README.txt file in the tools directory 13948+// for more information. 13949+// 13950+// $hash=42966754a9927c84debb6edfd37f8c41873ee268$ 13951+// 13952+ 13953+#ifndef CEF_LIBCEF_DLL_CPPTOC_GEOLOCATION_ACESS_CPPTOC_H_ 13954+#define CEF_LIBCEF_DLL_CPPTOC_GEOLOCATION_ACESS_CPPTOC_H_ 13955+#pragma once 13956+ 13957+#if !defined(BUILDING_CEF_SHARED) 13958+#error This file can be included DLL-side only 13959+#endif 13960+ 13961+#include "include/capi/cef_permission_request_capi.h" 13962+#include "include/cef_permission_request.h" 13963+#include "libcef_dll/cpptoc/cpptoc_ref_counted.h" 13964+ 13965+// Wrap a C++ class with a C structure. 13966+// This class may be instantiated and accessed DLL-side only. 13967+class CefGeolocationAcessCppToC 13968+ : public CefCppToCRefCounted<CefGeolocationAcessCppToC, 13969+ CefGeolocationAcess, 13970+ cef_geolocation_acess_t> { 13971+ public: 13972+ CefGeolocationAcessCppToC(); 13973+ virtual ~CefGeolocationAcessCppToC(); 13974+}; 13975+ 13976+#endif // CEF_LIBCEF_DLL_CPPTOC_GEOLOCATION_ACESS_CPPTOC_H_ 13977diff --git a/cef/libcef_dll/cpptoc/get_extension_resource_callback_cpptoc.cc b/cef/libcef_dll/cpptoc/get_extension_resource_callback_cpptoc.cc 13978index f8c7687701..4aeb4e9714 100644 13979--- a/cef/libcef_dll/cpptoc/get_extension_resource_callback_cpptoc.cc 13980+++ b/cef/libcef_dll/cpptoc/get_extension_resource_callback_cpptoc.cc 13981@@ -1,4 +1,4 @@ 13982-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 13983+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 13984 // reserved. Use of this source code is governed by a BSD-style license that 13985 // can be found in the LICENSE file. 13986 // 13987@@ -9,7 +9,7 @@ 13988 // implementations. See the translator.README.txt file in the tools directory 13989 // for more information. 13990 // 13991-// $hash=569f3d8665058812dba8a4ea648d8f3fa224418a$ 13992+// $hash=3f24789c79862889b5a0454c743bf70f71a98faf$ 13993 // 13994 13995 #include "libcef_dll/cpptoc/get_extension_resource_callback_cpptoc.h" 13996diff --git a/cef/libcef_dll/cpptoc/get_extension_resource_callback_cpptoc.h b/cef/libcef_dll/cpptoc/get_extension_resource_callback_cpptoc.h 13997index 20b1dd05c6..3ed16a181a 100644 13998--- a/cef/libcef_dll/cpptoc/get_extension_resource_callback_cpptoc.h 13999+++ b/cef/libcef_dll/cpptoc/get_extension_resource_callback_cpptoc.h 14000@@ -1,4 +1,4 @@ 14001-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 14002+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 14003 // reserved. Use of this source code is governed by a BSD-style license that 14004 // can be found in the LICENSE file. 14005 // 14006@@ -9,7 +9,7 @@ 14007 // implementations. See the translator.README.txt file in the tools directory 14008 // for more information. 14009 // 14010-// $hash=e821ff90ff963596a694524c1cb7104d09d6fb41$ 14011+// $hash=8e0f89043319ecad378af6125bd4fcdbd8bdd34e$ 14012 // 14013 14014 #ifndef CEF_LIBCEF_DLL_CPPTOC_GET_EXTENSION_RESOURCE_CALLBACK_CPPTOC_H_ 14015diff --git a/cef/libcef_dll/cpptoc/image_cpptoc.cc b/cef/libcef_dll/cpptoc/image_cpptoc.cc 14016index 970541d8a7..81dc865b26 100644 14017--- a/cef/libcef_dll/cpptoc/image_cpptoc.cc 14018+++ b/cef/libcef_dll/cpptoc/image_cpptoc.cc 14019@@ -1,4 +1,4 @@ 14020-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 14021+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 14022 // reserved. Use of this source code is governed by a BSD-style license that 14023 // can be found in the LICENSE file. 14024 // 14025@@ -9,7 +9,7 @@ 14026 // implementations. See the translator.README.txt file in the tools directory 14027 // for more information. 14028 // 14029-// $hash=8fbc29a756ba6dd4fa94ff1c886070c9e7feb1bc$ 14030+// $hash=e9ee6df7e0e77e54dea7e2c1e4b24cdc88b79344$ 14031 // 14032 14033 #include "libcef_dll/cpptoc/image_cpptoc.h" 14034diff --git a/cef/libcef_dll/cpptoc/image_cpptoc.h b/cef/libcef_dll/cpptoc/image_cpptoc.h 14035index 0a09903248..acd84570c2 100644 14036--- a/cef/libcef_dll/cpptoc/image_cpptoc.h 14037+++ b/cef/libcef_dll/cpptoc/image_cpptoc.h 14038@@ -1,4 +1,4 @@ 14039-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 14040+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 14041 // reserved. Use of this source code is governed by a BSD-style license that 14042 // can be found in the LICENSE file. 14043 // 14044@@ -9,7 +9,7 @@ 14045 // implementations. See the translator.README.txt file in the tools directory 14046 // for more information. 14047 // 14048-// $hash=b3e15b61b6e7e019575ccf32f374ab4666b1b7cb$ 14049+// $hash=e82ca8d18a0367d4061f67afd33a8a486f338238$ 14050 // 14051 14052 #ifndef CEF_LIBCEF_DLL_CPPTOC_IMAGE_CPPTOC_H_ 14053diff --git a/cef/libcef_dll/cpptoc/java_script_result_callback_cpptoc.cc b/cef/libcef_dll/cpptoc/java_script_result_callback_cpptoc.cc 14054new file mode 100644 14055index 0000000000..1a0adf8512 14056--- /dev/null 14057+++ b/cef/libcef_dll/cpptoc/java_script_result_callback_cpptoc.cc 14058@@ -0,0 +1,72 @@ 14059+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 14060+// reserved. Use of this source code is governed by a BSD-style license that 14061+// can be found in the LICENSE file. 14062+// 14063+// --------------------------------------------------------------------------- 14064+// 14065+// This file was generated by the CEF translator tool. If making changes by 14066+// hand only do so within the body of existing method and function 14067+// implementations. See the translator.README.txt file in the tools directory 14068+// for more information. 14069+// 14070+// $hash=b98959cda67200ef6a434297c5e9de53a2e948fb$ 14071+// 14072+ 14073+#include "libcef_dll/cpptoc/java_script_result_callback_cpptoc.h" 14074+#include "libcef_dll/shutdown_checker.h" 14075+ 14076+namespace { 14077+ 14078+// MEMBER FUNCTIONS - Body may be edited by hand. 14079+ 14080+void CEF_CALLBACK java_script_result_callback_on_java_script_exe_result( 14081+ struct _cef_java_script_result_callback_t* self, 14082+ const cef_string_t* result) { 14083+ shutdown_checker::AssertNotShutdown(); 14084+ 14085+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 14086+ 14087+ DCHECK(self); 14088+ if (!self) 14089+ return; 14090+ // Verify param: result; type: string_byref_const 14091+ DCHECK(result); 14092+ if (!result) 14093+ return; 14094+ 14095+ // Execute 14096+ CefJavaScriptResultCallbackCppToC::Get(self)->OnJavaScriptExeResult( 14097+ CefString(result)); 14098+} 14099+ 14100+} // namespace 14101+ 14102+// CONSTRUCTOR - Do not edit by hand. 14103+ 14104+CefJavaScriptResultCallbackCppToC::CefJavaScriptResultCallbackCppToC() { 14105+ GetStruct()->on_java_script_exe_result = 14106+ java_script_result_callback_on_java_script_exe_result; 14107+} 14108+ 14109+// DESTRUCTOR - Do not edit by hand. 14110+ 14111+CefJavaScriptResultCallbackCppToC::~CefJavaScriptResultCallbackCppToC() { 14112+ shutdown_checker::AssertNotShutdown(); 14113+} 14114+ 14115+template <> 14116+CefRefPtr<CefJavaScriptResultCallback> 14117+CefCppToCRefCounted<CefJavaScriptResultCallbackCppToC, 14118+ CefJavaScriptResultCallback, 14119+ cef_java_script_result_callback_t>:: 14120+ UnwrapDerived(CefWrapperType type, cef_java_script_result_callback_t* s) { 14121+ NOTREACHED() << "Unexpected class type: " << type; 14122+ return nullptr; 14123+} 14124+ 14125+template <> 14126+CefWrapperType 14127+ CefCppToCRefCounted<CefJavaScriptResultCallbackCppToC, 14128+ CefJavaScriptResultCallback, 14129+ cef_java_script_result_callback_t>::kWrapperType = 14130+ WT_JAVA_SCRIPT_RESULT_CALLBACK; 14131diff --git a/cef/libcef_dll/cpptoc/java_script_result_callback_cpptoc.h b/cef/libcef_dll/cpptoc/java_script_result_callback_cpptoc.h 14132new file mode 100644 14133index 0000000000..0f6e4290d3 14134--- /dev/null 14135+++ b/cef/libcef_dll/cpptoc/java_script_result_callback_cpptoc.h 14136@@ -0,0 +1,40 @@ 14137+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 14138+// reserved. Use of this source code is governed by a BSD-style license that 14139+// can be found in the LICENSE file. 14140+// 14141+// --------------------------------------------------------------------------- 14142+// 14143+// This file was generated by the CEF translator tool. If making changes by 14144+// hand only do so within the body of existing method and function 14145+// implementations. See the translator.README.txt file in the tools directory 14146+// for more information. 14147+// 14148+// $hash=fe951e9554ef1ba97fc78a2caac2f154497bde3f$ 14149+// 14150+ 14151+#ifndef CEF_LIBCEF_DLL_CPPTOC_JAVA_SCRIPT_RESULT_CALLBACK_CPPTOC_H_ 14152+#define CEF_LIBCEF_DLL_CPPTOC_JAVA_SCRIPT_RESULT_CALLBACK_CPPTOC_H_ 14153+#pragma once 14154+ 14155+#if !defined(WRAPPING_CEF_SHARED) 14156+#error This file can be included wrapper-side only 14157+#endif 14158+ 14159+#include "include/capi/cef_browser_capi.h" 14160+#include "include/capi/cef_client_capi.h" 14161+#include "include/cef_browser.h" 14162+#include "include/cef_client.h" 14163+#include "libcef_dll/cpptoc/cpptoc_ref_counted.h" 14164+ 14165+// Wrap a C++ class with a C structure. 14166+// This class may be instantiated and accessed wrapper-side only. 14167+class CefJavaScriptResultCallbackCppToC 14168+ : public CefCppToCRefCounted<CefJavaScriptResultCallbackCppToC, 14169+ CefJavaScriptResultCallback, 14170+ cef_java_script_result_callback_t> { 14171+ public: 14172+ CefJavaScriptResultCallbackCppToC(); 14173+ virtual ~CefJavaScriptResultCallbackCppToC(); 14174+}; 14175+ 14176+#endif // CEF_LIBCEF_DLL_CPPTOC_JAVA_SCRIPT_RESULT_CALLBACK_CPPTOC_H_ 14177diff --git a/cef/libcef_dll/cpptoc/jsdialog_callback_cpptoc.cc b/cef/libcef_dll/cpptoc/jsdialog_callback_cpptoc.cc 14178index 3df4c9bd61..7b6b2d8d60 100644 14179--- a/cef/libcef_dll/cpptoc/jsdialog_callback_cpptoc.cc 14180+++ b/cef/libcef_dll/cpptoc/jsdialog_callback_cpptoc.cc 14181@@ -1,4 +1,4 @@ 14182-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 14183+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 14184 // reserved. Use of this source code is governed by a BSD-style license that 14185 // can be found in the LICENSE file. 14186 // 14187@@ -9,7 +9,7 @@ 14188 // implementations. See the translator.README.txt file in the tools directory 14189 // for more information. 14190 // 14191-// $hash=6ffe0d2a76866636dbe932db3b5c264ff2ef1034$ 14192+// $hash=8a66dc7024a4d368e8368b1be42deff60f4966dc$ 14193 // 14194 14195 #include "libcef_dll/cpptoc/jsdialog_callback_cpptoc.h" 14196diff --git a/cef/libcef_dll/cpptoc/jsdialog_callback_cpptoc.h b/cef/libcef_dll/cpptoc/jsdialog_callback_cpptoc.h 14197index 5a514d6efb..1c6e3b5147 100644 14198--- a/cef/libcef_dll/cpptoc/jsdialog_callback_cpptoc.h 14199+++ b/cef/libcef_dll/cpptoc/jsdialog_callback_cpptoc.h 14200@@ -1,4 +1,4 @@ 14201-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 14202+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 14203 // reserved. Use of this source code is governed by a BSD-style license that 14204 // can be found in the LICENSE file. 14205 // 14206@@ -9,7 +9,7 @@ 14207 // implementations. See the translator.README.txt file in the tools directory 14208 // for more information. 14209 // 14210-// $hash=4cd0f7c3665c4adfba42d2a50a381ee94776913a$ 14211+// $hash=5bc7b389cab53db3487532fbcae4ad156c814710$ 14212 // 14213 14214 #ifndef CEF_LIBCEF_DLL_CPPTOC_JSDIALOG_CALLBACK_CPPTOC_H_ 14215diff --git a/cef/libcef_dll/cpptoc/jsdialog_handler_cpptoc.cc b/cef/libcef_dll/cpptoc/jsdialog_handler_cpptoc.cc 14216index 92b2215dfd..432323d8c3 100644 14217--- a/cef/libcef_dll/cpptoc/jsdialog_handler_cpptoc.cc 14218+++ b/cef/libcef_dll/cpptoc/jsdialog_handler_cpptoc.cc 14219@@ -1,4 +1,4 @@ 14220-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 14221+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 14222 // reserved. Use of this source code is governed by a BSD-style license that 14223 // can be found in the LICENSE file. 14224 // 14225@@ -9,7 +9,7 @@ 14226 // implementations. See the translator.README.txt file in the tools directory 14227 // for more information. 14228 // 14229-// $hash=94f71f6f646166bd1c1fe8db5e4e1c03ddcf6d75$ 14230+// $hash=41c06df7feb0288f02c644bd633cce3f1754beba$ 14231 // 14232 14233 #include "libcef_dll/cpptoc/jsdialog_handler_cpptoc.h" 14234diff --git a/cef/libcef_dll/cpptoc/jsdialog_handler_cpptoc.h b/cef/libcef_dll/cpptoc/jsdialog_handler_cpptoc.h 14235index ad74fb0150..d855c3a20e 100644 14236--- a/cef/libcef_dll/cpptoc/jsdialog_handler_cpptoc.h 14237+++ b/cef/libcef_dll/cpptoc/jsdialog_handler_cpptoc.h 14238@@ -1,4 +1,4 @@ 14239-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 14240+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 14241 // reserved. Use of this source code is governed by a BSD-style license that 14242 // can be found in the LICENSE file. 14243 // 14244@@ -9,7 +9,7 @@ 14245 // implementations. See the translator.README.txt file in the tools directory 14246 // for more information. 14247 // 14248-// $hash=40374c94c3d8f6e28a61dce0c1b0462b5abd8d5d$ 14249+// $hash=507a9b3192b98d0fad632714a8a4a4f97e5c19a3$ 14250 // 14251 14252 #ifndef CEF_LIBCEF_DLL_CPPTOC_JSDIALOG_HANDLER_CPPTOC_H_ 14253diff --git a/cef/libcef_dll/cpptoc/keyboard_handler_cpptoc.cc b/cef/libcef_dll/cpptoc/keyboard_handler_cpptoc.cc 14254index 65ddb2e91c..c9b7a0fa96 100644 14255--- a/cef/libcef_dll/cpptoc/keyboard_handler_cpptoc.cc 14256+++ b/cef/libcef_dll/cpptoc/keyboard_handler_cpptoc.cc 14257@@ -1,4 +1,4 @@ 14258-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 14259+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 14260 // reserved. Use of this source code is governed by a BSD-style license that 14261 // can be found in the LICENSE file. 14262 // 14263@@ -9,7 +9,7 @@ 14264 // implementations. See the translator.README.txt file in the tools directory 14265 // for more information. 14266 // 14267-// $hash=deae14bf0e2fcd80ba93ae9de3253443c1b1d9b6$ 14268+// $hash=9f55775c0fcff5993efe9d8c9db75001d4335743$ 14269 // 14270 14271 #include "libcef_dll/cpptoc/keyboard_handler_cpptoc.h" 14272diff --git a/cef/libcef_dll/cpptoc/keyboard_handler_cpptoc.h b/cef/libcef_dll/cpptoc/keyboard_handler_cpptoc.h 14273index f08777a24c..2d01998aa3 100644 14274--- a/cef/libcef_dll/cpptoc/keyboard_handler_cpptoc.h 14275+++ b/cef/libcef_dll/cpptoc/keyboard_handler_cpptoc.h 14276@@ -1,4 +1,4 @@ 14277-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 14278+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 14279 // reserved. Use of this source code is governed by a BSD-style license that 14280 // can be found in the LICENSE file. 14281 // 14282@@ -9,7 +9,7 @@ 14283 // implementations. See the translator.README.txt file in the tools directory 14284 // for more information. 14285 // 14286-// $hash=1c78a6ae6ed347871e4a97e854ef2f32c67dc493$ 14287+// $hash=5d3509b80dac95b50b7d3c7053562169055ad361$ 14288 // 14289 14290 #ifndef CEF_LIBCEF_DLL_CPPTOC_KEYBOARD_HANDLER_CPPTOC_H_ 14291diff --git a/cef/libcef_dll/cpptoc/life_span_handler_cpptoc.cc b/cef/libcef_dll/cpptoc/life_span_handler_cpptoc.cc 14292index 364d90e260..31b0867ab0 100644 14293--- a/cef/libcef_dll/cpptoc/life_span_handler_cpptoc.cc 14294+++ b/cef/libcef_dll/cpptoc/life_span_handler_cpptoc.cc 14295@@ -1,4 +1,4 @@ 14296-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 14297+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 14298 // reserved. Use of this source code is governed by a BSD-style license that 14299 // can be found in the LICENSE file. 14300 // 14301@@ -9,7 +9,7 @@ 14302 // implementations. See the translator.README.txt file in the tools directory 14303 // for more information. 14304 // 14305-// $hash=93afcd99785dd19d59f12b709d337fabba820c6b$ 14306+// $hash=f9e1fa4fa79e3b66d9d147fd0cdb14da459de85b$ 14307 // 14308 14309 #include "libcef_dll/cpptoc/life_span_handler_cpptoc.h" 14310diff --git a/cef/libcef_dll/cpptoc/life_span_handler_cpptoc.h b/cef/libcef_dll/cpptoc/life_span_handler_cpptoc.h 14311index 978850dbb5..94eca4fb27 100644 14312--- a/cef/libcef_dll/cpptoc/life_span_handler_cpptoc.h 14313+++ b/cef/libcef_dll/cpptoc/life_span_handler_cpptoc.h 14314@@ -1,4 +1,4 @@ 14315-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 14316+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 14317 // reserved. Use of this source code is governed by a BSD-style license that 14318 // can be found in the LICENSE file. 14319 // 14320@@ -9,7 +9,7 @@ 14321 // implementations. See the translator.README.txt file in the tools directory 14322 // for more information. 14323 // 14324-// $hash=74997d31acc32fc121746305fd2ba912272a6310$ 14325+// $hash=85c8f684b4799cf1410174b0e29a41b192eaf7a4$ 14326 // 14327 14328 #ifndef CEF_LIBCEF_DLL_CPPTOC_LIFE_SPAN_HANDLER_CPPTOC_H_ 14329diff --git a/cef/libcef_dll/cpptoc/list_value_cpptoc.cc b/cef/libcef_dll/cpptoc/list_value_cpptoc.cc 14330index 815f318a44..db4fc4e9f1 100644 14331--- a/cef/libcef_dll/cpptoc/list_value_cpptoc.cc 14332+++ b/cef/libcef_dll/cpptoc/list_value_cpptoc.cc 14333@@ -1,4 +1,4 @@ 14334-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 14335+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 14336 // reserved. Use of this source code is governed by a BSD-style license that 14337 // can be found in the LICENSE file. 14338 // 14339@@ -9,7 +9,7 @@ 14340 // implementations. See the translator.README.txt file in the tools directory 14341 // for more information. 14342 // 14343-// $hash=c7bbc5ff79015ca4787974d652b7918b745dda71$ 14344+// $hash=2d2041c7571bd613f92c2d80c100e92e7439df6e$ 14345 // 14346 14347 #include "libcef_dll/cpptoc/list_value_cpptoc.h" 14348diff --git a/cef/libcef_dll/cpptoc/list_value_cpptoc.h b/cef/libcef_dll/cpptoc/list_value_cpptoc.h 14349index 742f542f52..4385aa5c0c 100644 14350--- a/cef/libcef_dll/cpptoc/list_value_cpptoc.h 14351+++ b/cef/libcef_dll/cpptoc/list_value_cpptoc.h 14352@@ -1,4 +1,4 @@ 14353-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 14354+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 14355 // reserved. Use of this source code is governed by a BSD-style license that 14356 // can be found in the LICENSE file. 14357 // 14358@@ -9,7 +9,7 @@ 14359 // implementations. See the translator.README.txt file in the tools directory 14360 // for more information. 14361 // 14362-// $hash=edd583b0f3513aacf19964855f67a4cd35cbe8d8$ 14363+// $hash=85db2149d4c843eae2145e9015c2062d8ad45695$ 14364 // 14365 14366 #ifndef CEF_LIBCEF_DLL_CPPTOC_LIST_VALUE_CPPTOC_H_ 14367diff --git a/cef/libcef_dll/cpptoc/load_handler_cpptoc.cc b/cef/libcef_dll/cpptoc/load_handler_cpptoc.cc 14368index cf0eab2b68..ced6a1faaf 100644 14369--- a/cef/libcef_dll/cpptoc/load_handler_cpptoc.cc 14370+++ b/cef/libcef_dll/cpptoc/load_handler_cpptoc.cc 14371@@ -1,4 +1,4 @@ 14372-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 14373+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 14374 // reserved. Use of this source code is governed by a BSD-style license that 14375 // can be found in the LICENSE file. 14376 // 14377@@ -9,12 +9,14 @@ 14378 // implementations. See the translator.README.txt file in the tools directory 14379 // for more information. 14380 // 14381-// $hash=7b4c1790884bfd1c7df2b912a6891523d1ce46a2$ 14382+// $hash=b9eb6961bd51d881bd4b0aff6e1c2ad16de8bc93$ 14383 // 14384 14385 #include "libcef_dll/cpptoc/load_handler_cpptoc.h" 14386 #include "libcef_dll/ctocpp/browser_ctocpp.h" 14387 #include "libcef_dll/ctocpp/frame_ctocpp.h" 14388+#include "libcef_dll/ctocpp/request_ctocpp.h" 14389+#include "libcef_dll/ctocpp/response_ctocpp.h" 14390 #include "libcef_dll/shutdown_checker.h" 14391 14392 namespace { 14393@@ -131,6 +133,62 @@ void CEF_CALLBACK load_handler_on_load_error(struct _cef_load_handler_t* self, 14394 CefString(errorText), CefString(failedUrl)); 14395 } 14396 14397+void CEF_CALLBACK 14398+load_handler_on_load_error_with_request(struct _cef_load_handler_t* self, 14399+ struct _cef_request_t* request, 14400+ int is_main_frame, 14401+ int has_user_gesture, 14402+ int error_code, 14403+ const cef_string_t* error_text) { 14404+ shutdown_checker::AssertNotShutdown(); 14405+ 14406+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 14407+ 14408+ DCHECK(self); 14409+ if (!self) 14410+ return; 14411+ // Verify param: request; type: refptr_diff 14412+ DCHECK(request); 14413+ if (!request) 14414+ return; 14415+ // Verify param: error_text; type: string_byref_const 14416+ DCHECK(error_text); 14417+ if (!error_text) 14418+ return; 14419+ 14420+ // Execute 14421+ CefLoadHandlerCppToC::Get(self)->OnLoadErrorWithRequest( 14422+ CefRequestCToCpp::Wrap(request), is_main_frame ? true : false, 14423+ has_user_gesture ? true : false, error_code, CefString(error_text)); 14424+} 14425+ 14426+void CEF_CALLBACK load_handler_on_http_error(struct _cef_load_handler_t* self, 14427+ struct _cef_request_t* request, 14428+ int is_main_frame, 14429+ int has_user_gesture, 14430+ struct _cef_response_t* response) { 14431+ shutdown_checker::AssertNotShutdown(); 14432+ 14433+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 14434+ 14435+ DCHECK(self); 14436+ if (!self) 14437+ return; 14438+ // Verify param: request; type: refptr_diff 14439+ DCHECK(request); 14440+ if (!request) 14441+ return; 14442+ // Verify param: response; type: refptr_diff 14443+ DCHECK(response); 14444+ if (!response) 14445+ return; 14446+ 14447+ // Execute 14448+ CefLoadHandlerCppToC::Get(self)->OnHttpError( 14449+ CefRequestCToCpp::Wrap(request), is_main_frame ? true : false, 14450+ has_user_gesture ? true : false, CefResponseCToCpp::Wrap(response)); 14451+} 14452+ 14453 } // namespace 14454 14455 // CONSTRUCTOR - Do not edit by hand. 14456@@ -140,6 +198,9 @@ CefLoadHandlerCppToC::CefLoadHandlerCppToC() { 14457 GetStruct()->on_load_start = load_handler_on_load_start; 14458 GetStruct()->on_load_end = load_handler_on_load_end; 14459 GetStruct()->on_load_error = load_handler_on_load_error; 14460+ GetStruct()->on_load_error_with_request = 14461+ load_handler_on_load_error_with_request; 14462+ GetStruct()->on_http_error = load_handler_on_http_error; 14463 } 14464 14465 // DESTRUCTOR - Do not edit by hand. 14466diff --git a/cef/libcef_dll/cpptoc/load_handler_cpptoc.h b/cef/libcef_dll/cpptoc/load_handler_cpptoc.h 14467index 7acadc696d..31ed258d8b 100644 14468--- a/cef/libcef_dll/cpptoc/load_handler_cpptoc.h 14469+++ b/cef/libcef_dll/cpptoc/load_handler_cpptoc.h 14470@@ -1,4 +1,4 @@ 14471-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 14472+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 14473 // reserved. Use of this source code is governed by a BSD-style license that 14474 // can be found in the LICENSE file. 14475 // 14476@@ -9,7 +9,7 @@ 14477 // implementations. See the translator.README.txt file in the tools directory 14478 // for more information. 14479 // 14480-// $hash=818e0839f6db5135dcc902d0498d69d6006458a2$ 14481+// $hash=67a49693f79a526ebb12c8352c13de8bf7c64784$ 14482 // 14483 14484 #ifndef CEF_LIBCEF_DLL_CPPTOC_LOAD_HANDLER_CPPTOC_H_ 14485diff --git a/cef/libcef_dll/cpptoc/media_observer_cpptoc.cc b/cef/libcef_dll/cpptoc/media_observer_cpptoc.cc 14486index 9c5858a42d..bc6e8dde4a 100644 14487--- a/cef/libcef_dll/cpptoc/media_observer_cpptoc.cc 14488+++ b/cef/libcef_dll/cpptoc/media_observer_cpptoc.cc 14489@@ -1,4 +1,4 @@ 14490-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 14491+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 14492 // reserved. Use of this source code is governed by a BSD-style license that 14493 // can be found in the LICENSE file. 14494 // 14495@@ -9,7 +9,7 @@ 14496 // implementations. See the translator.README.txt file in the tools directory 14497 // for more information. 14498 // 14499-// $hash=bde209e2a39bc62b9b1b75be9c2f9129d7cecef5$ 14500+// $hash=2e7db3a335f170dad7a1793f5695593b8c75d853$ 14501 // 14502 14503 #include "libcef_dll/cpptoc/media_observer_cpptoc.h" 14504diff --git a/cef/libcef_dll/cpptoc/media_observer_cpptoc.h b/cef/libcef_dll/cpptoc/media_observer_cpptoc.h 14505index d1091c12a1..efcedd1945 100644 14506--- a/cef/libcef_dll/cpptoc/media_observer_cpptoc.h 14507+++ b/cef/libcef_dll/cpptoc/media_observer_cpptoc.h 14508@@ -1,4 +1,4 @@ 14509-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 14510+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 14511 // reserved. Use of this source code is governed by a BSD-style license that 14512 // can be found in the LICENSE file. 14513 // 14514@@ -9,7 +9,7 @@ 14515 // implementations. See the translator.README.txt file in the tools directory 14516 // for more information. 14517 // 14518-// $hash=a070750660b9f972e0433f55de75a536a39a6bb8$ 14519+// $hash=c3191e4923e9708b864d6cb5c21bd5da2fe41645$ 14520 // 14521 14522 #ifndef CEF_LIBCEF_DLL_CPPTOC_MEDIA_OBSERVER_CPPTOC_H_ 14523diff --git a/cef/libcef_dll/cpptoc/media_route_cpptoc.cc b/cef/libcef_dll/cpptoc/media_route_cpptoc.cc 14524index 86d39da6dd..d591021eaa 100644 14525--- a/cef/libcef_dll/cpptoc/media_route_cpptoc.cc 14526+++ b/cef/libcef_dll/cpptoc/media_route_cpptoc.cc 14527@@ -1,4 +1,4 @@ 14528-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 14529+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 14530 // reserved. Use of this source code is governed by a BSD-style license that 14531 // can be found in the LICENSE file. 14532 // 14533@@ -9,7 +9,7 @@ 14534 // implementations. See the translator.README.txt file in the tools directory 14535 // for more information. 14536 // 14537-// $hash=623b9c69c53f0839f3aaa619ac734955909e46a9$ 14538+// $hash=2c4dc1026a21a2712fc84c1393d4c69c0335f484$ 14539 // 14540 14541 #include "libcef_dll/cpptoc/media_route_cpptoc.h" 14542diff --git a/cef/libcef_dll/cpptoc/media_route_cpptoc.h b/cef/libcef_dll/cpptoc/media_route_cpptoc.h 14543index a074bac443..bacd9e11ae 100644 14544--- a/cef/libcef_dll/cpptoc/media_route_cpptoc.h 14545+++ b/cef/libcef_dll/cpptoc/media_route_cpptoc.h 14546@@ -1,4 +1,4 @@ 14547-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 14548+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 14549 // reserved. Use of this source code is governed by a BSD-style license that 14550 // can be found in the LICENSE file. 14551 // 14552@@ -9,7 +9,7 @@ 14553 // implementations. See the translator.README.txt file in the tools directory 14554 // for more information. 14555 // 14556-// $hash=b547199c709e2c5b6d4435a80cc8bb3303f5cbc6$ 14557+// $hash=d1a941bd47da6a5d5da6f4ce72f48d480351621f$ 14558 // 14559 14560 #ifndef CEF_LIBCEF_DLL_CPPTOC_MEDIA_ROUTE_CPPTOC_H_ 14561diff --git a/cef/libcef_dll/cpptoc/media_route_create_callback_cpptoc.cc b/cef/libcef_dll/cpptoc/media_route_create_callback_cpptoc.cc 14562index 2c7ef896b8..151338582f 100644 14563--- a/cef/libcef_dll/cpptoc/media_route_create_callback_cpptoc.cc 14564+++ b/cef/libcef_dll/cpptoc/media_route_create_callback_cpptoc.cc 14565@@ -1,4 +1,4 @@ 14566-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 14567+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 14568 // reserved. Use of this source code is governed by a BSD-style license that 14569 // can be found in the LICENSE file. 14570 // 14571@@ -9,7 +9,7 @@ 14572 // implementations. See the translator.README.txt file in the tools directory 14573 // for more information. 14574 // 14575-// $hash=e051d7ed2be481b7686aada8a7977b8aefd459fc$ 14576+// $hash=1f70badd10a66ed36402c4227f30d45e6696981d$ 14577 // 14578 14579 #include "libcef_dll/cpptoc/media_route_create_callback_cpptoc.h" 14580diff --git a/cef/libcef_dll/cpptoc/media_route_create_callback_cpptoc.h b/cef/libcef_dll/cpptoc/media_route_create_callback_cpptoc.h 14581index 3f9bf4540e..49b6de2b22 100644 14582--- a/cef/libcef_dll/cpptoc/media_route_create_callback_cpptoc.h 14583+++ b/cef/libcef_dll/cpptoc/media_route_create_callback_cpptoc.h 14584@@ -1,4 +1,4 @@ 14585-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 14586+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 14587 // reserved. Use of this source code is governed by a BSD-style license that 14588 // can be found in the LICENSE file. 14589 // 14590@@ -9,7 +9,7 @@ 14591 // implementations. See the translator.README.txt file in the tools directory 14592 // for more information. 14593 // 14594-// $hash=02a902b8d31e4a9b72a6278911ee6ea21ce6ce5f$ 14595+// $hash=0f872bf3a0c0c80e6c5c34b66d877f982005a436$ 14596 // 14597 14598 #ifndef CEF_LIBCEF_DLL_CPPTOC_MEDIA_ROUTE_CREATE_CALLBACK_CPPTOC_H_ 14599diff --git a/cef/libcef_dll/cpptoc/media_router_cpptoc.cc b/cef/libcef_dll/cpptoc/media_router_cpptoc.cc 14600index bacf732ebd..8b4825cf21 100644 14601--- a/cef/libcef_dll/cpptoc/media_router_cpptoc.cc 14602+++ b/cef/libcef_dll/cpptoc/media_router_cpptoc.cc 14603@@ -1,4 +1,4 @@ 14604-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 14605+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 14606 // reserved. Use of this source code is governed by a BSD-style license that 14607 // can be found in the LICENSE file. 14608 // 14609@@ -9,7 +9,7 @@ 14610 // implementations. See the translator.README.txt file in the tools directory 14611 // for more information. 14612 // 14613-// $hash=f60f51701b15100a8ad9463adfe0deb37c2d6b4f$ 14614+// $hash=55a817af6b8dc3408785410b47e5d01313ebc9dd$ 14615 // 14616 14617 #include "libcef_dll/cpptoc/media_router_cpptoc.h" 14618diff --git a/cef/libcef_dll/cpptoc/media_router_cpptoc.h b/cef/libcef_dll/cpptoc/media_router_cpptoc.h 14619index b3418a8cac..1814ebf023 100644 14620--- a/cef/libcef_dll/cpptoc/media_router_cpptoc.h 14621+++ b/cef/libcef_dll/cpptoc/media_router_cpptoc.h 14622@@ -1,4 +1,4 @@ 14623-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 14624+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 14625 // reserved. Use of this source code is governed by a BSD-style license that 14626 // can be found in the LICENSE file. 14627 // 14628@@ -9,7 +9,7 @@ 14629 // implementations. See the translator.README.txt file in the tools directory 14630 // for more information. 14631 // 14632-// $hash=e07704cc1fb37383b5b00f5ac323983f9c552b6c$ 14633+// $hash=5e358f83742bcd0fb129a1471791cfa899c81cd1$ 14634 // 14635 14636 #ifndef CEF_LIBCEF_DLL_CPPTOC_MEDIA_ROUTER_CPPTOC_H_ 14637diff --git a/cef/libcef_dll/cpptoc/media_sink_cpptoc.cc b/cef/libcef_dll/cpptoc/media_sink_cpptoc.cc 14638index f109680b4a..15621f1f0a 100644 14639--- a/cef/libcef_dll/cpptoc/media_sink_cpptoc.cc 14640+++ b/cef/libcef_dll/cpptoc/media_sink_cpptoc.cc 14641@@ -1,4 +1,4 @@ 14642-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 14643+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 14644 // reserved. Use of this source code is governed by a BSD-style license that 14645 // can be found in the LICENSE file. 14646 // 14647@@ -9,7 +9,7 @@ 14648 // implementations. See the translator.README.txt file in the tools directory 14649 // for more information. 14650 // 14651-// $hash=59bdc13468b5e75d07e67e6efae44ebfbdb5b632$ 14652+// $hash=59c15e457142b252222f01e36ea626bed5ed2b7a$ 14653 // 14654 14655 #include "libcef_dll/cpptoc/media_sink_cpptoc.h" 14656diff --git a/cef/libcef_dll/cpptoc/media_sink_cpptoc.h b/cef/libcef_dll/cpptoc/media_sink_cpptoc.h 14657index 23a4f48ffc..50ea41f6b6 100644 14658--- a/cef/libcef_dll/cpptoc/media_sink_cpptoc.h 14659+++ b/cef/libcef_dll/cpptoc/media_sink_cpptoc.h 14660@@ -1,4 +1,4 @@ 14661-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 14662+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 14663 // reserved. Use of this source code is governed by a BSD-style license that 14664 // can be found in the LICENSE file. 14665 // 14666@@ -9,7 +9,7 @@ 14667 // implementations. See the translator.README.txt file in the tools directory 14668 // for more information. 14669 // 14670-// $hash=7e39b2f13f61bc0b9d71ddf631107260a9e1f52d$ 14671+// $hash=23e239facf0fd4194647f916443cda73fee1d0bc$ 14672 // 14673 14674 #ifndef CEF_LIBCEF_DLL_CPPTOC_MEDIA_SINK_CPPTOC_H_ 14675diff --git a/cef/libcef_dll/cpptoc/media_sink_device_info_callback_cpptoc.cc b/cef/libcef_dll/cpptoc/media_sink_device_info_callback_cpptoc.cc 14676index dd5f56c4c1..b6b99a14b6 100644 14677--- a/cef/libcef_dll/cpptoc/media_sink_device_info_callback_cpptoc.cc 14678+++ b/cef/libcef_dll/cpptoc/media_sink_device_info_callback_cpptoc.cc 14679@@ -1,4 +1,4 @@ 14680-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 14681+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 14682 // reserved. Use of this source code is governed by a BSD-style license that 14683 // can be found in the LICENSE file. 14684 // 14685@@ -9,7 +9,7 @@ 14686 // implementations. See the translator.README.txt file in the tools directory 14687 // for more information. 14688 // 14689-// $hash=f72f4f67e71c6e6a6a2d7d25ad2f5972bbb8eee0$ 14690+// $hash=159abfe9b788acf428465451ee232ee1675ea1a5$ 14691 // 14692 14693 #include "libcef_dll/cpptoc/media_sink_device_info_callback_cpptoc.h" 14694diff --git a/cef/libcef_dll/cpptoc/media_sink_device_info_callback_cpptoc.h b/cef/libcef_dll/cpptoc/media_sink_device_info_callback_cpptoc.h 14695index 24b82059d9..1de9a0b39b 100644 14696--- a/cef/libcef_dll/cpptoc/media_sink_device_info_callback_cpptoc.h 14697+++ b/cef/libcef_dll/cpptoc/media_sink_device_info_callback_cpptoc.h 14698@@ -1,4 +1,4 @@ 14699-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 14700+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 14701 // reserved. Use of this source code is governed by a BSD-style license that 14702 // can be found in the LICENSE file. 14703 // 14704@@ -9,7 +9,7 @@ 14705 // implementations. See the translator.README.txt file in the tools directory 14706 // for more information. 14707 // 14708-// $hash=aafa509263c356c67b39ba0b5ad3fde290799853$ 14709+// $hash=4244b2b416ab896697de189d6c14d49df41d8dd5$ 14710 // 14711 14712 #ifndef CEF_LIBCEF_DLL_CPPTOC_MEDIA_SINK_DEVICE_INFO_CALLBACK_CPPTOC_H_ 14713diff --git a/cef/libcef_dll/cpptoc/media_source_cpptoc.cc b/cef/libcef_dll/cpptoc/media_source_cpptoc.cc 14714index 2909de2974..4697d0682b 100644 14715--- a/cef/libcef_dll/cpptoc/media_source_cpptoc.cc 14716+++ b/cef/libcef_dll/cpptoc/media_source_cpptoc.cc 14717@@ -1,4 +1,4 @@ 14718-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 14719+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 14720 // reserved. Use of this source code is governed by a BSD-style license that 14721 // can be found in the LICENSE file. 14722 // 14723@@ -9,7 +9,7 @@ 14724 // implementations. See the translator.README.txt file in the tools directory 14725 // for more information. 14726 // 14727-// $hash=ea934494226ae5a1bb4cbeb26d212b7efabf3e50$ 14728+// $hash=91e3e2f2fb4914cbe8df7a30938f728a3f147fed$ 14729 // 14730 14731 #include "libcef_dll/cpptoc/media_source_cpptoc.h" 14732diff --git a/cef/libcef_dll/cpptoc/media_source_cpptoc.h b/cef/libcef_dll/cpptoc/media_source_cpptoc.h 14733index 6a5bc61dcc..903e7cc593 100644 14734--- a/cef/libcef_dll/cpptoc/media_source_cpptoc.h 14735+++ b/cef/libcef_dll/cpptoc/media_source_cpptoc.h 14736@@ -1,4 +1,4 @@ 14737-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 14738+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 14739 // reserved. Use of this source code is governed by a BSD-style license that 14740 // can be found in the LICENSE file. 14741 // 14742@@ -9,7 +9,7 @@ 14743 // implementations. See the translator.README.txt file in the tools directory 14744 // for more information. 14745 // 14746-// $hash=62fa6ace7c43ac1a9fe6bf9dd62788c55ceb90f2$ 14747+// $hash=4188fa2250ae3351fc7779cb35dfef4eabbf500e$ 14748 // 14749 14750 #ifndef CEF_LIBCEF_DLL_CPPTOC_MEDIA_SOURCE_CPPTOC_H_ 14751diff --git a/cef/libcef_dll/cpptoc/menu_model_cpptoc.cc b/cef/libcef_dll/cpptoc/menu_model_cpptoc.cc 14752index 6011e8ebca..809b218473 100644 14753--- a/cef/libcef_dll/cpptoc/menu_model_cpptoc.cc 14754+++ b/cef/libcef_dll/cpptoc/menu_model_cpptoc.cc 14755@@ -1,4 +1,4 @@ 14756-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 14757+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 14758 // reserved. Use of this source code is governed by a BSD-style license that 14759 // can be found in the LICENSE file. 14760 // 14761@@ -9,7 +9,7 @@ 14762 // implementations. See the translator.README.txt file in the tools directory 14763 // for more information. 14764 // 14765-// $hash=b07972813a8b9cc4388e5695ce42be1bd426b201$ 14766+// $hash=587be50ef3aefc00fadcf6fec431ebecc305b3eb$ 14767 // 14768 14769 #include "libcef_dll/cpptoc/menu_model_cpptoc.h" 14770diff --git a/cef/libcef_dll/cpptoc/menu_model_cpptoc.h b/cef/libcef_dll/cpptoc/menu_model_cpptoc.h 14771index 2c96aa31b9..f8882f06df 100644 14772--- a/cef/libcef_dll/cpptoc/menu_model_cpptoc.h 14773+++ b/cef/libcef_dll/cpptoc/menu_model_cpptoc.h 14774@@ -1,4 +1,4 @@ 14775-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 14776+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 14777 // reserved. Use of this source code is governed by a BSD-style license that 14778 // can be found in the LICENSE file. 14779 // 14780@@ -9,7 +9,7 @@ 14781 // implementations. See the translator.README.txt file in the tools directory 14782 // for more information. 14783 // 14784-// $hash=f6d8870cf5c1b9754833f07f8af3a8eb27272bbc$ 14785+// $hash=8c46e7f774742f9834a61bc7657fdc03a0ed580c$ 14786 // 14787 14788 #ifndef CEF_LIBCEF_DLL_CPPTOC_MENU_MODEL_CPPTOC_H_ 14789diff --git a/cef/libcef_dll/cpptoc/menu_model_delegate_cpptoc.cc b/cef/libcef_dll/cpptoc/menu_model_delegate_cpptoc.cc 14790index 895a97bf0b..ecc7682476 100644 14791--- a/cef/libcef_dll/cpptoc/menu_model_delegate_cpptoc.cc 14792+++ b/cef/libcef_dll/cpptoc/menu_model_delegate_cpptoc.cc 14793@@ -1,4 +1,4 @@ 14794-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 14795+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 14796 // reserved. Use of this source code is governed by a BSD-style license that 14797 // can be found in the LICENSE file. 14798 // 14799@@ -9,7 +9,7 @@ 14800 // implementations. See the translator.README.txt file in the tools directory 14801 // for more information. 14802 // 14803-// $hash=a933c4e3784f03b6cd290387ae2c8377ac74c8b6$ 14804+// $hash=d46082f24a6ad01677700ac68ad424cc4951efed$ 14805 // 14806 14807 #include "libcef_dll/cpptoc/menu_model_delegate_cpptoc.h" 14808diff --git a/cef/libcef_dll/cpptoc/menu_model_delegate_cpptoc.h b/cef/libcef_dll/cpptoc/menu_model_delegate_cpptoc.h 14809index 42db61797e..4f4a4e749f 100644 14810--- a/cef/libcef_dll/cpptoc/menu_model_delegate_cpptoc.h 14811+++ b/cef/libcef_dll/cpptoc/menu_model_delegate_cpptoc.h 14812@@ -1,4 +1,4 @@ 14813-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 14814+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 14815 // reserved. Use of this source code is governed by a BSD-style license that 14816 // can be found in the LICENSE file. 14817 // 14818@@ -9,7 +9,7 @@ 14819 // implementations. See the translator.README.txt file in the tools directory 14820 // for more information. 14821 // 14822-// $hash=49e74e666689969a5accd5ab3a99e2f0341a9664$ 14823+// $hash=c48cb7ff4b3e506b4e1ca8b1442bfe91d260ec67$ 14824 // 14825 14826 #ifndef CEF_LIBCEF_DLL_CPPTOC_MENU_MODEL_DELEGATE_CPPTOC_H_ 14827diff --git a/cef/libcef_dll/cpptoc/navigation_entry_cpptoc.cc b/cef/libcef_dll/cpptoc/navigation_entry_cpptoc.cc 14828index d251cdd398..9db40c38fa 100644 14829--- a/cef/libcef_dll/cpptoc/navigation_entry_cpptoc.cc 14830+++ b/cef/libcef_dll/cpptoc/navigation_entry_cpptoc.cc 14831@@ -1,4 +1,4 @@ 14832-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 14833+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 14834 // reserved. Use of this source code is governed by a BSD-style license that 14835 // can be found in the LICENSE file. 14836 // 14837@@ -9,7 +9,7 @@ 14838 // implementations. See the translator.README.txt file in the tools directory 14839 // for more information. 14840 // 14841-// $hash=87427c3e4da420f7735c6932d287234b30647293$ 14842+// $hash=081579d10d7dd1ad8906d54350c2b63f97930fd2$ 14843 // 14844 14845 #include "libcef_dll/cpptoc/navigation_entry_cpptoc.h" 14846diff --git a/cef/libcef_dll/cpptoc/navigation_entry_cpptoc.h b/cef/libcef_dll/cpptoc/navigation_entry_cpptoc.h 14847index 8d4a6845a5..f4857ed61e 100644 14848--- a/cef/libcef_dll/cpptoc/navigation_entry_cpptoc.h 14849+++ b/cef/libcef_dll/cpptoc/navigation_entry_cpptoc.h 14850@@ -1,4 +1,4 @@ 14851-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 14852+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 14853 // reserved. Use of this source code is governed by a BSD-style license that 14854 // can be found in the LICENSE file. 14855 // 14856@@ -9,7 +9,7 @@ 14857 // implementations. See the translator.README.txt file in the tools directory 14858 // for more information. 14859 // 14860-// $hash=d346b124edf760018dc1f8cb852e20684a5a9223$ 14861+// $hash=888591dac662cceb022bc320c159fcba58fc6e24$ 14862 // 14863 14864 #ifndef CEF_LIBCEF_DLL_CPPTOC_NAVIGATION_ENTRY_CPPTOC_H_ 14865diff --git a/cef/libcef_dll/cpptoc/navigation_entry_visitor_cpptoc.cc b/cef/libcef_dll/cpptoc/navigation_entry_visitor_cpptoc.cc 14866index a048660853..3fe2dba37c 100644 14867--- a/cef/libcef_dll/cpptoc/navigation_entry_visitor_cpptoc.cc 14868+++ b/cef/libcef_dll/cpptoc/navigation_entry_visitor_cpptoc.cc 14869@@ -1,4 +1,4 @@ 14870-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 14871+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 14872 // reserved. Use of this source code is governed by a BSD-style license that 14873 // can be found in the LICENSE file. 14874 // 14875@@ -9,7 +9,7 @@ 14876 // implementations. See the translator.README.txt file in the tools directory 14877 // for more information. 14878 // 14879-// $hash=c27e2f2b230edc452cd99942da0d93f6fd8e36ac$ 14880+// $hash=dc5e1a5dece19a5168915d1a6816ac4a52c1078f$ 14881 // 14882 14883 #include "libcef_dll/cpptoc/navigation_entry_visitor_cpptoc.h" 14884diff --git a/cef/libcef_dll/cpptoc/navigation_entry_visitor_cpptoc.h b/cef/libcef_dll/cpptoc/navigation_entry_visitor_cpptoc.h 14885index 267885b31b..30c02d6f87 100644 14886--- a/cef/libcef_dll/cpptoc/navigation_entry_visitor_cpptoc.h 14887+++ b/cef/libcef_dll/cpptoc/navigation_entry_visitor_cpptoc.h 14888@@ -1,4 +1,4 @@ 14889-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 14890+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 14891 // reserved. Use of this source code is governed by a BSD-style license that 14892 // can be found in the LICENSE file. 14893 // 14894@@ -9,7 +9,7 @@ 14895 // implementations. See the translator.README.txt file in the tools directory 14896 // for more information. 14897 // 14898-// $hash=5137a6b5ed8f29153a81a4768e3f06b6a64131c4$ 14899+// $hash=112f7c12c88d09e4d300cd3d8bf1f72b1be54596$ 14900 // 14901 14902 #ifndef CEF_LIBCEF_DLL_CPPTOC_NAVIGATION_ENTRY_VISITOR_CPPTOC_H_ 14903diff --git a/cef/libcef_dll/cpptoc/pdf_print_callback_cpptoc.cc b/cef/libcef_dll/cpptoc/pdf_print_callback_cpptoc.cc 14904index 8bfafc9cd1..5a5d810c4f 100644 14905--- a/cef/libcef_dll/cpptoc/pdf_print_callback_cpptoc.cc 14906+++ b/cef/libcef_dll/cpptoc/pdf_print_callback_cpptoc.cc 14907@@ -1,4 +1,4 @@ 14908-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 14909+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 14910 // reserved. Use of this source code is governed by a BSD-style license that 14911 // can be found in the LICENSE file. 14912 // 14913@@ -9,7 +9,7 @@ 14914 // implementations. See the translator.README.txt file in the tools directory 14915 // for more information. 14916 // 14917-// $hash=367b1db695ac57bee59fa23d156b363e0ca37800$ 14918+// $hash=388a87f728a292dc4e2101724656ac09b8fdaa1d$ 14919 // 14920 14921 #include "libcef_dll/cpptoc/pdf_print_callback_cpptoc.h" 14922diff --git a/cef/libcef_dll/cpptoc/pdf_print_callback_cpptoc.h b/cef/libcef_dll/cpptoc/pdf_print_callback_cpptoc.h 14923index 4e6581b4de..df0c88723c 100644 14924--- a/cef/libcef_dll/cpptoc/pdf_print_callback_cpptoc.h 14925+++ b/cef/libcef_dll/cpptoc/pdf_print_callback_cpptoc.h 14926@@ -1,4 +1,4 @@ 14927-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 14928+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 14929 // reserved. Use of this source code is governed by a BSD-style license that 14930 // can be found in the LICENSE file. 14931 // 14932@@ -9,7 +9,7 @@ 14933 // implementations. See the translator.README.txt file in the tools directory 14934 // for more information. 14935 // 14936-// $hash=22d6219fd55dd3b6c2f46d45d456e8f39fe32d2b$ 14937+// $hash=0dfa6d58ed63c1e3be9992486e404a642df6e32a$ 14938 // 14939 14940 #ifndef CEF_LIBCEF_DLL_CPPTOC_PDF_PRINT_CALLBACK_CPPTOC_H_ 14941diff --git a/cef/libcef_dll/cpptoc/permission_request_cpptoc.cc b/cef/libcef_dll/cpptoc/permission_request_cpptoc.cc 14942new file mode 100644 14943index 0000000000..4038e2c5cf 14944--- /dev/null 14945+++ b/cef/libcef_dll/cpptoc/permission_request_cpptoc.cc 14946@@ -0,0 +1,117 @@ 14947+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 14948+// reserved. Use of this source code is governed by a BSD-style license that 14949+// can be found in the LICENSE file. 14950+// 14951+// --------------------------------------------------------------------------- 14952+// 14953+// This file was generated by the CEF translator tool. If making changes by 14954+// hand only do so within the body of existing method and function 14955+// implementations. See the translator.README.txt file in the tools directory 14956+// for more information. 14957+// 14958+// $hash=a0c1e9d26c0b0129b85719532cd7312019c2d5f3$ 14959+// 14960+ 14961+#include "libcef_dll/cpptoc/permission_request_cpptoc.h" 14962+#include "libcef_dll/ctocpp/access_request_ctocpp.h" 14963+ 14964+namespace { 14965+ 14966+// MEMBER FUNCTIONS - Body may be edited by hand. 14967+ 14968+void CEF_CALLBACK 14969+permission_request_on_geolocation_show(struct _cef_permission_request_t* self, 14970+ const cef_string_t* origin) { 14971+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 14972+ 14973+ DCHECK(self); 14974+ if (!self) 14975+ return; 14976+ // Verify param: origin; type: string_byref_const 14977+ DCHECK(origin); 14978+ if (!origin) 14979+ return; 14980+ 14981+ // Execute 14982+ CefPermissionRequestCppToC::Get(self)->OnGeolocationShow(CefString(origin)); 14983+} 14984+ 14985+void CEF_CALLBACK 14986+permission_request_on_geolocation_hide(struct _cef_permission_request_t* self) { 14987+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 14988+ 14989+ DCHECK(self); 14990+ if (!self) 14991+ return; 14992+ 14993+ // Execute 14994+ CefPermissionRequestCppToC::Get(self)->OnGeolocationHide(); 14995+} 14996+ 14997+void CEF_CALLBACK 14998+permission_request_on_permission_request(struct _cef_permission_request_t* self, 14999+ cef_access_request_t* request) { 15000+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 15001+ 15002+ DCHECK(self); 15003+ if (!self) 15004+ return; 15005+ // Verify param: request; type: refptr_diff 15006+ DCHECK(request); 15007+ if (!request) 15008+ return; 15009+ 15010+ // Execute 15011+ CefPermissionRequestCppToC::Get(self)->OnPermissionRequest( 15012+ CefAccessRequestCToCpp::Wrap(request)); 15013+} 15014+ 15015+void CEF_CALLBACK permission_request_on_permission_request_canceled( 15016+ struct _cef_permission_request_t* self, 15017+ cef_access_request_t* request) { 15018+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 15019+ 15020+ DCHECK(self); 15021+ if (!self) 15022+ return; 15023+ // Verify param: request; type: refptr_diff 15024+ DCHECK(request); 15025+ if (!request) 15026+ return; 15027+ 15028+ // Execute 15029+ CefPermissionRequestCppToC::Get(self)->OnPermissionRequestCanceled( 15030+ CefAccessRequestCToCpp::Wrap(request)); 15031+} 15032+ 15033+} // namespace 15034+ 15035+// CONSTRUCTOR - Do not edit by hand. 15036+ 15037+CefPermissionRequestCppToC::CefPermissionRequestCppToC() { 15038+ GetStruct()->on_geolocation_show = permission_request_on_geolocation_show; 15039+ GetStruct()->on_geolocation_hide = permission_request_on_geolocation_hide; 15040+ GetStruct()->on_permission_request = permission_request_on_permission_request; 15041+ GetStruct()->on_permission_request_canceled = 15042+ permission_request_on_permission_request_canceled; 15043+} 15044+ 15045+// DESTRUCTOR - Do not edit by hand. 15046+ 15047+CefPermissionRequestCppToC::~CefPermissionRequestCppToC() {} 15048+ 15049+template <> 15050+CefRefPtr<CefPermissionRequest> CefCppToCRefCounted< 15051+ CefPermissionRequestCppToC, 15052+ CefPermissionRequest, 15053+ cef_permission_request_t>::UnwrapDerived(CefWrapperType type, 15054+ cef_permission_request_t* s) { 15055+ NOTREACHED() << "Unexpected class type: " << type; 15056+ return nullptr; 15057+} 15058+ 15059+template <> 15060+CefWrapperType CefCppToCRefCounted<CefPermissionRequestCppToC, 15061+ CefPermissionRequest, 15062+ cef_permission_request_t>::kWrapperType = 15063+ WT_PERMISSION_REQUEST; 15064diff --git a/cef/libcef_dll/cpptoc/permission_request_cpptoc.h b/cef/libcef_dll/cpptoc/permission_request_cpptoc.h 15065new file mode 100644 15066index 0000000000..fc597ec736 15067--- /dev/null 15068+++ b/cef/libcef_dll/cpptoc/permission_request_cpptoc.h 15069@@ -0,0 +1,38 @@ 15070+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 15071+// reserved. Use of this source code is governed by a BSD-style license that 15072+// can be found in the LICENSE file. 15073+// 15074+// --------------------------------------------------------------------------- 15075+// 15076+// This file was generated by the CEF translator tool. If making changes by 15077+// hand only do so within the body of existing method and function 15078+// implementations. See the translator.README.txt file in the tools directory 15079+// for more information. 15080+// 15081+// $hash=b4bca43d1905283a291f6df6cf1a15bccf569618$ 15082+// 15083+ 15084+#ifndef CEF_LIBCEF_DLL_CPPTOC_PERMISSION_REQUEST_CPPTOC_H_ 15085+#define CEF_LIBCEF_DLL_CPPTOC_PERMISSION_REQUEST_CPPTOC_H_ 15086+#pragma once 15087+ 15088+#if !defined(WRAPPING_CEF_SHARED) 15089+#error This file can be included wrapper-side only 15090+#endif 15091+ 15092+#include "include/capi/cef_permission_request_capi.h" 15093+#include "include/cef_permission_request.h" 15094+#include "libcef_dll/cpptoc/cpptoc_ref_counted.h" 15095+ 15096+// Wrap a C++ class with a C structure. 15097+// This class may be instantiated and accessed wrapper-side only. 15098+class CefPermissionRequestCppToC 15099+ : public CefCppToCRefCounted<CefPermissionRequestCppToC, 15100+ CefPermissionRequest, 15101+ cef_permission_request_t> { 15102+ public: 15103+ CefPermissionRequestCppToC(); 15104+ virtual ~CefPermissionRequestCppToC(); 15105+}; 15106+ 15107+#endif // CEF_LIBCEF_DLL_CPPTOC_PERMISSION_REQUEST_CPPTOC_H_ 15108diff --git a/cef/libcef_dll/cpptoc/post_data_cpptoc.cc b/cef/libcef_dll/cpptoc/post_data_cpptoc.cc 15109index 947a330cf6..2b1d0e145f 100644 15110--- a/cef/libcef_dll/cpptoc/post_data_cpptoc.cc 15111+++ b/cef/libcef_dll/cpptoc/post_data_cpptoc.cc 15112@@ -1,4 +1,4 @@ 15113-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 15114+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 15115 // reserved. Use of this source code is governed by a BSD-style license that 15116 // can be found in the LICENSE file. 15117 // 15118@@ -9,7 +9,7 @@ 15119 // implementations. See the translator.README.txt file in the tools directory 15120 // for more information. 15121 // 15122-// $hash=67abcc878fdc07aa0b582231112579ca6ebe8b8a$ 15123+// $hash=935efc8f333c6df95b783e1e80bb84aa26d55b9b$ 15124 // 15125 15126 #include "libcef_dll/cpptoc/post_data_cpptoc.h" 15127diff --git a/cef/libcef_dll/cpptoc/post_data_cpptoc.h b/cef/libcef_dll/cpptoc/post_data_cpptoc.h 15128index 9fd2970c2f..ff139f20d0 100644 15129--- a/cef/libcef_dll/cpptoc/post_data_cpptoc.h 15130+++ b/cef/libcef_dll/cpptoc/post_data_cpptoc.h 15131@@ -1,4 +1,4 @@ 15132-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 15133+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 15134 // reserved. Use of this source code is governed by a BSD-style license that 15135 // can be found in the LICENSE file. 15136 // 15137@@ -9,7 +9,7 @@ 15138 // implementations. See the translator.README.txt file in the tools directory 15139 // for more information. 15140 // 15141-// $hash=79c5dd393effb0d41ce765318f01806c3cd60689$ 15142+// $hash=c73c8a6c74113ead0251ca0afb007d2baa02030b$ 15143 // 15144 15145 #ifndef CEF_LIBCEF_DLL_CPPTOC_POST_DATA_CPPTOC_H_ 15146diff --git a/cef/libcef_dll/cpptoc/post_data_element_cpptoc.cc b/cef/libcef_dll/cpptoc/post_data_element_cpptoc.cc 15147index 2c69cc2516..1dff9418b3 100644 15148--- a/cef/libcef_dll/cpptoc/post_data_element_cpptoc.cc 15149+++ b/cef/libcef_dll/cpptoc/post_data_element_cpptoc.cc 15150@@ -1,4 +1,4 @@ 15151-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 15152+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 15153 // reserved. Use of this source code is governed by a BSD-style license that 15154 // can be found in the LICENSE file. 15155 // 15156@@ -9,7 +9,7 @@ 15157 // implementations. See the translator.README.txt file in the tools directory 15158 // for more information. 15159 // 15160-// $hash=e1a562a85bb9c9e50f44c027549f6c62d7d8cc4c$ 15161+// $hash=6148547c3504062984362b43db9e95ee68ef1358$ 15162 // 15163 15164 #include "libcef_dll/cpptoc/post_data_element_cpptoc.h" 15165diff --git a/cef/libcef_dll/cpptoc/post_data_element_cpptoc.h b/cef/libcef_dll/cpptoc/post_data_element_cpptoc.h 15166index 8a258ef95a..176e3081bf 100644 15167--- a/cef/libcef_dll/cpptoc/post_data_element_cpptoc.h 15168+++ b/cef/libcef_dll/cpptoc/post_data_element_cpptoc.h 15169@@ -1,4 +1,4 @@ 15170-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 15171+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 15172 // reserved. Use of this source code is governed by a BSD-style license that 15173 // can be found in the LICENSE file. 15174 // 15175@@ -9,7 +9,7 @@ 15176 // implementations. See the translator.README.txt file in the tools directory 15177 // for more information. 15178 // 15179-// $hash=ad5cfd1bc723af050b7592fdce1b552075700503$ 15180+// $hash=e29b5318c16ccbffa354d79176698d1709048e32$ 15181 // 15182 15183 #ifndef CEF_LIBCEF_DLL_CPPTOC_POST_DATA_ELEMENT_CPPTOC_H_ 15184diff --git a/cef/libcef_dll/cpptoc/print_dialog_callback_cpptoc.cc b/cef/libcef_dll/cpptoc/print_dialog_callback_cpptoc.cc 15185index c5f1dfb92f..ac4a1fbd24 100644 15186--- a/cef/libcef_dll/cpptoc/print_dialog_callback_cpptoc.cc 15187+++ b/cef/libcef_dll/cpptoc/print_dialog_callback_cpptoc.cc 15188@@ -1,4 +1,4 @@ 15189-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 15190+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 15191 // reserved. Use of this source code is governed by a BSD-style license that 15192 // can be found in the LICENSE file. 15193 // 15194@@ -9,7 +9,7 @@ 15195 // implementations. See the translator.README.txt file in the tools directory 15196 // for more information. 15197 // 15198-// $hash=3667aba62287be7ba66687ab5ffb17c6de3dce5a$ 15199+// $hash=5332b8cb609fa0f5b98e607878678808d21da3a4$ 15200 // 15201 15202 #include "libcef_dll/cpptoc/print_dialog_callback_cpptoc.h" 15203diff --git a/cef/libcef_dll/cpptoc/print_dialog_callback_cpptoc.h b/cef/libcef_dll/cpptoc/print_dialog_callback_cpptoc.h 15204index 46bf5c6b9a..f16cff04f2 100644 15205--- a/cef/libcef_dll/cpptoc/print_dialog_callback_cpptoc.h 15206+++ b/cef/libcef_dll/cpptoc/print_dialog_callback_cpptoc.h 15207@@ -1,4 +1,4 @@ 15208-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 15209+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 15210 // reserved. Use of this source code is governed by a BSD-style license that 15211 // can be found in the LICENSE file. 15212 // 15213@@ -9,7 +9,7 @@ 15214 // implementations. See the translator.README.txt file in the tools directory 15215 // for more information. 15216 // 15217-// $hash=b289d0263d8851dcca9cb4c786e7a1c3802670ce$ 15218+// $hash=88e44e22bb56d51ba9a60f38f59b89bb3e372748$ 15219 // 15220 15221 #ifndef CEF_LIBCEF_DLL_CPPTOC_PRINT_DIALOG_CALLBACK_CPPTOC_H_ 15222diff --git a/cef/libcef_dll/cpptoc/print_handler_cpptoc.cc b/cef/libcef_dll/cpptoc/print_handler_cpptoc.cc 15223index ebfdcd5127..dd6c36379e 100644 15224--- a/cef/libcef_dll/cpptoc/print_handler_cpptoc.cc 15225+++ b/cef/libcef_dll/cpptoc/print_handler_cpptoc.cc 15226@@ -1,4 +1,4 @@ 15227-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 15228+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 15229 // reserved. Use of this source code is governed by a BSD-style license that 15230 // can be found in the LICENSE file. 15231 // 15232@@ -9,7 +9,7 @@ 15233 // implementations. See the translator.README.txt file in the tools directory 15234 // for more information. 15235 // 15236-// $hash=15d1e044a5bc40ca25c72f070a9b996907c4c0cb$ 15237+// $hash=9c26e4bf9952a26541915f64dad82080f09dfd58$ 15238 // 15239 15240 #include "libcef_dll/cpptoc/print_handler_cpptoc.h" 15241diff --git a/cef/libcef_dll/cpptoc/print_handler_cpptoc.h b/cef/libcef_dll/cpptoc/print_handler_cpptoc.h 15242index 068178739d..da73686680 100644 15243--- a/cef/libcef_dll/cpptoc/print_handler_cpptoc.h 15244+++ b/cef/libcef_dll/cpptoc/print_handler_cpptoc.h 15245@@ -1,4 +1,4 @@ 15246-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 15247+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 15248 // reserved. Use of this source code is governed by a BSD-style license that 15249 // can be found in the LICENSE file. 15250 // 15251@@ -9,7 +9,7 @@ 15252 // implementations. See the translator.README.txt file in the tools directory 15253 // for more information. 15254 // 15255-// $hash=525179c2c2bf4727855e0fa8610fba5ec050b19d$ 15256+// $hash=49bb73be2c56a31fff2e88875360591dd31bdd8c$ 15257 // 15258 15259 #ifndef CEF_LIBCEF_DLL_CPPTOC_PRINT_HANDLER_CPPTOC_H_ 15260diff --git a/cef/libcef_dll/cpptoc/print_job_callback_cpptoc.cc b/cef/libcef_dll/cpptoc/print_job_callback_cpptoc.cc 15261index 76fa51739f..45ec93c715 100644 15262--- a/cef/libcef_dll/cpptoc/print_job_callback_cpptoc.cc 15263+++ b/cef/libcef_dll/cpptoc/print_job_callback_cpptoc.cc 15264@@ -1,4 +1,4 @@ 15265-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 15266+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 15267 // reserved. Use of this source code is governed by a BSD-style license that 15268 // can be found in the LICENSE file. 15269 // 15270@@ -9,7 +9,7 @@ 15271 // implementations. See the translator.README.txt file in the tools directory 15272 // for more information. 15273 // 15274-// $hash=0917dcc9b47dd275751465207eb18b8858ca5f08$ 15275+// $hash=3becd112f5c17b36328e77fcdcd296cdf73291a3$ 15276 // 15277 15278 #include "libcef_dll/cpptoc/print_job_callback_cpptoc.h" 15279diff --git a/cef/libcef_dll/cpptoc/print_job_callback_cpptoc.h b/cef/libcef_dll/cpptoc/print_job_callback_cpptoc.h 15280index 9a87766e6c..ec169ba4a0 100644 15281--- a/cef/libcef_dll/cpptoc/print_job_callback_cpptoc.h 15282+++ b/cef/libcef_dll/cpptoc/print_job_callback_cpptoc.h 15283@@ -1,4 +1,4 @@ 15284-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 15285+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 15286 // reserved. Use of this source code is governed by a BSD-style license that 15287 // can be found in the LICENSE file. 15288 // 15289@@ -9,7 +9,7 @@ 15290 // implementations. See the translator.README.txt file in the tools directory 15291 // for more information. 15292 // 15293-// $hash=f25c991aa9f03e084f4e8765049c77479fae971f$ 15294+// $hash=d3c680caf88e14fa8cd3c846fe44870900f82ea1$ 15295 // 15296 15297 #ifndef CEF_LIBCEF_DLL_CPPTOC_PRINT_JOB_CALLBACK_CPPTOC_H_ 15298diff --git a/cef/libcef_dll/cpptoc/print_settings_cpptoc.cc b/cef/libcef_dll/cpptoc/print_settings_cpptoc.cc 15299index 61d355b240..4138aaf281 100644 15300--- a/cef/libcef_dll/cpptoc/print_settings_cpptoc.cc 15301+++ b/cef/libcef_dll/cpptoc/print_settings_cpptoc.cc 15302@@ -1,4 +1,4 @@ 15303-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 15304+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 15305 // reserved. Use of this source code is governed by a BSD-style license that 15306 // can be found in the LICENSE file. 15307 // 15308@@ -9,7 +9,7 @@ 15309 // implementations. See the translator.README.txt file in the tools directory 15310 // for more information. 15311 // 15312-// $hash=d091416dceb419a83f57451aa8681bdf130fc477$ 15313+// $hash=8840518039eff950764302105148c5da0b0c996a$ 15314 // 15315 15316 #include "libcef_dll/cpptoc/print_settings_cpptoc.h" 15317diff --git a/cef/libcef_dll/cpptoc/print_settings_cpptoc.h b/cef/libcef_dll/cpptoc/print_settings_cpptoc.h 15318index eda0806a9e..6e6eea2140 100644 15319--- a/cef/libcef_dll/cpptoc/print_settings_cpptoc.h 15320+++ b/cef/libcef_dll/cpptoc/print_settings_cpptoc.h 15321@@ -1,4 +1,4 @@ 15322-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 15323+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 15324 // reserved. Use of this source code is governed by a BSD-style license that 15325 // can be found in the LICENSE file. 15326 // 15327@@ -9,7 +9,7 @@ 15328 // implementations. See the translator.README.txt file in the tools directory 15329 // for more information. 15330 // 15331-// $hash=5b1890f35e0a8f01c5c9bac48f8c2e42861d57cf$ 15332+// $hash=ab8680da4bc909d2c1a6cf723fafc1a561bfeb44$ 15333 // 15334 15335 #ifndef CEF_LIBCEF_DLL_CPPTOC_PRINT_SETTINGS_CPPTOC_H_ 15336diff --git a/cef/libcef_dll/cpptoc/process_message_cpptoc.cc b/cef/libcef_dll/cpptoc/process_message_cpptoc.cc 15337index 835700840a..f6473634e0 100644 15338--- a/cef/libcef_dll/cpptoc/process_message_cpptoc.cc 15339+++ b/cef/libcef_dll/cpptoc/process_message_cpptoc.cc 15340@@ -1,4 +1,4 @@ 15341-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 15342+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 15343 // reserved. Use of this source code is governed by a BSD-style license that 15344 // can be found in the LICENSE file. 15345 // 15346@@ -9,7 +9,7 @@ 15347 // implementations. See the translator.README.txt file in the tools directory 15348 // for more information. 15349 // 15350-// $hash=b3ab263fc6c8dc30dc97b56bbc8d32cc35dc3847$ 15351+// $hash=b63f665e68e4dc6269c3e88b81068190ea90abb3$ 15352 // 15353 15354 #include "libcef_dll/cpptoc/process_message_cpptoc.h" 15355diff --git a/cef/libcef_dll/cpptoc/process_message_cpptoc.h b/cef/libcef_dll/cpptoc/process_message_cpptoc.h 15356index 583a61bb44..76f2c5d97b 100644 15357--- a/cef/libcef_dll/cpptoc/process_message_cpptoc.h 15358+++ b/cef/libcef_dll/cpptoc/process_message_cpptoc.h 15359@@ -1,4 +1,4 @@ 15360-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 15361+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 15362 // reserved. Use of this source code is governed by a BSD-style license that 15363 // can be found in the LICENSE file. 15364 // 15365@@ -9,7 +9,7 @@ 15366 // implementations. See the translator.README.txt file in the tools directory 15367 // for more information. 15368 // 15369-// $hash=fefd94ebe8945a74e786c9b904f23b376ddb9f50$ 15370+// $hash=e70a96835042a2ebf0a60f2130f31d24f1ca59fd$ 15371 // 15372 15373 #ifndef CEF_LIBCEF_DLL_CPPTOC_PROCESS_MESSAGE_CPPTOC_H_ 15374diff --git a/cef/libcef_dll/cpptoc/read_handler_cpptoc.cc b/cef/libcef_dll/cpptoc/read_handler_cpptoc.cc 15375index 4616c5827b..ca8ec58e35 100644 15376--- a/cef/libcef_dll/cpptoc/read_handler_cpptoc.cc 15377+++ b/cef/libcef_dll/cpptoc/read_handler_cpptoc.cc 15378@@ -1,4 +1,4 @@ 15379-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 15380+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 15381 // reserved. Use of this source code is governed by a BSD-style license that 15382 // can be found in the LICENSE file. 15383 // 15384@@ -9,7 +9,7 @@ 15385 // implementations. See the translator.README.txt file in the tools directory 15386 // for more information. 15387 // 15388-// $hash=468a8a6d744062b47fc004adeb279e6beb2bbb54$ 15389+// $hash=a0976edc09e822700d8f402b2dae7af4c434d86f$ 15390 // 15391 15392 #include "libcef_dll/cpptoc/read_handler_cpptoc.h" 15393diff --git a/cef/libcef_dll/cpptoc/read_handler_cpptoc.h b/cef/libcef_dll/cpptoc/read_handler_cpptoc.h 15394index 64799edc97..eda92ed97c 100644 15395--- a/cef/libcef_dll/cpptoc/read_handler_cpptoc.h 15396+++ b/cef/libcef_dll/cpptoc/read_handler_cpptoc.h 15397@@ -1,4 +1,4 @@ 15398-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 15399+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 15400 // reserved. Use of this source code is governed by a BSD-style license that 15401 // can be found in the LICENSE file. 15402 // 15403@@ -9,7 +9,7 @@ 15404 // implementations. See the translator.README.txt file in the tools directory 15405 // for more information. 15406 // 15407-// $hash=e68ee258e8059cc525294b21556ea97751c35d1f$ 15408+// $hash=3c16def2c698c26a175b1087db819d3894a264fa$ 15409 // 15410 15411 #ifndef CEF_LIBCEF_DLL_CPPTOC_READ_HANDLER_CPPTOC_H_ 15412diff --git a/cef/libcef_dll/cpptoc/register_cdm_callback_cpptoc.cc b/cef/libcef_dll/cpptoc/register_cdm_callback_cpptoc.cc 15413index ee783c953c..d93b0ba0a9 100644 15414--- a/cef/libcef_dll/cpptoc/register_cdm_callback_cpptoc.cc 15415+++ b/cef/libcef_dll/cpptoc/register_cdm_callback_cpptoc.cc 15416@@ -1,4 +1,4 @@ 15417-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 15418+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 15419 // reserved. Use of this source code is governed by a BSD-style license that 15420 // can be found in the LICENSE file. 15421 // 15422@@ -9,7 +9,7 @@ 15423 // implementations. See the translator.README.txt file in the tools directory 15424 // for more information. 15425 // 15426-// $hash=5f7db6dda8ac868e8ec94b93e3ae7d2dd7d0cf64$ 15427+// $hash=4c77ff49deadd30ff0af3ead43a916848931fb1b$ 15428 // 15429 15430 #include "libcef_dll/cpptoc/register_cdm_callback_cpptoc.h" 15431diff --git a/cef/libcef_dll/cpptoc/register_cdm_callback_cpptoc.h b/cef/libcef_dll/cpptoc/register_cdm_callback_cpptoc.h 15432index 7c9bbced6f..a121545126 100644 15433--- a/cef/libcef_dll/cpptoc/register_cdm_callback_cpptoc.h 15434+++ b/cef/libcef_dll/cpptoc/register_cdm_callback_cpptoc.h 15435@@ -1,4 +1,4 @@ 15436-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 15437+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 15438 // reserved. Use of this source code is governed by a BSD-style license that 15439 // can be found in the LICENSE file. 15440 // 15441@@ -9,7 +9,7 @@ 15442 // implementations. See the translator.README.txt file in the tools directory 15443 // for more information. 15444 // 15445-// $hash=9817a192fb9476a843c3ccd0467e781adf426b91$ 15446+// $hash=a5d158768dd2928b13a86e1023ce218db69e8dd9$ 15447 // 15448 15449 #ifndef CEF_LIBCEF_DLL_CPPTOC_REGISTER_CDM_CALLBACK_CPPTOC_H_ 15450diff --git a/cef/libcef_dll/cpptoc/registration_cpptoc.cc b/cef/libcef_dll/cpptoc/registration_cpptoc.cc 15451index 78c8fe6579..5d959db487 100644 15452--- a/cef/libcef_dll/cpptoc/registration_cpptoc.cc 15453+++ b/cef/libcef_dll/cpptoc/registration_cpptoc.cc 15454@@ -1,4 +1,4 @@ 15455-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 15456+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 15457 // reserved. Use of this source code is governed by a BSD-style license that 15458 // can be found in the LICENSE file. 15459 // 15460@@ -9,7 +9,7 @@ 15461 // implementations. See the translator.README.txt file in the tools directory 15462 // for more information. 15463 // 15464-// $hash=ec2642c7c8adb8df19ecc2a8a4ae1e8be5c203a0$ 15465+// $hash=bfa5ab4142b6fe56939a45241a39bb74f3a84acb$ 15466 // 15467 15468 #include "libcef_dll/cpptoc/registration_cpptoc.h" 15469diff --git a/cef/libcef_dll/cpptoc/registration_cpptoc.h b/cef/libcef_dll/cpptoc/registration_cpptoc.h 15470index 0943ae4344..e623e5f7d4 100644 15471--- a/cef/libcef_dll/cpptoc/registration_cpptoc.h 15472+++ b/cef/libcef_dll/cpptoc/registration_cpptoc.h 15473@@ -1,4 +1,4 @@ 15474-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 15475+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 15476 // reserved. Use of this source code is governed by a BSD-style license that 15477 // can be found in the LICENSE file. 15478 // 15479@@ -9,7 +9,7 @@ 15480 // implementations. See the translator.README.txt file in the tools directory 15481 // for more information. 15482 // 15483-// $hash=e417a268c700c6ba91f9b00484a11d105d884dd0$ 15484+// $hash=edd002ac63a0564820617ad44c5c30f9674b8122$ 15485 // 15486 15487 #ifndef CEF_LIBCEF_DLL_CPPTOC_REGISTRATION_CPPTOC_H_ 15488diff --git a/cef/libcef_dll/cpptoc/render_handler_cpptoc.cc b/cef/libcef_dll/cpptoc/render_handler_cpptoc.cc 15489index ebe577ee5d..424040a880 100644 15490--- a/cef/libcef_dll/cpptoc/render_handler_cpptoc.cc 15491+++ b/cef/libcef_dll/cpptoc/render_handler_cpptoc.cc 15492@@ -1,4 +1,4 @@ 15493-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 15494+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 15495 // reserved. Use of this source code is governed by a BSD-style license that 15496 // can be found in the LICENSE file. 15497 // 15498@@ -9,7 +9,7 @@ 15499 // implementations. See the translator.README.txt file in the tools directory 15500 // for more information. 15501 // 15502-// $hash=f6410f1d692fb2ccbd0cae2e388db6ee8b22cc1e$ 15503+// $hash=f2d63ae1b93668305c70a02fec40da44f9a0ffcd$ 15504 // 15505 15506 #include "libcef_dll/cpptoc/render_handler_cpptoc.h" 15507@@ -399,6 +399,28 @@ render_handler_on_scroll_offset_changed(struct _cef_render_handler_t* self, 15508 CefBrowserCToCpp::Wrap(browser), x, y); 15509 } 15510 15511+void CEF_CALLBACK 15512+render_handler_on_root_layer_changed(struct _cef_render_handler_t* self, 15513+ cef_browser_t* browser, 15514+ int height, 15515+ int width) { 15516+ shutdown_checker::AssertNotShutdown(); 15517+ 15518+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 15519+ 15520+ DCHECK(self); 15521+ if (!self) 15522+ return; 15523+ // Verify param: browser; type: refptr_diff 15524+ DCHECK(browser); 15525+ if (!browser) 15526+ return; 15527+ 15528+ // Execute 15529+ CefRenderHandlerCppToC::Get(self)->OnRootLayerChanged( 15530+ CefBrowserCToCpp::Wrap(browser), height, width); 15531+} 15532+ 15533 void CEF_CALLBACK render_handler_on_ime_composition_range_changed( 15534 struct _cef_render_handler_t* self, 15535 cef_browser_t* browser, 15536@@ -508,6 +530,7 @@ CefRenderHandlerCppToC::CefRenderHandlerCppToC() { 15537 GetStruct()->update_drag_cursor = render_handler_update_drag_cursor; 15538 GetStruct()->on_scroll_offset_changed = 15539 render_handler_on_scroll_offset_changed; 15540+ GetStruct()->on_root_layer_changed = render_handler_on_root_layer_changed; 15541 GetStruct()->on_ime_composition_range_changed = 15542 render_handler_on_ime_composition_range_changed; 15543 GetStruct()->on_text_selection_changed = 15544diff --git a/cef/libcef_dll/cpptoc/render_handler_cpptoc.h b/cef/libcef_dll/cpptoc/render_handler_cpptoc.h 15545index 70ea47d510..c213ddf908 100644 15546--- a/cef/libcef_dll/cpptoc/render_handler_cpptoc.h 15547+++ b/cef/libcef_dll/cpptoc/render_handler_cpptoc.h 15548@@ -1,4 +1,4 @@ 15549-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 15550+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 15551 // reserved. Use of this source code is governed by a BSD-style license that 15552 // can be found in the LICENSE file. 15553 // 15554@@ -9,7 +9,7 @@ 15555 // implementations. See the translator.README.txt file in the tools directory 15556 // for more information. 15557 // 15558-// $hash=9f3f5fdcfa22ae564d435713479c2cb1b0b17e94$ 15559+// $hash=18b7f5398b817f5d20f26aa4e139faa4f91cfe0b$ 15560 // 15561 15562 #ifndef CEF_LIBCEF_DLL_CPPTOC_RENDER_HANDLER_CPPTOC_H_ 15563diff --git a/cef/libcef_dll/cpptoc/render_process_handler_cpptoc.cc b/cef/libcef_dll/cpptoc/render_process_handler_cpptoc.cc 15564index f9f1aa6c51..b675c9d38e 100644 15565--- a/cef/libcef_dll/cpptoc/render_process_handler_cpptoc.cc 15566+++ b/cef/libcef_dll/cpptoc/render_process_handler_cpptoc.cc 15567@@ -1,4 +1,4 @@ 15568-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 15569+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 15570 // reserved. Use of this source code is governed by a BSD-style license that 15571 // can be found in the LICENSE file. 15572 // 15573@@ -9,7 +9,7 @@ 15574 // implementations. See the translator.README.txt file in the tools directory 15575 // for more information. 15576 // 15577-// $hash=4fc8972b57ed97feef5f00dcfa77e32b8d63cb9a$ 15578+// $hash=59a7b8ee629ec03f3079c92ebd4feb6e711ec0f2$ 15579 // 15580 15581 #include "libcef_dll/cpptoc/render_process_handler_cpptoc.h" 15582diff --git a/cef/libcef_dll/cpptoc/render_process_handler_cpptoc.h b/cef/libcef_dll/cpptoc/render_process_handler_cpptoc.h 15583index 1911161bf3..599203043e 100644 15584--- a/cef/libcef_dll/cpptoc/render_process_handler_cpptoc.h 15585+++ b/cef/libcef_dll/cpptoc/render_process_handler_cpptoc.h 15586@@ -1,4 +1,4 @@ 15587-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 15588+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 15589 // reserved. Use of this source code is governed by a BSD-style license that 15590 // can be found in the LICENSE file. 15591 // 15592@@ -9,7 +9,7 @@ 15593 // implementations. See the translator.README.txt file in the tools directory 15594 // for more information. 15595 // 15596-// $hash=9d0edd7e100abdfe53bf0b84a58fbd681d83fe0d$ 15597+// $hash=8d832edacd5ccc0baac1314aaa9424ba2ab4837c$ 15598 // 15599 15600 #ifndef CEF_LIBCEF_DLL_CPPTOC_RENDER_PROCESS_HANDLER_CPPTOC_H_ 15601diff --git a/cef/libcef_dll/cpptoc/request_callback_cpptoc.cc b/cef/libcef_dll/cpptoc/request_callback_cpptoc.cc 15602index 37a7359c21..9e7a0462f8 100644 15603--- a/cef/libcef_dll/cpptoc/request_callback_cpptoc.cc 15604+++ b/cef/libcef_dll/cpptoc/request_callback_cpptoc.cc 15605@@ -1,4 +1,4 @@ 15606-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 15607+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 15608 // reserved. Use of this source code is governed by a BSD-style license that 15609 // can be found in the LICENSE file. 15610 // 15611@@ -9,7 +9,7 @@ 15612 // implementations. See the translator.README.txt file in the tools directory 15613 // for more information. 15614 // 15615-// $hash=bee998a59050e372ea10d1ce146532c074b1a3ec$ 15616+// $hash=b19244d48f2b415a9a71b27ba76b4986677899d5$ 15617 // 15618 15619 #include "libcef_dll/cpptoc/request_callback_cpptoc.h" 15620diff --git a/cef/libcef_dll/cpptoc/request_callback_cpptoc.h b/cef/libcef_dll/cpptoc/request_callback_cpptoc.h 15621index 5c145aeb38..17c35211fb 100644 15622--- a/cef/libcef_dll/cpptoc/request_callback_cpptoc.h 15623+++ b/cef/libcef_dll/cpptoc/request_callback_cpptoc.h 15624@@ -1,4 +1,4 @@ 15625-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 15626+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 15627 // reserved. Use of this source code is governed by a BSD-style license that 15628 // can be found in the LICENSE file. 15629 // 15630@@ -9,7 +9,7 @@ 15631 // implementations. See the translator.README.txt file in the tools directory 15632 // for more information. 15633 // 15634-// $hash=bd2b56bd152e80651c9a3de4472891d7cf65b130$ 15635+// $hash=29146c480878ee0e015ab1f4bdf87299ffc95a06$ 15636 // 15637 15638 #ifndef CEF_LIBCEF_DLL_CPPTOC_REQUEST_CALLBACK_CPPTOC_H_ 15639diff --git a/cef/libcef_dll/cpptoc/request_context_cpptoc.cc b/cef/libcef_dll/cpptoc/request_context_cpptoc.cc 15640index fd3d1af8bf..cd3e0f9bb6 100644 15641--- a/cef/libcef_dll/cpptoc/request_context_cpptoc.cc 15642+++ b/cef/libcef_dll/cpptoc/request_context_cpptoc.cc 15643@@ -1,4 +1,4 @@ 15644-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 15645+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 15646 // reserved. Use of this source code is governed by a BSD-style license that 15647 // can be found in the LICENSE file. 15648 // 15649@@ -9,7 +9,7 @@ 15650 // implementations. See the translator.README.txt file in the tools directory 15651 // for more information. 15652 // 15653-// $hash=38ae668703b71d27d2bcd7cd9230817edd5b8f41$ 15654+// $hash=69c5dc4e787496678696a7aa0f1f5eea80355ea8$ 15655 // 15656 15657 #include "libcef_dll/cpptoc/request_context_cpptoc.h" 15658diff --git a/cef/libcef_dll/cpptoc/request_context_cpptoc.h b/cef/libcef_dll/cpptoc/request_context_cpptoc.h 15659index b74c4f0f37..bf9847b8d1 100644 15660--- a/cef/libcef_dll/cpptoc/request_context_cpptoc.h 15661+++ b/cef/libcef_dll/cpptoc/request_context_cpptoc.h 15662@@ -1,4 +1,4 @@ 15663-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 15664+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 15665 // reserved. Use of this source code is governed by a BSD-style license that 15666 // can be found in the LICENSE file. 15667 // 15668@@ -9,7 +9,7 @@ 15669 // implementations. See the translator.README.txt file in the tools directory 15670 // for more information. 15671 // 15672-// $hash=f0b104243778fce7d1ada4de1a80311443ba37d4$ 15673+// $hash=7350e36d25125a3560d0e0da5b46daa60295c7a7$ 15674 // 15675 15676 #ifndef CEF_LIBCEF_DLL_CPPTOC_REQUEST_CONTEXT_CPPTOC_H_ 15677diff --git a/cef/libcef_dll/cpptoc/request_context_handler_cpptoc.cc b/cef/libcef_dll/cpptoc/request_context_handler_cpptoc.cc 15678index fe68610a3b..844db087e0 100644 15679--- a/cef/libcef_dll/cpptoc/request_context_handler_cpptoc.cc 15680+++ b/cef/libcef_dll/cpptoc/request_context_handler_cpptoc.cc 15681@@ -1,4 +1,4 @@ 15682-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 15683+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 15684 // reserved. Use of this source code is governed by a BSD-style license that 15685 // can be found in the LICENSE file. 15686 // 15687@@ -9,7 +9,7 @@ 15688 // implementations. See the translator.README.txt file in the tools directory 15689 // for more information. 15690 // 15691-// $hash=9172186519dc33742d7c302e7276c5ce8536a95b$ 15692+// $hash=1789068218bd055e77d1699cf733cc2769612569$ 15693 // 15694 15695 #include "libcef_dll/cpptoc/request_context_handler_cpptoc.h" 15696diff --git a/cef/libcef_dll/cpptoc/request_context_handler_cpptoc.h b/cef/libcef_dll/cpptoc/request_context_handler_cpptoc.h 15697index 3e7fa58fcb..aaa029d91b 100644 15698--- a/cef/libcef_dll/cpptoc/request_context_handler_cpptoc.h 15699+++ b/cef/libcef_dll/cpptoc/request_context_handler_cpptoc.h 15700@@ -1,4 +1,4 @@ 15701-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 15702+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 15703 // reserved. Use of this source code is governed by a BSD-style license that 15704 // can be found in the LICENSE file. 15705 // 15706@@ -9,7 +9,7 @@ 15707 // implementations. See the translator.README.txt file in the tools directory 15708 // for more information. 15709 // 15710-// $hash=eee4c56e63dbec7ee8fa2b515b53d274b90c0366$ 15711+// $hash=e1cebce8a08c570f02235a53bab5f6aa0b13699c$ 15712 // 15713 15714 #ifndef CEF_LIBCEF_DLL_CPPTOC_REQUEST_CONTEXT_HANDLER_CPPTOC_H_ 15715diff --git a/cef/libcef_dll/cpptoc/request_cpptoc.cc b/cef/libcef_dll/cpptoc/request_cpptoc.cc 15716index 302afa5ce6..ee7cd8b9be 100644 15717--- a/cef/libcef_dll/cpptoc/request_cpptoc.cc 15718+++ b/cef/libcef_dll/cpptoc/request_cpptoc.cc 15719@@ -1,4 +1,4 @@ 15720-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 15721+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 15722 // reserved. Use of this source code is governed by a BSD-style license that 15723 // can be found in the LICENSE file. 15724 // 15725@@ -9,7 +9,7 @@ 15726 // implementations. See the translator.README.txt file in the tools directory 15727 // for more information. 15728 // 15729-// $hash=7c8a996b228efdb02dd4d3d88fc12b58a1f74558$ 15730+// $hash=b1a7f857e453a625325a1a2847e60990eecc61ea$ 15731 // 15732 15733 #include "libcef_dll/cpptoc/request_cpptoc.h" 15734diff --git a/cef/libcef_dll/cpptoc/request_cpptoc.h b/cef/libcef_dll/cpptoc/request_cpptoc.h 15735index f404dfc140..b93e0ba163 100644 15736--- a/cef/libcef_dll/cpptoc/request_cpptoc.h 15737+++ b/cef/libcef_dll/cpptoc/request_cpptoc.h 15738@@ -1,4 +1,4 @@ 15739-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 15740+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 15741 // reserved. Use of this source code is governed by a BSD-style license that 15742 // can be found in the LICENSE file. 15743 // 15744@@ -9,7 +9,7 @@ 15745 // implementations. See the translator.README.txt file in the tools directory 15746 // for more information. 15747 // 15748-// $hash=f090904a66e29e8638eb9868724a4c02e5102594$ 15749+// $hash=25a489e9a54195be43325a811956c66f578fbeb0$ 15750 // 15751 15752 #ifndef CEF_LIBCEF_DLL_CPPTOC_REQUEST_CPPTOC_H_ 15753diff --git a/cef/libcef_dll/cpptoc/request_handler_cpptoc.cc b/cef/libcef_dll/cpptoc/request_handler_cpptoc.cc 15754index 9f4b313f64..001faf062d 100644 15755--- a/cef/libcef_dll/cpptoc/request_handler_cpptoc.cc 15756+++ b/cef/libcef_dll/cpptoc/request_handler_cpptoc.cc 15757@@ -1,4 +1,4 @@ 15758-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 15759+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 15760 // reserved. Use of this source code is governed by a BSD-style license that 15761 // can be found in the LICENSE file. 15762 // 15763@@ -9,7 +9,7 @@ 15764 // implementations. See the translator.README.txt file in the tools directory 15765 // for more information. 15766 // 15767-// $hash=baa4e92404f1c0b975c3724e649afb4ef04250f0$ 15768+// $hash=d737e87912d409f23e7b078a6c7d56bed2a5df95$ 15769 // 15770 15771 #include "libcef_dll/cpptoc/request_handler_cpptoc.h" 15772diff --git a/cef/libcef_dll/cpptoc/request_handler_cpptoc.h b/cef/libcef_dll/cpptoc/request_handler_cpptoc.h 15773index b211145a45..70c502128e 100644 15774--- a/cef/libcef_dll/cpptoc/request_handler_cpptoc.h 15775+++ b/cef/libcef_dll/cpptoc/request_handler_cpptoc.h 15776@@ -1,4 +1,4 @@ 15777-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 15778+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 15779 // reserved. Use of this source code is governed by a BSD-style license that 15780 // can be found in the LICENSE file. 15781 // 15782@@ -9,7 +9,7 @@ 15783 // implementations. See the translator.README.txt file in the tools directory 15784 // for more information. 15785 // 15786-// $hash=18317612a895e22529b31aadd74c40698f482a7a$ 15787+// $hash=4cda9dc12a20ead4f6889fd26a176da22ca67c50$ 15788 // 15789 15790 #ifndef CEF_LIBCEF_DLL_CPPTOC_REQUEST_HANDLER_CPPTOC_H_ 15791diff --git a/cef/libcef_dll/cpptoc/resolve_callback_cpptoc.cc b/cef/libcef_dll/cpptoc/resolve_callback_cpptoc.cc 15792index bf3074c637..6ec72fcf3a 100644 15793--- a/cef/libcef_dll/cpptoc/resolve_callback_cpptoc.cc 15794+++ b/cef/libcef_dll/cpptoc/resolve_callback_cpptoc.cc 15795@@ -1,4 +1,4 @@ 15796-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 15797+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 15798 // reserved. Use of this source code is governed by a BSD-style license that 15799 // can be found in the LICENSE file. 15800 // 15801@@ -9,7 +9,7 @@ 15802 // implementations. See the translator.README.txt file in the tools directory 15803 // for more information. 15804 // 15805-// $hash=52c60d1a07505b36d99272e58c1b362b03a2af45$ 15806+// $hash=d6f5224414a15d32a42ed2862b30c0076d0b5d95$ 15807 // 15808 15809 #include "libcef_dll/cpptoc/resolve_callback_cpptoc.h" 15810diff --git a/cef/libcef_dll/cpptoc/resolve_callback_cpptoc.h b/cef/libcef_dll/cpptoc/resolve_callback_cpptoc.h 15811index 46cb01e0df..76e790de03 100644 15812--- a/cef/libcef_dll/cpptoc/resolve_callback_cpptoc.h 15813+++ b/cef/libcef_dll/cpptoc/resolve_callback_cpptoc.h 15814@@ -1,4 +1,4 @@ 15815-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 15816+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 15817 // reserved. Use of this source code is governed by a BSD-style license that 15818 // can be found in the LICENSE file. 15819 // 15820@@ -9,7 +9,7 @@ 15821 // implementations. See the translator.README.txt file in the tools directory 15822 // for more information. 15823 // 15824-// $hash=6ea24a272a8125c550aea82b66715d92613312d7$ 15825+// $hash=659df5decaf5cab4624f6f15b8bceeed0bd2d228$ 15826 // 15827 15828 #ifndef CEF_LIBCEF_DLL_CPPTOC_RESOLVE_CALLBACK_CPPTOC_H_ 15829diff --git a/cef/libcef_dll/cpptoc/resource_bundle_cpptoc.cc b/cef/libcef_dll/cpptoc/resource_bundle_cpptoc.cc 15830index 94f794d9de..97ad75f998 100644 15831--- a/cef/libcef_dll/cpptoc/resource_bundle_cpptoc.cc 15832+++ b/cef/libcef_dll/cpptoc/resource_bundle_cpptoc.cc 15833@@ -1,4 +1,4 @@ 15834-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 15835+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 15836 // reserved. Use of this source code is governed by a BSD-style license that 15837 // can be found in the LICENSE file. 15838 // 15839@@ -9,7 +9,7 @@ 15840 // implementations. See the translator.README.txt file in the tools directory 15841 // for more information. 15842 // 15843-// $hash=5512a41467d67fd269e9486f48b83febc2700feb$ 15844+// $hash=5081aa41e87ea1a44df19f1df060a478b3b902d8$ 15845 // 15846 15847 #include "libcef_dll/cpptoc/resource_bundle_cpptoc.h" 15848diff --git a/cef/libcef_dll/cpptoc/resource_bundle_cpptoc.h b/cef/libcef_dll/cpptoc/resource_bundle_cpptoc.h 15849index 5163c4c1e8..429418a493 100644 15850--- a/cef/libcef_dll/cpptoc/resource_bundle_cpptoc.h 15851+++ b/cef/libcef_dll/cpptoc/resource_bundle_cpptoc.h 15852@@ -1,4 +1,4 @@ 15853-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 15854+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 15855 // reserved. Use of this source code is governed by a BSD-style license that 15856 // can be found in the LICENSE file. 15857 // 15858@@ -9,7 +9,7 @@ 15859 // implementations. See the translator.README.txt file in the tools directory 15860 // for more information. 15861 // 15862-// $hash=50333b23ddd95f3e6650e517455e0d4245a458dd$ 15863+// $hash=808eba3682873dd7b948ed9f572d9960df9a1b2d$ 15864 // 15865 15866 #ifndef CEF_LIBCEF_DLL_CPPTOC_RESOURCE_BUNDLE_CPPTOC_H_ 15867diff --git a/cef/libcef_dll/cpptoc/resource_bundle_handler_cpptoc.cc b/cef/libcef_dll/cpptoc/resource_bundle_handler_cpptoc.cc 15868index 3648ba1413..8e9a45951a 100644 15869--- a/cef/libcef_dll/cpptoc/resource_bundle_handler_cpptoc.cc 15870+++ b/cef/libcef_dll/cpptoc/resource_bundle_handler_cpptoc.cc 15871@@ -1,4 +1,4 @@ 15872-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 15873+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 15874 // reserved. Use of this source code is governed by a BSD-style license that 15875 // can be found in the LICENSE file. 15876 // 15877@@ -9,7 +9,7 @@ 15878 // implementations. See the translator.README.txt file in the tools directory 15879 // for more information. 15880 // 15881-// $hash=7395ebd664ffbbba2b7e4f427159e50c60689cb4$ 15882+// $hash=486d1b31ccfd53e10dec622d3ae024c23b50e2c2$ 15883 // 15884 15885 #include "libcef_dll/cpptoc/resource_bundle_handler_cpptoc.h" 15886diff --git a/cef/libcef_dll/cpptoc/resource_bundle_handler_cpptoc.h b/cef/libcef_dll/cpptoc/resource_bundle_handler_cpptoc.h 15887index cf2fd6db6d..12d1d945c5 100644 15888--- a/cef/libcef_dll/cpptoc/resource_bundle_handler_cpptoc.h 15889+++ b/cef/libcef_dll/cpptoc/resource_bundle_handler_cpptoc.h 15890@@ -1,4 +1,4 @@ 15891-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 15892+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 15893 // reserved. Use of this source code is governed by a BSD-style license that 15894 // can be found in the LICENSE file. 15895 // 15896@@ -9,7 +9,7 @@ 15897 // implementations. See the translator.README.txt file in the tools directory 15898 // for more information. 15899 // 15900-// $hash=58f37dffaf226ab0203e485545ffb8a1a477447c$ 15901+// $hash=26b5dfed49b7182c1bdf52f50547ccb26c4850fe$ 15902 // 15903 15904 #ifndef CEF_LIBCEF_DLL_CPPTOC_RESOURCE_BUNDLE_HANDLER_CPPTOC_H_ 15905diff --git a/cef/libcef_dll/cpptoc/resource_handler_cpptoc.cc b/cef/libcef_dll/cpptoc/resource_handler_cpptoc.cc 15906index 6271aa467d..078bd359c9 100644 15907--- a/cef/libcef_dll/cpptoc/resource_handler_cpptoc.cc 15908+++ b/cef/libcef_dll/cpptoc/resource_handler_cpptoc.cc 15909@@ -1,4 +1,4 @@ 15910-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 15911+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 15912 // reserved. Use of this source code is governed by a BSD-style license that 15913 // can be found in the LICENSE file. 15914 // 15915@@ -9,7 +9,7 @@ 15916 // implementations. See the translator.README.txt file in the tools directory 15917 // for more information. 15918 // 15919-// $hash=9d03ddc3b4f887626177014127f9280966904ae2$ 15920+// $hash=72d9dc0e438de96161f262353c153c11b76f8ad0$ 15921 // 15922 15923 #include "libcef_dll/cpptoc/resource_handler_cpptoc.h" 15924diff --git a/cef/libcef_dll/cpptoc/resource_handler_cpptoc.h b/cef/libcef_dll/cpptoc/resource_handler_cpptoc.h 15925index fb4819f0d3..c3ed893b8d 100644 15926--- a/cef/libcef_dll/cpptoc/resource_handler_cpptoc.h 15927+++ b/cef/libcef_dll/cpptoc/resource_handler_cpptoc.h 15928@@ -1,4 +1,4 @@ 15929-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 15930+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 15931 // reserved. Use of this source code is governed by a BSD-style license that 15932 // can be found in the LICENSE file. 15933 // 15934@@ -9,7 +9,7 @@ 15935 // implementations. See the translator.README.txt file in the tools directory 15936 // for more information. 15937 // 15938-// $hash=ca46bb20cee655f78932b73a336a27e49d1dcbee$ 15939+// $hash=a2b9dcc0ff22bd3f1b0ecb70a3e10b6c1c7a0ed7$ 15940 // 15941 15942 #ifndef CEF_LIBCEF_DLL_CPPTOC_RESOURCE_HANDLER_CPPTOC_H_ 15943diff --git a/cef/libcef_dll/cpptoc/resource_read_callback_cpptoc.cc b/cef/libcef_dll/cpptoc/resource_read_callback_cpptoc.cc 15944index ed15b7de69..baffa65472 100644 15945--- a/cef/libcef_dll/cpptoc/resource_read_callback_cpptoc.cc 15946+++ b/cef/libcef_dll/cpptoc/resource_read_callback_cpptoc.cc 15947@@ -1,4 +1,4 @@ 15948-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 15949+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 15950 // reserved. Use of this source code is governed by a BSD-style license that 15951 // can be found in the LICENSE file. 15952 // 15953@@ -9,7 +9,7 @@ 15954 // implementations. See the translator.README.txt file in the tools directory 15955 // for more information. 15956 // 15957-// $hash=646cdf4de0b0ae6bbf28c229a2eec6f1b56f5455$ 15958+// $hash=9d07f53404d3b90d1e386e37b0ed4535afb57b39$ 15959 // 15960 15961 #include "libcef_dll/cpptoc/resource_read_callback_cpptoc.h" 15962diff --git a/cef/libcef_dll/cpptoc/resource_read_callback_cpptoc.h b/cef/libcef_dll/cpptoc/resource_read_callback_cpptoc.h 15963index 3ed745b852..c1b4d1a597 100644 15964--- a/cef/libcef_dll/cpptoc/resource_read_callback_cpptoc.h 15965+++ b/cef/libcef_dll/cpptoc/resource_read_callback_cpptoc.h 15966@@ -1,4 +1,4 @@ 15967-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 15968+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 15969 // reserved. Use of this source code is governed by a BSD-style license that 15970 // can be found in the LICENSE file. 15971 // 15972@@ -9,7 +9,7 @@ 15973 // implementations. See the translator.README.txt file in the tools directory 15974 // for more information. 15975 // 15976-// $hash=8218cb5006c7b8e2e793135c32a3f88d525f218b$ 15977+// $hash=7cd5016181dd61511cb1c1d3176d8aff5e5fba82$ 15978 // 15979 15980 #ifndef CEF_LIBCEF_DLL_CPPTOC_RESOURCE_READ_CALLBACK_CPPTOC_H_ 15981diff --git a/cef/libcef_dll/cpptoc/resource_request_handler_cpptoc.cc b/cef/libcef_dll/cpptoc/resource_request_handler_cpptoc.cc 15982index 5c758bb417..3ffa101a39 100644 15983--- a/cef/libcef_dll/cpptoc/resource_request_handler_cpptoc.cc 15984+++ b/cef/libcef_dll/cpptoc/resource_request_handler_cpptoc.cc 15985@@ -1,4 +1,4 @@ 15986-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 15987+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 15988 // reserved. Use of this source code is governed by a BSD-style license that 15989 // can be found in the LICENSE file. 15990 // 15991@@ -9,7 +9,7 @@ 15992 // implementations. See the translator.README.txt file in the tools directory 15993 // for more information. 15994 // 15995-// $hash=1009f2ed21a03d2a6e47372def61b0696055d4e1$ 15996+// $hash=5ad46295870e861e60d7097341aeac4f7a279076$ 15997 // 15998 15999 #include "libcef_dll/cpptoc/resource_request_handler_cpptoc.h" 16000diff --git a/cef/libcef_dll/cpptoc/resource_request_handler_cpptoc.h b/cef/libcef_dll/cpptoc/resource_request_handler_cpptoc.h 16001index bbfffde4e7..813e38e8d4 100644 16002--- a/cef/libcef_dll/cpptoc/resource_request_handler_cpptoc.h 16003+++ b/cef/libcef_dll/cpptoc/resource_request_handler_cpptoc.h 16004@@ -1,4 +1,4 @@ 16005-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 16006+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 16007 // reserved. Use of this source code is governed by a BSD-style license that 16008 // can be found in the LICENSE file. 16009 // 16010@@ -9,7 +9,7 @@ 16011 // implementations. See the translator.README.txt file in the tools directory 16012 // for more information. 16013 // 16014-// $hash=f48fef57eb0141917d0ba9243a1d9962fbcffc9e$ 16015+// $hash=a8c2b0d3df6a4c6b336084598084d14f62860a53$ 16016 // 16017 16018 #ifndef CEF_LIBCEF_DLL_CPPTOC_RESOURCE_REQUEST_HANDLER_CPPTOC_H_ 16019diff --git a/cef/libcef_dll/cpptoc/resource_skip_callback_cpptoc.cc b/cef/libcef_dll/cpptoc/resource_skip_callback_cpptoc.cc 16020index 7288e19baa..41bbad0322 100644 16021--- a/cef/libcef_dll/cpptoc/resource_skip_callback_cpptoc.cc 16022+++ b/cef/libcef_dll/cpptoc/resource_skip_callback_cpptoc.cc 16023@@ -1,4 +1,4 @@ 16024-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 16025+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 16026 // reserved. Use of this source code is governed by a BSD-style license that 16027 // can be found in the LICENSE file. 16028 // 16029@@ -9,7 +9,7 @@ 16030 // implementations. See the translator.README.txt file in the tools directory 16031 // for more information. 16032 // 16033-// $hash=f9bc0556a97ff271f7f8275f2c7572c3cdeb728c$ 16034+// $hash=3b4968443aafd1ee42fcc9a5e7b466b38fb98d28$ 16035 // 16036 16037 #include "libcef_dll/cpptoc/resource_skip_callback_cpptoc.h" 16038diff --git a/cef/libcef_dll/cpptoc/resource_skip_callback_cpptoc.h b/cef/libcef_dll/cpptoc/resource_skip_callback_cpptoc.h 16039index 40ef7a0dc8..c173a16715 100644 16040--- a/cef/libcef_dll/cpptoc/resource_skip_callback_cpptoc.h 16041+++ b/cef/libcef_dll/cpptoc/resource_skip_callback_cpptoc.h 16042@@ -1,4 +1,4 @@ 16043-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 16044+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 16045 // reserved. Use of this source code is governed by a BSD-style license that 16046 // can be found in the LICENSE file. 16047 // 16048@@ -9,7 +9,7 @@ 16049 // implementations. See the translator.README.txt file in the tools directory 16050 // for more information. 16051 // 16052-// $hash=1f294352ecdbb87074f531745e7f57e814fdc0b9$ 16053+// $hash=decf49c2d8a337c353d149e9b9392065740eb06d$ 16054 // 16055 16056 #ifndef CEF_LIBCEF_DLL_CPPTOC_RESOURCE_SKIP_CALLBACK_CPPTOC_H_ 16057diff --git a/cef/libcef_dll/cpptoc/response_cpptoc.cc b/cef/libcef_dll/cpptoc/response_cpptoc.cc 16058index 369c11779a..1cb1db789f 100644 16059--- a/cef/libcef_dll/cpptoc/response_cpptoc.cc 16060+++ b/cef/libcef_dll/cpptoc/response_cpptoc.cc 16061@@ -1,4 +1,4 @@ 16062-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 16063+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 16064 // reserved. Use of this source code is governed by a BSD-style license that 16065 // can be found in the LICENSE file. 16066 // 16067@@ -9,7 +9,7 @@ 16068 // implementations. See the translator.README.txt file in the tools directory 16069 // for more information. 16070 // 16071-// $hash=7740b26377fd4a31c265028286cbbd209b04fcd9$ 16072+// $hash=1dc0f59d37e6979ba3f431463671f0feefc45c31$ 16073 // 16074 16075 #include "libcef_dll/cpptoc/response_cpptoc.h" 16076diff --git a/cef/libcef_dll/cpptoc/response_cpptoc.h b/cef/libcef_dll/cpptoc/response_cpptoc.h 16077index 00066017f4..209f550a13 100644 16078--- a/cef/libcef_dll/cpptoc/response_cpptoc.h 16079+++ b/cef/libcef_dll/cpptoc/response_cpptoc.h 16080@@ -1,4 +1,4 @@ 16081-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 16082+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 16083 // reserved. Use of this source code is governed by a BSD-style license that 16084 // can be found in the LICENSE file. 16085 // 16086@@ -9,7 +9,7 @@ 16087 // implementations. See the translator.README.txt file in the tools directory 16088 // for more information. 16089 // 16090-// $hash=5ad7427f99c87d5835595d8a5640abc3013fd914$ 16091+// $hash=9bd9fdb8fe353f1af3ac543074cb74b12cdab0c5$ 16092 // 16093 16094 #ifndef CEF_LIBCEF_DLL_CPPTOC_RESPONSE_CPPTOC_H_ 16095diff --git a/cef/libcef_dll/cpptoc/response_filter_cpptoc.cc b/cef/libcef_dll/cpptoc/response_filter_cpptoc.cc 16096index 2f3b88d276..1bc437f06f 100644 16097--- a/cef/libcef_dll/cpptoc/response_filter_cpptoc.cc 16098+++ b/cef/libcef_dll/cpptoc/response_filter_cpptoc.cc 16099@@ -1,4 +1,4 @@ 16100-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 16101+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 16102 // reserved. Use of this source code is governed by a BSD-style license that 16103 // can be found in the LICENSE file. 16104 // 16105@@ -9,7 +9,7 @@ 16106 // implementations. See the translator.README.txt file in the tools directory 16107 // for more information. 16108 // 16109-// $hash=003bbf99e94890b125932370463f311e7c4a7c7f$ 16110+// $hash=b6721a12a6b018187b3ccc87557beb29be130100$ 16111 // 16112 16113 #include "libcef_dll/cpptoc/response_filter_cpptoc.h" 16114diff --git a/cef/libcef_dll/cpptoc/response_filter_cpptoc.h b/cef/libcef_dll/cpptoc/response_filter_cpptoc.h 16115index f97e49b403..b79d579543 100644 16116--- a/cef/libcef_dll/cpptoc/response_filter_cpptoc.h 16117+++ b/cef/libcef_dll/cpptoc/response_filter_cpptoc.h 16118@@ -1,4 +1,4 @@ 16119-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 16120+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 16121 // reserved. Use of this source code is governed by a BSD-style license that 16122 // can be found in the LICENSE file. 16123 // 16124@@ -9,7 +9,7 @@ 16125 // implementations. See the translator.README.txt file in the tools directory 16126 // for more information. 16127 // 16128-// $hash=23d91cdc83bb3c1178929374ffaad52afa34ecf6$ 16129+// $hash=6ef35ca53f2bd4523397d3f56b02ca9b40a811f9$ 16130 // 16131 16132 #ifndef CEF_LIBCEF_DLL_CPPTOC_RESPONSE_FILTER_CPPTOC_H_ 16133diff --git a/cef/libcef_dll/cpptoc/run_context_menu_callback_cpptoc.cc b/cef/libcef_dll/cpptoc/run_context_menu_callback_cpptoc.cc 16134index 4d24d798de..8cf46c8366 100644 16135--- a/cef/libcef_dll/cpptoc/run_context_menu_callback_cpptoc.cc 16136+++ b/cef/libcef_dll/cpptoc/run_context_menu_callback_cpptoc.cc 16137@@ -1,4 +1,4 @@ 16138-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 16139+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 16140 // reserved. Use of this source code is governed by a BSD-style license that 16141 // can be found in the LICENSE file. 16142 // 16143@@ -9,7 +9,7 @@ 16144 // implementations. See the translator.README.txt file in the tools directory 16145 // for more information. 16146 // 16147-// $hash=ac442dda0212dff044db09ad7494390a0f958321$ 16148+// $hash=d76ba7de3a561c71b88250340676e56dc7a9f84a$ 16149 // 16150 16151 #include "libcef_dll/cpptoc/run_context_menu_callback_cpptoc.h" 16152diff --git a/cef/libcef_dll/cpptoc/run_context_menu_callback_cpptoc.h b/cef/libcef_dll/cpptoc/run_context_menu_callback_cpptoc.h 16153index 1c300fa470..20124e44f3 100644 16154--- a/cef/libcef_dll/cpptoc/run_context_menu_callback_cpptoc.h 16155+++ b/cef/libcef_dll/cpptoc/run_context_menu_callback_cpptoc.h 16156@@ -1,4 +1,4 @@ 16157-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 16158+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 16159 // reserved. Use of this source code is governed by a BSD-style license that 16160 // can be found in the LICENSE file. 16161 // 16162@@ -9,7 +9,7 @@ 16163 // implementations. See the translator.README.txt file in the tools directory 16164 // for more information. 16165 // 16166-// $hash=ede8ce9ad59f1ea741c9452efeb265e5526ffd91$ 16167+// $hash=d8003b6de1b89c64b2d5b53ea1665dda982effb9$ 16168 // 16169 16170 #ifndef CEF_LIBCEF_DLL_CPPTOC_RUN_CONTEXT_MENU_CALLBACK_CPPTOC_H_ 16171diff --git a/cef/libcef_dll/cpptoc/run_file_dialog_callback_cpptoc.cc b/cef/libcef_dll/cpptoc/run_file_dialog_callback_cpptoc.cc 16172index 4c37484a8a..33705ecbbf 100644 16173--- a/cef/libcef_dll/cpptoc/run_file_dialog_callback_cpptoc.cc 16174+++ b/cef/libcef_dll/cpptoc/run_file_dialog_callback_cpptoc.cc 16175@@ -1,4 +1,4 @@ 16176-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 16177+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 16178 // reserved. Use of this source code is governed by a BSD-style license that 16179 // can be found in the LICENSE file. 16180 // 16181@@ -9,7 +9,7 @@ 16182 // implementations. See the translator.README.txt file in the tools directory 16183 // for more information. 16184 // 16185-// $hash=3ba417ae0dbb742d60ca1c951b0f7ddb10b6de0f$ 16186+// $hash=2e6aa9015192a3704df073f7dad0c6fa3b05f76c$ 16187 // 16188 16189 #include "libcef_dll/cpptoc/run_file_dialog_callback_cpptoc.h" 16190diff --git a/cef/libcef_dll/cpptoc/run_file_dialog_callback_cpptoc.h b/cef/libcef_dll/cpptoc/run_file_dialog_callback_cpptoc.h 16191index b3daf4e72f..50dc062cb0 100644 16192--- a/cef/libcef_dll/cpptoc/run_file_dialog_callback_cpptoc.h 16193+++ b/cef/libcef_dll/cpptoc/run_file_dialog_callback_cpptoc.h 16194@@ -1,4 +1,4 @@ 16195-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 16196+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 16197 // reserved. Use of this source code is governed by a BSD-style license that 16198 // can be found in the LICENSE file. 16199 // 16200@@ -9,7 +9,7 @@ 16201 // implementations. See the translator.README.txt file in the tools directory 16202 // for more information. 16203 // 16204-// $hash=8ebd2d542077939621bfe048c6bedc20bf3a27dd$ 16205+// $hash=6542e83e5f1a6694575c89e628ee11da17bb6624$ 16206 // 16207 16208 #ifndef CEF_LIBCEF_DLL_CPPTOC_RUN_FILE_DIALOG_CALLBACK_CPPTOC_H_ 16209diff --git a/cef/libcef_dll/cpptoc/scheme_handler_factory_cpptoc.cc b/cef/libcef_dll/cpptoc/scheme_handler_factory_cpptoc.cc 16210index 620197b95c..759f5f9dc1 100644 16211--- a/cef/libcef_dll/cpptoc/scheme_handler_factory_cpptoc.cc 16212+++ b/cef/libcef_dll/cpptoc/scheme_handler_factory_cpptoc.cc 16213@@ -1,4 +1,4 @@ 16214-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 16215+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 16216 // reserved. Use of this source code is governed by a BSD-style license that 16217 // can be found in the LICENSE file. 16218 // 16219@@ -9,7 +9,7 @@ 16220 // implementations. See the translator.README.txt file in the tools directory 16221 // for more information. 16222 // 16223-// $hash=b3509f4fb5121ac3039512c2130c3ca183a16225$ 16224+// $hash=abd81866575f873556b4ae40313ea65c89219756$ 16225 // 16226 16227 #include "libcef_dll/cpptoc/scheme_handler_factory_cpptoc.h" 16228diff --git a/cef/libcef_dll/cpptoc/scheme_handler_factory_cpptoc.h b/cef/libcef_dll/cpptoc/scheme_handler_factory_cpptoc.h 16229index d5be9fd2af..1c442fae76 100644 16230--- a/cef/libcef_dll/cpptoc/scheme_handler_factory_cpptoc.h 16231+++ b/cef/libcef_dll/cpptoc/scheme_handler_factory_cpptoc.h 16232@@ -1,4 +1,4 @@ 16233-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 16234+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 16235 // reserved. Use of this source code is governed by a BSD-style license that 16236 // can be found in the LICENSE file. 16237 // 16238@@ -9,7 +9,7 @@ 16239 // implementations. See the translator.README.txt file in the tools directory 16240 // for more information. 16241 // 16242-// $hash=50876172d9b7287097ba325cabd3376a2ae2c516$ 16243+// $hash=b119c6e375aee04bc83623c73f61b7eb39af16f5$ 16244 // 16245 16246 #ifndef CEF_LIBCEF_DLL_CPPTOC_SCHEME_HANDLER_FACTORY_CPPTOC_H_ 16247diff --git a/cef/libcef_dll/cpptoc/scheme_registrar_cpptoc.cc b/cef/libcef_dll/cpptoc/scheme_registrar_cpptoc.cc 16248index 027ccb45c9..aee5e11789 100644 16249--- a/cef/libcef_dll/cpptoc/scheme_registrar_cpptoc.cc 16250+++ b/cef/libcef_dll/cpptoc/scheme_registrar_cpptoc.cc 16251@@ -1,4 +1,4 @@ 16252-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 16253+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 16254 // reserved. Use of this source code is governed by a BSD-style license that 16255 // can be found in the LICENSE file. 16256 // 16257@@ -9,7 +9,7 @@ 16258 // implementations. See the translator.README.txt file in the tools directory 16259 // for more information. 16260 // 16261-// $hash=fb064c5b9b4ceaecf90c62a1a7e4611564102e0a$ 16262+// $hash=c028de29ae5b48ed41d4e8b8ae3df9a0ee765e14$ 16263 // 16264 16265 #include "libcef_dll/cpptoc/scheme_registrar_cpptoc.h" 16266diff --git a/cef/libcef_dll/cpptoc/scheme_registrar_cpptoc.h b/cef/libcef_dll/cpptoc/scheme_registrar_cpptoc.h 16267index b2c9fcb77a..6f0265be6a 100644 16268--- a/cef/libcef_dll/cpptoc/scheme_registrar_cpptoc.h 16269+++ b/cef/libcef_dll/cpptoc/scheme_registrar_cpptoc.h 16270@@ -1,4 +1,4 @@ 16271-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 16272+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 16273 // reserved. Use of this source code is governed by a BSD-style license that 16274 // can be found in the LICENSE file. 16275 // 16276@@ -9,7 +9,7 @@ 16277 // implementations. See the translator.README.txt file in the tools directory 16278 // for more information. 16279 // 16280-// $hash=6552a6d6837ccb887c480f2843aa1c9293e97908$ 16281+// $hash=f14ceae023fe1f52e53b26edb60667203b919178$ 16282 // 16283 16284 #ifndef CEF_LIBCEF_DLL_CPPTOC_SCHEME_REGISTRAR_CPPTOC_H_ 16285diff --git a/cef/libcef_dll/cpptoc/select_client_certificate_callback_cpptoc.cc b/cef/libcef_dll/cpptoc/select_client_certificate_callback_cpptoc.cc 16286index 7349ed7cc2..d14d94523a 100644 16287--- a/cef/libcef_dll/cpptoc/select_client_certificate_callback_cpptoc.cc 16288+++ b/cef/libcef_dll/cpptoc/select_client_certificate_callback_cpptoc.cc 16289@@ -1,4 +1,4 @@ 16290-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 16291+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 16292 // reserved. Use of this source code is governed by a BSD-style license that 16293 // can be found in the LICENSE file. 16294 // 16295@@ -9,7 +9,7 @@ 16296 // implementations. See the translator.README.txt file in the tools directory 16297 // for more information. 16298 // 16299-// $hash=cad8f1d219443b418638ccd23ebbd67ccb3b8d26$ 16300+// $hash=5017f5bece20966b0972418228301ef32e05f740$ 16301 // 16302 16303 #include "libcef_dll/cpptoc/select_client_certificate_callback_cpptoc.h" 16304diff --git a/cef/libcef_dll/cpptoc/select_client_certificate_callback_cpptoc.h b/cef/libcef_dll/cpptoc/select_client_certificate_callback_cpptoc.h 16305index 912e835923..9905463d3e 100644 16306--- a/cef/libcef_dll/cpptoc/select_client_certificate_callback_cpptoc.h 16307+++ b/cef/libcef_dll/cpptoc/select_client_certificate_callback_cpptoc.h 16308@@ -1,4 +1,4 @@ 16309-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 16310+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 16311 // reserved. Use of this source code is governed by a BSD-style license that 16312 // can be found in the LICENSE file. 16313 // 16314@@ -9,7 +9,7 @@ 16315 // implementations. See the translator.README.txt file in the tools directory 16316 // for more information. 16317 // 16318-// $hash=44e43ff76e1aab77f8cd07fe1e6368adc98e3fbc$ 16319+// $hash=e397708024c85cf066c0b7b76f1fae74b3a3e4d6$ 16320 // 16321 16322 #ifndef CEF_LIBCEF_DLL_CPPTOC_SELECT_CLIENT_CERTIFICATE_CALLBACK_CPPTOC_H_ 16323diff --git a/cef/libcef_dll/cpptoc/server_cpptoc.cc b/cef/libcef_dll/cpptoc/server_cpptoc.cc 16324index 7ddae1814e..f6be3490c7 100644 16325--- a/cef/libcef_dll/cpptoc/server_cpptoc.cc 16326+++ b/cef/libcef_dll/cpptoc/server_cpptoc.cc 16327@@ -1,4 +1,4 @@ 16328-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 16329+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 16330 // reserved. Use of this source code is governed by a BSD-style license that 16331 // can be found in the LICENSE file. 16332 // 16333@@ -9,7 +9,7 @@ 16334 // implementations. See the translator.README.txt file in the tools directory 16335 // for more information. 16336 // 16337-// $hash=ced96d5bbb943e808ada67499a45f9804e14266f$ 16338+// $hash=d0cfc5e4c052a2d1fe43d1c0ae264642db03c04c$ 16339 // 16340 16341 #include "libcef_dll/cpptoc/server_cpptoc.h" 16342diff --git a/cef/libcef_dll/cpptoc/server_cpptoc.h b/cef/libcef_dll/cpptoc/server_cpptoc.h 16343index f3b1745730..fb99d54f7e 100644 16344--- a/cef/libcef_dll/cpptoc/server_cpptoc.h 16345+++ b/cef/libcef_dll/cpptoc/server_cpptoc.h 16346@@ -1,4 +1,4 @@ 16347-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 16348+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 16349 // reserved. Use of this source code is governed by a BSD-style license that 16350 // can be found in the LICENSE file. 16351 // 16352@@ -9,7 +9,7 @@ 16353 // implementations. See the translator.README.txt file in the tools directory 16354 // for more information. 16355 // 16356-// $hash=a9a800064a03237d1656b23f808496eed8027c7b$ 16357+// $hash=a36274939df284287ac49a8ec9321f8188d4fddb$ 16358 // 16359 16360 #ifndef CEF_LIBCEF_DLL_CPPTOC_SERVER_CPPTOC_H_ 16361diff --git a/cef/libcef_dll/cpptoc/server_handler_cpptoc.cc b/cef/libcef_dll/cpptoc/server_handler_cpptoc.cc 16362index e40d14a1d2..2688d1cc03 100644 16363--- a/cef/libcef_dll/cpptoc/server_handler_cpptoc.cc 16364+++ b/cef/libcef_dll/cpptoc/server_handler_cpptoc.cc 16365@@ -1,4 +1,4 @@ 16366-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 16367+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 16368 // reserved. Use of this source code is governed by a BSD-style license that 16369 // can be found in the LICENSE file. 16370 // 16371@@ -9,7 +9,7 @@ 16372 // implementations. See the translator.README.txt file in the tools directory 16373 // for more information. 16374 // 16375-// $hash=db2d9db129a9cb038550aaed5b369fd5966efcff$ 16376+// $hash=2ef239c7779477feb8808f2198e7d2063ab74156$ 16377 // 16378 16379 #include "libcef_dll/cpptoc/server_handler_cpptoc.h" 16380diff --git a/cef/libcef_dll/cpptoc/server_handler_cpptoc.h b/cef/libcef_dll/cpptoc/server_handler_cpptoc.h 16381index 364e2cdf18..a4c951c65a 100644 16382--- a/cef/libcef_dll/cpptoc/server_handler_cpptoc.h 16383+++ b/cef/libcef_dll/cpptoc/server_handler_cpptoc.h 16384@@ -1,4 +1,4 @@ 16385-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 16386+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 16387 // reserved. Use of this source code is governed by a BSD-style license that 16388 // can be found in the LICENSE file. 16389 // 16390@@ -9,7 +9,7 @@ 16391 // implementations. See the translator.README.txt file in the tools directory 16392 // for more information. 16393 // 16394-// $hash=1b89d52363b81a035b7461d182da854d6ffbf8b5$ 16395+// $hash=754575fa090b971fc9105fecda97a407ef0d2484$ 16396 // 16397 16398 #ifndef CEF_LIBCEF_DLL_CPPTOC_SERVER_HANDLER_CPPTOC_H_ 16399diff --git a/cef/libcef_dll/cpptoc/set_cookie_callback_cpptoc.cc b/cef/libcef_dll/cpptoc/set_cookie_callback_cpptoc.cc 16400index 4dfc728fd5..b4beccccd3 100644 16401--- a/cef/libcef_dll/cpptoc/set_cookie_callback_cpptoc.cc 16402+++ b/cef/libcef_dll/cpptoc/set_cookie_callback_cpptoc.cc 16403@@ -1,4 +1,4 @@ 16404-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 16405+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 16406 // reserved. Use of this source code is governed by a BSD-style license that 16407 // can be found in the LICENSE file. 16408 // 16409@@ -9,7 +9,7 @@ 16410 // implementations. See the translator.README.txt file in the tools directory 16411 // for more information. 16412 // 16413-// $hash=6d1a19f985de02d3f1dbefaec252104a308dcdde$ 16414+// $hash=99f02c8911b913161cfd3834e19bbdc0ba542409$ 16415 // 16416 16417 #include "libcef_dll/cpptoc/set_cookie_callback_cpptoc.h" 16418diff --git a/cef/libcef_dll/cpptoc/set_cookie_callback_cpptoc.h b/cef/libcef_dll/cpptoc/set_cookie_callback_cpptoc.h 16419index 645dc7b00d..72e2112499 100644 16420--- a/cef/libcef_dll/cpptoc/set_cookie_callback_cpptoc.h 16421+++ b/cef/libcef_dll/cpptoc/set_cookie_callback_cpptoc.h 16422@@ -1,4 +1,4 @@ 16423-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 16424+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 16425 // reserved. Use of this source code is governed by a BSD-style license that 16426 // can be found in the LICENSE file. 16427 // 16428@@ -9,7 +9,7 @@ 16429 // implementations. See the translator.README.txt file in the tools directory 16430 // for more information. 16431 // 16432-// $hash=f896cf1503ab99f6aead1377eb6b5db0c9d806a2$ 16433+// $hash=3e86bf9e36a3ef63e6777dcafee8847bd4965a60$ 16434 // 16435 16436 #ifndef CEF_LIBCEF_DLL_CPPTOC_SET_COOKIE_CALLBACK_CPPTOC_H_ 16437diff --git a/cef/libcef_dll/cpptoc/sslinfo_cpptoc.cc b/cef/libcef_dll/cpptoc/sslinfo_cpptoc.cc 16438index 275e5ad51e..7251adfda8 100644 16439--- a/cef/libcef_dll/cpptoc/sslinfo_cpptoc.cc 16440+++ b/cef/libcef_dll/cpptoc/sslinfo_cpptoc.cc 16441@@ -1,4 +1,4 @@ 16442-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 16443+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 16444 // reserved. Use of this source code is governed by a BSD-style license that 16445 // can be found in the LICENSE file. 16446 // 16447@@ -9,7 +9,7 @@ 16448 // implementations. See the translator.README.txt file in the tools directory 16449 // for more information. 16450 // 16451-// $hash=22fbf97fe6b133eac83b7bdbd929a9ce04fa0a64$ 16452+// $hash=78b529fc88b9701f7cf8d40097576704b0ef35fc$ 16453 // 16454 16455 #include "libcef_dll/cpptoc/sslinfo_cpptoc.h" 16456diff --git a/cef/libcef_dll/cpptoc/sslinfo_cpptoc.h b/cef/libcef_dll/cpptoc/sslinfo_cpptoc.h 16457index 0fb1b9568b..3dc2625904 100644 16458--- a/cef/libcef_dll/cpptoc/sslinfo_cpptoc.h 16459+++ b/cef/libcef_dll/cpptoc/sslinfo_cpptoc.h 16460@@ -1,4 +1,4 @@ 16461-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 16462+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 16463 // reserved. Use of this source code is governed by a BSD-style license that 16464 // can be found in the LICENSE file. 16465 // 16466@@ -9,7 +9,7 @@ 16467 // implementations. See the translator.README.txt file in the tools directory 16468 // for more information. 16469 // 16470-// $hash=45f9e1bcce252fdb368f20aec89ec3d23c7211a6$ 16471+// $hash=00ab5a37c56c5bd5f14ae97f72338a32615214b7$ 16472 // 16473 16474 #ifndef CEF_LIBCEF_DLL_CPPTOC_SSLINFO_CPPTOC_H_ 16475diff --git a/cef/libcef_dll/cpptoc/sslstatus_cpptoc.cc b/cef/libcef_dll/cpptoc/sslstatus_cpptoc.cc 16476index 69bb8a7cef..92073dfc08 100644 16477--- a/cef/libcef_dll/cpptoc/sslstatus_cpptoc.cc 16478+++ b/cef/libcef_dll/cpptoc/sslstatus_cpptoc.cc 16479@@ -1,4 +1,4 @@ 16480-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 16481+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 16482 // reserved. Use of this source code is governed by a BSD-style license that 16483 // can be found in the LICENSE file. 16484 // 16485@@ -9,7 +9,7 @@ 16486 // implementations. See the translator.README.txt file in the tools directory 16487 // for more information. 16488 // 16489-// $hash=bc0333234bd952d5896be62cb562f2ac92516abc$ 16490+// $hash=8596e5de45842c1e1de8e6377c2b7d932218c370$ 16491 // 16492 16493 #include "libcef_dll/cpptoc/sslstatus_cpptoc.h" 16494diff --git a/cef/libcef_dll/cpptoc/sslstatus_cpptoc.h b/cef/libcef_dll/cpptoc/sslstatus_cpptoc.h 16495index 0ae88ae66a..2d45ad4280 100644 16496--- a/cef/libcef_dll/cpptoc/sslstatus_cpptoc.h 16497+++ b/cef/libcef_dll/cpptoc/sslstatus_cpptoc.h 16498@@ -1,4 +1,4 @@ 16499-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 16500+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 16501 // reserved. Use of this source code is governed by a BSD-style license that 16502 // can be found in the LICENSE file. 16503 // 16504@@ -9,7 +9,7 @@ 16505 // implementations. See the translator.README.txt file in the tools directory 16506 // for more information. 16507 // 16508-// $hash=762fba67b4bb4e4f5a303821bf8a98339afcd502$ 16509+// $hash=8f0a00c305a6defdcbf4caa2ea437cefe49a191f$ 16510 // 16511 16512 #ifndef CEF_LIBCEF_DLL_CPPTOC_SSLSTATUS_CPPTOC_H_ 16513diff --git a/cef/libcef_dll/cpptoc/stream_reader_cpptoc.cc b/cef/libcef_dll/cpptoc/stream_reader_cpptoc.cc 16514index cd68fcd463..3d6b7f7378 100644 16515--- a/cef/libcef_dll/cpptoc/stream_reader_cpptoc.cc 16516+++ b/cef/libcef_dll/cpptoc/stream_reader_cpptoc.cc 16517@@ -1,4 +1,4 @@ 16518-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 16519+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 16520 // reserved. Use of this source code is governed by a BSD-style license that 16521 // can be found in the LICENSE file. 16522 // 16523@@ -9,7 +9,7 @@ 16524 // implementations. See the translator.README.txt file in the tools directory 16525 // for more information. 16526 // 16527-// $hash=b53dc925c532a604ca8b8cf416de165c54a94fc1$ 16528+// $hash=fcbdc299c4f34868f817a9b77777a9b88f3cf07b$ 16529 // 16530 16531 #include "libcef_dll/cpptoc/stream_reader_cpptoc.h" 16532diff --git a/cef/libcef_dll/cpptoc/stream_reader_cpptoc.h b/cef/libcef_dll/cpptoc/stream_reader_cpptoc.h 16533index bc07d1c4dc..df8cc7fd6f 100644 16534--- a/cef/libcef_dll/cpptoc/stream_reader_cpptoc.h 16535+++ b/cef/libcef_dll/cpptoc/stream_reader_cpptoc.h 16536@@ -1,4 +1,4 @@ 16537-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 16538+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 16539 // reserved. Use of this source code is governed by a BSD-style license that 16540 // can be found in the LICENSE file. 16541 // 16542@@ -9,7 +9,7 @@ 16543 // implementations. See the translator.README.txt file in the tools directory 16544 // for more information. 16545 // 16546-// $hash=b1240c638e3fad11bcd2c87d8fc1ca39aee94d3d$ 16547+// $hash=c98bd38e350a4b24d11039a326e8df7fb86bfc75$ 16548 // 16549 16550 #ifndef CEF_LIBCEF_DLL_CPPTOC_STREAM_READER_CPPTOC_H_ 16551diff --git a/cef/libcef_dll/cpptoc/stream_writer_cpptoc.cc b/cef/libcef_dll/cpptoc/stream_writer_cpptoc.cc 16552index 3b0bf72342..d402161f2d 100644 16553--- a/cef/libcef_dll/cpptoc/stream_writer_cpptoc.cc 16554+++ b/cef/libcef_dll/cpptoc/stream_writer_cpptoc.cc 16555@@ -1,4 +1,4 @@ 16556-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 16557+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 16558 // reserved. Use of this source code is governed by a BSD-style license that 16559 // can be found in the LICENSE file. 16560 // 16561@@ -9,7 +9,7 @@ 16562 // implementations. See the translator.README.txt file in the tools directory 16563 // for more information. 16564 // 16565-// $hash=2f0e3b13ebf81334c1fb402c7939b34e4a068969$ 16566+// $hash=ac20659d83a6efb764f3b55756dbc8c686fc5363$ 16567 // 16568 16569 #include "libcef_dll/cpptoc/stream_writer_cpptoc.h" 16570diff --git a/cef/libcef_dll/cpptoc/stream_writer_cpptoc.h b/cef/libcef_dll/cpptoc/stream_writer_cpptoc.h 16571index fbaaf0e987..815bc3feba 100644 16572--- a/cef/libcef_dll/cpptoc/stream_writer_cpptoc.h 16573+++ b/cef/libcef_dll/cpptoc/stream_writer_cpptoc.h 16574@@ -1,4 +1,4 @@ 16575-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 16576+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 16577 // reserved. Use of this source code is governed by a BSD-style license that 16578 // can be found in the LICENSE file. 16579 // 16580@@ -9,7 +9,7 @@ 16581 // implementations. See the translator.README.txt file in the tools directory 16582 // for more information. 16583 // 16584-// $hash=4589904bcfef73d0616a59b9df2745ef29dc70a2$ 16585+// $hash=9204925136614f1d4e4f4609ea6ee30dad0c2782$ 16586 // 16587 16588 #ifndef CEF_LIBCEF_DLL_CPPTOC_STREAM_WRITER_CPPTOC_H_ 16589diff --git a/cef/libcef_dll/cpptoc/string_visitor_cpptoc.cc b/cef/libcef_dll/cpptoc/string_visitor_cpptoc.cc 16590index 9226d3224b..34e6a844d3 100644 16591--- a/cef/libcef_dll/cpptoc/string_visitor_cpptoc.cc 16592+++ b/cef/libcef_dll/cpptoc/string_visitor_cpptoc.cc 16593@@ -1,4 +1,4 @@ 16594-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 16595+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 16596 // reserved. Use of this source code is governed by a BSD-style license that 16597 // can be found in the LICENSE file. 16598 // 16599@@ -9,7 +9,7 @@ 16600 // implementations. See the translator.README.txt file in the tools directory 16601 // for more information. 16602 // 16603-// $hash=b800f03ccea29e0ba32523580a275d272f6c19c3$ 16604+// $hash=cad58a7370ef2b36aacb2fdf527fe1c061f4a868$ 16605 // 16606 16607 #include "libcef_dll/cpptoc/string_visitor_cpptoc.h" 16608diff --git a/cef/libcef_dll/cpptoc/string_visitor_cpptoc.h b/cef/libcef_dll/cpptoc/string_visitor_cpptoc.h 16609index 67562b50ae..672cf3dab8 100644 16610--- a/cef/libcef_dll/cpptoc/string_visitor_cpptoc.h 16611+++ b/cef/libcef_dll/cpptoc/string_visitor_cpptoc.h 16612@@ -1,4 +1,4 @@ 16613-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 16614+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 16615 // reserved. Use of this source code is governed by a BSD-style license that 16616 // can be found in the LICENSE file. 16617 // 16618@@ -9,7 +9,7 @@ 16619 // implementations. See the translator.README.txt file in the tools directory 16620 // for more information. 16621 // 16622-// $hash=57b8950e457e10dfad601f860c417c6d0ad6f17e$ 16623+// $hash=4cf29c1d2d715dee4855acda840ca47d5f1fabbf$ 16624 // 16625 16626 #ifndef CEF_LIBCEF_DLL_CPPTOC_STRING_VISITOR_CPPTOC_H_ 16627diff --git a/cef/libcef_dll/cpptoc/task_cpptoc.cc b/cef/libcef_dll/cpptoc/task_cpptoc.cc 16628index a146568676..ef51cfac7b 100644 16629--- a/cef/libcef_dll/cpptoc/task_cpptoc.cc 16630+++ b/cef/libcef_dll/cpptoc/task_cpptoc.cc 16631@@ -1,4 +1,4 @@ 16632-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 16633+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 16634 // reserved. Use of this source code is governed by a BSD-style license that 16635 // can be found in the LICENSE file. 16636 // 16637@@ -9,7 +9,7 @@ 16638 // implementations. See the translator.README.txt file in the tools directory 16639 // for more information. 16640 // 16641-// $hash=25bdf4853f83cad4c6a52f9c71b1adb844037237$ 16642+// $hash=47bacb389bbb262f0be39b49c5d6251b8bf1c507$ 16643 // 16644 16645 #include "libcef_dll/cpptoc/task_cpptoc.h" 16646diff --git a/cef/libcef_dll/cpptoc/task_cpptoc.h b/cef/libcef_dll/cpptoc/task_cpptoc.h 16647index 41800478e4..cdf9aab98e 100644 16648--- a/cef/libcef_dll/cpptoc/task_cpptoc.h 16649+++ b/cef/libcef_dll/cpptoc/task_cpptoc.h 16650@@ -1,4 +1,4 @@ 16651-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 16652+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 16653 // reserved. Use of this source code is governed by a BSD-style license that 16654 // can be found in the LICENSE file. 16655 // 16656@@ -9,7 +9,7 @@ 16657 // implementations. See the translator.README.txt file in the tools directory 16658 // for more information. 16659 // 16660-// $hash=dc0807d059995b4a761f7a004d5e8b47d065beb7$ 16661+// $hash=a22ba7af43964082c9e8570da140389ca9953a12$ 16662 // 16663 16664 #ifndef CEF_LIBCEF_DLL_CPPTOC_TASK_CPPTOC_H_ 16665diff --git a/cef/libcef_dll/cpptoc/task_runner_cpptoc.cc b/cef/libcef_dll/cpptoc/task_runner_cpptoc.cc 16666index 148cd2b962..435cada85f 100644 16667--- a/cef/libcef_dll/cpptoc/task_runner_cpptoc.cc 16668+++ b/cef/libcef_dll/cpptoc/task_runner_cpptoc.cc 16669@@ -1,4 +1,4 @@ 16670-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 16671+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 16672 // reserved. Use of this source code is governed by a BSD-style license that 16673 // can be found in the LICENSE file. 16674 // 16675@@ -9,7 +9,7 @@ 16676 // implementations. See the translator.README.txt file in the tools directory 16677 // for more information. 16678 // 16679-// $hash=f5eaf3c559833f8ce78d113dda78b190914df6fa$ 16680+// $hash=7c1bd7fe9f9c91bc488299a2278f83a0850befe7$ 16681 // 16682 16683 #include "libcef_dll/cpptoc/task_runner_cpptoc.h" 16684diff --git a/cef/libcef_dll/cpptoc/task_runner_cpptoc.h b/cef/libcef_dll/cpptoc/task_runner_cpptoc.h 16685index 0841ff8cd7..9a8f6ded34 100644 16686--- a/cef/libcef_dll/cpptoc/task_runner_cpptoc.h 16687+++ b/cef/libcef_dll/cpptoc/task_runner_cpptoc.h 16688@@ -1,4 +1,4 @@ 16689-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 16690+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 16691 // reserved. Use of this source code is governed by a BSD-style license that 16692 // can be found in the LICENSE file. 16693 // 16694@@ -9,7 +9,7 @@ 16695 // implementations. See the translator.README.txt file in the tools directory 16696 // for more information. 16697 // 16698-// $hash=1f82d9405dee6f40bc5fe99869e353255948fa66$ 16699+// $hash=3422c7340cee9aaf51c62fa1868b3e665ef34b2f$ 16700 // 16701 16702 #ifndef CEF_LIBCEF_DLL_CPPTOC_TASK_RUNNER_CPPTOC_H_ 16703diff --git a/cef/libcef_dll/cpptoc/test/translator_test_cpptoc.cc b/cef/libcef_dll/cpptoc/test/translator_test_cpptoc.cc 16704index d516caaf6d..8cee6f13d9 100644 16705--- a/cef/libcef_dll/cpptoc/test/translator_test_cpptoc.cc 16706+++ b/cef/libcef_dll/cpptoc/test/translator_test_cpptoc.cc 16707@@ -1,4 +1,4 @@ 16708-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 16709+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 16710 // reserved. Use of this source code is governed by a BSD-style license that 16711 // can be found in the LICENSE file. 16712 // 16713@@ -9,7 +9,7 @@ 16714 // implementations. See the translator.README.txt file in the tools directory 16715 // for more information. 16716 // 16717-// $hash=a102f383e3ecac5237310b2e5aa5b2fd37474188$ 16718+// $hash=63050d13fb457d0d986bb29fe3256158d1e4aac5$ 16719 // 16720 16721 #include "libcef_dll/cpptoc/test/translator_test_cpptoc.h" 16722diff --git a/cef/libcef_dll/cpptoc/test/translator_test_cpptoc.h b/cef/libcef_dll/cpptoc/test/translator_test_cpptoc.h 16723index 0bbf096a1a..60be8a4191 100644 16724--- a/cef/libcef_dll/cpptoc/test/translator_test_cpptoc.h 16725+++ b/cef/libcef_dll/cpptoc/test/translator_test_cpptoc.h 16726@@ -1,4 +1,4 @@ 16727-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 16728+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 16729 // reserved. Use of this source code is governed by a BSD-style license that 16730 // can be found in the LICENSE file. 16731 // 16732@@ -9,7 +9,7 @@ 16733 // implementations. See the translator.README.txt file in the tools directory 16734 // for more information. 16735 // 16736-// $hash=06ab26befdae74cbd76ccd42a03fe8bd081ac526$ 16737+// $hash=aeae16842d711fd6e5d54cd14333d27cbc06c400$ 16738 // 16739 16740 #ifndef CEF_LIBCEF_DLL_CPPTOC_TEST_TRANSLATOR_TEST_CPPTOC_H_ 16741diff --git a/cef/libcef_dll/cpptoc/test/translator_test_ref_ptr_client_child_cpptoc.cc b/cef/libcef_dll/cpptoc/test/translator_test_ref_ptr_client_child_cpptoc.cc 16742index 2feff7fa5e..d3ac64f498 100644 16743--- a/cef/libcef_dll/cpptoc/test/translator_test_ref_ptr_client_child_cpptoc.cc 16744+++ b/cef/libcef_dll/cpptoc/test/translator_test_ref_ptr_client_child_cpptoc.cc 16745@@ -1,4 +1,4 @@ 16746-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 16747+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 16748 // reserved. Use of this source code is governed by a BSD-style license that 16749 // can be found in the LICENSE file. 16750 // 16751@@ -9,7 +9,7 @@ 16752 // implementations. See the translator.README.txt file in the tools directory 16753 // for more information. 16754 // 16755-// $hash=9352a58297b965828c846e704f7beded7b214103$ 16756+// $hash=5eb9ef23f60f99db031e0e3da6cdfc81c979f5ff$ 16757 // 16758 16759 #include "libcef_dll/cpptoc/test/translator_test_ref_ptr_client_child_cpptoc.h" 16760diff --git a/cef/libcef_dll/cpptoc/test/translator_test_ref_ptr_client_child_cpptoc.h b/cef/libcef_dll/cpptoc/test/translator_test_ref_ptr_client_child_cpptoc.h 16761index a32cfbce07..e32aee6a7f 100644 16762--- a/cef/libcef_dll/cpptoc/test/translator_test_ref_ptr_client_child_cpptoc.h 16763+++ b/cef/libcef_dll/cpptoc/test/translator_test_ref_ptr_client_child_cpptoc.h 16764@@ -1,4 +1,4 @@ 16765-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 16766+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 16767 // reserved. Use of this source code is governed by a BSD-style license that 16768 // can be found in the LICENSE file. 16769 // 16770@@ -9,7 +9,7 @@ 16771 // implementations. See the translator.README.txt file in the tools directory 16772 // for more information. 16773 // 16774-// $hash=715c153a19458d1f8b6995f6d73b31a8c713f221$ 16775+// $hash=f84f12aa3e444b6ae98c620147bdacf6c32af8df$ 16776 // 16777 16778 #ifndef CEF_LIBCEF_DLL_CPPTOC_TEST_TRANSLATOR_TEST_REF_PTR_CLIENT_CHILD_CPPTOC_H_ 16779diff --git a/cef/libcef_dll/cpptoc/test/translator_test_ref_ptr_client_cpptoc.cc b/cef/libcef_dll/cpptoc/test/translator_test_ref_ptr_client_cpptoc.cc 16780index 7128c7a5bd..22ddee2c75 100644 16781--- a/cef/libcef_dll/cpptoc/test/translator_test_ref_ptr_client_cpptoc.cc 16782+++ b/cef/libcef_dll/cpptoc/test/translator_test_ref_ptr_client_cpptoc.cc 16783@@ -1,4 +1,4 @@ 16784-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 16785+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 16786 // reserved. Use of this source code is governed by a BSD-style license that 16787 // can be found in the LICENSE file. 16788 // 16789@@ -9,7 +9,7 @@ 16790 // implementations. See the translator.README.txt file in the tools directory 16791 // for more information. 16792 // 16793-// $hash=abf78d6b770cfcdba9a00a7b678a25cae7fcf2c3$ 16794+// $hash=f331b4d8e20683281cee5cf873950c236fc6cffd$ 16795 // 16796 16797 #include "libcef_dll/cpptoc/test/translator_test_ref_ptr_client_cpptoc.h" 16798diff --git a/cef/libcef_dll/cpptoc/test/translator_test_ref_ptr_client_cpptoc.h b/cef/libcef_dll/cpptoc/test/translator_test_ref_ptr_client_cpptoc.h 16799index 1622b3311e..2f752aed77 100644 16800--- a/cef/libcef_dll/cpptoc/test/translator_test_ref_ptr_client_cpptoc.h 16801+++ b/cef/libcef_dll/cpptoc/test/translator_test_ref_ptr_client_cpptoc.h 16802@@ -1,4 +1,4 @@ 16803-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 16804+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 16805 // reserved. Use of this source code is governed by a BSD-style license that 16806 // can be found in the LICENSE file. 16807 // 16808@@ -9,7 +9,7 @@ 16809 // implementations. See the translator.README.txt file in the tools directory 16810 // for more information. 16811 // 16812-// $hash=fc78ce1822a50d514a9de65ff76bc9d7784fb73c$ 16813+// $hash=abcdf3e219cfeac25ddf87a82c173189d0707bbd$ 16814 // 16815 16816 #ifndef CEF_LIBCEF_DLL_CPPTOC_TEST_TRANSLATOR_TEST_REF_PTR_CLIENT_CPPTOC_H_ 16817diff --git a/cef/libcef_dll/cpptoc/test/translator_test_ref_ptr_library_child_child_cpptoc.cc b/cef/libcef_dll/cpptoc/test/translator_test_ref_ptr_library_child_child_cpptoc.cc 16818index 35d051454e..2709126202 100644 16819--- a/cef/libcef_dll/cpptoc/test/translator_test_ref_ptr_library_child_child_cpptoc.cc 16820+++ b/cef/libcef_dll/cpptoc/test/translator_test_ref_ptr_library_child_child_cpptoc.cc 16821@@ -1,4 +1,4 @@ 16822-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 16823+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 16824 // reserved. Use of this source code is governed by a BSD-style license that 16825 // can be found in the LICENSE file. 16826 // 16827@@ -9,7 +9,7 @@ 16828 // implementations. See the translator.README.txt file in the tools directory 16829 // for more information. 16830 // 16831-// $hash=18a2293805270394a2f06cdef8506f35ce7fff80$ 16832+// $hash=693175fcf035e056074e56a8a5e39e3f5d1c218d$ 16833 // 16834 16835 #include "libcef_dll/cpptoc/test/translator_test_ref_ptr_library_child_child_cpptoc.h" 16836diff --git a/cef/libcef_dll/cpptoc/test/translator_test_ref_ptr_library_child_child_cpptoc.h b/cef/libcef_dll/cpptoc/test/translator_test_ref_ptr_library_child_child_cpptoc.h 16837index 417db8ed74..f9c3a09381 100644 16838--- a/cef/libcef_dll/cpptoc/test/translator_test_ref_ptr_library_child_child_cpptoc.h 16839+++ b/cef/libcef_dll/cpptoc/test/translator_test_ref_ptr_library_child_child_cpptoc.h 16840@@ -1,4 +1,4 @@ 16841-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 16842+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 16843 // reserved. Use of this source code is governed by a BSD-style license that 16844 // can be found in the LICENSE file. 16845 // 16846@@ -9,7 +9,7 @@ 16847 // implementations. See the translator.README.txt file in the tools directory 16848 // for more information. 16849 // 16850-// $hash=c2b113097543bc9deab538235114a6b3e8aa4d9c$ 16851+// $hash=602040c56e366821ec632f5675d22d5b1787d046$ 16852 // 16853 16854 #ifndef CEF_LIBCEF_DLL_CPPTOC_TEST_TRANSLATOR_TEST_REF_PTR_LIBRARY_CHILD_CHILD_CPPTOC_H_ 16855diff --git a/cef/libcef_dll/cpptoc/test/translator_test_ref_ptr_library_child_cpptoc.cc b/cef/libcef_dll/cpptoc/test/translator_test_ref_ptr_library_child_cpptoc.cc 16856index 524a7654e8..b807842346 100644 16857--- a/cef/libcef_dll/cpptoc/test/translator_test_ref_ptr_library_child_cpptoc.cc 16858+++ b/cef/libcef_dll/cpptoc/test/translator_test_ref_ptr_library_child_cpptoc.cc 16859@@ -1,4 +1,4 @@ 16860-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 16861+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 16862 // reserved. Use of this source code is governed by a BSD-style license that 16863 // can be found in the LICENSE file. 16864 // 16865@@ -9,7 +9,7 @@ 16866 // implementations. See the translator.README.txt file in the tools directory 16867 // for more information. 16868 // 16869-// $hash=3e59ef1f14df516b26d02d1e01e9866a5028480f$ 16870+// $hash=8331f68f4339fbe375428550af8c793d455ef432$ 16871 // 16872 16873 #include "libcef_dll/cpptoc/test/translator_test_ref_ptr_library_child_cpptoc.h" 16874diff --git a/cef/libcef_dll/cpptoc/test/translator_test_ref_ptr_library_child_cpptoc.h b/cef/libcef_dll/cpptoc/test/translator_test_ref_ptr_library_child_cpptoc.h 16875index ad18fc52fd..a95b9af96f 100644 16876--- a/cef/libcef_dll/cpptoc/test/translator_test_ref_ptr_library_child_cpptoc.h 16877+++ b/cef/libcef_dll/cpptoc/test/translator_test_ref_ptr_library_child_cpptoc.h 16878@@ -1,4 +1,4 @@ 16879-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 16880+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 16881 // reserved. Use of this source code is governed by a BSD-style license that 16882 // can be found in the LICENSE file. 16883 // 16884@@ -9,7 +9,7 @@ 16885 // implementations. See the translator.README.txt file in the tools directory 16886 // for more information. 16887 // 16888-// $hash=e85638774b8efd48be23c487a32360017b6525a5$ 16889+// $hash=80d99f15db9d7a39f51b24769104d2daeb100ef7$ 16890 // 16891 16892 #ifndef CEF_LIBCEF_DLL_CPPTOC_TEST_TRANSLATOR_TEST_REF_PTR_LIBRARY_CHILD_CPPTOC_H_ 16893diff --git a/cef/libcef_dll/cpptoc/test/translator_test_ref_ptr_library_cpptoc.cc b/cef/libcef_dll/cpptoc/test/translator_test_ref_ptr_library_cpptoc.cc 16894index 0b3e3fca07..b0a9754827 100644 16895--- a/cef/libcef_dll/cpptoc/test/translator_test_ref_ptr_library_cpptoc.cc 16896+++ b/cef/libcef_dll/cpptoc/test/translator_test_ref_ptr_library_cpptoc.cc 16897@@ -1,4 +1,4 @@ 16898-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 16899+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 16900 // reserved. Use of this source code is governed by a BSD-style license that 16901 // can be found in the LICENSE file. 16902 // 16903@@ -9,7 +9,7 @@ 16904 // implementations. See the translator.README.txt file in the tools directory 16905 // for more information. 16906 // 16907-// $hash=9f1aa8c20ec6f5e8a9805a101de3105ae9482013$ 16908+// $hash=215ecf50a38a26a660ebd9c9784ddba9ef9ac336$ 16909 // 16910 16911 #include "libcef_dll/cpptoc/test/translator_test_ref_ptr_library_cpptoc.h" 16912diff --git a/cef/libcef_dll/cpptoc/test/translator_test_ref_ptr_library_cpptoc.h b/cef/libcef_dll/cpptoc/test/translator_test_ref_ptr_library_cpptoc.h 16913index 9b725cf852..c0011d3ce7 100644 16914--- a/cef/libcef_dll/cpptoc/test/translator_test_ref_ptr_library_cpptoc.h 16915+++ b/cef/libcef_dll/cpptoc/test/translator_test_ref_ptr_library_cpptoc.h 16916@@ -1,4 +1,4 @@ 16917-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 16918+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 16919 // reserved. Use of this source code is governed by a BSD-style license that 16920 // can be found in the LICENSE file. 16921 // 16922@@ -9,7 +9,7 @@ 16923 // implementations. See the translator.README.txt file in the tools directory 16924 // for more information. 16925 // 16926-// $hash=56ebac8344629561284cf0eb12fe32faaec5e015$ 16927+// $hash=cf13344b75658fdc4d727598a1ca9cf1d2d9aebe$ 16928 // 16929 16930 #ifndef CEF_LIBCEF_DLL_CPPTOC_TEST_TRANSLATOR_TEST_REF_PTR_LIBRARY_CPPTOC_H_ 16931diff --git a/cef/libcef_dll/cpptoc/test/translator_test_scoped_client_child_cpptoc.cc b/cef/libcef_dll/cpptoc/test/translator_test_scoped_client_child_cpptoc.cc 16932index 5222856249..6912405ebf 100644 16933--- a/cef/libcef_dll/cpptoc/test/translator_test_scoped_client_child_cpptoc.cc 16934+++ b/cef/libcef_dll/cpptoc/test/translator_test_scoped_client_child_cpptoc.cc 16935@@ -1,4 +1,4 @@ 16936-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 16937+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 16938 // reserved. Use of this source code is governed by a BSD-style license that 16939 // can be found in the LICENSE file. 16940 // 16941@@ -9,7 +9,7 @@ 16942 // implementations. See the translator.README.txt file in the tools directory 16943 // for more information. 16944 // 16945-// $hash=6ad6a0fbc8d5de1c2cb88d782387091957306c09$ 16946+// $hash=ba3de8f4ffca578355877eb66e19a61e337fab63$ 16947 // 16948 16949 #include "libcef_dll/cpptoc/test/translator_test_scoped_client_child_cpptoc.h" 16950diff --git a/cef/libcef_dll/cpptoc/test/translator_test_scoped_client_child_cpptoc.h b/cef/libcef_dll/cpptoc/test/translator_test_scoped_client_child_cpptoc.h 16951index f90aea1ae5..afb925f57f 100644 16952--- a/cef/libcef_dll/cpptoc/test/translator_test_scoped_client_child_cpptoc.h 16953+++ b/cef/libcef_dll/cpptoc/test/translator_test_scoped_client_child_cpptoc.h 16954@@ -1,4 +1,4 @@ 16955-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 16956+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 16957 // reserved. Use of this source code is governed by a BSD-style license that 16958 // can be found in the LICENSE file. 16959 // 16960@@ -9,7 +9,7 @@ 16961 // implementations. See the translator.README.txt file in the tools directory 16962 // for more information. 16963 // 16964-// $hash=f581abe3c376579f1a5ad8ca89ea30b31bc47e04$ 16965+// $hash=3a46ac0b98d0a79f8506ffc09a5c3cdcca353f29$ 16966 // 16967 16968 #ifndef CEF_LIBCEF_DLL_CPPTOC_TEST_TRANSLATOR_TEST_SCOPED_CLIENT_CHILD_CPPTOC_H_ 16969diff --git a/cef/libcef_dll/cpptoc/test/translator_test_scoped_client_cpptoc.cc b/cef/libcef_dll/cpptoc/test/translator_test_scoped_client_cpptoc.cc 16970index b1f60a6486..ca2550d5e7 100644 16971--- a/cef/libcef_dll/cpptoc/test/translator_test_scoped_client_cpptoc.cc 16972+++ b/cef/libcef_dll/cpptoc/test/translator_test_scoped_client_cpptoc.cc 16973@@ -1,4 +1,4 @@ 16974-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 16975+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 16976 // reserved. Use of this source code is governed by a BSD-style license that 16977 // can be found in the LICENSE file. 16978 // 16979@@ -9,7 +9,7 @@ 16980 // implementations. See the translator.README.txt file in the tools directory 16981 // for more information. 16982 // 16983-// $hash=7fbfdb7d8fd3b7e41ba55f2138e9752f301a2438$ 16984+// $hash=e3323b5409f3d5e9832687e6a248cf62423c3f61$ 16985 // 16986 16987 #include "libcef_dll/cpptoc/test/translator_test_scoped_client_cpptoc.h" 16988diff --git a/cef/libcef_dll/cpptoc/test/translator_test_scoped_client_cpptoc.h b/cef/libcef_dll/cpptoc/test/translator_test_scoped_client_cpptoc.h 16989index b54885e5d7..591e1c7c41 100644 16990--- a/cef/libcef_dll/cpptoc/test/translator_test_scoped_client_cpptoc.h 16991+++ b/cef/libcef_dll/cpptoc/test/translator_test_scoped_client_cpptoc.h 16992@@ -1,4 +1,4 @@ 16993-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 16994+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 16995 // reserved. Use of this source code is governed by a BSD-style license that 16996 // can be found in the LICENSE file. 16997 // 16998@@ -9,7 +9,7 @@ 16999 // implementations. See the translator.README.txt file in the tools directory 17000 // for more information. 17001 // 17002-// $hash=40e35e75e19b912885f7369554f9e1b6b3e3ae8f$ 17003+// $hash=c639d2f671cbfeb508e95a481c0d81ee92b87c29$ 17004 // 17005 17006 #ifndef CEF_LIBCEF_DLL_CPPTOC_TEST_TRANSLATOR_TEST_SCOPED_CLIENT_CPPTOC_H_ 17007diff --git a/cef/libcef_dll/cpptoc/test/translator_test_scoped_library_child_child_cpptoc.cc b/cef/libcef_dll/cpptoc/test/translator_test_scoped_library_child_child_cpptoc.cc 17008index 22cd0629b4..e9fa6be980 100644 17009--- a/cef/libcef_dll/cpptoc/test/translator_test_scoped_library_child_child_cpptoc.cc 17010+++ b/cef/libcef_dll/cpptoc/test/translator_test_scoped_library_child_child_cpptoc.cc 17011@@ -1,4 +1,4 @@ 17012-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 17013+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 17014 // reserved. Use of this source code is governed by a BSD-style license that 17015 // can be found in the LICENSE file. 17016 // 17017@@ -9,7 +9,7 @@ 17018 // implementations. See the translator.README.txt file in the tools directory 17019 // for more information. 17020 // 17021-// $hash=2f64a37b4735c7d91035aec2fffa263d7d27942b$ 17022+// $hash=87acc501bb139036eaf90bf24f0a2863fe43de7c$ 17023 // 17024 17025 #include "libcef_dll/cpptoc/test/translator_test_scoped_library_child_child_cpptoc.h" 17026diff --git a/cef/libcef_dll/cpptoc/test/translator_test_scoped_library_child_child_cpptoc.h b/cef/libcef_dll/cpptoc/test/translator_test_scoped_library_child_child_cpptoc.h 17027index 138e884895..104f2992ef 100644 17028--- a/cef/libcef_dll/cpptoc/test/translator_test_scoped_library_child_child_cpptoc.h 17029+++ b/cef/libcef_dll/cpptoc/test/translator_test_scoped_library_child_child_cpptoc.h 17030@@ -1,4 +1,4 @@ 17031-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 17032+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 17033 // reserved. Use of this source code is governed by a BSD-style license that 17034 // can be found in the LICENSE file. 17035 // 17036@@ -9,7 +9,7 @@ 17037 // implementations. See the translator.README.txt file in the tools directory 17038 // for more information. 17039 // 17040-// $hash=44bb5b309ca442edd3dc1cb71d4bb645a8d3f96a$ 17041+// $hash=26db238e377ea4db7b6c005d00dcaf270be64ce6$ 17042 // 17043 17044 #ifndef CEF_LIBCEF_DLL_CPPTOC_TEST_TRANSLATOR_TEST_SCOPED_LIBRARY_CHILD_CHILD_CPPTOC_H_ 17045diff --git a/cef/libcef_dll/cpptoc/test/translator_test_scoped_library_child_cpptoc.cc b/cef/libcef_dll/cpptoc/test/translator_test_scoped_library_child_cpptoc.cc 17046index 63ecd5eba6..9fab61ec60 100644 17047--- a/cef/libcef_dll/cpptoc/test/translator_test_scoped_library_child_cpptoc.cc 17048+++ b/cef/libcef_dll/cpptoc/test/translator_test_scoped_library_child_cpptoc.cc 17049@@ -1,4 +1,4 @@ 17050-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 17051+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 17052 // reserved. Use of this source code is governed by a BSD-style license that 17053 // can be found in the LICENSE file. 17054 // 17055@@ -9,7 +9,7 @@ 17056 // implementations. See the translator.README.txt file in the tools directory 17057 // for more information. 17058 // 17059-// $hash=cd7a42714195bed68aef8a200c7e1a38681558f2$ 17060+// $hash=3899a0ed70d6fa40bbce192abd0ab7d63f8926e7$ 17061 // 17062 17063 #include "libcef_dll/cpptoc/test/translator_test_scoped_library_child_cpptoc.h" 17064diff --git a/cef/libcef_dll/cpptoc/test/translator_test_scoped_library_child_cpptoc.h b/cef/libcef_dll/cpptoc/test/translator_test_scoped_library_child_cpptoc.h 17065index 71f69b780b..b6ee58dab1 100644 17066--- a/cef/libcef_dll/cpptoc/test/translator_test_scoped_library_child_cpptoc.h 17067+++ b/cef/libcef_dll/cpptoc/test/translator_test_scoped_library_child_cpptoc.h 17068@@ -1,4 +1,4 @@ 17069-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 17070+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 17071 // reserved. Use of this source code is governed by a BSD-style license that 17072 // can be found in the LICENSE file. 17073 // 17074@@ -9,7 +9,7 @@ 17075 // implementations. See the translator.README.txt file in the tools directory 17076 // for more information. 17077 // 17078-// $hash=71c2cd8bad04a8155d6ee8cc60814d251d237732$ 17079+// $hash=87924524eab4c309d13dc3e9656c601fd65c7449$ 17080 // 17081 17082 #ifndef CEF_LIBCEF_DLL_CPPTOC_TEST_TRANSLATOR_TEST_SCOPED_LIBRARY_CHILD_CPPTOC_H_ 17083diff --git a/cef/libcef_dll/cpptoc/test/translator_test_scoped_library_cpptoc.cc b/cef/libcef_dll/cpptoc/test/translator_test_scoped_library_cpptoc.cc 17084index d07e594748..55ef550925 100644 17085--- a/cef/libcef_dll/cpptoc/test/translator_test_scoped_library_cpptoc.cc 17086+++ b/cef/libcef_dll/cpptoc/test/translator_test_scoped_library_cpptoc.cc 17087@@ -1,4 +1,4 @@ 17088-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 17089+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 17090 // reserved. Use of this source code is governed by a BSD-style license that 17091 // can be found in the LICENSE file. 17092 // 17093@@ -9,7 +9,7 @@ 17094 // implementations. See the translator.README.txt file in the tools directory 17095 // for more information. 17096 // 17097-// $hash=9e0c499cc30e7e762de3d5969ab6795ec50ffc08$ 17098+// $hash=fdee62d52347780efcf7fd71b80df6188ce96dc0$ 17099 // 17100 17101 #include "libcef_dll/cpptoc/test/translator_test_scoped_library_cpptoc.h" 17102diff --git a/cef/libcef_dll/cpptoc/test/translator_test_scoped_library_cpptoc.h b/cef/libcef_dll/cpptoc/test/translator_test_scoped_library_cpptoc.h 17103index f5a08f0b9b..dbdd75ed09 100644 17104--- a/cef/libcef_dll/cpptoc/test/translator_test_scoped_library_cpptoc.h 17105+++ b/cef/libcef_dll/cpptoc/test/translator_test_scoped_library_cpptoc.h 17106@@ -1,4 +1,4 @@ 17107-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 17108+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 17109 // reserved. Use of this source code is governed by a BSD-style license that 17110 // can be found in the LICENSE file. 17111 // 17112@@ -9,7 +9,7 @@ 17113 // implementations. See the translator.README.txt file in the tools directory 17114 // for more information. 17115 // 17116-// $hash=23092b277a91aadd4a0bf09f96def851e1ecc10b$ 17117+// $hash=43b0a0576a86ba1d2dda27c83af22554da773221$ 17118 // 17119 17120 #ifndef CEF_LIBCEF_DLL_CPPTOC_TEST_TRANSLATOR_TEST_SCOPED_LIBRARY_CPPTOC_H_ 17121diff --git a/cef/libcef_dll/cpptoc/thread_cpptoc.cc b/cef/libcef_dll/cpptoc/thread_cpptoc.cc 17122index 93fdf2ff1e..b48ba593ce 100644 17123--- a/cef/libcef_dll/cpptoc/thread_cpptoc.cc 17124+++ b/cef/libcef_dll/cpptoc/thread_cpptoc.cc 17125@@ -1,4 +1,4 @@ 17126-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 17127+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 17128 // reserved. Use of this source code is governed by a BSD-style license that 17129 // can be found in the LICENSE file. 17130 // 17131@@ -9,7 +9,7 @@ 17132 // implementations. See the translator.README.txt file in the tools directory 17133 // for more information. 17134 // 17135-// $hash=76c1b0d469d69125099c72250f1882d5ac9dd6c3$ 17136+// $hash=9975067d09206080d5237a7d1e8dd70155deb554$ 17137 // 17138 17139 #include "libcef_dll/cpptoc/thread_cpptoc.h" 17140diff --git a/cef/libcef_dll/cpptoc/thread_cpptoc.h b/cef/libcef_dll/cpptoc/thread_cpptoc.h 17141index a22025a403..66da3dbc79 100644 17142--- a/cef/libcef_dll/cpptoc/thread_cpptoc.h 17143+++ b/cef/libcef_dll/cpptoc/thread_cpptoc.h 17144@@ -1,4 +1,4 @@ 17145-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 17146+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 17147 // reserved. Use of this source code is governed by a BSD-style license that 17148 // can be found in the LICENSE file. 17149 // 17150@@ -9,7 +9,7 @@ 17151 // implementations. See the translator.README.txt file in the tools directory 17152 // for more information. 17153 // 17154-// $hash=bc01937181dbc0a88c396039a65927282bfb7c2d$ 17155+// $hash=820a6a8e017c6ba2a19f5c0b8db0f8aa628a0cfa$ 17156 // 17157 17158 #ifndef CEF_LIBCEF_DLL_CPPTOC_THREAD_CPPTOC_H_ 17159diff --git a/cef/libcef_dll/cpptoc/urlrequest_client_cpptoc.cc b/cef/libcef_dll/cpptoc/urlrequest_client_cpptoc.cc 17160index 80235e4d89..dc44527004 100644 17161--- a/cef/libcef_dll/cpptoc/urlrequest_client_cpptoc.cc 17162+++ b/cef/libcef_dll/cpptoc/urlrequest_client_cpptoc.cc 17163@@ -1,4 +1,4 @@ 17164-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 17165+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 17166 // reserved. Use of this source code is governed by a BSD-style license that 17167 // can be found in the LICENSE file. 17168 // 17169@@ -9,7 +9,7 @@ 17170 // implementations. See the translator.README.txt file in the tools directory 17171 // for more information. 17172 // 17173-// $hash=1eada3207c7afba6965694bf87faff6839c1d955$ 17174+// $hash=db92b5330f0b984051a202144f77b389501a260e$ 17175 // 17176 17177 #include "libcef_dll/cpptoc/urlrequest_client_cpptoc.h" 17178diff --git a/cef/libcef_dll/cpptoc/urlrequest_client_cpptoc.h b/cef/libcef_dll/cpptoc/urlrequest_client_cpptoc.h 17179index 863723cfe4..085a600082 100644 17180--- a/cef/libcef_dll/cpptoc/urlrequest_client_cpptoc.h 17181+++ b/cef/libcef_dll/cpptoc/urlrequest_client_cpptoc.h 17182@@ -1,4 +1,4 @@ 17183-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 17184+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 17185 // reserved. Use of this source code is governed by a BSD-style license that 17186 // can be found in the LICENSE file. 17187 // 17188@@ -9,7 +9,7 @@ 17189 // implementations. See the translator.README.txt file in the tools directory 17190 // for more information. 17191 // 17192-// $hash=bf2501304e3a0c929b83b1a50bd62a6535183dd2$ 17193+// $hash=6ab5f8f6ff4a68382bd5e239ad2c8e2c12c39c6d$ 17194 // 17195 17196 #ifndef CEF_LIBCEF_DLL_CPPTOC_URLREQUEST_CLIENT_CPPTOC_H_ 17197diff --git a/cef/libcef_dll/cpptoc/urlrequest_cpptoc.cc b/cef/libcef_dll/cpptoc/urlrequest_cpptoc.cc 17198index 9c75f2152f..805b66a820 100644 17199--- a/cef/libcef_dll/cpptoc/urlrequest_cpptoc.cc 17200+++ b/cef/libcef_dll/cpptoc/urlrequest_cpptoc.cc 17201@@ -1,4 +1,4 @@ 17202-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 17203+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 17204 // reserved. Use of this source code is governed by a BSD-style license that 17205 // can be found in the LICENSE file. 17206 // 17207@@ -9,7 +9,7 @@ 17208 // implementations. See the translator.README.txt file in the tools directory 17209 // for more information. 17210 // 17211-// $hash=babedf1f88ab9ebee69197984318ec63d68cbe17$ 17212+// $hash=6193670d2d0577eaf226bd1825cde7b3f70c0f68$ 17213 // 17214 17215 #include "libcef_dll/cpptoc/urlrequest_cpptoc.h" 17216diff --git a/cef/libcef_dll/cpptoc/urlrequest_cpptoc.h b/cef/libcef_dll/cpptoc/urlrequest_cpptoc.h 17217index c8595c3b84..b798d65885 100644 17218--- a/cef/libcef_dll/cpptoc/urlrequest_cpptoc.h 17219+++ b/cef/libcef_dll/cpptoc/urlrequest_cpptoc.h 17220@@ -1,4 +1,4 @@ 17221-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 17222+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 17223 // reserved. Use of this source code is governed by a BSD-style license that 17224 // can be found in the LICENSE file. 17225 // 17226@@ -9,7 +9,7 @@ 17227 // implementations. See the translator.README.txt file in the tools directory 17228 // for more information. 17229 // 17230-// $hash=4c2ae733562688b1dcd04b328a16c109125d00b0$ 17231+// $hash=1902918d90c40d3b524c0f7adcb56dc9a565df4d$ 17232 // 17233 17234 #ifndef CEF_LIBCEF_DLL_CPPTOC_URLREQUEST_CPPTOC_H_ 17235diff --git a/cef/libcef_dll/cpptoc/v8accessor_cpptoc.cc b/cef/libcef_dll/cpptoc/v8accessor_cpptoc.cc 17236index 7d4e5ed419..a6bfe77e3b 100644 17237--- a/cef/libcef_dll/cpptoc/v8accessor_cpptoc.cc 17238+++ b/cef/libcef_dll/cpptoc/v8accessor_cpptoc.cc 17239@@ -1,4 +1,4 @@ 17240-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 17241+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 17242 // reserved. Use of this source code is governed by a BSD-style license that 17243 // can be found in the LICENSE file. 17244 // 17245@@ -9,7 +9,7 @@ 17246 // implementations. See the translator.README.txt file in the tools directory 17247 // for more information. 17248 // 17249-// $hash=2154b968dc696995bce9e9f1e99078196cc75070$ 17250+// $hash=35161ccb0b72898e250d905b4b245b4839fe7ecc$ 17251 // 17252 17253 #include "libcef_dll/cpptoc/v8accessor_cpptoc.h" 17254diff --git a/cef/libcef_dll/cpptoc/v8accessor_cpptoc.h b/cef/libcef_dll/cpptoc/v8accessor_cpptoc.h 17255index ed351000b9..dd68c064bb 100644 17256--- a/cef/libcef_dll/cpptoc/v8accessor_cpptoc.h 17257+++ b/cef/libcef_dll/cpptoc/v8accessor_cpptoc.h 17258@@ -1,4 +1,4 @@ 17259-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 17260+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 17261 // reserved. Use of this source code is governed by a BSD-style license that 17262 // can be found in the LICENSE file. 17263 // 17264@@ -9,7 +9,7 @@ 17265 // implementations. See the translator.README.txt file in the tools directory 17266 // for more information. 17267 // 17268-// $hash=3c32ab7ccf4b9d152086d2cdab33a6a818faa359$ 17269+// $hash=cbf062496a14d367e643c3e52afd460df4176fde$ 17270 // 17271 17272 #ifndef CEF_LIBCEF_DLL_CPPTOC_V8ACCESSOR_CPPTOC_H_ 17273diff --git a/cef/libcef_dll/cpptoc/v8array_buffer_release_callback_cpptoc.cc b/cef/libcef_dll/cpptoc/v8array_buffer_release_callback_cpptoc.cc 17274index 620c41d57d..9c5e28070d 100644 17275--- a/cef/libcef_dll/cpptoc/v8array_buffer_release_callback_cpptoc.cc 17276+++ b/cef/libcef_dll/cpptoc/v8array_buffer_release_callback_cpptoc.cc 17277@@ -1,4 +1,4 @@ 17278-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 17279+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 17280 // reserved. Use of this source code is governed by a BSD-style license that 17281 // can be found in the LICENSE file. 17282 // 17283@@ -9,7 +9,7 @@ 17284 // implementations. See the translator.README.txt file in the tools directory 17285 // for more information. 17286 // 17287-// $hash=1368f0e4f6a8f5cac7b4d78f4ff6e1db59270635$ 17288+// $hash=0a7885c5553c99c1ff7539c8aba3a340aa6f3d08$ 17289 // 17290 17291 #include "libcef_dll/cpptoc/v8array_buffer_release_callback_cpptoc.h" 17292diff --git a/cef/libcef_dll/cpptoc/v8array_buffer_release_callback_cpptoc.h b/cef/libcef_dll/cpptoc/v8array_buffer_release_callback_cpptoc.h 17293index 166e1b553a..a5b0463b7b 100644 17294--- a/cef/libcef_dll/cpptoc/v8array_buffer_release_callback_cpptoc.h 17295+++ b/cef/libcef_dll/cpptoc/v8array_buffer_release_callback_cpptoc.h 17296@@ -1,4 +1,4 @@ 17297-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 17298+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 17299 // reserved. Use of this source code is governed by a BSD-style license that 17300 // can be found in the LICENSE file. 17301 // 17302@@ -9,7 +9,7 @@ 17303 // implementations. See the translator.README.txt file in the tools directory 17304 // for more information. 17305 // 17306-// $hash=f81c22987c573f1f41e87bf1476d485da44b7161$ 17307+// $hash=aa87e37fdfa915cb160cb4b7577c46b9e903a698$ 17308 // 17309 17310 #ifndef CEF_LIBCEF_DLL_CPPTOC_V8ARRAY_BUFFER_RELEASE_CALLBACK_CPPTOC_H_ 17311diff --git a/cef/libcef_dll/cpptoc/v8context_cpptoc.cc b/cef/libcef_dll/cpptoc/v8context_cpptoc.cc 17312index 26e674ced9..fc02f3c249 100644 17313--- a/cef/libcef_dll/cpptoc/v8context_cpptoc.cc 17314+++ b/cef/libcef_dll/cpptoc/v8context_cpptoc.cc 17315@@ -1,4 +1,4 @@ 17316-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 17317+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 17318 // reserved. Use of this source code is governed by a BSD-style license that 17319 // can be found in the LICENSE file. 17320 // 17321@@ -9,7 +9,7 @@ 17322 // implementations. See the translator.README.txt file in the tools directory 17323 // for more information. 17324 // 17325-// $hash=82140c8c02aa0cf379737c20e86ba64e2f190307$ 17326+// $hash=5fb43e3f68ef5f431fe6d6f84d399dc0cd292d7d$ 17327 // 17328 17329 #include "libcef_dll/cpptoc/v8context_cpptoc.h" 17330diff --git a/cef/libcef_dll/cpptoc/v8context_cpptoc.h b/cef/libcef_dll/cpptoc/v8context_cpptoc.h 17331index 5831969363..073ea9e248 100644 17332--- a/cef/libcef_dll/cpptoc/v8context_cpptoc.h 17333+++ b/cef/libcef_dll/cpptoc/v8context_cpptoc.h 17334@@ -1,4 +1,4 @@ 17335-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 17336+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 17337 // reserved. Use of this source code is governed by a BSD-style license that 17338 // can be found in the LICENSE file. 17339 // 17340@@ -9,7 +9,7 @@ 17341 // implementations. See the translator.README.txt file in the tools directory 17342 // for more information. 17343 // 17344-// $hash=f784e9bcdfef9208ebec6b7668cbb159937f31d5$ 17345+// $hash=e0d02da9f3e8216559bd80e50b0e3d061455b0af$ 17346 // 17347 17348 #ifndef CEF_LIBCEF_DLL_CPPTOC_V8CONTEXT_CPPTOC_H_ 17349diff --git a/cef/libcef_dll/cpptoc/v8exception_cpptoc.cc b/cef/libcef_dll/cpptoc/v8exception_cpptoc.cc 17350index d8c779c77b..c142b061d5 100644 17351--- a/cef/libcef_dll/cpptoc/v8exception_cpptoc.cc 17352+++ b/cef/libcef_dll/cpptoc/v8exception_cpptoc.cc 17353@@ -1,4 +1,4 @@ 17354-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 17355+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 17356 // reserved. Use of this source code is governed by a BSD-style license that 17357 // can be found in the LICENSE file. 17358 // 17359@@ -9,7 +9,7 @@ 17360 // implementations. See the translator.README.txt file in the tools directory 17361 // for more information. 17362 // 17363-// $hash=fb2881ca02cd3b2ce66eb00412cbe16d08e260a3$ 17364+// $hash=bcf73c22701825bb552e78ece2e62c1e6b8da282$ 17365 // 17366 17367 #include "libcef_dll/cpptoc/v8exception_cpptoc.h" 17368diff --git a/cef/libcef_dll/cpptoc/v8exception_cpptoc.h b/cef/libcef_dll/cpptoc/v8exception_cpptoc.h 17369index a0fb1060d6..83f329540c 100644 17370--- a/cef/libcef_dll/cpptoc/v8exception_cpptoc.h 17371+++ b/cef/libcef_dll/cpptoc/v8exception_cpptoc.h 17372@@ -1,4 +1,4 @@ 17373-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 17374+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 17375 // reserved. Use of this source code is governed by a BSD-style license that 17376 // can be found in the LICENSE file. 17377 // 17378@@ -9,7 +9,7 @@ 17379 // implementations. See the translator.README.txt file in the tools directory 17380 // for more information. 17381 // 17382-// $hash=d91b6b735d39d79b7d0a683f6d1217893449d433$ 17383+// $hash=8d6ac0b98bc8a8efc173365c7542907fe1d229ae$ 17384 // 17385 17386 #ifndef CEF_LIBCEF_DLL_CPPTOC_V8EXCEPTION_CPPTOC_H_ 17387diff --git a/cef/libcef_dll/cpptoc/v8handler_cpptoc.cc b/cef/libcef_dll/cpptoc/v8handler_cpptoc.cc 17388index 4f3d539e2e..63fe01b9c9 100644 17389--- a/cef/libcef_dll/cpptoc/v8handler_cpptoc.cc 17390+++ b/cef/libcef_dll/cpptoc/v8handler_cpptoc.cc 17391@@ -1,4 +1,4 @@ 17392-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 17393+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 17394 // reserved. Use of this source code is governed by a BSD-style license that 17395 // can be found in the LICENSE file. 17396 // 17397@@ -9,7 +9,7 @@ 17398 // implementations. See the translator.README.txt file in the tools directory 17399 // for more information. 17400 // 17401-// $hash=93370fe9d4bdbd5eeb425fd1909ef746b48c3b9a$ 17402+// $hash=7a072d883f46856cf79bf868560689797b31e362$ 17403 // 17404 17405 #include "libcef_dll/cpptoc/v8handler_cpptoc.h" 17406diff --git a/cef/libcef_dll/cpptoc/v8handler_cpptoc.h b/cef/libcef_dll/cpptoc/v8handler_cpptoc.h 17407index c51e480f72..bbf4e955e4 100644 17408--- a/cef/libcef_dll/cpptoc/v8handler_cpptoc.h 17409+++ b/cef/libcef_dll/cpptoc/v8handler_cpptoc.h 17410@@ -1,4 +1,4 @@ 17411-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 17412+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 17413 // reserved. Use of this source code is governed by a BSD-style license that 17414 // can be found in the LICENSE file. 17415 // 17416@@ -9,7 +9,7 @@ 17417 // implementations. See the translator.README.txt file in the tools directory 17418 // for more information. 17419 // 17420-// $hash=6be8fd993c46effa1b6c0a953c253d478a14c302$ 17421+// $hash=8a1d3087cb27c365c8972bc22f712c8433db37a7$ 17422 // 17423 17424 #ifndef CEF_LIBCEF_DLL_CPPTOC_V8HANDLER_CPPTOC_H_ 17425diff --git a/cef/libcef_dll/cpptoc/v8interceptor_cpptoc.cc b/cef/libcef_dll/cpptoc/v8interceptor_cpptoc.cc 17426index 40ccdb127d..6a590da10e 100644 17427--- a/cef/libcef_dll/cpptoc/v8interceptor_cpptoc.cc 17428+++ b/cef/libcef_dll/cpptoc/v8interceptor_cpptoc.cc 17429@@ -1,4 +1,4 @@ 17430-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 17431+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 17432 // reserved. Use of this source code is governed by a BSD-style license that 17433 // can be found in the LICENSE file. 17434 // 17435@@ -9,7 +9,7 @@ 17436 // implementations. See the translator.README.txt file in the tools directory 17437 // for more information. 17438 // 17439-// $hash=eff938a85e5387ea919802ce138423478e0fab90$ 17440+// $hash=fd651a7fef9dbbce9765c8200660c4057808e6cc$ 17441 // 17442 17443 #include "libcef_dll/cpptoc/v8interceptor_cpptoc.h" 17444diff --git a/cef/libcef_dll/cpptoc/v8interceptor_cpptoc.h b/cef/libcef_dll/cpptoc/v8interceptor_cpptoc.h 17445index a7014270fa..e13ff18779 100644 17446--- a/cef/libcef_dll/cpptoc/v8interceptor_cpptoc.h 17447+++ b/cef/libcef_dll/cpptoc/v8interceptor_cpptoc.h 17448@@ -1,4 +1,4 @@ 17449-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 17450+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 17451 // reserved. Use of this source code is governed by a BSD-style license that 17452 // can be found in the LICENSE file. 17453 // 17454@@ -9,7 +9,7 @@ 17455 // implementations. See the translator.README.txt file in the tools directory 17456 // for more information. 17457 // 17458-// $hash=17ac0fc7cb770fcd11639676dcf60dcbb76ee992$ 17459+// $hash=ea56a3340775acdee89516a9e1107f725e0f8c47$ 17460 // 17461 17462 #ifndef CEF_LIBCEF_DLL_CPPTOC_V8INTERCEPTOR_CPPTOC_H_ 17463diff --git a/cef/libcef_dll/cpptoc/v8stack_frame_cpptoc.cc b/cef/libcef_dll/cpptoc/v8stack_frame_cpptoc.cc 17464index 09f097eef8..68cf92f231 100644 17465--- a/cef/libcef_dll/cpptoc/v8stack_frame_cpptoc.cc 17466+++ b/cef/libcef_dll/cpptoc/v8stack_frame_cpptoc.cc 17467@@ -1,4 +1,4 @@ 17468-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 17469+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 17470 // reserved. Use of this source code is governed by a BSD-style license that 17471 // can be found in the LICENSE file. 17472 // 17473@@ -9,7 +9,7 @@ 17474 // implementations. See the translator.README.txt file in the tools directory 17475 // for more information. 17476 // 17477-// $hash=ea27a5d024714e139668a6ff73c91869aaa38440$ 17478+// $hash=bcf0ccd2d4220eaa8f31b1f4f9b64440f81f563e$ 17479 // 17480 17481 #include "libcef_dll/cpptoc/v8stack_frame_cpptoc.h" 17482diff --git a/cef/libcef_dll/cpptoc/v8stack_frame_cpptoc.h b/cef/libcef_dll/cpptoc/v8stack_frame_cpptoc.h 17483index 940617d6c6..2c4659cbd5 100644 17484--- a/cef/libcef_dll/cpptoc/v8stack_frame_cpptoc.h 17485+++ b/cef/libcef_dll/cpptoc/v8stack_frame_cpptoc.h 17486@@ -1,4 +1,4 @@ 17487-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 17488+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 17489 // reserved. Use of this source code is governed by a BSD-style license that 17490 // can be found in the LICENSE file. 17491 // 17492@@ -9,7 +9,7 @@ 17493 // implementations. See the translator.README.txt file in the tools directory 17494 // for more information. 17495 // 17496-// $hash=106979c7e1d467ec8ef04ffa8bc29523239b5622$ 17497+// $hash=08e9e87d39ea58ed8bd7edc6dbf7cf2873218eee$ 17498 // 17499 17500 #ifndef CEF_LIBCEF_DLL_CPPTOC_V8STACK_FRAME_CPPTOC_H_ 17501diff --git a/cef/libcef_dll/cpptoc/v8stack_trace_cpptoc.cc b/cef/libcef_dll/cpptoc/v8stack_trace_cpptoc.cc 17502index 0a93e94b7b..6e33464a3c 100644 17503--- a/cef/libcef_dll/cpptoc/v8stack_trace_cpptoc.cc 17504+++ b/cef/libcef_dll/cpptoc/v8stack_trace_cpptoc.cc 17505@@ -1,4 +1,4 @@ 17506-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 17507+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 17508 // reserved. Use of this source code is governed by a BSD-style license that 17509 // can be found in the LICENSE file. 17510 // 17511@@ -9,7 +9,7 @@ 17512 // implementations. See the translator.README.txt file in the tools directory 17513 // for more information. 17514 // 17515-// $hash=4e92d16ae1359b0cb86fe0de90a18a9d891c8cba$ 17516+// $hash=69faf917e01945c29e5f20a00abbcc69aac7c0a7$ 17517 // 17518 17519 #include "libcef_dll/cpptoc/v8stack_trace_cpptoc.h" 17520diff --git a/cef/libcef_dll/cpptoc/v8stack_trace_cpptoc.h b/cef/libcef_dll/cpptoc/v8stack_trace_cpptoc.h 17521index 724ea349b1..d7c2f079f5 100644 17522--- a/cef/libcef_dll/cpptoc/v8stack_trace_cpptoc.h 17523+++ b/cef/libcef_dll/cpptoc/v8stack_trace_cpptoc.h 17524@@ -1,4 +1,4 @@ 17525-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 17526+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 17527 // reserved. Use of this source code is governed by a BSD-style license that 17528 // can be found in the LICENSE file. 17529 // 17530@@ -9,7 +9,7 @@ 17531 // implementations. See the translator.README.txt file in the tools directory 17532 // for more information. 17533 // 17534-// $hash=4829a14f35a33b02245ccf712f6be30b1395fbef$ 17535+// $hash=01a737cd8e6ea8e747d0a404c4b370a620eada94$ 17536 // 17537 17538 #ifndef CEF_LIBCEF_DLL_CPPTOC_V8STACK_TRACE_CPPTOC_H_ 17539diff --git a/cef/libcef_dll/cpptoc/v8value_cpptoc.cc b/cef/libcef_dll/cpptoc/v8value_cpptoc.cc 17540index 98e18132d5..49dd142b07 100644 17541--- a/cef/libcef_dll/cpptoc/v8value_cpptoc.cc 17542+++ b/cef/libcef_dll/cpptoc/v8value_cpptoc.cc 17543@@ -1,4 +1,4 @@ 17544-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 17545+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 17546 // reserved. Use of this source code is governed by a BSD-style license that 17547 // can be found in the LICENSE file. 17548 // 17549@@ -9,7 +9,7 @@ 17550 // implementations. See the translator.README.txt file in the tools directory 17551 // for more information. 17552 // 17553-// $hash=288b1bb2700fef65ace91a58f8b422dae6bc45da$ 17554+// $hash=0cb915346153880872b44bd1f857c24787ed52af$ 17555 // 17556 17557 #include "libcef_dll/cpptoc/v8value_cpptoc.h" 17558diff --git a/cef/libcef_dll/cpptoc/v8value_cpptoc.h b/cef/libcef_dll/cpptoc/v8value_cpptoc.h 17559index d2ce26306e..363743ce1f 100644 17560--- a/cef/libcef_dll/cpptoc/v8value_cpptoc.h 17561+++ b/cef/libcef_dll/cpptoc/v8value_cpptoc.h 17562@@ -1,4 +1,4 @@ 17563-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 17564+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 17565 // reserved. Use of this source code is governed by a BSD-style license that 17566 // can be found in the LICENSE file. 17567 // 17568@@ -9,7 +9,7 @@ 17569 // implementations. See the translator.README.txt file in the tools directory 17570 // for more information. 17571 // 17572-// $hash=b557553701e3677888ba29ed0a9822cc29eda5f1$ 17573+// $hash=0d07225656f5400129aca5cef75bbefcaaacb70d$ 17574 // 17575 17576 #ifndef CEF_LIBCEF_DLL_CPPTOC_V8VALUE_CPPTOC_H_ 17577diff --git a/cef/libcef_dll/cpptoc/value_cpptoc.cc b/cef/libcef_dll/cpptoc/value_cpptoc.cc 17578index 7dd4997ac5..1d4001b723 100644 17579--- a/cef/libcef_dll/cpptoc/value_cpptoc.cc 17580+++ b/cef/libcef_dll/cpptoc/value_cpptoc.cc 17581@@ -1,4 +1,4 @@ 17582-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 17583+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 17584 // reserved. Use of this source code is governed by a BSD-style license that 17585 // can be found in the LICENSE file. 17586 // 17587@@ -9,7 +9,7 @@ 17588 // implementations. See the translator.README.txt file in the tools directory 17589 // for more information. 17590 // 17591-// $hash=794e611061ac906fbcb965ae98cc888a98bd4532$ 17592+// $hash=680adcc74e385af7d83fa8b28b36b2215bc20f2b$ 17593 // 17594 17595 #include "libcef_dll/cpptoc/value_cpptoc.h" 17596diff --git a/cef/libcef_dll/cpptoc/value_cpptoc.h b/cef/libcef_dll/cpptoc/value_cpptoc.h 17597index 3ca9dc59ed..72b6a3dab4 100644 17598--- a/cef/libcef_dll/cpptoc/value_cpptoc.h 17599+++ b/cef/libcef_dll/cpptoc/value_cpptoc.h 17600@@ -1,4 +1,4 @@ 17601-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 17602+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 17603 // reserved. Use of this source code is governed by a BSD-style license that 17604 // can be found in the LICENSE file. 17605 // 17606@@ -9,7 +9,7 @@ 17607 // implementations. See the translator.README.txt file in the tools directory 17608 // for more information. 17609 // 17610-// $hash=d11c48929fdd9d70276a704906ef50af00aae3df$ 17611+// $hash=108679f1ab32ec8b2e0ffe77602e89603f6c279f$ 17612 // 17613 17614 #ifndef CEF_LIBCEF_DLL_CPPTOC_VALUE_CPPTOC_H_ 17615diff --git a/cef/libcef_dll/cpptoc/views/box_layout_cpptoc.cc b/cef/libcef_dll/cpptoc/views/box_layout_cpptoc.cc 17616index 4f4e62d619..4e7d723cde 100644 17617--- a/cef/libcef_dll/cpptoc/views/box_layout_cpptoc.cc 17618+++ b/cef/libcef_dll/cpptoc/views/box_layout_cpptoc.cc 17619@@ -1,4 +1,4 @@ 17620-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 17621+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 17622 // reserved. Use of this source code is governed by a BSD-style license that 17623 // can be found in the LICENSE file. 17624 // 17625@@ -9,7 +9,7 @@ 17626 // implementations. See the translator.README.txt file in the tools directory 17627 // for more information. 17628 // 17629-// $hash=55c7899976647c9475d834793fcde505a8f6f1c2$ 17630+// $hash=95678987551b26755e5dc718c3cad2e975b574c7$ 17631 // 17632 17633 #include "libcef_dll/cpptoc/views/box_layout_cpptoc.h" 17634diff --git a/cef/libcef_dll/cpptoc/views/box_layout_cpptoc.h b/cef/libcef_dll/cpptoc/views/box_layout_cpptoc.h 17635index a9f25ef123..e67288a57d 100644 17636--- a/cef/libcef_dll/cpptoc/views/box_layout_cpptoc.h 17637+++ b/cef/libcef_dll/cpptoc/views/box_layout_cpptoc.h 17638@@ -1,4 +1,4 @@ 17639-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 17640+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 17641 // reserved. Use of this source code is governed by a BSD-style license that 17642 // can be found in the LICENSE file. 17643 // 17644@@ -9,7 +9,7 @@ 17645 // implementations. See the translator.README.txt file in the tools directory 17646 // for more information. 17647 // 17648-// $hash=2055b5f83c5c858cabf72c8f63a5e13e9a0cc2bc$ 17649+// $hash=e665defe8e51c3405d75a3f1d9f382f6e9e9f81f$ 17650 // 17651 17652 #ifndef CEF_LIBCEF_DLL_CPPTOC_VIEWS_BOX_LAYOUT_CPPTOC_H_ 17653diff --git a/cef/libcef_dll/cpptoc/views/browser_view_cpptoc.cc b/cef/libcef_dll/cpptoc/views/browser_view_cpptoc.cc 17654index bed65f7d6c..76a3e17c86 100644 17655--- a/cef/libcef_dll/cpptoc/views/browser_view_cpptoc.cc 17656+++ b/cef/libcef_dll/cpptoc/views/browser_view_cpptoc.cc 17657@@ -1,4 +1,4 @@ 17658-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 17659+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 17660 // reserved. Use of this source code is governed by a BSD-style license that 17661 // can be found in the LICENSE file. 17662 // 17663@@ -9,7 +9,7 @@ 17664 // implementations. See the translator.README.txt file in the tools directory 17665 // for more information. 17666 // 17667-// $hash=312985bb5cc971d1fe9d77af1f985f6a544e9db5$ 17668+// $hash=0a875e943251bc65ff4c55034d00d481d8fbdf3a$ 17669 // 17670 17671 #include "libcef_dll/cpptoc/views/browser_view_cpptoc.h" 17672diff --git a/cef/libcef_dll/cpptoc/views/browser_view_cpptoc.h b/cef/libcef_dll/cpptoc/views/browser_view_cpptoc.h 17673index 4dffc73c51..f4e36ae4f1 100644 17674--- a/cef/libcef_dll/cpptoc/views/browser_view_cpptoc.h 17675+++ b/cef/libcef_dll/cpptoc/views/browser_view_cpptoc.h 17676@@ -1,4 +1,4 @@ 17677-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 17678+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 17679 // reserved. Use of this source code is governed by a BSD-style license that 17680 // can be found in the LICENSE file. 17681 // 17682@@ -9,7 +9,7 @@ 17683 // implementations. See the translator.README.txt file in the tools directory 17684 // for more information. 17685 // 17686-// $hash=794d1abc9f7a68954a7690ac5be01bb93c83fedd$ 17687+// $hash=dc07da6d436a7d99817045690a3932010cd1acfd$ 17688 // 17689 17690 #ifndef CEF_LIBCEF_DLL_CPPTOC_VIEWS_BROWSER_VIEW_CPPTOC_H_ 17691diff --git a/cef/libcef_dll/cpptoc/views/browser_view_delegate_cpptoc.cc b/cef/libcef_dll/cpptoc/views/browser_view_delegate_cpptoc.cc 17692index 6cdb81427d..438686a921 100644 17693--- a/cef/libcef_dll/cpptoc/views/browser_view_delegate_cpptoc.cc 17694+++ b/cef/libcef_dll/cpptoc/views/browser_view_delegate_cpptoc.cc 17695@@ -1,4 +1,4 @@ 17696-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 17697+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 17698 // reserved. Use of this source code is governed by a BSD-style license that 17699 // can be found in the LICENSE file. 17700 // 17701@@ -9,7 +9,7 @@ 17702 // implementations. See the translator.README.txt file in the tools directory 17703 // for more information. 17704 // 17705-// $hash=8e8daae6a8ed718582045ea42e16906813b77337$ 17706+// $hash=dabaa6ca5d073ae87ea2e2ce0abc846ccdfc9dc3$ 17707 // 17708 17709 #include "libcef_dll/cpptoc/views/browser_view_delegate_cpptoc.h" 17710diff --git a/cef/libcef_dll/cpptoc/views/browser_view_delegate_cpptoc.h b/cef/libcef_dll/cpptoc/views/browser_view_delegate_cpptoc.h 17711index 0774cee5d8..feb502ae7e 100644 17712--- a/cef/libcef_dll/cpptoc/views/browser_view_delegate_cpptoc.h 17713+++ b/cef/libcef_dll/cpptoc/views/browser_view_delegate_cpptoc.h 17714@@ -1,4 +1,4 @@ 17715-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 17716+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 17717 // reserved. Use of this source code is governed by a BSD-style license that 17718 // can be found in the LICENSE file. 17719 // 17720@@ -9,7 +9,7 @@ 17721 // implementations. See the translator.README.txt file in the tools directory 17722 // for more information. 17723 // 17724-// $hash=2b3f4fa67ceac32d479043f0b8012c36a4c4ee1f$ 17725+// $hash=5bd6bbfbc74b0059f073463c28b74c9b31916e59$ 17726 // 17727 17728 #ifndef CEF_LIBCEF_DLL_CPPTOC_VIEWS_BROWSER_VIEW_DELEGATE_CPPTOC_H_ 17729diff --git a/cef/libcef_dll/cpptoc/views/button_cpptoc.cc b/cef/libcef_dll/cpptoc/views/button_cpptoc.cc 17730index d8cea85c0d..7ceb13b8bd 100644 17731--- a/cef/libcef_dll/cpptoc/views/button_cpptoc.cc 17732+++ b/cef/libcef_dll/cpptoc/views/button_cpptoc.cc 17733@@ -1,4 +1,4 @@ 17734-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 17735+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 17736 // reserved. Use of this source code is governed by a BSD-style license that 17737 // can be found in the LICENSE file. 17738 // 17739@@ -9,7 +9,7 @@ 17740 // implementations. See the translator.README.txt file in the tools directory 17741 // for more information. 17742 // 17743-// $hash=a0060b09d6eb4bbeeb69e4b80dccccee394d600e$ 17744+// $hash=52a1826441955ccb7d07f28dfa804bae496ff48e$ 17745 // 17746 17747 #include "libcef_dll/cpptoc/views/button_cpptoc.h" 17748diff --git a/cef/libcef_dll/cpptoc/views/button_cpptoc.h b/cef/libcef_dll/cpptoc/views/button_cpptoc.h 17749index 944b991b0d..5848a3fd83 100644 17750--- a/cef/libcef_dll/cpptoc/views/button_cpptoc.h 17751+++ b/cef/libcef_dll/cpptoc/views/button_cpptoc.h 17752@@ -1,4 +1,4 @@ 17753-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 17754+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 17755 // reserved. Use of this source code is governed by a BSD-style license that 17756 // can be found in the LICENSE file. 17757 // 17758@@ -9,7 +9,7 @@ 17759 // implementations. See the translator.README.txt file in the tools directory 17760 // for more information. 17761 // 17762-// $hash=2c5ca0129836b556c9146b810ef8bf7bb873b966$ 17763+// $hash=60660c0973fee97e850fcf4026b57a6f367ea294$ 17764 // 17765 17766 #ifndef CEF_LIBCEF_DLL_CPPTOC_VIEWS_BUTTON_CPPTOC_H_ 17767diff --git a/cef/libcef_dll/cpptoc/views/button_delegate_cpptoc.cc b/cef/libcef_dll/cpptoc/views/button_delegate_cpptoc.cc 17768index 2870db70e8..fd4fe03c04 100644 17769--- a/cef/libcef_dll/cpptoc/views/button_delegate_cpptoc.cc 17770+++ b/cef/libcef_dll/cpptoc/views/button_delegate_cpptoc.cc 17771@@ -1,4 +1,4 @@ 17772-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 17773+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 17774 // reserved. Use of this source code is governed by a BSD-style license that 17775 // can be found in the LICENSE file. 17776 // 17777@@ -9,7 +9,7 @@ 17778 // implementations. See the translator.README.txt file in the tools directory 17779 // for more information. 17780 // 17781-// $hash=52a0deb8b7ae62e474acb1474cf922c3e9a04f14$ 17782+// $hash=c89d335c457addc921b568a9ccde121030513b40$ 17783 // 17784 17785 #include "libcef_dll/cpptoc/views/button_delegate_cpptoc.h" 17786diff --git a/cef/libcef_dll/cpptoc/views/button_delegate_cpptoc.h b/cef/libcef_dll/cpptoc/views/button_delegate_cpptoc.h 17787index 1869fa31db..3a682e09bc 100644 17788--- a/cef/libcef_dll/cpptoc/views/button_delegate_cpptoc.h 17789+++ b/cef/libcef_dll/cpptoc/views/button_delegate_cpptoc.h 17790@@ -1,4 +1,4 @@ 17791-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 17792+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 17793 // reserved. Use of this source code is governed by a BSD-style license that 17794 // can be found in the LICENSE file. 17795 // 17796@@ -9,7 +9,7 @@ 17797 // implementations. See the translator.README.txt file in the tools directory 17798 // for more information. 17799 // 17800-// $hash=2f943860c8504116aea73d809c15f219634ab556$ 17801+// $hash=f3b8ad78e8614f873ee581697ac29cad49a19260$ 17802 // 17803 17804 #ifndef CEF_LIBCEF_DLL_CPPTOC_VIEWS_BUTTON_DELEGATE_CPPTOC_H_ 17805diff --git a/cef/libcef_dll/cpptoc/views/display_cpptoc.cc b/cef/libcef_dll/cpptoc/views/display_cpptoc.cc 17806index 2957c4fdbf..470fee9d11 100644 17807--- a/cef/libcef_dll/cpptoc/views/display_cpptoc.cc 17808+++ b/cef/libcef_dll/cpptoc/views/display_cpptoc.cc 17809@@ -1,4 +1,4 @@ 17810-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 17811+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 17812 // reserved. Use of this source code is governed by a BSD-style license that 17813 // can be found in the LICENSE file. 17814 // 17815@@ -9,7 +9,7 @@ 17816 // implementations. See the translator.README.txt file in the tools directory 17817 // for more information. 17818 // 17819-// $hash=b0c8aeb7a75132760dd02766bf2d65281f0bc67e$ 17820+// $hash=546b8f890852fb4df26a85aec6b83effe1bdc6e6$ 17821 // 17822 17823 #include "libcef_dll/cpptoc/views/display_cpptoc.h" 17824diff --git a/cef/libcef_dll/cpptoc/views/display_cpptoc.h b/cef/libcef_dll/cpptoc/views/display_cpptoc.h 17825index d243baa4e6..6ae1863347 100644 17826--- a/cef/libcef_dll/cpptoc/views/display_cpptoc.h 17827+++ b/cef/libcef_dll/cpptoc/views/display_cpptoc.h 17828@@ -1,4 +1,4 @@ 17829-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 17830+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 17831 // reserved. Use of this source code is governed by a BSD-style license that 17832 // can be found in the LICENSE file. 17833 // 17834@@ -9,7 +9,7 @@ 17835 // implementations. See the translator.README.txt file in the tools directory 17836 // for more information. 17837 // 17838-// $hash=054ef978c8c9f0610df054bb1a3b647e53be6223$ 17839+// $hash=5918cca150c476ead77121bb93599c763a3e13e7$ 17840 // 17841 17842 #ifndef CEF_LIBCEF_DLL_CPPTOC_VIEWS_DISPLAY_CPPTOC_H_ 17843diff --git a/cef/libcef_dll/cpptoc/views/fill_layout_cpptoc.cc b/cef/libcef_dll/cpptoc/views/fill_layout_cpptoc.cc 17844index 2fa5f8e4a4..b6b3a99c2a 100644 17845--- a/cef/libcef_dll/cpptoc/views/fill_layout_cpptoc.cc 17846+++ b/cef/libcef_dll/cpptoc/views/fill_layout_cpptoc.cc 17847@@ -1,4 +1,4 @@ 17848-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 17849+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 17850 // reserved. Use of this source code is governed by a BSD-style license that 17851 // can be found in the LICENSE file. 17852 // 17853@@ -9,7 +9,7 @@ 17854 // implementations. See the translator.README.txt file in the tools directory 17855 // for more information. 17856 // 17857-// $hash=e4ddec3146fc599b00b66f4d3cc78d8e4b0eaecf$ 17858+// $hash=304f5db25f7e2a1e4cf169f7cc205013bb06f861$ 17859 // 17860 17861 #include "libcef_dll/cpptoc/views/fill_layout_cpptoc.h" 17862diff --git a/cef/libcef_dll/cpptoc/views/fill_layout_cpptoc.h b/cef/libcef_dll/cpptoc/views/fill_layout_cpptoc.h 17863index a4e9917593..a9bdbaf9d5 100644 17864--- a/cef/libcef_dll/cpptoc/views/fill_layout_cpptoc.h 17865+++ b/cef/libcef_dll/cpptoc/views/fill_layout_cpptoc.h 17866@@ -1,4 +1,4 @@ 17867-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 17868+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 17869 // reserved. Use of this source code is governed by a BSD-style license that 17870 // can be found in the LICENSE file. 17871 // 17872@@ -9,7 +9,7 @@ 17873 // implementations. See the translator.README.txt file in the tools directory 17874 // for more information. 17875 // 17876-// $hash=21e023a1fbb99519b90100b3201daf7682496dae$ 17877+// $hash=e2bad567245e3e1bdf240be33a3b0008ec0e3b18$ 17878 // 17879 17880 #ifndef CEF_LIBCEF_DLL_CPPTOC_VIEWS_FILL_LAYOUT_CPPTOC_H_ 17881diff --git a/cef/libcef_dll/cpptoc/views/label_button_cpptoc.cc b/cef/libcef_dll/cpptoc/views/label_button_cpptoc.cc 17882index d3c8c812d0..83bec2804d 100644 17883--- a/cef/libcef_dll/cpptoc/views/label_button_cpptoc.cc 17884+++ b/cef/libcef_dll/cpptoc/views/label_button_cpptoc.cc 17885@@ -1,4 +1,4 @@ 17886-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 17887+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 17888 // reserved. Use of this source code is governed by a BSD-style license that 17889 // can be found in the LICENSE file. 17890 // 17891@@ -9,7 +9,7 @@ 17892 // implementations. See the translator.README.txt file in the tools directory 17893 // for more information. 17894 // 17895-// $hash=f723bc389e8df80f926a3e1952d9ba0241fcb494$ 17896+// $hash=a96ce9b8eee3c8e913c5c2d6381de123b8d601b1$ 17897 // 17898 17899 #include "libcef_dll/cpptoc/views/label_button_cpptoc.h" 17900diff --git a/cef/libcef_dll/cpptoc/views/label_button_cpptoc.h b/cef/libcef_dll/cpptoc/views/label_button_cpptoc.h 17901index 04e6664ef4..a26b71ad35 100644 17902--- a/cef/libcef_dll/cpptoc/views/label_button_cpptoc.h 17903+++ b/cef/libcef_dll/cpptoc/views/label_button_cpptoc.h 17904@@ -1,4 +1,4 @@ 17905-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 17906+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 17907 // reserved. Use of this source code is governed by a BSD-style license that 17908 // can be found in the LICENSE file. 17909 // 17910@@ -9,7 +9,7 @@ 17911 // implementations. See the translator.README.txt file in the tools directory 17912 // for more information. 17913 // 17914-// $hash=29843560ec7fb719e92becfc772acaf5ced59aae$ 17915+// $hash=60d980037705be97fb1113e0b23b0e4bdd29b801$ 17916 // 17917 17918 #ifndef CEF_LIBCEF_DLL_CPPTOC_VIEWS_LABEL_BUTTON_CPPTOC_H_ 17919diff --git a/cef/libcef_dll/cpptoc/views/layout_cpptoc.cc b/cef/libcef_dll/cpptoc/views/layout_cpptoc.cc 17920index a1a9436e05..5976c28b09 100644 17921--- a/cef/libcef_dll/cpptoc/views/layout_cpptoc.cc 17922+++ b/cef/libcef_dll/cpptoc/views/layout_cpptoc.cc 17923@@ -1,4 +1,4 @@ 17924-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 17925+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 17926 // reserved. Use of this source code is governed by a BSD-style license that 17927 // can be found in the LICENSE file. 17928 // 17929@@ -9,7 +9,7 @@ 17930 // implementations. See the translator.README.txt file in the tools directory 17931 // for more information. 17932 // 17933-// $hash=e1cf6f305fd3e893ea1bc77dc038ed9a9c6ed3cf$ 17934+// $hash=91327244b4a4c037841a54ea2a06ebe42efe5477$ 17935 // 17936 17937 #include "libcef_dll/cpptoc/views/layout_cpptoc.h" 17938diff --git a/cef/libcef_dll/cpptoc/views/layout_cpptoc.h b/cef/libcef_dll/cpptoc/views/layout_cpptoc.h 17939index 580bdddcbe..93ac800c7a 100644 17940--- a/cef/libcef_dll/cpptoc/views/layout_cpptoc.h 17941+++ b/cef/libcef_dll/cpptoc/views/layout_cpptoc.h 17942@@ -1,4 +1,4 @@ 17943-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 17944+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 17945 // reserved. Use of this source code is governed by a BSD-style license that 17946 // can be found in the LICENSE file. 17947 // 17948@@ -9,7 +9,7 @@ 17949 // implementations. See the translator.README.txt file in the tools directory 17950 // for more information. 17951 // 17952-// $hash=3b9f9d17929f8437425963bd504f921c26e5bee0$ 17953+// $hash=8044bcf51ec6feacc1a186f6780c9076f5c1ec74$ 17954 // 17955 17956 #ifndef CEF_LIBCEF_DLL_CPPTOC_VIEWS_LAYOUT_CPPTOC_H_ 17957diff --git a/cef/libcef_dll/cpptoc/views/menu_button_cpptoc.cc b/cef/libcef_dll/cpptoc/views/menu_button_cpptoc.cc 17958index 9d15b707ea..213effeaee 100644 17959--- a/cef/libcef_dll/cpptoc/views/menu_button_cpptoc.cc 17960+++ b/cef/libcef_dll/cpptoc/views/menu_button_cpptoc.cc 17961@@ -1,4 +1,4 @@ 17962-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 17963+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 17964 // reserved. Use of this source code is governed by a BSD-style license that 17965 // can be found in the LICENSE file. 17966 // 17967@@ -9,7 +9,7 @@ 17968 // implementations. See the translator.README.txt file in the tools directory 17969 // for more information. 17970 // 17971-// $hash=97c8a26550af49abfe4a1fcf1d8d54193c5fb3b1$ 17972+// $hash=c0fc689d709721780faf361fd43b378e25439844$ 17973 // 17974 17975 #include "libcef_dll/cpptoc/views/menu_button_cpptoc.h" 17976diff --git a/cef/libcef_dll/cpptoc/views/menu_button_cpptoc.h b/cef/libcef_dll/cpptoc/views/menu_button_cpptoc.h 17977index 8beca592a1..6b38233af5 100644 17978--- a/cef/libcef_dll/cpptoc/views/menu_button_cpptoc.h 17979+++ b/cef/libcef_dll/cpptoc/views/menu_button_cpptoc.h 17980@@ -1,4 +1,4 @@ 17981-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 17982+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 17983 // reserved. Use of this source code is governed by a BSD-style license that 17984 // can be found in the LICENSE file. 17985 // 17986@@ -9,7 +9,7 @@ 17987 // implementations. See the translator.README.txt file in the tools directory 17988 // for more information. 17989 // 17990-// $hash=41e45dc77543824f879e6ddc105f9ce80a0911e5$ 17991+// $hash=d3b01ef1bca22e454dd4375df90a5a3fbd0f11f3$ 17992 // 17993 17994 #ifndef CEF_LIBCEF_DLL_CPPTOC_VIEWS_MENU_BUTTON_CPPTOC_H_ 17995diff --git a/cef/libcef_dll/cpptoc/views/menu_button_delegate_cpptoc.cc b/cef/libcef_dll/cpptoc/views/menu_button_delegate_cpptoc.cc 17996index f76e3053b4..3ed9de638f 100644 17997--- a/cef/libcef_dll/cpptoc/views/menu_button_delegate_cpptoc.cc 17998+++ b/cef/libcef_dll/cpptoc/views/menu_button_delegate_cpptoc.cc 17999@@ -1,4 +1,4 @@ 18000-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 18001+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 18002 // reserved. Use of this source code is governed by a BSD-style license that 18003 // can be found in the LICENSE file. 18004 // 18005@@ -9,7 +9,7 @@ 18006 // implementations. See the translator.README.txt file in the tools directory 18007 // for more information. 18008 // 18009-// $hash=2fcd1d4d2126285209e1fa782beccbb363693bf3$ 18010+// $hash=4f4242bd924c155690581077a8b0b4590cd408d8$ 18011 // 18012 18013 #include "libcef_dll/cpptoc/views/menu_button_delegate_cpptoc.h" 18014diff --git a/cef/libcef_dll/cpptoc/views/menu_button_delegate_cpptoc.h b/cef/libcef_dll/cpptoc/views/menu_button_delegate_cpptoc.h 18015index 1a1fc360b0..0ecc9e377e 100644 18016--- a/cef/libcef_dll/cpptoc/views/menu_button_delegate_cpptoc.h 18017+++ b/cef/libcef_dll/cpptoc/views/menu_button_delegate_cpptoc.h 18018@@ -1,4 +1,4 @@ 18019-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 18020+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 18021 // reserved. Use of this source code is governed by a BSD-style license that 18022 // can be found in the LICENSE file. 18023 // 18024@@ -9,7 +9,7 @@ 18025 // implementations. See the translator.README.txt file in the tools directory 18026 // for more information. 18027 // 18028-// $hash=ab21c3c6610b8ef0c734e3ea7c19b32d44071d5b$ 18029+// $hash=670b8f7f67a5eacd3288724ec6439c56248477ec$ 18030 // 18031 18032 #ifndef CEF_LIBCEF_DLL_CPPTOC_VIEWS_MENU_BUTTON_DELEGATE_CPPTOC_H_ 18033diff --git a/cef/libcef_dll/cpptoc/views/menu_button_pressed_lock_cpptoc.cc b/cef/libcef_dll/cpptoc/views/menu_button_pressed_lock_cpptoc.cc 18034index bbbab941a6..daa1e5fdd8 100644 18035--- a/cef/libcef_dll/cpptoc/views/menu_button_pressed_lock_cpptoc.cc 18036+++ b/cef/libcef_dll/cpptoc/views/menu_button_pressed_lock_cpptoc.cc 18037@@ -1,4 +1,4 @@ 18038-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 18039+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 18040 // reserved. Use of this source code is governed by a BSD-style license that 18041 // can be found in the LICENSE file. 18042 // 18043@@ -9,7 +9,7 @@ 18044 // implementations. See the translator.README.txt file in the tools directory 18045 // for more information. 18046 // 18047-// $hash=6279b4ee41f95e4d027b25ae77d2d2af1b6941d4$ 18048+// $hash=c6db7f8e7c031a323e9da96aed3aee7fd7a4f558$ 18049 // 18050 18051 #include "libcef_dll/cpptoc/views/menu_button_pressed_lock_cpptoc.h" 18052diff --git a/cef/libcef_dll/cpptoc/views/menu_button_pressed_lock_cpptoc.h b/cef/libcef_dll/cpptoc/views/menu_button_pressed_lock_cpptoc.h 18053index 9c89212ea4..51cac8072d 100644 18054--- a/cef/libcef_dll/cpptoc/views/menu_button_pressed_lock_cpptoc.h 18055+++ b/cef/libcef_dll/cpptoc/views/menu_button_pressed_lock_cpptoc.h 18056@@ -1,4 +1,4 @@ 18057-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 18058+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 18059 // reserved. Use of this source code is governed by a BSD-style license that 18060 // can be found in the LICENSE file. 18061 // 18062@@ -9,7 +9,7 @@ 18063 // implementations. See the translator.README.txt file in the tools directory 18064 // for more information. 18065 // 18066-// $hash=e3c523d36e1ec61e2b6669628ad89c14e1744c0f$ 18067+// $hash=072279b56eeeaf089107f5f78ee431c907afda46$ 18068 // 18069 18070 #ifndef CEF_LIBCEF_DLL_CPPTOC_VIEWS_MENU_BUTTON_PRESSED_LOCK_CPPTOC_H_ 18071diff --git a/cef/libcef_dll/cpptoc/views/panel_cpptoc.cc b/cef/libcef_dll/cpptoc/views/panel_cpptoc.cc 18072index a9bcb8be75..f382077804 100644 18073--- a/cef/libcef_dll/cpptoc/views/panel_cpptoc.cc 18074+++ b/cef/libcef_dll/cpptoc/views/panel_cpptoc.cc 18075@@ -1,4 +1,4 @@ 18076-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 18077+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 18078 // reserved. Use of this source code is governed by a BSD-style license that 18079 // can be found in the LICENSE file. 18080 // 18081@@ -9,7 +9,7 @@ 18082 // implementations. See the translator.README.txt file in the tools directory 18083 // for more information. 18084 // 18085-// $hash=46ba2afdb3ede88d0eb37df2726ab5ff33fb6983$ 18086+// $hash=51e0790655403b1c9abba77caa46f2033f806de5$ 18087 // 18088 18089 #include "libcef_dll/cpptoc/views/panel_cpptoc.h" 18090diff --git a/cef/libcef_dll/cpptoc/views/panel_cpptoc.h b/cef/libcef_dll/cpptoc/views/panel_cpptoc.h 18091index 87d1846e60..ae2d99182a 100644 18092--- a/cef/libcef_dll/cpptoc/views/panel_cpptoc.h 18093+++ b/cef/libcef_dll/cpptoc/views/panel_cpptoc.h 18094@@ -1,4 +1,4 @@ 18095-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 18096+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 18097 // reserved. Use of this source code is governed by a BSD-style license that 18098 // can be found in the LICENSE file. 18099 // 18100@@ -9,7 +9,7 @@ 18101 // implementations. See the translator.README.txt file in the tools directory 18102 // for more information. 18103 // 18104-// $hash=ac7fe015e824ddc135e36c36231701ffcfe5ee53$ 18105+// $hash=4fd7a58485d8ef00e6b2dff8ffdfcb1405eb4fcc$ 18106 // 18107 18108 #ifndef CEF_LIBCEF_DLL_CPPTOC_VIEWS_PANEL_CPPTOC_H_ 18109diff --git a/cef/libcef_dll/cpptoc/views/panel_delegate_cpptoc.cc b/cef/libcef_dll/cpptoc/views/panel_delegate_cpptoc.cc 18110index 11f8ebfd15..df7cd62c5e 100644 18111--- a/cef/libcef_dll/cpptoc/views/panel_delegate_cpptoc.cc 18112+++ b/cef/libcef_dll/cpptoc/views/panel_delegate_cpptoc.cc 18113@@ -1,4 +1,4 @@ 18114-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 18115+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 18116 // reserved. Use of this source code is governed by a BSD-style license that 18117 // can be found in the LICENSE file. 18118 // 18119@@ -9,7 +9,7 @@ 18120 // implementations. See the translator.README.txt file in the tools directory 18121 // for more information. 18122 // 18123-// $hash=dd29f2990766a766a27dece7e39501eb11a296fd$ 18124+// $hash=f75ba2e00c473e04734ef00098a4e10e5ce9d688$ 18125 // 18126 18127 #include "libcef_dll/cpptoc/views/panel_delegate_cpptoc.h" 18128diff --git a/cef/libcef_dll/cpptoc/views/panel_delegate_cpptoc.h b/cef/libcef_dll/cpptoc/views/panel_delegate_cpptoc.h 18129index 3c53a1b31a..05fb713501 100644 18130--- a/cef/libcef_dll/cpptoc/views/panel_delegate_cpptoc.h 18131+++ b/cef/libcef_dll/cpptoc/views/panel_delegate_cpptoc.h 18132@@ -1,4 +1,4 @@ 18133-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 18134+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 18135 // reserved. Use of this source code is governed by a BSD-style license that 18136 // can be found in the LICENSE file. 18137 // 18138@@ -9,7 +9,7 @@ 18139 // implementations. See the translator.README.txt file in the tools directory 18140 // for more information. 18141 // 18142-// $hash=aa7440de70e2a83ba939fd4f9ae12e2dd6b80873$ 18143+// $hash=821d48d74b437c7a0387b1d0ac1875621873b2e4$ 18144 // 18145 18146 #ifndef CEF_LIBCEF_DLL_CPPTOC_VIEWS_PANEL_DELEGATE_CPPTOC_H_ 18147diff --git a/cef/libcef_dll/cpptoc/views/scroll_view_cpptoc.cc b/cef/libcef_dll/cpptoc/views/scroll_view_cpptoc.cc 18148index af6ad2e71c..8df578b78a 100644 18149--- a/cef/libcef_dll/cpptoc/views/scroll_view_cpptoc.cc 18150+++ b/cef/libcef_dll/cpptoc/views/scroll_view_cpptoc.cc 18151@@ -1,4 +1,4 @@ 18152-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 18153+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 18154 // reserved. Use of this source code is governed by a BSD-style license that 18155 // can be found in the LICENSE file. 18156 // 18157@@ -9,7 +9,7 @@ 18158 // implementations. See the translator.README.txt file in the tools directory 18159 // for more information. 18160 // 18161-// $hash=88d6df521d18ef28e9e2e7cbe31ecf6c96351430$ 18162+// $hash=7d41cd981c074663db79ce49259364111d0401f5$ 18163 // 18164 18165 #include "libcef_dll/cpptoc/views/scroll_view_cpptoc.h" 18166diff --git a/cef/libcef_dll/cpptoc/views/scroll_view_cpptoc.h b/cef/libcef_dll/cpptoc/views/scroll_view_cpptoc.h 18167index 361dd29e30..a08983a1fc 100644 18168--- a/cef/libcef_dll/cpptoc/views/scroll_view_cpptoc.h 18169+++ b/cef/libcef_dll/cpptoc/views/scroll_view_cpptoc.h 18170@@ -1,4 +1,4 @@ 18171-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 18172+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 18173 // reserved. Use of this source code is governed by a BSD-style license that 18174 // can be found in the LICENSE file. 18175 // 18176@@ -9,7 +9,7 @@ 18177 // implementations. See the translator.README.txt file in the tools directory 18178 // for more information. 18179 // 18180-// $hash=f1215fc51778cca8d72256162b43e56c5f29ffba$ 18181+// $hash=a5d02fd363950248101f5113ceeee2c280dd831c$ 18182 // 18183 18184 #ifndef CEF_LIBCEF_DLL_CPPTOC_VIEWS_SCROLL_VIEW_CPPTOC_H_ 18185diff --git a/cef/libcef_dll/cpptoc/views/textfield_cpptoc.cc b/cef/libcef_dll/cpptoc/views/textfield_cpptoc.cc 18186index 78286cae9e..35a188b2c8 100644 18187--- a/cef/libcef_dll/cpptoc/views/textfield_cpptoc.cc 18188+++ b/cef/libcef_dll/cpptoc/views/textfield_cpptoc.cc 18189@@ -1,4 +1,4 @@ 18190-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 18191+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 18192 // reserved. Use of this source code is governed by a BSD-style license that 18193 // can be found in the LICENSE file. 18194 // 18195@@ -9,7 +9,7 @@ 18196 // implementations. See the translator.README.txt file in the tools directory 18197 // for more information. 18198 // 18199-// $hash=fd6b1cf787b563525dac101a765b7c399356e00c$ 18200+// $hash=b2d1a60f738cc52cd39da493194af5723fd8c885$ 18201 // 18202 18203 #include "libcef_dll/cpptoc/views/textfield_cpptoc.h" 18204diff --git a/cef/libcef_dll/cpptoc/views/textfield_cpptoc.h b/cef/libcef_dll/cpptoc/views/textfield_cpptoc.h 18205index a7f2d17422..730d6486d2 100644 18206--- a/cef/libcef_dll/cpptoc/views/textfield_cpptoc.h 18207+++ b/cef/libcef_dll/cpptoc/views/textfield_cpptoc.h 18208@@ -1,4 +1,4 @@ 18209-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 18210+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 18211 // reserved. Use of this source code is governed by a BSD-style license that 18212 // can be found in the LICENSE file. 18213 // 18214@@ -9,7 +9,7 @@ 18215 // implementations. See the translator.README.txt file in the tools directory 18216 // for more information. 18217 // 18218-// $hash=d58e06f073a0c78505b9e4d00bafcdcff671dcb6$ 18219+// $hash=2e8b2aebc574d685d1c39e7cb96b2e8c724a6d9c$ 18220 // 18221 18222 #ifndef CEF_LIBCEF_DLL_CPPTOC_VIEWS_TEXTFIELD_CPPTOC_H_ 18223diff --git a/cef/libcef_dll/cpptoc/views/textfield_delegate_cpptoc.cc b/cef/libcef_dll/cpptoc/views/textfield_delegate_cpptoc.cc 18224index 7282c488c6..3836e21d0a 100644 18225--- a/cef/libcef_dll/cpptoc/views/textfield_delegate_cpptoc.cc 18226+++ b/cef/libcef_dll/cpptoc/views/textfield_delegate_cpptoc.cc 18227@@ -1,4 +1,4 @@ 18228-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 18229+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 18230 // reserved. Use of this source code is governed by a BSD-style license that 18231 // can be found in the LICENSE file. 18232 // 18233@@ -9,7 +9,7 @@ 18234 // implementations. See the translator.README.txt file in the tools directory 18235 // for more information. 18236 // 18237-// $hash=e35b635ec442c8910b02aca64d48760b1360c868$ 18238+// $hash=41ad820d3032bfe9ec4585eb53b2d0d7f1dc46bd$ 18239 // 18240 18241 #include "libcef_dll/cpptoc/views/textfield_delegate_cpptoc.h" 18242diff --git a/cef/libcef_dll/cpptoc/views/textfield_delegate_cpptoc.h b/cef/libcef_dll/cpptoc/views/textfield_delegate_cpptoc.h 18243index 12e3d75308..75abe63a36 100644 18244--- a/cef/libcef_dll/cpptoc/views/textfield_delegate_cpptoc.h 18245+++ b/cef/libcef_dll/cpptoc/views/textfield_delegate_cpptoc.h 18246@@ -1,4 +1,4 @@ 18247-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 18248+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 18249 // reserved. Use of this source code is governed by a BSD-style license that 18250 // can be found in the LICENSE file. 18251 // 18252@@ -9,7 +9,7 @@ 18253 // implementations. See the translator.README.txt file in the tools directory 18254 // for more information. 18255 // 18256-// $hash=b9692a2b56e13b7dd25ca500dc1635fc5eb4ecb0$ 18257+// $hash=157e47e42dbb25aa2effd5bd085228d1dc3ad061$ 18258 // 18259 18260 #ifndef CEF_LIBCEF_DLL_CPPTOC_VIEWS_TEXTFIELD_DELEGATE_CPPTOC_H_ 18261diff --git a/cef/libcef_dll/cpptoc/views/view_cpptoc.cc b/cef/libcef_dll/cpptoc/views/view_cpptoc.cc 18262index 3a7dcc2670..30c9257169 100644 18263--- a/cef/libcef_dll/cpptoc/views/view_cpptoc.cc 18264+++ b/cef/libcef_dll/cpptoc/views/view_cpptoc.cc 18265@@ -1,4 +1,4 @@ 18266-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 18267+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 18268 // reserved. Use of this source code is governed by a BSD-style license that 18269 // can be found in the LICENSE file. 18270 // 18271@@ -9,7 +9,7 @@ 18272 // implementations. See the translator.README.txt file in the tools directory 18273 // for more information. 18274 // 18275-// $hash=0884539e94e09316a9e516d93d77743c6287fe9a$ 18276+// $hash=5d515cf9d8b0af16456faf6ff6ca82c55bc1d76d$ 18277 // 18278 18279 #include "libcef_dll/cpptoc/views/view_cpptoc.h" 18280diff --git a/cef/libcef_dll/cpptoc/views/view_cpptoc.h b/cef/libcef_dll/cpptoc/views/view_cpptoc.h 18281index 14e4e5cc00..e508ab45a5 100644 18282--- a/cef/libcef_dll/cpptoc/views/view_cpptoc.h 18283+++ b/cef/libcef_dll/cpptoc/views/view_cpptoc.h 18284@@ -1,4 +1,4 @@ 18285-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 18286+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 18287 // reserved. Use of this source code is governed by a BSD-style license that 18288 // can be found in the LICENSE file. 18289 // 18290@@ -9,7 +9,7 @@ 18291 // implementations. See the translator.README.txt file in the tools directory 18292 // for more information. 18293 // 18294-// $hash=4b4df24ff3715625a44428b2fdc2cc1fed0f2a8c$ 18295+// $hash=725abc7d1f25861799c54c827de37617b23a1bd5$ 18296 // 18297 18298 #ifndef CEF_LIBCEF_DLL_CPPTOC_VIEWS_VIEW_CPPTOC_H_ 18299diff --git a/cef/libcef_dll/cpptoc/views/view_delegate_cpptoc.cc b/cef/libcef_dll/cpptoc/views/view_delegate_cpptoc.cc 18300index 9a06b6ff45..f3867bcb45 100644 18301--- a/cef/libcef_dll/cpptoc/views/view_delegate_cpptoc.cc 18302+++ b/cef/libcef_dll/cpptoc/views/view_delegate_cpptoc.cc 18303@@ -1,4 +1,4 @@ 18304-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 18305+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 18306 // reserved. Use of this source code is governed by a BSD-style license that 18307 // can be found in the LICENSE file. 18308 // 18309@@ -9,7 +9,7 @@ 18310 // implementations. See the translator.README.txt file in the tools directory 18311 // for more information. 18312 // 18313-// $hash=7c6283658d49420281d02b4793f65f478f261461$ 18314+// $hash=561afa1705a1c0f0028365ac9ff9fb5f5b897490$ 18315 // 18316 18317 #include "libcef_dll/cpptoc/views/view_delegate_cpptoc.h" 18318diff --git a/cef/libcef_dll/cpptoc/views/view_delegate_cpptoc.h b/cef/libcef_dll/cpptoc/views/view_delegate_cpptoc.h 18319index 1c9ae65722..38d6332b82 100644 18320--- a/cef/libcef_dll/cpptoc/views/view_delegate_cpptoc.h 18321+++ b/cef/libcef_dll/cpptoc/views/view_delegate_cpptoc.h 18322@@ -1,4 +1,4 @@ 18323-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 18324+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 18325 // reserved. Use of this source code is governed by a BSD-style license that 18326 // can be found in the LICENSE file. 18327 // 18328@@ -9,7 +9,7 @@ 18329 // implementations. See the translator.README.txt file in the tools directory 18330 // for more information. 18331 // 18332-// $hash=6be75d9c3a5eeaf6683ae920e175e0c597071328$ 18333+// $hash=ebd265b4907f2531eacce52bd6cfd1f8848b7abf$ 18334 // 18335 18336 #ifndef CEF_LIBCEF_DLL_CPPTOC_VIEWS_VIEW_DELEGATE_CPPTOC_H_ 18337diff --git a/cef/libcef_dll/cpptoc/views/window_cpptoc.cc b/cef/libcef_dll/cpptoc/views/window_cpptoc.cc 18338index 6a5e0a9b6b..3404972088 100644 18339--- a/cef/libcef_dll/cpptoc/views/window_cpptoc.cc 18340+++ b/cef/libcef_dll/cpptoc/views/window_cpptoc.cc 18341@@ -1,4 +1,4 @@ 18342-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 18343+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 18344 // reserved. Use of this source code is governed by a BSD-style license that 18345 // can be found in the LICENSE file. 18346 // 18347@@ -9,7 +9,7 @@ 18348 // implementations. See the translator.README.txt file in the tools directory 18349 // for more information. 18350 // 18351-// $hash=1d17ae751431af3baf83b3386f1cab410964a17f$ 18352+// $hash=a5be2f155956625b336fc3549328fef2f382a218$ 18353 // 18354 18355 #include "libcef_dll/cpptoc/views/window_cpptoc.h" 18356diff --git a/cef/libcef_dll/cpptoc/views/window_cpptoc.h b/cef/libcef_dll/cpptoc/views/window_cpptoc.h 18357index 997d6082d9..de348f70d4 100644 18358--- a/cef/libcef_dll/cpptoc/views/window_cpptoc.h 18359+++ b/cef/libcef_dll/cpptoc/views/window_cpptoc.h 18360@@ -1,4 +1,4 @@ 18361-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 18362+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 18363 // reserved. Use of this source code is governed by a BSD-style license that 18364 // can be found in the LICENSE file. 18365 // 18366@@ -9,7 +9,7 @@ 18367 // implementations. See the translator.README.txt file in the tools directory 18368 // for more information. 18369 // 18370-// $hash=4af1ddb7edf5abafbd0bc925fa4e5be641dd1b23$ 18371+// $hash=5b14236c7e00a7dafa47fdc32ce78d347de477a1$ 18372 // 18373 18374 #ifndef CEF_LIBCEF_DLL_CPPTOC_VIEWS_WINDOW_CPPTOC_H_ 18375diff --git a/cef/libcef_dll/cpptoc/views/window_delegate_cpptoc.cc b/cef/libcef_dll/cpptoc/views/window_delegate_cpptoc.cc 18376index b3fb171353..950f9a93b7 100644 18377--- a/cef/libcef_dll/cpptoc/views/window_delegate_cpptoc.cc 18378+++ b/cef/libcef_dll/cpptoc/views/window_delegate_cpptoc.cc 18379@@ -1,4 +1,4 @@ 18380-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 18381+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 18382 // reserved. Use of this source code is governed by a BSD-style license that 18383 // can be found in the LICENSE file. 18384 // 18385@@ -9,7 +9,7 @@ 18386 // implementations. See the translator.README.txt file in the tools directory 18387 // for more information. 18388 // 18389-// $hash=a201b988556a825fffe39f58e378664b93795c72$ 18390+// $hash=2ab619afac5d34044d99093eca2cac4e644ba6ee$ 18391 // 18392 18393 #include "libcef_dll/cpptoc/views/window_delegate_cpptoc.h" 18394diff --git a/cef/libcef_dll/cpptoc/views/window_delegate_cpptoc.h b/cef/libcef_dll/cpptoc/views/window_delegate_cpptoc.h 18395index 39d2325932..dff58e097e 100644 18396--- a/cef/libcef_dll/cpptoc/views/window_delegate_cpptoc.h 18397+++ b/cef/libcef_dll/cpptoc/views/window_delegate_cpptoc.h 18398@@ -1,4 +1,4 @@ 18399-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 18400+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 18401 // reserved. Use of this source code is governed by a BSD-style license that 18402 // can be found in the LICENSE file. 18403 // 18404@@ -9,7 +9,7 @@ 18405 // implementations. See the translator.README.txt file in the tools directory 18406 // for more information. 18407 // 18408-// $hash=958f75d98ec087824d5ae5e078cdf9f434541de9$ 18409+// $hash=594a3ff498c14872187e0ae8d466a023664c92b6$ 18410 // 18411 18412 #ifndef CEF_LIBCEF_DLL_CPPTOC_VIEWS_WINDOW_DELEGATE_CPPTOC_H_ 18413diff --git a/cef/libcef_dll/cpptoc/waitable_event_cpptoc.cc b/cef/libcef_dll/cpptoc/waitable_event_cpptoc.cc 18414index 111746431a..f65b2038dc 100644 18415--- a/cef/libcef_dll/cpptoc/waitable_event_cpptoc.cc 18416+++ b/cef/libcef_dll/cpptoc/waitable_event_cpptoc.cc 18417@@ -1,4 +1,4 @@ 18418-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 18419+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 18420 // reserved. Use of this source code is governed by a BSD-style license that 18421 // can be found in the LICENSE file. 18422 // 18423@@ -9,7 +9,7 @@ 18424 // implementations. See the translator.README.txt file in the tools directory 18425 // for more information. 18426 // 18427-// $hash=114c67ca2a781a0ddee594fba0f5ca1a4567b465$ 18428+// $hash=ea0c4c4d8c202a47a9b5b63a57525dc726c1e40e$ 18429 // 18430 18431 #include "libcef_dll/cpptoc/waitable_event_cpptoc.h" 18432diff --git a/cef/libcef_dll/cpptoc/waitable_event_cpptoc.h b/cef/libcef_dll/cpptoc/waitable_event_cpptoc.h 18433index 9ea6b72a25..cc466b7b3e 100644 18434--- a/cef/libcef_dll/cpptoc/waitable_event_cpptoc.h 18435+++ b/cef/libcef_dll/cpptoc/waitable_event_cpptoc.h 18436@@ -1,4 +1,4 @@ 18437-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 18438+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 18439 // reserved. Use of this source code is governed by a BSD-style license that 18440 // can be found in the LICENSE file. 18441 // 18442@@ -9,7 +9,7 @@ 18443 // implementations. See the translator.README.txt file in the tools directory 18444 // for more information. 18445 // 18446-// $hash=96249ce7f6494368cd77c16154b1c5ef13a5c698$ 18447+// $hash=f19f05824d06a9aadd3ad10b58e2041eb855a66e$ 18448 // 18449 18450 #ifndef CEF_LIBCEF_DLL_CPPTOC_WAITABLE_EVENT_CPPTOC_H_ 18451diff --git a/cef/libcef_dll/cpptoc/web_plugin_info_cpptoc.cc b/cef/libcef_dll/cpptoc/web_plugin_info_cpptoc.cc 18452index bd6157cad2..36698f5db9 100644 18453--- a/cef/libcef_dll/cpptoc/web_plugin_info_cpptoc.cc 18454+++ b/cef/libcef_dll/cpptoc/web_plugin_info_cpptoc.cc 18455@@ -1,4 +1,4 @@ 18456-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 18457+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 18458 // reserved. Use of this source code is governed by a BSD-style license that 18459 // can be found in the LICENSE file. 18460 // 18461@@ -9,7 +9,7 @@ 18462 // implementations. See the translator.README.txt file in the tools directory 18463 // for more information. 18464 // 18465-// $hash=c10eca449f7442521ac633f2f76b39246e7a560f$ 18466+// $hash=f251bc08b09854c1d999ef9d88706ceeba3a9259$ 18467 // 18468 18469 #include "libcef_dll/cpptoc/web_plugin_info_cpptoc.h" 18470diff --git a/cef/libcef_dll/cpptoc/web_plugin_info_cpptoc.h b/cef/libcef_dll/cpptoc/web_plugin_info_cpptoc.h 18471index 1ac734288e..54ac02fb6d 100644 18472--- a/cef/libcef_dll/cpptoc/web_plugin_info_cpptoc.h 18473+++ b/cef/libcef_dll/cpptoc/web_plugin_info_cpptoc.h 18474@@ -1,4 +1,4 @@ 18475-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 18476+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 18477 // reserved. Use of this source code is governed by a BSD-style license that 18478 // can be found in the LICENSE file. 18479 // 18480@@ -9,7 +9,7 @@ 18481 // implementations. See the translator.README.txt file in the tools directory 18482 // for more information. 18483 // 18484-// $hash=af50aa803ca11f21aca5fdb7b429d0fbf13ec66a$ 18485+// $hash=6b84c31a12d45d8707befeb476e6977f59c3e6e2$ 18486 // 18487 18488 #ifndef CEF_LIBCEF_DLL_CPPTOC_WEB_PLUGIN_INFO_CPPTOC_H_ 18489diff --git a/cef/libcef_dll/cpptoc/web_plugin_info_visitor_cpptoc.cc b/cef/libcef_dll/cpptoc/web_plugin_info_visitor_cpptoc.cc 18490index f09358a1e3..2e59fce423 100644 18491--- a/cef/libcef_dll/cpptoc/web_plugin_info_visitor_cpptoc.cc 18492+++ b/cef/libcef_dll/cpptoc/web_plugin_info_visitor_cpptoc.cc 18493@@ -1,4 +1,4 @@ 18494-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 18495+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 18496 // reserved. Use of this source code is governed by a BSD-style license that 18497 // can be found in the LICENSE file. 18498 // 18499@@ -9,7 +9,7 @@ 18500 // implementations. See the translator.README.txt file in the tools directory 18501 // for more information. 18502 // 18503-// $hash=b03fce6f309fac406b62e608d68483dc939dc56f$ 18504+// $hash=df08a3fe475bba8107cfc45af61a31c4d0295014$ 18505 // 18506 18507 #include "libcef_dll/cpptoc/web_plugin_info_visitor_cpptoc.h" 18508diff --git a/cef/libcef_dll/cpptoc/web_plugin_info_visitor_cpptoc.h b/cef/libcef_dll/cpptoc/web_plugin_info_visitor_cpptoc.h 18509index 18439ce9ce..283d371956 100644 18510--- a/cef/libcef_dll/cpptoc/web_plugin_info_visitor_cpptoc.h 18511+++ b/cef/libcef_dll/cpptoc/web_plugin_info_visitor_cpptoc.h 18512@@ -1,4 +1,4 @@ 18513-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 18514+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 18515 // reserved. Use of this source code is governed by a BSD-style license that 18516 // can be found in the LICENSE file. 18517 // 18518@@ -9,7 +9,7 @@ 18519 // implementations. See the translator.README.txt file in the tools directory 18520 // for more information. 18521 // 18522-// $hash=6b8315284960854edb188cc131335d7c2efabfd9$ 18523+// $hash=5d5192e483c62143bf6b16ee292fe5e5f471e198$ 18524 // 18525 18526 #ifndef CEF_LIBCEF_DLL_CPPTOC_WEB_PLUGIN_INFO_VISITOR_CPPTOC_H_ 18527diff --git a/cef/libcef_dll/cpptoc/web_plugin_unstable_callback_cpptoc.cc b/cef/libcef_dll/cpptoc/web_plugin_unstable_callback_cpptoc.cc 18528index 6375c13173..50cab6cb83 100644 18529--- a/cef/libcef_dll/cpptoc/web_plugin_unstable_callback_cpptoc.cc 18530+++ b/cef/libcef_dll/cpptoc/web_plugin_unstable_callback_cpptoc.cc 18531@@ -1,4 +1,4 @@ 18532-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 18533+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 18534 // reserved. Use of this source code is governed by a BSD-style license that 18535 // can be found in the LICENSE file. 18536 // 18537@@ -9,7 +9,7 @@ 18538 // implementations. See the translator.README.txt file in the tools directory 18539 // for more information. 18540 // 18541-// $hash=ceaecd9124811dc01c7d3b0aa222b1dc9e0964c7$ 18542+// $hash=42ed9f3aa6aef7580eabb0a94981f1b7b5760d16$ 18543 // 18544 18545 #include "libcef_dll/cpptoc/web_plugin_unstable_callback_cpptoc.h" 18546diff --git a/cef/libcef_dll/cpptoc/web_plugin_unstable_callback_cpptoc.h b/cef/libcef_dll/cpptoc/web_plugin_unstable_callback_cpptoc.h 18547index 2b39cc5357..4d8c795c83 100644 18548--- a/cef/libcef_dll/cpptoc/web_plugin_unstable_callback_cpptoc.h 18549+++ b/cef/libcef_dll/cpptoc/web_plugin_unstable_callback_cpptoc.h 18550@@ -1,4 +1,4 @@ 18551-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 18552+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 18553 // reserved. Use of this source code is governed by a BSD-style license that 18554 // can be found in the LICENSE file. 18555 // 18556@@ -9,7 +9,7 @@ 18557 // implementations. See the translator.README.txt file in the tools directory 18558 // for more information. 18559 // 18560-// $hash=6154c085fda09c2a369f3e7da73e6b63858bf919$ 18561+// $hash=35a890b3dfa88746ee48ed0c94f351098213d163$ 18562 // 18563 18564 #ifndef CEF_LIBCEF_DLL_CPPTOC_WEB_PLUGIN_UNSTABLE_CALLBACK_CPPTOC_H_ 18565diff --git a/cef/libcef_dll/cpptoc/write_handler_cpptoc.cc b/cef/libcef_dll/cpptoc/write_handler_cpptoc.cc 18566index 89af834003..8de6eb3a2e 100644 18567--- a/cef/libcef_dll/cpptoc/write_handler_cpptoc.cc 18568+++ b/cef/libcef_dll/cpptoc/write_handler_cpptoc.cc 18569@@ -1,4 +1,4 @@ 18570-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 18571+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 18572 // reserved. Use of this source code is governed by a BSD-style license that 18573 // can be found in the LICENSE file. 18574 // 18575@@ -9,7 +9,7 @@ 18576 // implementations. See the translator.README.txt file in the tools directory 18577 // for more information. 18578 // 18579-// $hash=10172f5d19b0add78894f56fe139b1d6819febd0$ 18580+// $hash=208b9651cb7a357f7665e6d449c6ba974dfae9e3$ 18581 // 18582 18583 #include "libcef_dll/cpptoc/write_handler_cpptoc.h" 18584diff --git a/cef/libcef_dll/cpptoc/write_handler_cpptoc.h b/cef/libcef_dll/cpptoc/write_handler_cpptoc.h 18585index e13816574b..dfcfd5b41d 100644 18586--- a/cef/libcef_dll/cpptoc/write_handler_cpptoc.h 18587+++ b/cef/libcef_dll/cpptoc/write_handler_cpptoc.h 18588@@ -1,4 +1,4 @@ 18589-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 18590+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 18591 // reserved. Use of this source code is governed by a BSD-style license that 18592 // can be found in the LICENSE file. 18593 // 18594@@ -9,7 +9,7 @@ 18595 // implementations. See the translator.README.txt file in the tools directory 18596 // for more information. 18597 // 18598-// $hash=100ed73457186f2dae10d236cc534f908f371dbd$ 18599+// $hash=b6360b7899237a1d616dd8c1cff016d397acbcd3$ 18600 // 18601 18602 #ifndef CEF_LIBCEF_DLL_CPPTOC_WRITE_HANDLER_CPPTOC_H_ 18603diff --git a/cef/libcef_dll/cpptoc/x509cert_principal_cpptoc.cc b/cef/libcef_dll/cpptoc/x509cert_principal_cpptoc.cc 18604index 5ae1b4dc3d..abbd87a9ba 100644 18605--- a/cef/libcef_dll/cpptoc/x509cert_principal_cpptoc.cc 18606+++ b/cef/libcef_dll/cpptoc/x509cert_principal_cpptoc.cc 18607@@ -1,4 +1,4 @@ 18608-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 18609+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 18610 // reserved. Use of this source code is governed by a BSD-style license that 18611 // can be found in the LICENSE file. 18612 // 18613@@ -9,7 +9,7 @@ 18614 // implementations. See the translator.README.txt file in the tools directory 18615 // for more information. 18616 // 18617-// $hash=c590e9344004031c7cfe302bcb138635268b1251$ 18618+// $hash=08b0ac0ef8621f8ce81753616044a5e04dc4a191$ 18619 // 18620 18621 #include "libcef_dll/cpptoc/x509cert_principal_cpptoc.h" 18622diff --git a/cef/libcef_dll/cpptoc/x509cert_principal_cpptoc.h b/cef/libcef_dll/cpptoc/x509cert_principal_cpptoc.h 18623index cc69f57fe9..244854b81a 100644 18624--- a/cef/libcef_dll/cpptoc/x509cert_principal_cpptoc.h 18625+++ b/cef/libcef_dll/cpptoc/x509cert_principal_cpptoc.h 18626@@ -1,4 +1,4 @@ 18627-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 18628+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 18629 // reserved. Use of this source code is governed by a BSD-style license that 18630 // can be found in the LICENSE file. 18631 // 18632@@ -9,7 +9,7 @@ 18633 // implementations. See the translator.README.txt file in the tools directory 18634 // for more information. 18635 // 18636-// $hash=0065be19dffd62f262e1c60cb45f6e46745234d1$ 18637+// $hash=2041bbbdcbf9434c1a5205ebae8438d47725aa1f$ 18638 // 18639 18640 #ifndef CEF_LIBCEF_DLL_CPPTOC_X509CERT_PRINCIPAL_CPPTOC_H_ 18641diff --git a/cef/libcef_dll/cpptoc/x509certificate_cpptoc.cc b/cef/libcef_dll/cpptoc/x509certificate_cpptoc.cc 18642index c157410047..e510b4d192 100644 18643--- a/cef/libcef_dll/cpptoc/x509certificate_cpptoc.cc 18644+++ b/cef/libcef_dll/cpptoc/x509certificate_cpptoc.cc 18645@@ -1,4 +1,4 @@ 18646-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 18647+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 18648 // reserved. Use of this source code is governed by a BSD-style license that 18649 // can be found in the LICENSE file. 18650 // 18651@@ -9,7 +9,7 @@ 18652 // implementations. See the translator.README.txt file in the tools directory 18653 // for more information. 18654 // 18655-// $hash=28d75543e047ea62864cad815e6ff3bcd65b46cf$ 18656+// $hash=cac3e88ea15965e3a7786500606845b0b6157212$ 18657 // 18658 18659 #include "libcef_dll/cpptoc/x509certificate_cpptoc.h" 18660diff --git a/cef/libcef_dll/cpptoc/x509certificate_cpptoc.h b/cef/libcef_dll/cpptoc/x509certificate_cpptoc.h 18661index b54c58a81a..29644da070 100644 18662--- a/cef/libcef_dll/cpptoc/x509certificate_cpptoc.h 18663+++ b/cef/libcef_dll/cpptoc/x509certificate_cpptoc.h 18664@@ -1,4 +1,4 @@ 18665-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 18666+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 18667 // reserved. Use of this source code is governed by a BSD-style license that 18668 // can be found in the LICENSE file. 18669 // 18670@@ -9,7 +9,7 @@ 18671 // implementations. See the translator.README.txt file in the tools directory 18672 // for more information. 18673 // 18674-// $hash=677401b52a4c53e2ccacff0a36070b2e074d38b5$ 18675+// $hash=6eb11abb213e5b3e50494c956c51d6286020ca39$ 18676 // 18677 18678 #ifndef CEF_LIBCEF_DLL_CPPTOC_X509CERTIFICATE_CPPTOC_H_ 18679diff --git a/cef/libcef_dll/cpptoc/xml_reader_cpptoc.cc b/cef/libcef_dll/cpptoc/xml_reader_cpptoc.cc 18680index 2fd24cc8bc..ae117e5f24 100644 18681--- a/cef/libcef_dll/cpptoc/xml_reader_cpptoc.cc 18682+++ b/cef/libcef_dll/cpptoc/xml_reader_cpptoc.cc 18683@@ -1,4 +1,4 @@ 18684-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 18685+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 18686 // reserved. Use of this source code is governed by a BSD-style license that 18687 // can be found in the LICENSE file. 18688 // 18689@@ -9,7 +9,7 @@ 18690 // implementations. See the translator.README.txt file in the tools directory 18691 // for more information. 18692 // 18693-// $hash=2b6f6a88740653aabe8cb154633433afff15ece5$ 18694+// $hash=3ac5f5c45a59bad3310db431653227ceac42186e$ 18695 // 18696 18697 #include "libcef_dll/cpptoc/xml_reader_cpptoc.h" 18698diff --git a/cef/libcef_dll/cpptoc/xml_reader_cpptoc.h b/cef/libcef_dll/cpptoc/xml_reader_cpptoc.h 18699index 76acc9c567..5f32d62c81 100644 18700--- a/cef/libcef_dll/cpptoc/xml_reader_cpptoc.h 18701+++ b/cef/libcef_dll/cpptoc/xml_reader_cpptoc.h 18702@@ -1,4 +1,4 @@ 18703-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 18704+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 18705 // reserved. Use of this source code is governed by a BSD-style license that 18706 // can be found in the LICENSE file. 18707 // 18708@@ -9,7 +9,7 @@ 18709 // implementations. See the translator.README.txt file in the tools directory 18710 // for more information. 18711 // 18712-// $hash=dab3976baaad474d4ea7764562382969b1071491$ 18713+// $hash=397fee4bf9eb4c1dc2117bba9ac2b63542335196$ 18714 // 18715 18716 #ifndef CEF_LIBCEF_DLL_CPPTOC_XML_READER_CPPTOC_H_ 18717diff --git a/cef/libcef_dll/cpptoc/zip_reader_cpptoc.cc b/cef/libcef_dll/cpptoc/zip_reader_cpptoc.cc 18718index 641d9e1a79..a53a7a724e 100644 18719--- a/cef/libcef_dll/cpptoc/zip_reader_cpptoc.cc 18720+++ b/cef/libcef_dll/cpptoc/zip_reader_cpptoc.cc 18721@@ -1,4 +1,4 @@ 18722-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 18723+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 18724 // reserved. Use of this source code is governed by a BSD-style license that 18725 // can be found in the LICENSE file. 18726 // 18727@@ -9,7 +9,7 @@ 18728 // implementations. See the translator.README.txt file in the tools directory 18729 // for more information. 18730 // 18731-// $hash=29cc6dc5f0d84a3c743bfceb1e94d8679d7dc85a$ 18732+// $hash=9fe9e9199e284af22669ba2abfb715d0e7ae8de3$ 18733 // 18734 18735 #include "libcef_dll/cpptoc/zip_reader_cpptoc.h" 18736diff --git a/cef/libcef_dll/cpptoc/zip_reader_cpptoc.h b/cef/libcef_dll/cpptoc/zip_reader_cpptoc.h 18737index 15889f219e..c04789a0c9 100644 18738--- a/cef/libcef_dll/cpptoc/zip_reader_cpptoc.h 18739+++ b/cef/libcef_dll/cpptoc/zip_reader_cpptoc.h 18740@@ -1,4 +1,4 @@ 18741-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 18742+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 18743 // reserved. Use of this source code is governed by a BSD-style license that 18744 // can be found in the LICENSE file. 18745 // 18746@@ -9,7 +9,7 @@ 18747 // implementations. See the translator.README.txt file in the tools directory 18748 // for more information. 18749 // 18750-// $hash=a5ace913fb83fef08e7678ce2b9fdaedae5cde1d$ 18751+// $hash=10530d641ffc50165b89d16e76230b9ab3f9aca5$ 18752 // 18753 18754 #ifndef CEF_LIBCEF_DLL_CPPTOC_ZIP_READER_CPPTOC_H_ 18755diff --git a/cef/libcef_dll/ctocpp/access_request_ctocpp.cc b/cef/libcef_dll/ctocpp/access_request_ctocpp.cc 18756new file mode 100644 18757index 0000000000..4d7e095ef4 18758--- /dev/null 18759+++ b/cef/libcef_dll/ctocpp/access_request_ctocpp.cc 18760@@ -0,0 +1,92 @@ 18761+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 18762+// reserved. Use of this source code is governed by a BSD-style license that 18763+// can be found in the LICENSE file. 18764+// 18765+// --------------------------------------------------------------------------- 18766+// 18767+// This file was generated by the CEF translator tool. If making changes by 18768+// hand only do so within the body of existing method and function 18769+// implementations. See the translator.README.txt file in the tools directory 18770+// for more information. 18771+// 18772+// $hash=05b34b1c04c69b654aad9a8136efbe83693d255f$ 18773+// 18774+ 18775+#include "libcef_dll/ctocpp/access_request_ctocpp.h" 18776+#include "libcef_dll/shutdown_checker.h" 18777+ 18778+// VIRTUAL METHODS - Body may be edited by hand. 18779+ 18780+NO_SANITIZE("cfi-icall") CefString CefAccessRequestCToCpp::Origin() { 18781+ shutdown_checker::AssertNotShutdown(); 18782+ 18783+ cef_access_request_t* _struct = GetStruct(); 18784+ if (CEF_MEMBER_MISSING(_struct, origin)) 18785+ return CefString(); 18786+ 18787+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 18788+ 18789+ // Execute 18790+ cef_string_userfree_t _retval = _struct->origin(_struct); 18791+ 18792+ // Return type: string 18793+ CefString _retvalStr; 18794+ _retvalStr.AttachToUserFree(_retval); 18795+ return _retvalStr; 18796+} 18797+ 18798+NO_SANITIZE("cfi-icall") int CefAccessRequestCToCpp::ResourceAcessId() { 18799+ shutdown_checker::AssertNotShutdown(); 18800+ 18801+ cef_access_request_t* _struct = GetStruct(); 18802+ if (CEF_MEMBER_MISSING(_struct, resource_acess_id)) 18803+ return 0; 18804+ 18805+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 18806+ 18807+ // Execute 18808+ int _retval = _struct->resource_acess_id(_struct); 18809+ 18810+ // Return type: simple 18811+ return _retval; 18812+} 18813+ 18814+NO_SANITIZE("cfi-icall") 18815+void CefAccessRequestCToCpp::ReportRequestResult(bool allowed) { 18816+ shutdown_checker::AssertNotShutdown(); 18817+ 18818+ cef_access_request_t* _struct = GetStruct(); 18819+ if (CEF_MEMBER_MISSING(_struct, report_request_result)) 18820+ return; 18821+ 18822+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 18823+ 18824+ // Execute 18825+ _struct->report_request_result(_struct, allowed); 18826+} 18827+ 18828+// CONSTRUCTOR - Do not edit by hand. 18829+ 18830+CefAccessRequestCToCpp::CefAccessRequestCToCpp() {} 18831+ 18832+// DESTRUCTOR - Do not edit by hand. 18833+ 18834+CefAccessRequestCToCpp::~CefAccessRequestCToCpp() { 18835+ shutdown_checker::AssertNotShutdown(); 18836+} 18837+ 18838+template <> 18839+cef_access_request_t* 18840+CefCToCppRefCounted<CefAccessRequestCToCpp, 18841+ CefAccessRequest, 18842+ cef_access_request_t>::UnwrapDerived(CefWrapperType type, 18843+ CefAccessRequest* c) { 18844+ NOTREACHED() << "Unexpected class type: " << type; 18845+ return nullptr; 18846+} 18847+ 18848+template <> 18849+CefWrapperType CefCToCppRefCounted<CefAccessRequestCToCpp, 18850+ CefAccessRequest, 18851+ cef_access_request_t>::kWrapperType = 18852+ WT_ACCESS_REQUEST; 18853diff --git a/cef/libcef_dll/ctocpp/access_request_ctocpp.h b/cef/libcef_dll/ctocpp/access_request_ctocpp.h 18854new file mode 100644 18855index 0000000000..a20536f2f7 18856--- /dev/null 18857+++ b/cef/libcef_dll/ctocpp/access_request_ctocpp.h 18858@@ -0,0 +1,43 @@ 18859+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 18860+// reserved. Use of this source code is governed by a BSD-style license that 18861+// can be found in the LICENSE file. 18862+// 18863+// --------------------------------------------------------------------------- 18864+// 18865+// This file was generated by the CEF translator tool. If making changes by 18866+// hand only do so within the body of existing method and function 18867+// implementations. See the translator.README.txt file in the tools directory 18868+// for more information. 18869+// 18870+// $hash=1d85af65e5e48373ca6ecb843bb0fcb8e4483aee$ 18871+// 18872+ 18873+#ifndef CEF_LIBCEF_DLL_CTOCPP_ACCESS_REQUEST_CTOCPP_H_ 18874+#define CEF_LIBCEF_DLL_CTOCPP_ACCESS_REQUEST_CTOCPP_H_ 18875+#pragma once 18876+ 18877+#if !defined(WRAPPING_CEF_SHARED) 18878+#error This file can be included wrapper-side only 18879+#endif 18880+ 18881+#include "include/capi/cef_permission_request_capi.h" 18882+#include "include/cef_permission_request.h" 18883+#include "libcef_dll/ctocpp/ctocpp_ref_counted.h" 18884+ 18885+// Wrap a C structure with a C++ class. 18886+// This class may be instantiated and accessed wrapper-side only. 18887+class CefAccessRequestCToCpp 18888+ : public CefCToCppRefCounted<CefAccessRequestCToCpp, 18889+ CefAccessRequest, 18890+ cef_access_request_t> { 18891+ public: 18892+ CefAccessRequestCToCpp(); 18893+ virtual ~CefAccessRequestCToCpp(); 18894+ 18895+ // CefAccessRequest methods. 18896+ CefString Origin() OVERRIDE; 18897+ int ResourceAcessId() OVERRIDE; 18898+ void ReportRequestResult(bool allowed) OVERRIDE; 18899+}; 18900+ 18901+#endif // CEF_LIBCEF_DLL_CTOCPP_ACCESS_REQUEST_CTOCPP_H_ 18902diff --git a/cef/libcef_dll/ctocpp/accessibility_handler_ctocpp.cc b/cef/libcef_dll/ctocpp/accessibility_handler_ctocpp.cc 18903index 9c7436f0c3..544ecf2731 100644 18904--- a/cef/libcef_dll/ctocpp/accessibility_handler_ctocpp.cc 18905+++ b/cef/libcef_dll/ctocpp/accessibility_handler_ctocpp.cc 18906@@ -1,4 +1,4 @@ 18907-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 18908+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 18909 // reserved. Use of this source code is governed by a BSD-style license that 18910 // can be found in the LICENSE file. 18911 // 18912@@ -9,7 +9,7 @@ 18913 // implementations. See the translator.README.txt file in the tools directory 18914 // for more information. 18915 // 18916-// $hash=88c8e7eb206fa64ab57b424defd9af24da6d5491$ 18917+// $hash=ced6517a7c7149502b418c5fb06386ff30777630$ 18918 // 18919 18920 #include "libcef_dll/ctocpp/accessibility_handler_ctocpp.h" 18921diff --git a/cef/libcef_dll/ctocpp/accessibility_handler_ctocpp.h b/cef/libcef_dll/ctocpp/accessibility_handler_ctocpp.h 18922index de92d2ca56..17804af634 100644 18923--- a/cef/libcef_dll/ctocpp/accessibility_handler_ctocpp.h 18924+++ b/cef/libcef_dll/ctocpp/accessibility_handler_ctocpp.h 18925@@ -1,4 +1,4 @@ 18926-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 18927+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 18928 // reserved. Use of this source code is governed by a BSD-style license that 18929 // can be found in the LICENSE file. 18930 // 18931@@ -9,7 +9,7 @@ 18932 // implementations. See the translator.README.txt file in the tools directory 18933 // for more information. 18934 // 18935-// $hash=88719c35cf2cbe25a0896961f0d75815d326ef12$ 18936+// $hash=7ab53ef41cd69320ac6441e514582fd583203207$ 18937 // 18938 18939 #ifndef CEF_LIBCEF_DLL_CTOCPP_ACCESSIBILITY_HANDLER_CTOCPP_H_ 18940diff --git a/cef/libcef_dll/ctocpp/app_ctocpp.cc b/cef/libcef_dll/ctocpp/app_ctocpp.cc 18941index 9e29935d1c..6d60e8f0cd 100644 18942--- a/cef/libcef_dll/ctocpp/app_ctocpp.cc 18943+++ b/cef/libcef_dll/ctocpp/app_ctocpp.cc 18944@@ -1,4 +1,4 @@ 18945-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 18946+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 18947 // reserved. Use of this source code is governed by a BSD-style license that 18948 // can be found in the LICENSE file. 18949 // 18950@@ -9,7 +9,7 @@ 18951 // implementations. See the translator.README.txt file in the tools directory 18952 // for more information. 18953 // 18954-// $hash=7384d804f1ca18e02e55a7003aa5c286ebe89d30$ 18955+// $hash=9986455b9b29bd88504e9b4c2b73bfebc87cfc61$ 18956 // 18957 18958 #include "libcef_dll/ctocpp/app_ctocpp.h" 18959diff --git a/cef/libcef_dll/ctocpp/app_ctocpp.h b/cef/libcef_dll/ctocpp/app_ctocpp.h 18960index ed94af321b..bac5ba4bb1 100644 18961--- a/cef/libcef_dll/ctocpp/app_ctocpp.h 18962+++ b/cef/libcef_dll/ctocpp/app_ctocpp.h 18963@@ -1,4 +1,4 @@ 18964-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 18965+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 18966 // reserved. Use of this source code is governed by a BSD-style license that 18967 // can be found in the LICENSE file. 18968 // 18969@@ -9,7 +9,7 @@ 18970 // implementations. See the translator.README.txt file in the tools directory 18971 // for more information. 18972 // 18973-// $hash=f5d630da8a054d8d8d7ca37345132302dcd2d0fc$ 18974+// $hash=b1a38565477fd1c436d8a62bfa9d41747f7fe30f$ 18975 // 18976 18977 #ifndef CEF_LIBCEF_DLL_CTOCPP_APP_CTOCPP_H_ 18978diff --git a/cef/libcef_dll/ctocpp/audio_handler_ctocpp.cc b/cef/libcef_dll/ctocpp/audio_handler_ctocpp.cc 18979index 016fd311cc..fcba4e0879 100644 18980--- a/cef/libcef_dll/ctocpp/audio_handler_ctocpp.cc 18981+++ b/cef/libcef_dll/ctocpp/audio_handler_ctocpp.cc 18982@@ -1,4 +1,4 @@ 18983-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 18984+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 18985 // reserved. Use of this source code is governed by a BSD-style license that 18986 // can be found in the LICENSE file. 18987 // 18988@@ -9,7 +9,7 @@ 18989 // implementations. See the translator.README.txt file in the tools directory 18990 // for more information. 18991 // 18992-// $hash=8bd4a48d7cb2e9aaf628d65431588c1e83e854da$ 18993+// $hash=e2df55073d0fb809dcd4cf0f6bb7ed36dcd4f73c$ 18994 // 18995 18996 #include "libcef_dll/ctocpp/audio_handler_ctocpp.h" 18997diff --git a/cef/libcef_dll/ctocpp/audio_handler_ctocpp.h b/cef/libcef_dll/ctocpp/audio_handler_ctocpp.h 18998index 80e49dab53..cdb6138637 100644 18999--- a/cef/libcef_dll/ctocpp/audio_handler_ctocpp.h 19000+++ b/cef/libcef_dll/ctocpp/audio_handler_ctocpp.h 19001@@ -1,4 +1,4 @@ 19002-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 19003+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 19004 // reserved. Use of this source code is governed by a BSD-style license that 19005 // can be found in the LICENSE file. 19006 // 19007@@ -9,7 +9,7 @@ 19008 // implementations. See the translator.README.txt file in the tools directory 19009 // for more information. 19010 // 19011-// $hash=ccd696c315ecbc8cf3252c54a9bd71ac28d5550d$ 19012+// $hash=9de91dcf5136e07c0d5c06ad9be8173b918f668a$ 19013 // 19014 19015 #ifndef CEF_LIBCEF_DLL_CTOCPP_AUDIO_HANDLER_CTOCPP_H_ 19016diff --git a/cef/libcef_dll/ctocpp/auth_callback_ctocpp.cc b/cef/libcef_dll/ctocpp/auth_callback_ctocpp.cc 19017index ba8f1e61b2..f0acf803eb 100644 19018--- a/cef/libcef_dll/ctocpp/auth_callback_ctocpp.cc 19019+++ b/cef/libcef_dll/ctocpp/auth_callback_ctocpp.cc 19020@@ -1,4 +1,4 @@ 19021-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 19022+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 19023 // reserved. Use of this source code is governed by a BSD-style license that 19024 // can be found in the LICENSE file. 19025 // 19026@@ -9,7 +9,7 @@ 19027 // implementations. See the translator.README.txt file in the tools directory 19028 // for more information. 19029 // 19030-// $hash=5ccac5c93309829f907d949c81c547d0abf0625b$ 19031+// $hash=3ae38c17cba153dbca73496eae905202ac09bfeb$ 19032 // 19033 19034 #include "libcef_dll/ctocpp/auth_callback_ctocpp.h" 19035diff --git a/cef/libcef_dll/ctocpp/auth_callback_ctocpp.h b/cef/libcef_dll/ctocpp/auth_callback_ctocpp.h 19036index 974bdbe175..d8ca62c457 100644 19037--- a/cef/libcef_dll/ctocpp/auth_callback_ctocpp.h 19038+++ b/cef/libcef_dll/ctocpp/auth_callback_ctocpp.h 19039@@ -1,4 +1,4 @@ 19040-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 19041+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 19042 // reserved. Use of this source code is governed by a BSD-style license that 19043 // can be found in the LICENSE file. 19044 // 19045@@ -9,7 +9,7 @@ 19046 // implementations. See the translator.README.txt file in the tools directory 19047 // for more information. 19048 // 19049-// $hash=e3a2949721f228e60049d3aee74253efd1d53f0d$ 19050+// $hash=2e08ff9c5744055783e66c5f5068412c23bdfb6a$ 19051 // 19052 19053 #ifndef CEF_LIBCEF_DLL_CTOCPP_AUTH_CALLBACK_CTOCPP_H_ 19054diff --git a/cef/libcef_dll/ctocpp/before_download_callback_ctocpp.cc b/cef/libcef_dll/ctocpp/before_download_callback_ctocpp.cc 19055index d41ead3c3e..35b0bb6593 100644 19056--- a/cef/libcef_dll/ctocpp/before_download_callback_ctocpp.cc 19057+++ b/cef/libcef_dll/ctocpp/before_download_callback_ctocpp.cc 19058@@ -1,4 +1,4 @@ 19059-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 19060+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 19061 // reserved. Use of this source code is governed by a BSD-style license that 19062 // can be found in the LICENSE file. 19063 // 19064@@ -9,7 +9,7 @@ 19065 // implementations. See the translator.README.txt file in the tools directory 19066 // for more information. 19067 // 19068-// $hash=2cebe88a087dbe955014937d99e976810b27975c$ 19069+// $hash=dab6c53c94db70fbeb54b440584a5147c52fe082$ 19070 // 19071 19072 #include "libcef_dll/ctocpp/before_download_callback_ctocpp.h" 19073diff --git a/cef/libcef_dll/ctocpp/before_download_callback_ctocpp.h b/cef/libcef_dll/ctocpp/before_download_callback_ctocpp.h 19074index caf64abd59..dc1313ca88 100644 19075--- a/cef/libcef_dll/ctocpp/before_download_callback_ctocpp.h 19076+++ b/cef/libcef_dll/ctocpp/before_download_callback_ctocpp.h 19077@@ -1,4 +1,4 @@ 19078-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 19079+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 19080 // reserved. Use of this source code is governed by a BSD-style license that 19081 // can be found in the LICENSE file. 19082 // 19083@@ -9,7 +9,7 @@ 19084 // implementations. See the translator.README.txt file in the tools directory 19085 // for more information. 19086 // 19087-// $hash=b54f6ec001036bb2cab243ced337eafd7cf22ec8$ 19088+// $hash=bc1c58374243e92f6cae5d66edf446523546d18a$ 19089 // 19090 19091 #ifndef CEF_LIBCEF_DLL_CTOCPP_BEFORE_DOWNLOAD_CALLBACK_CTOCPP_H_ 19092diff --git a/cef/libcef_dll/ctocpp/binary_value_ctocpp.cc b/cef/libcef_dll/ctocpp/binary_value_ctocpp.cc 19093index ba1c34b7fe..307b982cde 100644 19094--- a/cef/libcef_dll/ctocpp/binary_value_ctocpp.cc 19095+++ b/cef/libcef_dll/ctocpp/binary_value_ctocpp.cc 19096@@ -1,4 +1,4 @@ 19097-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 19098+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 19099 // reserved. Use of this source code is governed by a BSD-style license that 19100 // can be found in the LICENSE file. 19101 // 19102@@ -9,7 +9,7 @@ 19103 // implementations. See the translator.README.txt file in the tools directory 19104 // for more information. 19105 // 19106-// $hash=78c713e9d60aaa468df5d5cdb224991756b92ce0$ 19107+// $hash=80a91b8a85dc537cb49cbd5eaea974f92fbf9cde$ 19108 // 19109 19110 #include "libcef_dll/ctocpp/binary_value_ctocpp.h" 19111diff --git a/cef/libcef_dll/ctocpp/binary_value_ctocpp.h b/cef/libcef_dll/ctocpp/binary_value_ctocpp.h 19112index b02d4ad731..668f33d7ce 100644 19113--- a/cef/libcef_dll/ctocpp/binary_value_ctocpp.h 19114+++ b/cef/libcef_dll/ctocpp/binary_value_ctocpp.h 19115@@ -1,4 +1,4 @@ 19116-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 19117+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 19118 // reserved. Use of this source code is governed by a BSD-style license that 19119 // can be found in the LICENSE file. 19120 // 19121@@ -9,7 +9,7 @@ 19122 // implementations. See the translator.README.txt file in the tools directory 19123 // for more information. 19124 // 19125-// $hash=6722d4d826fa46825fe93093de549794e765cbbe$ 19126+// $hash=3ee6de3b032cce7c85b08ec86f330815d467b381$ 19127 // 19128 19129 #ifndef CEF_LIBCEF_DLL_CTOCPP_BINARY_VALUE_CTOCPP_H_ 19130diff --git a/cef/libcef_dll/ctocpp/browser_ctocpp.cc b/cef/libcef_dll/ctocpp/browser_ctocpp.cc 19131index 588f67df1d..ab518cb458 100644 19132--- a/cef/libcef_dll/ctocpp/browser_ctocpp.cc 19133+++ b/cef/libcef_dll/ctocpp/browser_ctocpp.cc 19134@@ -1,4 +1,4 @@ 19135-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 19136+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 19137 // reserved. Use of this source code is governed by a BSD-style license that 19138 // can be found in the LICENSE file. 19139 // 19140@@ -9,13 +9,15 @@ 19141 // implementations. See the translator.README.txt file in the tools directory 19142 // for more information. 19143 // 19144-// $hash=7d80a2edec79db9cb7be6bc23a1103a9f55c66c1$ 19145+// $hash=669b83a0500ef99c8537d8f00fe746c28e09b31a$ 19146 // 19147 19148 #include "libcef_dll/ctocpp/browser_ctocpp.h" 19149 #include <algorithm> 19150 #include "libcef_dll/ctocpp/browser_host_ctocpp.h" 19151+#include "libcef_dll/ctocpp/browser_permission_request_delegate_ctocpp.h" 19152 #include "libcef_dll/ctocpp/frame_ctocpp.h" 19153+#include "libcef_dll/ctocpp/geolocation_acess_ctocpp.h" 19154 #include "libcef_dll/shutdown_checker.h" 19155 #include "libcef_dll/transfer_util.h" 19156 19157@@ -95,6 +97,23 @@ NO_SANITIZE("cfi-icall") void CefBrowserCToCpp::GoForward() { 19158 _struct->go_forward(_struct); 19159 } 19160 19161+NO_SANITIZE("cfi-icall") 19162+bool CefBrowserCToCpp::CanGoBackOrForward(int num_steps) { 19163+ shutdown_checker::AssertNotShutdown(); 19164+ 19165+ cef_browser_t* _struct = GetStruct(); 19166+ if (CEF_MEMBER_MISSING(_struct, can_go_back_or_forward)) 19167+ return false; 19168+ 19169+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 19170+ 19171+ // Execute 19172+ int _retval = _struct->can_go_back_or_forward(_struct, num_steps); 19173+ 19174+ // Return type: bool 19175+ return _retval ? true : false; 19176+} 19177+ 19178 NO_SANITIZE("cfi-icall") bool CefBrowserCToCpp::IsLoading() { 19179 shutdown_checker::AssertNotShutdown(); 19180 19181@@ -372,6 +391,43 @@ void CefBrowserCToCpp::GetFrameNames(std::vector<CefString>& names) { 19182 } 19183 } 19184 19185+NO_SANITIZE("cfi-icall") 19186+CefRefPtr<CefBrowserPermissionRequestDelegate> CefBrowserCToCpp:: 19187+ GetPermissionRequestDelegate() { 19188+ shutdown_checker::AssertNotShutdown(); 19189+ 19190+ cef_browser_t* _struct = GetStruct(); 19191+ if (CEF_MEMBER_MISSING(_struct, get_permission_request_delegate)) 19192+ return nullptr; 19193+ 19194+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 19195+ 19196+ // Execute 19197+ cef_browser_permission_request_delegate_t* _retval = 19198+ _struct->get_permission_request_delegate(_struct); 19199+ 19200+ // Return type: refptr_same 19201+ return CefBrowserPermissionRequestDelegateCToCpp::Wrap(_retval); 19202+} 19203+ 19204+NO_SANITIZE("cfi-icall") 19205+CefRefPtr<CefGeolocationAcess> CefBrowserCToCpp::GetGeolocationPermissions() { 19206+ shutdown_checker::AssertNotShutdown(); 19207+ 19208+ cef_browser_t* _struct = GetStruct(); 19209+ if (CEF_MEMBER_MISSING(_struct, get_geolocation_permissions)) 19210+ return nullptr; 19211+ 19212+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 19213+ 19214+ // Execute 19215+ cef_geolocation_acess_t* _retval = 19216+ _struct->get_geolocation_permissions(_struct); 19217+ 19218+ // Return type: refptr_same 19219+ return CefGeolocationAcessCToCpp::Wrap(_retval); 19220+} 19221+ 19222 // CONSTRUCTOR - Do not edit by hand. 19223 19224 CefBrowserCToCpp::CefBrowserCToCpp() {} 19225diff --git a/cef/libcef_dll/ctocpp/browser_ctocpp.h b/cef/libcef_dll/ctocpp/browser_ctocpp.h 19226index 23c9266543..c8ac3665f4 100644 19227--- a/cef/libcef_dll/ctocpp/browser_ctocpp.h 19228+++ b/cef/libcef_dll/ctocpp/browser_ctocpp.h 19229@@ -1,4 +1,4 @@ 19230-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 19231+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 19232 // reserved. Use of this source code is governed by a BSD-style license that 19233 // can be found in the LICENSE file. 19234 // 19235@@ -9,7 +9,7 @@ 19236 // implementations. See the translator.README.txt file in the tools directory 19237 // for more information. 19238 // 19239-// $hash=0413031a4d40137ab08d1bd99af0216e88ebf6ea$ 19240+// $hash=5a8d946ed143178608c22b2952d6f82e46b52976$ 19241 // 19242 19243 #ifndef CEF_LIBCEF_DLL_CTOCPP_BROWSER_CTOCPP_H_ 19244@@ -41,6 +41,7 @@ class CefBrowserCToCpp 19245 void GoBack() OVERRIDE; 19246 bool CanGoForward() OVERRIDE; 19247 void GoForward() OVERRIDE; 19248+ bool CanGoBackOrForward(int num_steps) OVERRIDE; 19249 bool IsLoading() OVERRIDE; 19250 void Reload() OVERRIDE; 19251 void ReloadIgnoreCache() OVERRIDE; 19252@@ -56,6 +57,9 @@ class CefBrowserCToCpp 19253 size_t GetFrameCount() OVERRIDE; 19254 void GetFrameIdentifiers(std::vector<int64>& identifiers) OVERRIDE; 19255 void GetFrameNames(std::vector<CefString>& names) OVERRIDE; 19256+ CefRefPtr<CefBrowserPermissionRequestDelegate> GetPermissionRequestDelegate() 19257+ OVERRIDE; 19258+ CefRefPtr<CefGeolocationAcess> GetGeolocationPermissions() OVERRIDE; 19259 }; 19260 19261 #endif // CEF_LIBCEF_DLL_CTOCPP_BROWSER_CTOCPP_H_ 19262diff --git a/cef/libcef_dll/ctocpp/browser_host_ctocpp.cc b/cef/libcef_dll/ctocpp/browser_host_ctocpp.cc 19263index 1a57545931..558aa1e34d 100644 19264--- a/cef/libcef_dll/ctocpp/browser_host_ctocpp.cc 19265+++ b/cef/libcef_dll/ctocpp/browser_host_ctocpp.cc 19266@@ -1,4 +1,4 @@ 19267-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 19268+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 19269 // reserved. Use of this source code is governed by a BSD-style license that 19270 // can be found in the LICENSE file. 19271 // 19272@@ -9,16 +9,18 @@ 19273 // implementations. See the translator.README.txt file in the tools directory 19274 // for more information. 19275 // 19276-// $hash=e53c3c194d40a9bdee41a348a1c9fd65822e4ba9$ 19277+// $hash=fda8e729ccaccaa70336cc4f897f53098e7430f3$ 19278 // 19279 19280 #include "libcef_dll/ctocpp/browser_host_ctocpp.h" 19281 #include "libcef_dll/cpptoc/client_cpptoc.h" 19282 #include "libcef_dll/cpptoc/dev_tools_message_observer_cpptoc.h" 19283 #include "libcef_dll/cpptoc/download_image_callback_cpptoc.h" 19284+#include "libcef_dll/cpptoc/java_script_result_callback_cpptoc.h" 19285 #include "libcef_dll/cpptoc/navigation_entry_visitor_cpptoc.h" 19286 #include "libcef_dll/cpptoc/pdf_print_callback_cpptoc.h" 19287 #include "libcef_dll/cpptoc/run_file_dialog_callback_cpptoc.h" 19288+#include "libcef_dll/cpptoc/task_cpptoc.h" 19289 #include "libcef_dll/ctocpp/browser_ctocpp.h" 19290 #include "libcef_dll/ctocpp/dictionary_value_ctocpp.h" 19291 #include "libcef_dll/ctocpp/drag_data_ctocpp.h" 19292@@ -98,6 +100,25 @@ CefRefPtr<CefBrowser> CefBrowserHostCToCpp::GetBrowser() { 19293 return CefBrowserCToCpp::Wrap(_retval); 19294 } 19295 19296+NO_SANITIZE("cfi-icall") 19297+void CefBrowserHostCToCpp::PostTaskToUIThread(CefRefPtr<CefTask> task) { 19298+ shutdown_checker::AssertNotShutdown(); 19299+ 19300+ cef_browser_host_t* _struct = GetStruct(); 19301+ if (CEF_MEMBER_MISSING(_struct, post_task_to_uithread)) 19302+ return; 19303+ 19304+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 19305+ 19306+ // Verify param: task; type: refptr_diff 19307+ DCHECK(task.get()); 19308+ if (!task.get()) 19309+ return; 19310+ 19311+ // Execute 19312+ _struct->post_task_to_uithread(_struct, CefTaskCppToC::Wrap(task)); 19313+} 19314+ 19315 NO_SANITIZE("cfi-icall") 19316 void CefBrowserHostCToCpp::CloseBrowser(bool force_close) { 19317 shutdown_checker::AssertNotShutdown(); 19318@@ -835,6 +856,268 @@ void CefBrowserHostCToCpp::SetWindowlessFrameRate(int frame_rate) { 19319 _struct->set_windowless_frame_rate(_struct, frame_rate); 19320 } 19321 19322+NO_SANITIZE("cfi-icall") 19323+void CefBrowserHostCToCpp::SetWebPreferences( 19324+ const CefBrowserSettings& browser_settings) { 19325+ shutdown_checker::AssertNotShutdown(); 19326+ 19327+ cef_browser_host_t* _struct = GetStruct(); 19328+ if (CEF_MEMBER_MISSING(_struct, set_web_preferences)) 19329+ return; 19330+ 19331+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 19332+ 19333+ // Execute 19334+ _struct->set_web_preferences(_struct, &browser_settings); 19335+} 19336+ 19337+NO_SANITIZE("cfi-icall") 19338+void CefBrowserHostCToCpp::PutUserAgent(const CefString& ua) { 19339+ shutdown_checker::AssertNotShutdown(); 19340+ 19341+ cef_browser_host_t* _struct = GetStruct(); 19342+ if (CEF_MEMBER_MISSING(_struct, put_user_agent)) 19343+ return; 19344+ 19345+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 19346+ 19347+ // Verify param: ua; type: string_byref_const 19348+ DCHECK(!ua.empty()); 19349+ if (ua.empty()) 19350+ return; 19351+ 19352+ // Execute 19353+ _struct->put_user_agent(_struct, ua.GetStruct()); 19354+} 19355+ 19356+NO_SANITIZE("cfi-icall") CefString CefBrowserHostCToCpp::DefaultUserAgent() { 19357+ shutdown_checker::AssertNotShutdown(); 19358+ 19359+ cef_browser_host_t* _struct = GetStruct(); 19360+ if (CEF_MEMBER_MISSING(_struct, default_user_agent)) 19361+ return CefString(); 19362+ 19363+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 19364+ 19365+ // Execute 19366+ cef_string_userfree_t _retval = _struct->default_user_agent(_struct); 19367+ 19368+ // Return type: string 19369+ CefString _retvalStr; 19370+ _retvalStr.AttachToUserFree(_retval); 19371+ return _retvalStr; 19372+} 19373+ 19374+NO_SANITIZE("cfi-icall") 19375+void CefBrowserHostCToCpp::SetBackgroundColor(int color) { 19376+ shutdown_checker::AssertNotShutdown(); 19377+ 19378+ cef_browser_host_t* _struct = GetStruct(); 19379+ if (CEF_MEMBER_MISSING(_struct, set_background_color)) 19380+ return; 19381+ 19382+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 19383+ 19384+ // Execute 19385+ _struct->set_background_color(_struct, color); 19386+} 19387+ 19388+NO_SANITIZE("cfi-icall") 19389+void CefBrowserHostCToCpp::RegisterArkJSfunction( 19390+ const CefString& object_name, 19391+ const std::vector<CefString>& method_list) { 19392+ shutdown_checker::AssertNotShutdown(); 19393+ 19394+ cef_browser_host_t* _struct = GetStruct(); 19395+ if (CEF_MEMBER_MISSING(_struct, register_ark_jsfunction)) 19396+ return; 19397+ 19398+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 19399+ 19400+ // Verify param: object_name; type: string_byref_const 19401+ DCHECK(!object_name.empty()); 19402+ if (object_name.empty()) 19403+ return; 19404+ 19405+ // Translate param: method_list; type: string_vec_byref_const 19406+ cef_string_list_t method_listList = cef_string_list_alloc(); 19407+ DCHECK(method_listList); 19408+ if (method_listList) 19409+ transfer_string_list_contents(method_list, method_listList); 19410+ 19411+ // Execute 19412+ _struct->register_ark_jsfunction(_struct, object_name.GetStruct(), 19413+ method_listList); 19414+ 19415+ // Restore param:method_list; type: string_vec_byref_const 19416+ if (method_listList) 19417+ cef_string_list_free(method_listList); 19418+} 19419+ 19420+NO_SANITIZE("cfi-icall") 19421+void CefBrowserHostCToCpp::UnregisterArkJSfunction( 19422+ const CefString& object_name, 19423+ const std::vector<CefString>& method_list) { 19424+ shutdown_checker::AssertNotShutdown(); 19425+ 19426+ cef_browser_host_t* _struct = GetStruct(); 19427+ if (CEF_MEMBER_MISSING(_struct, unregister_ark_jsfunction)) 19428+ return; 19429+ 19430+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 19431+ 19432+ // Verify param: object_name; type: string_byref_const 19433+ DCHECK(!object_name.empty()); 19434+ if (object_name.empty()) 19435+ return; 19436+ // Unverified params: method_list 19437+ 19438+ // Translate param: method_list; type: string_vec_byref_const 19439+ cef_string_list_t method_listList = cef_string_list_alloc(); 19440+ DCHECK(method_listList); 19441+ if (method_listList) 19442+ transfer_string_list_contents(method_list, method_listList); 19443+ 19444+ // Execute 19445+ _struct->unregister_ark_jsfunction(_struct, object_name.GetStruct(), 19446+ method_listList); 19447+ 19448+ // Restore param:method_list; type: string_vec_byref_const 19449+ if (method_listList) 19450+ cef_string_list_free(method_listList); 19451+} 19452+ 19453+NO_SANITIZE("cfi-icall") CefString CefBrowserHostCToCpp::Title() { 19454+ shutdown_checker::AssertNotShutdown(); 19455+ 19456+ cef_browser_host_t* _struct = GetStruct(); 19457+ if (CEF_MEMBER_MISSING(_struct, title)) 19458+ return CefString(); 19459+ 19460+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 19461+ 19462+ // Execute 19463+ cef_string_userfree_t _retval = _struct->title(_struct); 19464+ 19465+ // Return type: string 19466+ CefString _retvalStr; 19467+ _retvalStr.AttachToUserFree(_retval); 19468+ return _retvalStr; 19469+} 19470+ 19471+NO_SANITIZE("cfi-icall") 19472+void CefBrowserHostCToCpp::GetHitData(int& type, CefString& extra_data) { 19473+ shutdown_checker::AssertNotShutdown(); 19474+ 19475+ cef_browser_host_t* _struct = GetStruct(); 19476+ if (CEF_MEMBER_MISSING(_struct, get_hit_data)) 19477+ return; 19478+ 19479+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 19480+ 19481+ // Execute 19482+ _struct->get_hit_data(_struct, &type, extra_data.GetWritableStruct()); 19483+} 19484+ 19485+NO_SANITIZE("cfi-icall") int CefBrowserHostCToCpp::PageLoadProgress() { 19486+ shutdown_checker::AssertNotShutdown(); 19487+ 19488+ cef_browser_host_t* _struct = GetStruct(); 19489+ if (CEF_MEMBER_MISSING(_struct, page_load_progress)) 19490+ return 0; 19491+ 19492+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 19493+ 19494+ // Execute 19495+ int _retval = _struct->page_load_progress(_struct); 19496+ 19497+ // Return type: simple 19498+ return _retval; 19499+} 19500+ 19501+NO_SANITIZE("cfi-icall") float CefBrowserHostCToCpp::Scale() { 19502+ shutdown_checker::AssertNotShutdown(); 19503+ 19504+ cef_browser_host_t* _struct = GetStruct(); 19505+ if (CEF_MEMBER_MISSING(_struct, scale)) 19506+ return 0; 19507+ 19508+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 19509+ 19510+ // Execute 19511+ float _retval = _struct->scale(_struct); 19512+ 19513+ // Return type: simple 19514+ return _retval; 19515+} 19516+ 19517+NO_SANITIZE("cfi-icall") 19518+void CefBrowserHostCToCpp::LoadWithDataAndBaseUrl(const CefString& baseUrl, 19519+ const CefString& data, 19520+ const CefString& mimeType, 19521+ const CefString& encoding, 19522+ const CefString& historyUrl) { 19523+ shutdown_checker::AssertNotShutdown(); 19524+ 19525+ cef_browser_host_t* _struct = GetStruct(); 19526+ if (CEF_MEMBER_MISSING(_struct, load_with_data_and_base_url)) 19527+ return; 19528+ 19529+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 19530+ 19531+ // Unverified params: baseUrl, data, mimeType, encoding, historyUrl 19532+ 19533+ // Execute 19534+ _struct->load_with_data_and_base_url( 19535+ _struct, baseUrl.GetStruct(), data.GetStruct(), mimeType.GetStruct(), 19536+ encoding.GetStruct(), historyUrl.GetStruct()); 19537+} 19538+ 19539+NO_SANITIZE("cfi-icall") 19540+void CefBrowserHostCToCpp::LoadWithData(const CefString& data, 19541+ const CefString& mimeType, 19542+ const CefString& encoding) { 19543+ shutdown_checker::AssertNotShutdown(); 19544+ 19545+ cef_browser_host_t* _struct = GetStruct(); 19546+ if (CEF_MEMBER_MISSING(_struct, load_with_data)) 19547+ return; 19548+ 19549+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 19550+ 19551+ // Unverified params: data, mimeType, encoding 19552+ 19553+ // Execute 19554+ _struct->load_with_data(_struct, data.GetStruct(), mimeType.GetStruct(), 19555+ encoding.GetStruct()); 19556+} 19557+ 19558+NO_SANITIZE("cfi-icall") 19559+void CefBrowserHostCToCpp::AddVisitedLinks(const std::vector<CefString>& urls) { 19560+ shutdown_checker::AssertNotShutdown(); 19561+ 19562+ cef_browser_host_t* _struct = GetStruct(); 19563+ if (CEF_MEMBER_MISSING(_struct, add_visited_links)) 19564+ return; 19565+ 19566+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 19567+ 19568+ // Unverified params: urls 19569+ 19570+ // Translate param: urls; type: string_vec_byref_const 19571+ cef_string_list_t urlsList = cef_string_list_alloc(); 19572+ DCHECK(urlsList); 19573+ if (urlsList) 19574+ transfer_string_list_contents(urls, urlsList); 19575+ 19576+ // Execute 19577+ _struct->add_visited_links(_struct, urlsList); 19578+ 19579+ // Restore param:urls; type: string_vec_byref_const 19580+ if (urlsList) 19581+ cef_string_list_free(urlsList); 19582+} 19583+ 19584 NO_SANITIZE("cfi-icall") 19585 void CefBrowserHostCToCpp::ImeSetComposition( 19586 const CefString& text, 19587@@ -1126,6 +1409,33 @@ NO_SANITIZE("cfi-icall") bool CefBrowserHostCToCpp::IsAudioMuted() { 19588 return _retval ? true : false; 19589 } 19590 19591+NO_SANITIZE("cfi-icall") 19592+void CefBrowserHostCToCpp::ExecuteJavaScript( 19593+ const CefString& code, 19594+ CefRefPtr<CefJavaScriptResultCallback> callback) { 19595+ shutdown_checker::AssertNotShutdown(); 19596+ 19597+ cef_browser_host_t* _struct = GetStruct(); 19598+ if (CEF_MEMBER_MISSING(_struct, execute_java_script)) 19599+ return; 19600+ 19601+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 19602+ 19603+ // Verify param: code; type: string_byref_const 19604+ DCHECK(!code.empty()); 19605+ if (code.empty()) 19606+ return; 19607+ // Verify param: callback; type: refptr_diff 19608+ DCHECK(callback.get()); 19609+ if (!callback.get()) 19610+ return; 19611+ 19612+ // Execute 19613+ _struct->execute_java_script( 19614+ _struct, code.GetStruct(), 19615+ CefJavaScriptResultCallbackCppToC::Wrap(callback)); 19616+} 19617+ 19618 // CONSTRUCTOR - Do not edit by hand. 19619 19620 CefBrowserHostCToCpp::CefBrowserHostCToCpp() {} 19621diff --git a/cef/libcef_dll/ctocpp/browser_host_ctocpp.h b/cef/libcef_dll/ctocpp/browser_host_ctocpp.h 19622index e630d54cdf..f7d93e799d 100644 19623--- a/cef/libcef_dll/ctocpp/browser_host_ctocpp.h 19624+++ b/cef/libcef_dll/ctocpp/browser_host_ctocpp.h 19625@@ -1,4 +1,4 @@ 19626-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 19627+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 19628 // reserved. Use of this source code is governed by a BSD-style license that 19629 // can be found in the LICENSE file. 19630 // 19631@@ -9,7 +9,7 @@ 19632 // implementations. See the translator.README.txt file in the tools directory 19633 // for more information. 19634 // 19635-// $hash=95928a6e1311ff0406b502076defccc441d0b57c$ 19636+// $hash=cf6e8c80db9579bc35d920ab4c35659a6535c355$ 19637 // 19638 19639 #ifndef CEF_LIBCEF_DLL_CTOCPP_BROWSER_HOST_CTOCPP_H_ 19640@@ -38,6 +38,7 @@ class CefBrowserHostCToCpp : public CefCToCppRefCounted<CefBrowserHostCToCpp, 19641 19642 // CefBrowserHost methods. 19643 CefRefPtr<CefBrowser> GetBrowser() OVERRIDE; 19644+ void PostTaskToUIThread(CefRefPtr<CefTask> task) OVERRIDE; 19645 void CloseBrowser(bool force_close) OVERRIDE; 19646 bool TryCloseBrowser() OVERRIDE; 19647 void SetFocus(bool focus) OVERRIDE; 19648@@ -107,6 +108,29 @@ class CefBrowserHostCToCpp : public CefCToCppRefCounted<CefBrowserHostCToCpp, 19649 void NotifyMoveOrResizeStarted() OVERRIDE; 19650 int GetWindowlessFrameRate() OVERRIDE; 19651 void SetWindowlessFrameRate(int frame_rate) OVERRIDE; 19652+ void SetWebPreferences(const CefBrowserSettings& browser_settings) OVERRIDE; 19653+ void PutUserAgent(const CefString& ua) OVERRIDE; 19654+ CefString DefaultUserAgent() OVERRIDE; 19655+ void SetBackgroundColor(int color) OVERRIDE; 19656+ void RegisterArkJSfunction( 19657+ const CefString& object_name, 19658+ const std::vector<CefString>& method_list) OVERRIDE; 19659+ void UnregisterArkJSfunction( 19660+ const CefString& object_name, 19661+ const std::vector<CefString>& method_list) OVERRIDE; 19662+ CefString Title() OVERRIDE; 19663+ void GetHitData(int& type, CefString& extra_data) OVERRIDE; 19664+ int PageLoadProgress() OVERRIDE; 19665+ float Scale() OVERRIDE; 19666+ void LoadWithDataAndBaseUrl(const CefString& baseUrl, 19667+ const CefString& data, 19668+ const CefString& mimeType, 19669+ const CefString& encoding, 19670+ const CefString& historyUrl) OVERRIDE; 19671+ void LoadWithData(const CefString& data, 19672+ const CefString& mimeType, 19673+ const CefString& encoding) OVERRIDE; 19674+ void AddVisitedLinks(const std::vector<CefString>& urls) OVERRIDE; 19675 void ImeSetComposition(const CefString& text, 19676 const std::vector<CefCompositionUnderline>& underlines, 19677 const CefRange& replacement_range, 19678@@ -134,6 +158,9 @@ class CefBrowserHostCToCpp : public CefCToCppRefCounted<CefBrowserHostCToCpp, 19679 bool IsBackgroundHost() OVERRIDE; 19680 void SetAudioMuted(bool mute) OVERRIDE; 19681 bool IsAudioMuted() OVERRIDE; 19682+ void ExecuteJavaScript( 19683+ const CefString& code, 19684+ CefRefPtr<CefJavaScriptResultCallback> callback) OVERRIDE; 19685 }; 19686 19687 #endif // CEF_LIBCEF_DLL_CTOCPP_BROWSER_HOST_CTOCPP_H_ 19688diff --git a/cef/libcef_dll/ctocpp/browser_permission_request_delegate_ctocpp.cc b/cef/libcef_dll/ctocpp/browser_permission_request_delegate_ctocpp.cc 19689new file mode 100644 19690index 0000000000..0076560af5 19691--- /dev/null 19692+++ b/cef/libcef_dll/ctocpp/browser_permission_request_delegate_ctocpp.cc 19693@@ -0,0 +1,194 @@ 19694+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 19695+// reserved. Use of this source code is governed by a BSD-style license that 19696+// can be found in the LICENSE file. 19697+// 19698+// --------------------------------------------------------------------------- 19699+// 19700+// This file was generated by the CEF translator tool. If making changes by 19701+// hand only do so within the body of existing method and function 19702+// implementations. See the translator.README.txt file in the tools directory 19703+// for more information. 19704+// 19705+// $hash=4a9c34d8dd8e49725dd7288c3a8c3e2a978c977c$ 19706+// 19707+ 19708+#include "libcef_dll/ctocpp/browser_permission_request_delegate_ctocpp.h" 19709+#include "libcef_dll/shutdown_checker.h" 19710+ 19711+// VIRTUAL METHODS - Body may be edited by hand. 19712+ 19713+NO_SANITIZE("cfi-icall") 19714+void CefBrowserPermissionRequestDelegateCToCpp::AskGeolocationPermission( 19715+ const CefString& origin, 19716+ cef_permission_callback_t callback) { 19717+ shutdown_checker::AssertNotShutdown(); 19718+ 19719+ cef_browser_permission_request_delegate_t* _struct = GetStruct(); 19720+ if (CEF_MEMBER_MISSING(_struct, ask_geolocation_permission)) 19721+ return; 19722+ 19723+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 19724+ 19725+ // Verify param: origin; type: string_byref_const 19726+ DCHECK(!origin.empty()); 19727+ if (origin.empty()) 19728+ return; 19729+ 19730+ // Execute 19731+ _struct->ask_geolocation_permission(_struct, origin.GetStruct(), callback); 19732+} 19733+ 19734+NO_SANITIZE("cfi-icall") 19735+void CefBrowserPermissionRequestDelegateCToCpp::AbortAskGeolocationPermission( 19736+ const CefString& origin) { 19737+ shutdown_checker::AssertNotShutdown(); 19738+ 19739+ cef_browser_permission_request_delegate_t* _struct = GetStruct(); 19740+ if (CEF_MEMBER_MISSING(_struct, abort_ask_geolocation_permission)) 19741+ return; 19742+ 19743+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 19744+ 19745+ // Verify param: origin; type: string_byref_const 19746+ DCHECK(!origin.empty()); 19747+ if (origin.empty()) 19748+ return; 19749+ 19750+ // Execute 19751+ _struct->abort_ask_geolocation_permission(_struct, origin.GetStruct()); 19752+} 19753+ 19754+NO_SANITIZE("cfi-icall") 19755+void CefBrowserPermissionRequestDelegateCToCpp:: 19756+ AskProtectedMediaIdentifierPermission(const CefString& origin, 19757+ cef_permission_callback_t callback) { 19758+ shutdown_checker::AssertNotShutdown(); 19759+ 19760+ cef_browser_permission_request_delegate_t* _struct = GetStruct(); 19761+ if (CEF_MEMBER_MISSING(_struct, ask_protected_media_identifier_permission)) 19762+ return; 19763+ 19764+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 19765+ 19766+ // Verify param: origin; type: string_byref_const 19767+ DCHECK(!origin.empty()); 19768+ if (origin.empty()) 19769+ return; 19770+ 19771+ // Execute 19772+ _struct->ask_protected_media_identifier_permission( 19773+ _struct, origin.GetStruct(), callback); 19774+} 19775+ 19776+NO_SANITIZE("cfi-icall") 19777+void CefBrowserPermissionRequestDelegateCToCpp:: 19778+ AbortAskProtectedMediaIdentifierPermission(const CefString& origin) { 19779+ shutdown_checker::AssertNotShutdown(); 19780+ 19781+ cef_browser_permission_request_delegate_t* _struct = GetStruct(); 19782+ if (CEF_MEMBER_MISSING(_struct, 19783+ abort_ask_protected_media_identifier_permission)) 19784+ return; 19785+ 19786+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 19787+ 19788+ // Verify param: origin; type: string_byref_const 19789+ DCHECK(!origin.empty()); 19790+ if (origin.empty()) 19791+ return; 19792+ 19793+ // Execute 19794+ _struct->abort_ask_protected_media_identifier_permission(_struct, 19795+ origin.GetStruct()); 19796+} 19797+ 19798+NO_SANITIZE("cfi-icall") 19799+void CefBrowserPermissionRequestDelegateCToCpp::AskMIDISysexPermission( 19800+ const CefString& origin, 19801+ cef_permission_callback_t callback) { 19802+ shutdown_checker::AssertNotShutdown(); 19803+ 19804+ cef_browser_permission_request_delegate_t* _struct = GetStruct(); 19805+ if (CEF_MEMBER_MISSING(_struct, ask_midisysex_permission)) 19806+ return; 19807+ 19808+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 19809+ 19810+ // Verify param: origin; type: string_byref_const 19811+ DCHECK(!origin.empty()); 19812+ if (origin.empty()) 19813+ return; 19814+ 19815+ // Execute 19816+ _struct->ask_midisysex_permission(_struct, origin.GetStruct(), callback); 19817+} 19818+ 19819+NO_SANITIZE("cfi-icall") 19820+void CefBrowserPermissionRequestDelegateCToCpp::AbortAskMIDISysexPermission( 19821+ const CefString& origin) { 19822+ shutdown_checker::AssertNotShutdown(); 19823+ 19824+ cef_browser_permission_request_delegate_t* _struct = GetStruct(); 19825+ if (CEF_MEMBER_MISSING(_struct, abort_ask_midisysex_permission)) 19826+ return; 19827+ 19828+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 19829+ 19830+ // Verify param: origin; type: string_byref_const 19831+ DCHECK(!origin.empty()); 19832+ if (origin.empty()) 19833+ return; 19834+ 19835+ // Execute 19836+ _struct->abort_ask_midisysex_permission(_struct, origin.GetStruct()); 19837+} 19838+ 19839+NO_SANITIZE("cfi-icall") 19840+void CefBrowserPermissionRequestDelegateCToCpp::NotifyGeolocationPermission( 19841+ bool value, 19842+ const CefString& origin) { 19843+ shutdown_checker::AssertNotShutdown(); 19844+ 19845+ cef_browser_permission_request_delegate_t* _struct = GetStruct(); 19846+ if (CEF_MEMBER_MISSING(_struct, notify_geolocation_permission)) 19847+ return; 19848+ 19849+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 19850+ 19851+ // Verify param: origin; type: string_byref_const 19852+ DCHECK(!origin.empty()); 19853+ if (origin.empty()) 19854+ return; 19855+ 19856+ // Execute 19857+ _struct->notify_geolocation_permission(_struct, value, origin.GetStruct()); 19858+} 19859+ 19860+// CONSTRUCTOR - Do not edit by hand. 19861+ 19862+CefBrowserPermissionRequestDelegateCToCpp:: 19863+ CefBrowserPermissionRequestDelegateCToCpp() {} 19864+ 19865+// DESTRUCTOR - Do not edit by hand. 19866+ 19867+CefBrowserPermissionRequestDelegateCToCpp:: 19868+ ~CefBrowserPermissionRequestDelegateCToCpp() { 19869+ shutdown_checker::AssertNotShutdown(); 19870+} 19871+ 19872+template <> 19873+cef_browser_permission_request_delegate_t* 19874+CefCToCppRefCounted<CefBrowserPermissionRequestDelegateCToCpp, 19875+ CefBrowserPermissionRequestDelegate, 19876+ cef_browser_permission_request_delegate_t>:: 19877+ UnwrapDerived(CefWrapperType type, CefBrowserPermissionRequestDelegate* c) { 19878+ NOTREACHED() << "Unexpected class type: " << type; 19879+ return nullptr; 19880+} 19881+ 19882+template <> 19883+CefWrapperType CefCToCppRefCounted< 19884+ CefBrowserPermissionRequestDelegateCToCpp, 19885+ CefBrowserPermissionRequestDelegate, 19886+ cef_browser_permission_request_delegate_t>::kWrapperType = 19887+ WT_BROWSER_PERMISSION_REQUEST_DELEGATE; 19888diff --git a/cef/libcef_dll/ctocpp/browser_permission_request_delegate_ctocpp.h b/cef/libcef_dll/ctocpp/browser_permission_request_delegate_ctocpp.h 19889new file mode 100644 19890index 0000000000..a3e876d8bc 19891--- /dev/null 19892+++ b/cef/libcef_dll/ctocpp/browser_permission_request_delegate_ctocpp.h 19893@@ -0,0 +1,53 @@ 19894+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 19895+// reserved. Use of this source code is governed by a BSD-style license that 19896+// can be found in the LICENSE file. 19897+// 19898+// --------------------------------------------------------------------------- 19899+// 19900+// This file was generated by the CEF translator tool. If making changes by 19901+// hand only do so within the body of existing method and function 19902+// implementations. See the translator.README.txt file in the tools directory 19903+// for more information. 19904+// 19905+// $hash=3800e05c5c712373a59863b4f35f117d46efe6f4$ 19906+// 19907+ 19908+#ifndef CEF_LIBCEF_DLL_CTOCPP_BROWSER_PERMISSION_REQUEST_DELEGATE_CTOCPP_H_ 19909+#define CEF_LIBCEF_DLL_CTOCPP_BROWSER_PERMISSION_REQUEST_DELEGATE_CTOCPP_H_ 19910+#pragma once 19911+ 19912+#if !defined(WRAPPING_CEF_SHARED) 19913+#error This file can be included wrapper-side only 19914+#endif 19915+ 19916+#include "include/capi/cef_permission_request_capi.h" 19917+#include "include/cef_permission_request.h" 19918+#include "libcef_dll/ctocpp/ctocpp_ref_counted.h" 19919+ 19920+// Wrap a C structure with a C++ class. 19921+// This class may be instantiated and accessed wrapper-side only. 19922+class CefBrowserPermissionRequestDelegateCToCpp 19923+ : public CefCToCppRefCounted<CefBrowserPermissionRequestDelegateCToCpp, 19924+ CefBrowserPermissionRequestDelegate, 19925+ cef_browser_permission_request_delegate_t> { 19926+ public: 19927+ CefBrowserPermissionRequestDelegateCToCpp(); 19928+ virtual ~CefBrowserPermissionRequestDelegateCToCpp(); 19929+ 19930+ // CefBrowserPermissionRequestDelegate methods. 19931+ void AskGeolocationPermission(const CefString& origin, 19932+ cef_permission_callback_t callback) OVERRIDE; 19933+ void AbortAskGeolocationPermission(const CefString& origin) OVERRIDE; 19934+ void AskProtectedMediaIdentifierPermission( 19935+ const CefString& origin, 19936+ cef_permission_callback_t callback) OVERRIDE; 19937+ void AbortAskProtectedMediaIdentifierPermission( 19938+ const CefString& origin) OVERRIDE; 19939+ void AskMIDISysexPermission(const CefString& origin, 19940+ cef_permission_callback_t callback) OVERRIDE; 19941+ void AbortAskMIDISysexPermission(const CefString& origin) OVERRIDE; 19942+ void NotifyGeolocationPermission(bool value, 19943+ const CefString& origin) OVERRIDE; 19944+}; 19945+ 19946+#endif // CEF_LIBCEF_DLL_CTOCPP_BROWSER_PERMISSION_REQUEST_DELEGATE_CTOCPP_H_ 19947diff --git a/cef/libcef_dll/ctocpp/browser_process_handler_ctocpp.cc b/cef/libcef_dll/ctocpp/browser_process_handler_ctocpp.cc 19948index e2cd36eef6..2338c499f1 100644 19949--- a/cef/libcef_dll/ctocpp/browser_process_handler_ctocpp.cc 19950+++ b/cef/libcef_dll/ctocpp/browser_process_handler_ctocpp.cc 19951@@ -1,4 +1,4 @@ 19952-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 19953+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 19954 // reserved. Use of this source code is governed by a BSD-style license that 19955 // can be found in the LICENSE file. 19956 // 19957@@ -9,7 +9,7 @@ 19958 // implementations. See the translator.README.txt file in the tools directory 19959 // for more information. 19960 // 19961-// $hash=5efe4243d536139501e58591c6f875e08001c8b7$ 19962+// $hash=3302f28c60da03b9f5ba5fa110523b353765d1a3$ 19963 // 19964 19965 #include "libcef_dll/ctocpp/browser_process_handler_ctocpp.h" 19966diff --git a/cef/libcef_dll/ctocpp/browser_process_handler_ctocpp.h b/cef/libcef_dll/ctocpp/browser_process_handler_ctocpp.h 19967index 5b2ff68b7e..3871506b1a 100644 19968--- a/cef/libcef_dll/ctocpp/browser_process_handler_ctocpp.h 19969+++ b/cef/libcef_dll/ctocpp/browser_process_handler_ctocpp.h 19970@@ -1,4 +1,4 @@ 19971-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 19972+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 19973 // reserved. Use of this source code is governed by a BSD-style license that 19974 // can be found in the LICENSE file. 19975 // 19976@@ -9,7 +9,7 @@ 19977 // implementations. See the translator.README.txt file in the tools directory 19978 // for more information. 19979 // 19980-// $hash=719a890627d0b2ba0746415c0dd8631e387567fe$ 19981+// $hash=7a13d15a99d1c92a757b776bb00d932296012054$ 19982 // 19983 19984 #ifndef CEF_LIBCEF_DLL_CTOCPP_BROWSER_PROCESS_HANDLER_CTOCPP_H_ 19985diff --git a/cef/libcef_dll/ctocpp/callback_ctocpp.cc b/cef/libcef_dll/ctocpp/callback_ctocpp.cc 19986index aba308705a..c0030004cb 100644 19987--- a/cef/libcef_dll/ctocpp/callback_ctocpp.cc 19988+++ b/cef/libcef_dll/ctocpp/callback_ctocpp.cc 19989@@ -1,4 +1,4 @@ 19990-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 19991+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 19992 // reserved. Use of this source code is governed by a BSD-style license that 19993 // can be found in the LICENSE file. 19994 // 19995@@ -9,7 +9,7 @@ 19996 // implementations. See the translator.README.txt file in the tools directory 19997 // for more information. 19998 // 19999-// $hash=fd4031a2727c68a81e72554cbda477d1afc8c7d0$ 20000+// $hash=ef330e0d61e143966544b8a80f04b72dc32ec4e3$ 20001 // 20002 20003 #include "libcef_dll/ctocpp/callback_ctocpp.h" 20004diff --git a/cef/libcef_dll/ctocpp/callback_ctocpp.h b/cef/libcef_dll/ctocpp/callback_ctocpp.h 20005index 52e70d76c6..f39dd72b55 100644 20006--- a/cef/libcef_dll/ctocpp/callback_ctocpp.h 20007+++ b/cef/libcef_dll/ctocpp/callback_ctocpp.h 20008@@ -1,4 +1,4 @@ 20009-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 20010+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 20011 // reserved. Use of this source code is governed by a BSD-style license that 20012 // can be found in the LICENSE file. 20013 // 20014@@ -9,7 +9,7 @@ 20015 // implementations. See the translator.README.txt file in the tools directory 20016 // for more information. 20017 // 20018-// $hash=d5bd0e618c060e9410fdd4760d1e941e443a8010$ 20019+// $hash=1aace6941332689eb062b20f56f7bbf20c88adbb$ 20020 // 20021 20022 #ifndef CEF_LIBCEF_DLL_CTOCPP_CALLBACK_CTOCPP_H_ 20023diff --git a/cef/libcef_dll/ctocpp/client_ctocpp.cc b/cef/libcef_dll/ctocpp/client_ctocpp.cc 20024index d002e41c92..417ffa3815 100644 20025--- a/cef/libcef_dll/ctocpp/client_ctocpp.cc 20026+++ b/cef/libcef_dll/ctocpp/client_ctocpp.cc 20027@@ -1,4 +1,4 @@ 20028-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 20029+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 20030 // reserved. Use of this source code is governed by a BSD-style license that 20031 // can be found in the LICENSE file. 20032 // 20033@@ -9,12 +9,13 @@ 20034 // implementations. See the translator.README.txt file in the tools directory 20035 // for more information. 20036 // 20037-// $hash=19d21957d8b7f66de8c88b9085abb2a08718582d$ 20038+// $hash=731c789683b43e6ce9d520fc546d6ecae160adb3$ 20039 // 20040 20041 #include "libcef_dll/ctocpp/client_ctocpp.h" 20042 #include "libcef_dll/cpptoc/browser_cpptoc.h" 20043 #include "libcef_dll/cpptoc/frame_cpptoc.h" 20044+#include "libcef_dll/cpptoc/list_value_cpptoc.h" 20045 #include "libcef_dll/cpptoc/process_message_cpptoc.h" 20046 #include "libcef_dll/ctocpp/audio_handler_ctocpp.h" 20047 #include "libcef_dll/ctocpp/context_menu_handler_ctocpp.h" 20048@@ -28,6 +29,7 @@ 20049 #include "libcef_dll/ctocpp/keyboard_handler_ctocpp.h" 20050 #include "libcef_dll/ctocpp/life_span_handler_ctocpp.h" 20051 #include "libcef_dll/ctocpp/load_handler_ctocpp.h" 20052+#include "libcef_dll/ctocpp/permission_request_ctocpp.h" 20053 #include "libcef_dll/ctocpp/print_handler_ctocpp.h" 20054 #include "libcef_dll/ctocpp/render_handler_ctocpp.h" 20055 #include "libcef_dll/ctocpp/request_handler_ctocpp.h" 20056@@ -260,6 +262,21 @@ CefRefPtr<CefRequestHandler> CefClientCToCpp::GetRequestHandler() { 20057 return CefRequestHandlerCToCpp::Wrap(_retval); 20058 } 20059 20060+NO_SANITIZE("cfi-icall") 20061+CefRefPtr<CefPermissionRequest> CefClientCToCpp::GetPermissionRequest() { 20062+ cef_client_t* _struct = GetStruct(); 20063+ if (CEF_MEMBER_MISSING(_struct, get_permission_request)) 20064+ return nullptr; 20065+ 20066+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 20067+ 20068+ // Execute 20069+ cef_permission_request_t* _retval = _struct->get_permission_request(_struct); 20070+ 20071+ // Return type: refptr_same 20072+ return CefPermissionRequestCToCpp::Wrap(_retval); 20073+} 20074+ 20075 NO_SANITIZE("cfi-icall") 20076 bool CefClientCToCpp::OnProcessMessageReceived( 20077 CefRefPtr<CefBrowser> browser, 20078@@ -294,6 +311,43 @@ bool CefClientCToCpp::OnProcessMessageReceived( 20079 return _retval ? true : false; 20080 } 20081 20082+NO_SANITIZE("cfi-icall") 20083+int CefClientCToCpp::NotifyJavaScriptResult(CefRefPtr<CefListValue> args, 20084+ const CefString& method, 20085+ const CefString& object_name, 20086+ CefRefPtr<CefListValue> result) { 20087+ cef_client_t* _struct = GetStruct(); 20088+ if (CEF_MEMBER_MISSING(_struct, notify_java_script_result)) 20089+ return 0; 20090+ 20091+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 20092+ 20093+ // Verify param: args; type: refptr_diff 20094+ DCHECK(args.get()); 20095+ if (!args.get()) 20096+ return 0; 20097+ // Verify param: method; type: string_byref_const 20098+ DCHECK(!method.empty()); 20099+ if (method.empty()) 20100+ return 0; 20101+ // Verify param: object_name; type: string_byref_const 20102+ DCHECK(!object_name.empty()); 20103+ if (object_name.empty()) 20104+ return 0; 20105+ // Verify param: result; type: refptr_diff 20106+ DCHECK(result.get()); 20107+ if (!result.get()) 20108+ return 0; 20109+ 20110+ // Execute 20111+ int _retval = _struct->notify_java_script_result( 20112+ _struct, CefListValueCppToC::Wrap(args), method.GetStruct(), 20113+ object_name.GetStruct(), CefListValueCppToC::Wrap(result)); 20114+ 20115+ // Return type: simple 20116+ return _retval; 20117+} 20118+ 20119 // CONSTRUCTOR - Do not edit by hand. 20120 20121 CefClientCToCpp::CefClientCToCpp() {} 20122diff --git a/cef/libcef_dll/ctocpp/client_ctocpp.h b/cef/libcef_dll/ctocpp/client_ctocpp.h 20123index 1447c181fe..6d043e9499 100644 20124--- a/cef/libcef_dll/ctocpp/client_ctocpp.h 20125+++ b/cef/libcef_dll/ctocpp/client_ctocpp.h 20126@@ -1,4 +1,4 @@ 20127-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 20128+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 20129 // reserved. Use of this source code is governed by a BSD-style license that 20130 // can be found in the LICENSE file. 20131 // 20132@@ -9,7 +9,7 @@ 20133 // implementations. See the translator.README.txt file in the tools directory 20134 // for more information. 20135 // 20136-// $hash=a640d4535140448a46340432470dbd1ef4f90b69$ 20137+// $hash=b1e9eaf26431d056aa0df0d95752ec49e36fb80c$ 20138 // 20139 20140 #ifndef CEF_LIBCEF_DLL_CTOCPP_CLIENT_CTOCPP_H_ 20141@@ -48,10 +48,15 @@ class CefClientCToCpp 20142 CefRefPtr<CefPrintHandler> GetPrintHandler() override; 20143 CefRefPtr<CefRenderHandler> GetRenderHandler() override; 20144 CefRefPtr<CefRequestHandler> GetRequestHandler() override; 20145+ CefRefPtr<CefPermissionRequest> GetPermissionRequest() override; 20146 bool OnProcessMessageReceived(CefRefPtr<CefBrowser> browser, 20147 CefRefPtr<CefFrame> frame, 20148 CefProcessId source_process, 20149 CefRefPtr<CefProcessMessage> message) override; 20150+ int NotifyJavaScriptResult(CefRefPtr<CefListValue> args, 20151+ const CefString& method, 20152+ const CefString& object_name, 20153+ CefRefPtr<CefListValue> result) override; 20154 }; 20155 20156 #endif // CEF_LIBCEF_DLL_CTOCPP_CLIENT_CTOCPP_H_ 20157diff --git a/cef/libcef_dll/ctocpp/command_line_ctocpp.cc b/cef/libcef_dll/ctocpp/command_line_ctocpp.cc 20158index 4100a7fa58..a96b067677 100644 20159--- a/cef/libcef_dll/ctocpp/command_line_ctocpp.cc 20160+++ b/cef/libcef_dll/ctocpp/command_line_ctocpp.cc 20161@@ -1,4 +1,4 @@ 20162-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 20163+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 20164 // reserved. Use of this source code is governed by a BSD-style license that 20165 // can be found in the LICENSE file. 20166 // 20167@@ -9,7 +9,7 @@ 20168 // implementations. See the translator.README.txt file in the tools directory 20169 // for more information. 20170 // 20171-// $hash=531127653166c6f4b50f25669ceef0a54ec56b0d$ 20172+// $hash=cc3c62b07c8e4d6f019637a0338673ac21ffa017$ 20173 // 20174 20175 #include "libcef_dll/ctocpp/command_line_ctocpp.h" 20176diff --git a/cef/libcef_dll/ctocpp/command_line_ctocpp.h b/cef/libcef_dll/ctocpp/command_line_ctocpp.h 20177index 4f07d37e95..cbda77d4d2 100644 20178--- a/cef/libcef_dll/ctocpp/command_line_ctocpp.h 20179+++ b/cef/libcef_dll/ctocpp/command_line_ctocpp.h 20180@@ -1,4 +1,4 @@ 20181-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 20182+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 20183 // reserved. Use of this source code is governed by a BSD-style license that 20184 // can be found in the LICENSE file. 20185 // 20186@@ -9,7 +9,7 @@ 20187 // implementations. See the translator.README.txt file in the tools directory 20188 // for more information. 20189 // 20190-// $hash=10d0f381490e63f0b95af48a93ea47e92459b5a3$ 20191+// $hash=b6e282cb71505ee72dab59c709ba43d19a2ff75c$ 20192 // 20193 20194 #ifndef CEF_LIBCEF_DLL_CTOCPP_COMMAND_LINE_CTOCPP_H_ 20195diff --git a/cef/libcef_dll/ctocpp/completion_callback_ctocpp.cc b/cef/libcef_dll/ctocpp/completion_callback_ctocpp.cc 20196index c6d0d31baa..4b9308d956 100644 20197--- a/cef/libcef_dll/ctocpp/completion_callback_ctocpp.cc 20198+++ b/cef/libcef_dll/ctocpp/completion_callback_ctocpp.cc 20199@@ -1,4 +1,4 @@ 20200-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 20201+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 20202 // reserved. Use of this source code is governed by a BSD-style license that 20203 // can be found in the LICENSE file. 20204 // 20205@@ -9,7 +9,7 @@ 20206 // implementations. See the translator.README.txt file in the tools directory 20207 // for more information. 20208 // 20209-// $hash=e6d440c8efb493a131c11c206ec5fceecd832660$ 20210+// $hash=f65d432f0ca5891aa466010183e437ba5e2007be$ 20211 // 20212 20213 #include "libcef_dll/ctocpp/completion_callback_ctocpp.h" 20214diff --git a/cef/libcef_dll/ctocpp/completion_callback_ctocpp.h b/cef/libcef_dll/ctocpp/completion_callback_ctocpp.h 20215index bbe457d0d1..a934d50e22 100644 20216--- a/cef/libcef_dll/ctocpp/completion_callback_ctocpp.h 20217+++ b/cef/libcef_dll/ctocpp/completion_callback_ctocpp.h 20218@@ -1,4 +1,4 @@ 20219-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 20220+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 20221 // reserved. Use of this source code is governed by a BSD-style license that 20222 // can be found in the LICENSE file. 20223 // 20224@@ -9,7 +9,7 @@ 20225 // implementations. See the translator.README.txt file in the tools directory 20226 // for more information. 20227 // 20228-// $hash=d5dfb24f2fe539edb35ef1bae35d6f7e3d4b96e5$ 20229+// $hash=d8c3f928349e064d8afe7853d4a47c90c1ed0114$ 20230 // 20231 20232 #ifndef CEF_LIBCEF_DLL_CTOCPP_COMPLETION_CALLBACK_CTOCPP_H_ 20233diff --git a/cef/libcef_dll/ctocpp/context_menu_handler_ctocpp.cc b/cef/libcef_dll/ctocpp/context_menu_handler_ctocpp.cc 20234index 6c98c6c59a..3a765cddb5 100644 20235--- a/cef/libcef_dll/ctocpp/context_menu_handler_ctocpp.cc 20236+++ b/cef/libcef_dll/ctocpp/context_menu_handler_ctocpp.cc 20237@@ -1,4 +1,4 @@ 20238-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 20239+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 20240 // reserved. Use of this source code is governed by a BSD-style license that 20241 // can be found in the LICENSE file. 20242 // 20243@@ -9,7 +9,7 @@ 20244 // implementations. See the translator.README.txt file in the tools directory 20245 // for more information. 20246 // 20247-// $hash=58fe9756e31c44400e2a3a124ac9c7256ad50710$ 20248+// $hash=7b91234844f040546245a09f4724142efdf929ff$ 20249 // 20250 20251 #include "libcef_dll/ctocpp/context_menu_handler_ctocpp.h" 20252diff --git a/cef/libcef_dll/ctocpp/context_menu_handler_ctocpp.h b/cef/libcef_dll/ctocpp/context_menu_handler_ctocpp.h 20253index 6ba5e46c56..badf3a0475 100644 20254--- a/cef/libcef_dll/ctocpp/context_menu_handler_ctocpp.h 20255+++ b/cef/libcef_dll/ctocpp/context_menu_handler_ctocpp.h 20256@@ -1,4 +1,4 @@ 20257-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 20258+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 20259 // reserved. Use of this source code is governed by a BSD-style license that 20260 // can be found in the LICENSE file. 20261 // 20262@@ -9,7 +9,7 @@ 20263 // implementations. See the translator.README.txt file in the tools directory 20264 // for more information. 20265 // 20266-// $hash=bc4ee07c77b4eca133c2aecc9324225a651659c6$ 20267+// $hash=3dba1df692cc69ba3aab91b989cceb9a7d363858$ 20268 // 20269 20270 #ifndef CEF_LIBCEF_DLL_CTOCPP_CONTEXT_MENU_HANDLER_CTOCPP_H_ 20271diff --git a/cef/libcef_dll/ctocpp/context_menu_params_ctocpp.cc b/cef/libcef_dll/ctocpp/context_menu_params_ctocpp.cc 20272index 5a7bb62b72..093210852e 100644 20273--- a/cef/libcef_dll/ctocpp/context_menu_params_ctocpp.cc 20274+++ b/cef/libcef_dll/ctocpp/context_menu_params_ctocpp.cc 20275@@ -1,4 +1,4 @@ 20276-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 20277+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 20278 // reserved. Use of this source code is governed by a BSD-style license that 20279 // can be found in the LICENSE file. 20280 // 20281@@ -9,7 +9,7 @@ 20282 // implementations. See the translator.README.txt file in the tools directory 20283 // for more information. 20284 // 20285-// $hash=dad7a3eb64c0bc6c4eddd2935513af61f7e8b510$ 20286+// $hash=233d530cb984468703b97752bda1178191d4ba75$ 20287 // 20288 20289 #include "libcef_dll/ctocpp/context_menu_params_ctocpp.h" 20290@@ -230,7 +230,7 @@ CefContextMenuParams::MediaType CefContextMenuParamsCToCpp::GetMediaType() { 20291 20292 NO_SANITIZE("cfi-icall") 20293 CefContextMenuParams::MediaStateFlags 20294-CefContextMenuParamsCToCpp::GetMediaStateFlags() { 20295+ CefContextMenuParamsCToCpp::GetMediaStateFlags() { 20296 shutdown_checker::AssertNotShutdown(); 20297 20298 cef_context_menu_params_t* _struct = GetStruct(); 20299@@ -351,7 +351,7 @@ bool CefContextMenuParamsCToCpp::IsSpellCheckEnabled() { 20300 20301 NO_SANITIZE("cfi-icall") 20302 CefContextMenuParams::EditStateFlags 20303-CefContextMenuParamsCToCpp::GetEditStateFlags() { 20304+ CefContextMenuParamsCToCpp::GetEditStateFlags() { 20305 shutdown_checker::AssertNotShutdown(); 20306 20307 cef_context_menu_params_t* _struct = GetStruct(); 20308diff --git a/cef/libcef_dll/ctocpp/context_menu_params_ctocpp.h b/cef/libcef_dll/ctocpp/context_menu_params_ctocpp.h 20309index 679150917f..50b7d6f7a9 100644 20310--- a/cef/libcef_dll/ctocpp/context_menu_params_ctocpp.h 20311+++ b/cef/libcef_dll/ctocpp/context_menu_params_ctocpp.h 20312@@ -1,4 +1,4 @@ 20313-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 20314+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 20315 // reserved. Use of this source code is governed by a BSD-style license that 20316 // can be found in the LICENSE file. 20317 // 20318@@ -9,7 +9,7 @@ 20319 // implementations. See the translator.README.txt file in the tools directory 20320 // for more information. 20321 // 20322-// $hash=7de11c340a42046de92ca4cb8c5852269f3a3101$ 20323+// $hash=dd3077d53438007cdacbcecdd410ab62693af484$ 20324 // 20325 20326 #ifndef CEF_LIBCEF_DLL_CTOCPP_CONTEXT_MENU_PARAMS_CTOCPP_H_ 20327diff --git a/cef/libcef_dll/ctocpp/cookie_access_filter_ctocpp.cc b/cef/libcef_dll/ctocpp/cookie_access_filter_ctocpp.cc 20328index 40ba61d08d..3156b1db01 100644 20329--- a/cef/libcef_dll/ctocpp/cookie_access_filter_ctocpp.cc 20330+++ b/cef/libcef_dll/ctocpp/cookie_access_filter_ctocpp.cc 20331@@ -1,4 +1,4 @@ 20332-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 20333+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 20334 // reserved. Use of this source code is governed by a BSD-style license that 20335 // can be found in the LICENSE file. 20336 // 20337@@ -9,7 +9,7 @@ 20338 // implementations. See the translator.README.txt file in the tools directory 20339 // for more information. 20340 // 20341-// $hash=fddf7eda3f3506c482f637c9d59526a4e7411b30$ 20342+// $hash=b1ae8622378ad8661289554e6c542e970850aaed$ 20343 // 20344 20345 #include "libcef_dll/ctocpp/cookie_access_filter_ctocpp.h" 20346diff --git a/cef/libcef_dll/ctocpp/cookie_access_filter_ctocpp.h b/cef/libcef_dll/ctocpp/cookie_access_filter_ctocpp.h 20347index 259ff47f59..0170c33256 100644 20348--- a/cef/libcef_dll/ctocpp/cookie_access_filter_ctocpp.h 20349+++ b/cef/libcef_dll/ctocpp/cookie_access_filter_ctocpp.h 20350@@ -1,4 +1,4 @@ 20351-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 20352+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 20353 // reserved. Use of this source code is governed by a BSD-style license that 20354 // can be found in the LICENSE file. 20355 // 20356@@ -9,7 +9,7 @@ 20357 // implementations. See the translator.README.txt file in the tools directory 20358 // for more information. 20359 // 20360-// $hash=3aa5bd130237bc6adfff1393b4ecce39e6b96610$ 20361+// $hash=7a3357796fd02da5a233d4dfa6b8c7194ba8f969$ 20362 // 20363 20364 #ifndef CEF_LIBCEF_DLL_CTOCPP_COOKIE_ACCESS_FILTER_CTOCPP_H_ 20365diff --git a/cef/libcef_dll/ctocpp/cookie_manager_ctocpp.cc b/cef/libcef_dll/ctocpp/cookie_manager_ctocpp.cc 20366index 3873685fb6..dc94d161fe 100644 20367--- a/cef/libcef_dll/ctocpp/cookie_manager_ctocpp.cc 20368+++ b/cef/libcef_dll/ctocpp/cookie_manager_ctocpp.cc 20369@@ -1,4 +1,4 @@ 20370-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 20371+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 20372 // reserved. Use of this source code is governed by a BSD-style license that 20373 // can be found in the LICENSE file. 20374 // 20375@@ -9,7 +9,7 @@ 20376 // implementations. See the translator.README.txt file in the tools directory 20377 // for more information. 20378 // 20379-// $hash=2682019770bd002410e9e292747e861c907d3c0c$ 20380+// $hash=fc72d18dc6fecabfa6080413cf31ad31b1cfa958$ 20381 // 20382 20383 #include "libcef_dll/ctocpp/cookie_manager_ctocpp.h" 20384@@ -35,8 +35,84 @@ CefRefPtr<CefCookieManager> CefCookieManager::GetGlobalManager( 20385 return CefCookieManagerCToCpp::Wrap(_retval); 20386 } 20387 20388+NO_SANITIZE("cfi-icall") 20389+bool CefCookieManager::CreateCefCookie(const CefString& url, 20390+ const CefString& value, 20391+ CefCookie& cef_cookie) { 20392+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 20393+ 20394+ // Verify param: url; type: string_byref_const 20395+ DCHECK(!url.empty()); 20396+ if (url.empty()) 20397+ return false; 20398+ // Verify param: value; type: string_byref_const 20399+ DCHECK(!value.empty()); 20400+ if (value.empty()) 20401+ return false; 20402+ 20403+ // Execute 20404+ int _retval = cef_cookie_manager_create_cef_cookie( 20405+ url.GetStruct(), value.GetStruct(), &cef_cookie); 20406+ 20407+ // Return type: bool 20408+ return _retval ? true : false; 20409+} 20410+ 20411 // VIRTUAL METHODS - Body may be edited by hand. 20412 20413+NO_SANITIZE("cfi-icall") bool CefCookieManagerCToCpp::IsAcceptCookieAllowed() { 20414+ cef_cookie_manager_t* _struct = GetStruct(); 20415+ if (CEF_MEMBER_MISSING(_struct, is_accept_cookie_allowed)) 20416+ return false; 20417+ 20418+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 20419+ 20420+ // Execute 20421+ int _retval = _struct->is_accept_cookie_allowed(_struct); 20422+ 20423+ // Return type: bool 20424+ return _retval ? true : false; 20425+} 20426+ 20427+NO_SANITIZE("cfi-icall") 20428+void CefCookieManagerCToCpp::PutAcceptCookieEnabled(bool accept) { 20429+ cef_cookie_manager_t* _struct = GetStruct(); 20430+ if (CEF_MEMBER_MISSING(_struct, put_accept_cookie_enabled)) 20431+ return; 20432+ 20433+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 20434+ 20435+ // Execute 20436+ _struct->put_accept_cookie_enabled(_struct, accept); 20437+} 20438+ 20439+NO_SANITIZE("cfi-icall") 20440+bool CefCookieManagerCToCpp::IsFileURLSchemeCookiesAllowed() { 20441+ cef_cookie_manager_t* _struct = GetStruct(); 20442+ if (CEF_MEMBER_MISSING(_struct, is_file_urlscheme_cookies_allowed)) 20443+ return false; 20444+ 20445+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 20446+ 20447+ // Execute 20448+ int _retval = _struct->is_file_urlscheme_cookies_allowed(_struct); 20449+ 20450+ // Return type: bool 20451+ return _retval ? true : false; 20452+} 20453+ 20454+NO_SANITIZE("cfi-icall") 20455+void CefCookieManagerCToCpp::PutAcceptFileURLSchemeCookiesEnabled(bool allow) { 20456+ cef_cookie_manager_t* _struct = GetStruct(); 20457+ if (CEF_MEMBER_MISSING(_struct, put_accept_file_urlscheme_cookies_enabled)) 20458+ return; 20459+ 20460+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 20461+ 20462+ // Execute 20463+ _struct->put_accept_file_urlscheme_cookies_enabled(_struct, allow); 20464+} 20465+ 20466 NO_SANITIZE("cfi-icall") 20467 bool CefCookieManagerCToCpp::VisitAllCookies( 20468 CefRefPtr<CefCookieVisitor> visitor) { 20469@@ -117,6 +193,7 @@ NO_SANITIZE("cfi-icall") 20470 bool CefCookieManagerCToCpp::DeleteCookies( 20471 const CefString& url, 20472 const CefString& cookie_name, 20473+ bool is_session, 20474 CefRefPtr<CefDeleteCookiesCallback> callback) { 20475 cef_cookie_manager_t* _struct = GetStruct(); 20476 if (CEF_MEMBER_MISSING(_struct, delete_cookies)) 20477@@ -127,9 +204,9 @@ bool CefCookieManagerCToCpp::DeleteCookies( 20478 // Unverified params: url, cookie_name, callback 20479 20480 // Execute 20481- int _retval = 20482- _struct->delete_cookies(_struct, url.GetStruct(), cookie_name.GetStruct(), 20483- CefDeleteCookiesCallbackCppToC::Wrap(callback)); 20484+ int _retval = _struct->delete_cookies( 20485+ _struct, url.GetStruct(), cookie_name.GetStruct(), is_session, 20486+ CefDeleteCookiesCallbackCppToC::Wrap(callback)); 20487 20488 // Return type: bool 20489 return _retval ? true : false; 20490diff --git a/cef/libcef_dll/ctocpp/cookie_manager_ctocpp.h b/cef/libcef_dll/ctocpp/cookie_manager_ctocpp.h 20491index ce8e6def02..bbac3e21b5 100644 20492--- a/cef/libcef_dll/ctocpp/cookie_manager_ctocpp.h 20493+++ b/cef/libcef_dll/ctocpp/cookie_manager_ctocpp.h 20494@@ -1,4 +1,4 @@ 20495-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 20496+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 20497 // reserved. Use of this source code is governed by a BSD-style license that 20498 // can be found in the LICENSE file. 20499 // 20500@@ -9,7 +9,7 @@ 20501 // implementations. See the translator.README.txt file in the tools directory 20502 // for more information. 20503 // 20504-// $hash=86450b60ca929d794339574809c956ab0fec709e$ 20505+// $hash=72c7b7341d1fe0f7fc35b539d6a1cca430880423$ 20506 // 20507 20508 #ifndef CEF_LIBCEF_DLL_CTOCPP_COOKIE_MANAGER_CTOCPP_H_ 20509@@ -35,6 +35,10 @@ class CefCookieManagerCToCpp 20510 virtual ~CefCookieManagerCToCpp(); 20511 20512 // CefCookieManager methods. 20513+ bool IsAcceptCookieAllowed() OVERRIDE; 20514+ void PutAcceptCookieEnabled(bool accept) OVERRIDE; 20515+ bool IsFileURLSchemeCookiesAllowed() OVERRIDE; 20516+ void PutAcceptFileURLSchemeCookiesEnabled(bool allow) OVERRIDE; 20517 bool VisitAllCookies(CefRefPtr<CefCookieVisitor> visitor) OVERRIDE; 20518 bool VisitUrlCookies(const CefString& url, 20519 bool includeHttpOnly, 20520@@ -44,6 +48,7 @@ class CefCookieManagerCToCpp 20521 CefRefPtr<CefSetCookieCallback> callback) OVERRIDE; 20522 bool DeleteCookies(const CefString& url, 20523 const CefString& cookie_name, 20524+ bool is_session, 20525 CefRefPtr<CefDeleteCookiesCallback> callback) OVERRIDE; 20526 bool FlushStore(CefRefPtr<CefCompletionCallback> callback) OVERRIDE; 20527 }; 20528diff --git a/cef/libcef_dll/ctocpp/cookie_visitor_ctocpp.cc b/cef/libcef_dll/ctocpp/cookie_visitor_ctocpp.cc 20529index 2dbbf4b39b..c915510144 100644 20530--- a/cef/libcef_dll/ctocpp/cookie_visitor_ctocpp.cc 20531+++ b/cef/libcef_dll/ctocpp/cookie_visitor_ctocpp.cc 20532@@ -1,4 +1,4 @@ 20533-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 20534+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 20535 // reserved. Use of this source code is governed by a BSD-style license that 20536 // can be found in the LICENSE file. 20537 // 20538@@ -9,7 +9,7 @@ 20539 // implementations. See the translator.README.txt file in the tools directory 20540 // for more information. 20541 // 20542-// $hash=2b0c8dcc7ec49951ed82d0e8f558f658c23f6f39$ 20543+// $hash=46632d6c9d6e3c6891abc90323313bea54d7419e$ 20544 // 20545 20546 #include "libcef_dll/ctocpp/cookie_visitor_ctocpp.h" 20547@@ -44,6 +44,25 @@ bool CefCookieVisitorCToCpp::Visit(const CefCookie& cookie, 20548 return _retval ? true : false; 20549 } 20550 20551+NO_SANITIZE("cfi-icall") 20552+void CefCookieVisitorCToCpp::SetCookieLine(const CefString& cookieLine) { 20553+ shutdown_checker::AssertNotShutdown(); 20554+ 20555+ cef_cookie_visitor_t* _struct = GetStruct(); 20556+ if (CEF_MEMBER_MISSING(_struct, set_cookie_line)) 20557+ return; 20558+ 20559+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 20560+ 20561+ // Verify param: cookieLine; type: string_byref_const 20562+ DCHECK(!cookieLine.empty()); 20563+ if (cookieLine.empty()) 20564+ return; 20565+ 20566+ // Execute 20567+ _struct->set_cookie_line(_struct, cookieLine.GetStruct()); 20568+} 20569+ 20570 // CONSTRUCTOR - Do not edit by hand. 20571 20572 CefCookieVisitorCToCpp::CefCookieVisitorCToCpp() {} 20573diff --git a/cef/libcef_dll/ctocpp/cookie_visitor_ctocpp.h b/cef/libcef_dll/ctocpp/cookie_visitor_ctocpp.h 20574index aa2b3549e8..62d0072362 100644 20575--- a/cef/libcef_dll/ctocpp/cookie_visitor_ctocpp.h 20576+++ b/cef/libcef_dll/ctocpp/cookie_visitor_ctocpp.h 20577@@ -1,4 +1,4 @@ 20578-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 20579+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 20580 // reserved. Use of this source code is governed by a BSD-style license that 20581 // can be found in the LICENSE file. 20582 // 20583@@ -9,7 +9,7 @@ 20584 // implementations. See the translator.README.txt file in the tools directory 20585 // for more information. 20586 // 20587-// $hash=e909793a47c685b6f44715054b8c70a7ac0b4f91$ 20588+// $hash=c1dca55691f6d564ad2a69b38acd141982368895$ 20589 // 20590 20591 #ifndef CEF_LIBCEF_DLL_CTOCPP_COOKIE_VISITOR_CTOCPP_H_ 20592@@ -39,6 +39,7 @@ class CefCookieVisitorCToCpp 20593 int count, 20594 int total, 20595 bool& deleteCookie) override; 20596+ void SetCookieLine(const CefString& cookieLine) override; 20597 }; 20598 20599 #endif // CEF_LIBCEF_DLL_CTOCPP_COOKIE_VISITOR_CTOCPP_H_ 20600diff --git a/cef/libcef_dll/ctocpp/delete_cookies_callback_ctocpp.cc b/cef/libcef_dll/ctocpp/delete_cookies_callback_ctocpp.cc 20601index 3b7495e845..4f5301ec81 100644 20602--- a/cef/libcef_dll/ctocpp/delete_cookies_callback_ctocpp.cc 20603+++ b/cef/libcef_dll/ctocpp/delete_cookies_callback_ctocpp.cc 20604@@ -1,4 +1,4 @@ 20605-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 20606+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 20607 // reserved. Use of this source code is governed by a BSD-style license that 20608 // can be found in the LICENSE file. 20609 // 20610@@ -9,7 +9,7 @@ 20611 // implementations. See the translator.README.txt file in the tools directory 20612 // for more information. 20613 // 20614-// $hash=5be97fa191527448a88038052eb241a54ff712fb$ 20615+// $hash=765b5a3f3e0ac077f2ff72541ae26ca342c4ca78$ 20616 // 20617 20618 #include "libcef_dll/ctocpp/delete_cookies_callback_ctocpp.h" 20619diff --git a/cef/libcef_dll/ctocpp/delete_cookies_callback_ctocpp.h b/cef/libcef_dll/ctocpp/delete_cookies_callback_ctocpp.h 20620index d9e6ab7d30..90f109ac9e 100644 20621--- a/cef/libcef_dll/ctocpp/delete_cookies_callback_ctocpp.h 20622+++ b/cef/libcef_dll/ctocpp/delete_cookies_callback_ctocpp.h 20623@@ -1,4 +1,4 @@ 20624-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 20625+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 20626 // reserved. Use of this source code is governed by a BSD-style license that 20627 // can be found in the LICENSE file. 20628 // 20629@@ -9,7 +9,7 @@ 20630 // implementations. See the translator.README.txt file in the tools directory 20631 // for more information. 20632 // 20633-// $hash=da90ac900e20cefc280747d50c0cdb7e1dcde7dc$ 20634+// $hash=cd33af6263f686958bccf5907e1c4622950a7a40$ 20635 // 20636 20637 #ifndef CEF_LIBCEF_DLL_CTOCPP_DELETE_COOKIES_CALLBACK_CTOCPP_H_ 20638diff --git a/cef/libcef_dll/ctocpp/dev_tools_message_observer_ctocpp.cc b/cef/libcef_dll/ctocpp/dev_tools_message_observer_ctocpp.cc 20639index 64e6a062a1..367af2dd9a 100644 20640--- a/cef/libcef_dll/ctocpp/dev_tools_message_observer_ctocpp.cc 20641+++ b/cef/libcef_dll/ctocpp/dev_tools_message_observer_ctocpp.cc 20642@@ -1,4 +1,4 @@ 20643-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 20644+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 20645 // reserved. Use of this source code is governed by a BSD-style license that 20646 // can be found in the LICENSE file. 20647 // 20648@@ -9,7 +9,7 @@ 20649 // implementations. See the translator.README.txt file in the tools directory 20650 // for more information. 20651 // 20652-// $hash=6f78ef72de066205d4329c231dd586fae8519cd6$ 20653+// $hash=610f96da1baaa48d1aa7fcff8a4c4fb33d2965ab$ 20654 // 20655 20656 #include "libcef_dll/ctocpp/dev_tools_message_observer_ctocpp.h" 20657diff --git a/cef/libcef_dll/ctocpp/dev_tools_message_observer_ctocpp.h b/cef/libcef_dll/ctocpp/dev_tools_message_observer_ctocpp.h 20658index a6a7494158..99eb59beed 100644 20659--- a/cef/libcef_dll/ctocpp/dev_tools_message_observer_ctocpp.h 20660+++ b/cef/libcef_dll/ctocpp/dev_tools_message_observer_ctocpp.h 20661@@ -1,4 +1,4 @@ 20662-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 20663+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 20664 // reserved. Use of this source code is governed by a BSD-style license that 20665 // can be found in the LICENSE file. 20666 // 20667@@ -9,7 +9,7 @@ 20668 // implementations. See the translator.README.txt file in the tools directory 20669 // for more information. 20670 // 20671-// $hash=231453d0138596f50c2656d038fd662551526474$ 20672+// $hash=3b8cfdd8e4bc8e1981634fdd6a78f8eb9a23da4b$ 20673 // 20674 20675 #ifndef CEF_LIBCEF_DLL_CTOCPP_DEV_TOOLS_MESSAGE_OBSERVER_CTOCPP_H_ 20676diff --git a/cef/libcef_dll/ctocpp/dialog_handler_ctocpp.cc b/cef/libcef_dll/ctocpp/dialog_handler_ctocpp.cc 20677index c47e38d115..3377b564ca 100644 20678--- a/cef/libcef_dll/ctocpp/dialog_handler_ctocpp.cc 20679+++ b/cef/libcef_dll/ctocpp/dialog_handler_ctocpp.cc 20680@@ -1,4 +1,4 @@ 20681-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 20682+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 20683 // reserved. Use of this source code is governed by a BSD-style license that 20684 // can be found in the LICENSE file. 20685 // 20686@@ -9,7 +9,7 @@ 20687 // implementations. See the translator.README.txt file in the tools directory 20688 // for more information. 20689 // 20690-// $hash=946f52d8495dcf0b0ed28f82d0a43075969f0674$ 20691+// $hash=cac933371fc47c864230d4537ef1da76cd7e4d8e$ 20692 // 20693 20694 #include "libcef_dll/ctocpp/dialog_handler_ctocpp.h" 20695diff --git a/cef/libcef_dll/ctocpp/dialog_handler_ctocpp.h b/cef/libcef_dll/ctocpp/dialog_handler_ctocpp.h 20696index 7b17e7f47f..f2e0798a16 100644 20697--- a/cef/libcef_dll/ctocpp/dialog_handler_ctocpp.h 20698+++ b/cef/libcef_dll/ctocpp/dialog_handler_ctocpp.h 20699@@ -1,4 +1,4 @@ 20700-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 20701+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 20702 // reserved. Use of this source code is governed by a BSD-style license that 20703 // can be found in the LICENSE file. 20704 // 20705@@ -9,7 +9,7 @@ 20706 // implementations. See the translator.README.txt file in the tools directory 20707 // for more information. 20708 // 20709-// $hash=126691efff37723df43af451c4d9876194f37c16$ 20710+// $hash=4c07a40d3bd171adf3ae3cc4aa935bc7eca4aa5e$ 20711 // 20712 20713 #ifndef CEF_LIBCEF_DLL_CTOCPP_DIALOG_HANDLER_CTOCPP_H_ 20714diff --git a/cef/libcef_dll/ctocpp/dictionary_value_ctocpp.cc b/cef/libcef_dll/ctocpp/dictionary_value_ctocpp.cc 20715index a4d793c2a1..f726373820 100644 20716--- a/cef/libcef_dll/ctocpp/dictionary_value_ctocpp.cc 20717+++ b/cef/libcef_dll/ctocpp/dictionary_value_ctocpp.cc 20718@@ -1,4 +1,4 @@ 20719-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 20720+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 20721 // reserved. Use of this source code is governed by a BSD-style license that 20722 // can be found in the LICENSE file. 20723 // 20724@@ -9,7 +9,7 @@ 20725 // implementations. See the translator.README.txt file in the tools directory 20726 // for more information. 20727 // 20728-// $hash=28f4836ace572b3b61ed33f655892b261b290ae3$ 20729+// $hash=70aa25f8ab57f0c152666a730aff4247684108f9$ 20730 // 20731 20732 #include "libcef_dll/ctocpp/dictionary_value_ctocpp.h" 20733diff --git a/cef/libcef_dll/ctocpp/dictionary_value_ctocpp.h b/cef/libcef_dll/ctocpp/dictionary_value_ctocpp.h 20734index f72952a0b9..4f5ecd7375 100644 20735--- a/cef/libcef_dll/ctocpp/dictionary_value_ctocpp.h 20736+++ b/cef/libcef_dll/ctocpp/dictionary_value_ctocpp.h 20737@@ -1,4 +1,4 @@ 20738-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 20739+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 20740 // reserved. Use of this source code is governed by a BSD-style license that 20741 // can be found in the LICENSE file. 20742 // 20743@@ -9,7 +9,7 @@ 20744 // implementations. See the translator.README.txt file in the tools directory 20745 // for more information. 20746 // 20747-// $hash=77a328d9997c59ff25bcd943be0d878432cdbfea$ 20748+// $hash=6990edd89182c61d4d75bc863a1125b910308716$ 20749 // 20750 20751 #ifndef CEF_LIBCEF_DLL_CTOCPP_DICTIONARY_VALUE_CTOCPP_H_ 20752diff --git a/cef/libcef_dll/ctocpp/display_handler_ctocpp.cc b/cef/libcef_dll/ctocpp/display_handler_ctocpp.cc 20753index 5051beb331..cb7743a77a 100644 20754--- a/cef/libcef_dll/ctocpp/display_handler_ctocpp.cc 20755+++ b/cef/libcef_dll/ctocpp/display_handler_ctocpp.cc 20756@@ -1,4 +1,4 @@ 20757-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 20758+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 20759 // reserved. Use of this source code is governed by a BSD-style license that 20760 // can be found in the LICENSE file. 20761 // 20762@@ -9,7 +9,7 @@ 20763 // implementations. See the translator.README.txt file in the tools directory 20764 // for more information. 20765 // 20766-// $hash=9c6cd57fec248c032f4b036f76b519913f973d05$ 20767+// $hash=98fa3d9e050e833252d3abe3ca7e8fe83154b25f$ 20768 // 20769 20770 #include "libcef_dll/ctocpp/display_handler_ctocpp.h" 20771@@ -105,6 +105,57 @@ void CefDisplayHandlerCToCpp::OnFaviconURLChange( 20772 cef_string_list_free(icon_urlsList); 20773 } 20774 20775+NO_SANITIZE("cfi-icall") 20776+void CefDisplayHandlerCToCpp::OnReceivedTouchIconUrl( 20777+ CefRefPtr<CefBrowser> browser, 20778+ const CefString& icon_url, 20779+ bool precomposed) { 20780+ shutdown_checker::AssertNotShutdown(); 20781+ 20782+ cef_display_handler_t* _struct = GetStruct(); 20783+ if (CEF_MEMBER_MISSING(_struct, on_received_touch_icon_url)) 20784+ return; 20785+ 20786+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 20787+ 20788+ // Verify param: browser; type: refptr_diff 20789+ DCHECK(browser.get()); 20790+ if (!browser.get()) 20791+ return; 20792+ // Verify param: icon_url; type: string_byref_const 20793+ DCHECK(!icon_url.empty()); 20794+ if (icon_url.empty()) 20795+ return; 20796+ 20797+ // Execute 20798+ _struct->on_received_touch_icon_url(_struct, CefBrowserCppToC::Wrap(browser), 20799+ icon_url.GetStruct(), precomposed); 20800+} 20801+ 20802+NO_SANITIZE("cfi-icall") 20803+void CefDisplayHandlerCToCpp::OnReceivedIcon(const void* data, 20804+ size_t width, 20805+ size_t height, 20806+ cef_color_type_t color_type, 20807+ cef_alpha_type_t alpha_type) { 20808+ shutdown_checker::AssertNotShutdown(); 20809+ 20810+ cef_display_handler_t* _struct = GetStruct(); 20811+ if (CEF_MEMBER_MISSING(_struct, on_received_icon)) 20812+ return; 20813+ 20814+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 20815+ 20816+ // Verify param: data; type: simple_byaddr 20817+ DCHECK(data); 20818+ if (!data) 20819+ return; 20820+ 20821+ // Execute 20822+ _struct->on_received_icon(_struct, data, width, height, color_type, 20823+ alpha_type); 20824+} 20825+ 20826 NO_SANITIZE("cfi-icall") 20827 void CefDisplayHandlerCToCpp::OnFullscreenModeChange( 20828 CefRefPtr<CefBrowser> browser, 20829diff --git a/cef/libcef_dll/ctocpp/display_handler_ctocpp.h b/cef/libcef_dll/ctocpp/display_handler_ctocpp.h 20830index 46cf7d1c95..35822b73b3 100644 20831--- a/cef/libcef_dll/ctocpp/display_handler_ctocpp.h 20832+++ b/cef/libcef_dll/ctocpp/display_handler_ctocpp.h 20833@@ -1,4 +1,4 @@ 20834-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 20835+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 20836 // reserved. Use of this source code is governed by a BSD-style license that 20837 // can be found in the LICENSE file. 20838 // 20839@@ -9,7 +9,7 @@ 20840 // implementations. See the translator.README.txt file in the tools directory 20841 // for more information. 20842 // 20843-// $hash=16499007f73a511e2aa6dd175965e26cc5f8b1ba$ 20844+// $hash=07af406c978c7eef163785b97dce854126fc6052$ 20845 // 20846 20847 #ifndef CEF_LIBCEF_DLL_CTOCPP_DISPLAY_HANDLER_CTOCPP_H_ 20848@@ -43,6 +43,14 @@ class CefDisplayHandlerCToCpp 20849 const CefString& title) override; 20850 void OnFaviconURLChange(CefRefPtr<CefBrowser> browser, 20851 const std::vector<CefString>& icon_urls) override; 20852+ void OnReceivedTouchIconUrl(CefRefPtr<CefBrowser> browser, 20853+ const CefString& icon_url, 20854+ bool precomposed) override; 20855+ void OnReceivedIcon(const void* data, 20856+ size_t width, 20857+ size_t height, 20858+ cef_color_type_t color_type, 20859+ cef_alpha_type_t alpha_type) override; 20860 void OnFullscreenModeChange(CefRefPtr<CefBrowser> browser, 20861 bool fullscreen) override; 20862 bool OnTooltip(CefRefPtr<CefBrowser> browser, CefString& text) override; 20863diff --git a/cef/libcef_dll/ctocpp/domdocument_ctocpp.cc b/cef/libcef_dll/ctocpp/domdocument_ctocpp.cc 20864index 09983c2fe5..3506a6b90e 100644 20865--- a/cef/libcef_dll/ctocpp/domdocument_ctocpp.cc 20866+++ b/cef/libcef_dll/ctocpp/domdocument_ctocpp.cc 20867@@ -1,4 +1,4 @@ 20868-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 20869+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 20870 // reserved. Use of this source code is governed by a BSD-style license that 20871 // can be found in the LICENSE file. 20872 // 20873@@ -9,7 +9,7 @@ 20874 // implementations. See the translator.README.txt file in the tools directory 20875 // for more information. 20876 // 20877-// $hash=a83ef828be13e2b67b7fa61bceaeff1dc269d632$ 20878+// $hash=e5f17a1d61c8211bcf16be848e8aaf48934c5b0c$ 20879 // 20880 20881 #include "libcef_dll/ctocpp/domdocument_ctocpp.h" 20882diff --git a/cef/libcef_dll/ctocpp/domdocument_ctocpp.h b/cef/libcef_dll/ctocpp/domdocument_ctocpp.h 20883index ec5d46c784..51bc133ca7 100644 20884--- a/cef/libcef_dll/ctocpp/domdocument_ctocpp.h 20885+++ b/cef/libcef_dll/ctocpp/domdocument_ctocpp.h 20886@@ -1,4 +1,4 @@ 20887-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 20888+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 20889 // reserved. Use of this source code is governed by a BSD-style license that 20890 // can be found in the LICENSE file. 20891 // 20892@@ -9,7 +9,7 @@ 20893 // implementations. See the translator.README.txt file in the tools directory 20894 // for more information. 20895 // 20896-// $hash=be5aeaffe84056cb5b1f032eaa8db30142b5916b$ 20897+// $hash=dc5be45ff3472cdcd51acd395f96c0ee82ebc27c$ 20898 // 20899 20900 #ifndef CEF_LIBCEF_DLL_CTOCPP_DOMDOCUMENT_CTOCPP_H_ 20901diff --git a/cef/libcef_dll/ctocpp/domnode_ctocpp.cc b/cef/libcef_dll/ctocpp/domnode_ctocpp.cc 20902index c3bac08c7b..566e426bf9 100644 20903--- a/cef/libcef_dll/ctocpp/domnode_ctocpp.cc 20904+++ b/cef/libcef_dll/ctocpp/domnode_ctocpp.cc 20905@@ -1,4 +1,4 @@ 20906-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 20907+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 20908 // reserved. Use of this source code is governed by a BSD-style license that 20909 // can be found in the LICENSE file. 20910 // 20911@@ -9,7 +9,7 @@ 20912 // implementations. See the translator.README.txt file in the tools directory 20913 // for more information. 20914 // 20915-// $hash=dee9e45990bc87669285dae6b0f78782e15bdbc0$ 20916+// $hash=64846f6de30a56d2aaed093cbfd9959c7cc2f1af$ 20917 // 20918 20919 #include "libcef_dll/ctocpp/domnode_ctocpp.h" 20920diff --git a/cef/libcef_dll/ctocpp/domnode_ctocpp.h b/cef/libcef_dll/ctocpp/domnode_ctocpp.h 20921index 7fed8231b3..44e55e4092 100644 20922--- a/cef/libcef_dll/ctocpp/domnode_ctocpp.h 20923+++ b/cef/libcef_dll/ctocpp/domnode_ctocpp.h 20924@@ -1,4 +1,4 @@ 20925-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 20926+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 20927 // reserved. Use of this source code is governed by a BSD-style license that 20928 // can be found in the LICENSE file. 20929 // 20930@@ -9,7 +9,7 @@ 20931 // implementations. See the translator.README.txt file in the tools directory 20932 // for more information. 20933 // 20934-// $hash=0261f2feb842f255f84c013f69076056e9710d98$ 20935+// $hash=0c827dc44314ab47ab0ba0092aff3f58ddfc141e$ 20936 // 20937 20938 #ifndef CEF_LIBCEF_DLL_CTOCPP_DOMNODE_CTOCPP_H_ 20939diff --git a/cef/libcef_dll/ctocpp/domvisitor_ctocpp.cc b/cef/libcef_dll/ctocpp/domvisitor_ctocpp.cc 20940index 9886715c22..3ece62f9ed 100644 20941--- a/cef/libcef_dll/ctocpp/domvisitor_ctocpp.cc 20942+++ b/cef/libcef_dll/ctocpp/domvisitor_ctocpp.cc 20943@@ -1,4 +1,4 @@ 20944-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 20945+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 20946 // reserved. Use of this source code is governed by a BSD-style license that 20947 // can be found in the LICENSE file. 20948 // 20949@@ -9,7 +9,7 @@ 20950 // implementations. See the translator.README.txt file in the tools directory 20951 // for more information. 20952 // 20953-// $hash=5d6aa6cab8aee93452a868bee9833d7b1536117e$ 20954+// $hash=c3351e11fd6ae488bd77aeba4b4c8485f24119ad$ 20955 // 20956 20957 #include "libcef_dll/ctocpp/domvisitor_ctocpp.h" 20958diff --git a/cef/libcef_dll/ctocpp/domvisitor_ctocpp.h b/cef/libcef_dll/ctocpp/domvisitor_ctocpp.h 20959index 4a773ac851..b1cf8b622a 100644 20960--- a/cef/libcef_dll/ctocpp/domvisitor_ctocpp.h 20961+++ b/cef/libcef_dll/ctocpp/domvisitor_ctocpp.h 20962@@ -1,4 +1,4 @@ 20963-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 20964+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 20965 // reserved. Use of this source code is governed by a BSD-style license that 20966 // can be found in the LICENSE file. 20967 // 20968@@ -9,7 +9,7 @@ 20969 // implementations. See the translator.README.txt file in the tools directory 20970 // for more information. 20971 // 20972-// $hash=f28987d270ea7522a3ead7a1dcd520e1bf4e6b9e$ 20973+// $hash=950252a2903cd57d097fb9dcd4eacf0761914e7a$ 20974 // 20975 20976 #ifndef CEF_LIBCEF_DLL_CTOCPP_DOMVISITOR_CTOCPP_H_ 20977diff --git a/cef/libcef_dll/ctocpp/download_handler_ctocpp.cc b/cef/libcef_dll/ctocpp/download_handler_ctocpp.cc 20978index 0b3dc2eb1b..981d59333f 100644 20979--- a/cef/libcef_dll/ctocpp/download_handler_ctocpp.cc 20980+++ b/cef/libcef_dll/ctocpp/download_handler_ctocpp.cc 20981@@ -1,4 +1,4 @@ 20982-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 20983+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 20984 // reserved. Use of this source code is governed by a BSD-style license that 20985 // can be found in the LICENSE file. 20986 // 20987@@ -9,7 +9,7 @@ 20988 // implementations. See the translator.README.txt file in the tools directory 20989 // for more information. 20990 // 20991-// $hash=b06c6391432eaddc2d8653b1afe2ba7155dddaf3$ 20992+// $hash=c4e47ffd023b528b9c5b658126f4a1d9fd05cf98$ 20993 // 20994 20995 #include "libcef_dll/ctocpp/download_handler_ctocpp.h" 20996diff --git a/cef/libcef_dll/ctocpp/download_handler_ctocpp.h b/cef/libcef_dll/ctocpp/download_handler_ctocpp.h 20997index c85fcf91ac..a74b923cf1 100644 20998--- a/cef/libcef_dll/ctocpp/download_handler_ctocpp.h 20999+++ b/cef/libcef_dll/ctocpp/download_handler_ctocpp.h 21000@@ -1,4 +1,4 @@ 21001-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 21002+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 21003 // reserved. Use of this source code is governed by a BSD-style license that 21004 // can be found in the LICENSE file. 21005 // 21006@@ -9,7 +9,7 @@ 21007 // implementations. See the translator.README.txt file in the tools directory 21008 // for more information. 21009 // 21010-// $hash=c88c3c71eab51921583fd73f515f0dac2e23f14b$ 21011+// $hash=172a12dd9e68b65afff9eef5b93f0e480beaf904$ 21012 // 21013 21014 #ifndef CEF_LIBCEF_DLL_CTOCPP_DOWNLOAD_HANDLER_CTOCPP_H_ 21015diff --git a/cef/libcef_dll/ctocpp/download_image_callback_ctocpp.cc b/cef/libcef_dll/ctocpp/download_image_callback_ctocpp.cc 21016index 7de309c166..73a483afcb 100644 21017--- a/cef/libcef_dll/ctocpp/download_image_callback_ctocpp.cc 21018+++ b/cef/libcef_dll/ctocpp/download_image_callback_ctocpp.cc 21019@@ -1,4 +1,4 @@ 21020-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 21021+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 21022 // reserved. Use of this source code is governed by a BSD-style license that 21023 // can be found in the LICENSE file. 21024 // 21025@@ -9,7 +9,7 @@ 21026 // implementations. See the translator.README.txt file in the tools directory 21027 // for more information. 21028 // 21029-// $hash=88e1ac8e51f7255059242ed85dbb2c071c595ffe$ 21030+// $hash=8568e306d0db860b1cd222f7c6dba344f349cb2d$ 21031 // 21032 21033 #include "libcef_dll/ctocpp/download_image_callback_ctocpp.h" 21034diff --git a/cef/libcef_dll/ctocpp/download_image_callback_ctocpp.h b/cef/libcef_dll/ctocpp/download_image_callback_ctocpp.h 21035index 8fccab1dea..ff4558668f 100644 21036--- a/cef/libcef_dll/ctocpp/download_image_callback_ctocpp.h 21037+++ b/cef/libcef_dll/ctocpp/download_image_callback_ctocpp.h 21038@@ -1,4 +1,4 @@ 21039-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 21040+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 21041 // reserved. Use of this source code is governed by a BSD-style license that 21042 // can be found in the LICENSE file. 21043 // 21044@@ -9,7 +9,7 @@ 21045 // implementations. See the translator.README.txt file in the tools directory 21046 // for more information. 21047 // 21048-// $hash=73f30c6f17708de7c3633a30e01a2bb672afbc83$ 21049+// $hash=fa13abafcf97f6a71d08ca7ec67d45a71d636603$ 21050 // 21051 21052 #ifndef CEF_LIBCEF_DLL_CTOCPP_DOWNLOAD_IMAGE_CALLBACK_CTOCPP_H_ 21053diff --git a/cef/libcef_dll/ctocpp/download_item_callback_ctocpp.cc b/cef/libcef_dll/ctocpp/download_item_callback_ctocpp.cc 21054index 50fa61d19c..0608133157 100644 21055--- a/cef/libcef_dll/ctocpp/download_item_callback_ctocpp.cc 21056+++ b/cef/libcef_dll/ctocpp/download_item_callback_ctocpp.cc 21057@@ -1,4 +1,4 @@ 21058-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 21059+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 21060 // reserved. Use of this source code is governed by a BSD-style license that 21061 // can be found in the LICENSE file. 21062 // 21063@@ -9,7 +9,7 @@ 21064 // implementations. See the translator.README.txt file in the tools directory 21065 // for more information. 21066 // 21067-// $hash=fb09a7e7db1267d0653fff64c419ab573496614f$ 21068+// $hash=092e50c318b7d1c933ffb293ff062df17bfbb736$ 21069 // 21070 21071 #include "libcef_dll/ctocpp/download_item_callback_ctocpp.h" 21072diff --git a/cef/libcef_dll/ctocpp/download_item_callback_ctocpp.h b/cef/libcef_dll/ctocpp/download_item_callback_ctocpp.h 21073index ccadf6a588..b1bcf4a373 100644 21074--- a/cef/libcef_dll/ctocpp/download_item_callback_ctocpp.h 21075+++ b/cef/libcef_dll/ctocpp/download_item_callback_ctocpp.h 21076@@ -1,4 +1,4 @@ 21077-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 21078+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 21079 // reserved. Use of this source code is governed by a BSD-style license that 21080 // can be found in the LICENSE file. 21081 // 21082@@ -9,7 +9,7 @@ 21083 // implementations. See the translator.README.txt file in the tools directory 21084 // for more information. 21085 // 21086-// $hash=7f1556d32762b7eb0c65afbb7d4c5014a97a96c9$ 21087+// $hash=de956d3f54d0b28636c76d9c3a306b124c164a97$ 21088 // 21089 21090 #ifndef CEF_LIBCEF_DLL_CTOCPP_DOWNLOAD_ITEM_CALLBACK_CTOCPP_H_ 21091diff --git a/cef/libcef_dll/ctocpp/download_item_ctocpp.cc b/cef/libcef_dll/ctocpp/download_item_ctocpp.cc 21092index 11a172a65d..66f136e42f 100644 21093--- a/cef/libcef_dll/ctocpp/download_item_ctocpp.cc 21094+++ b/cef/libcef_dll/ctocpp/download_item_ctocpp.cc 21095@@ -1,4 +1,4 @@ 21096-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 21097+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 21098 // reserved. Use of this source code is governed by a BSD-style license that 21099 // can be found in the LICENSE file. 21100 // 21101@@ -9,7 +9,7 @@ 21102 // implementations. See the translator.README.txt file in the tools directory 21103 // for more information. 21104 // 21105-// $hash=3052f807e8bd2d9d41e8147d6f14b26a38cbeaeb$ 21106+// $hash=05c6527a7cdeb9495bca9da965956fb3006a7bdd$ 21107 // 21108 21109 #include "libcef_dll/ctocpp/download_item_ctocpp.h" 21110diff --git a/cef/libcef_dll/ctocpp/download_item_ctocpp.h b/cef/libcef_dll/ctocpp/download_item_ctocpp.h 21111index 1e1ed58eba..8cdb343e7d 100644 21112--- a/cef/libcef_dll/ctocpp/download_item_ctocpp.h 21113+++ b/cef/libcef_dll/ctocpp/download_item_ctocpp.h 21114@@ -1,4 +1,4 @@ 21115-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 21116+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 21117 // reserved. Use of this source code is governed by a BSD-style license that 21118 // can be found in the LICENSE file. 21119 // 21120@@ -9,7 +9,7 @@ 21121 // implementations. See the translator.README.txt file in the tools directory 21122 // for more information. 21123 // 21124-// $hash=a536d8825fc85c5248fcdf5316bdf760e9f4a5e6$ 21125+// $hash=dd66cdd93b90eac63bef4639134076a3ea180f12$ 21126 // 21127 21128 #ifndef CEF_LIBCEF_DLL_CTOCPP_DOWNLOAD_ITEM_CTOCPP_H_ 21129diff --git a/cef/libcef_dll/ctocpp/drag_data_ctocpp.cc b/cef/libcef_dll/ctocpp/drag_data_ctocpp.cc 21130index c51ecf34de..fc33a78e53 100644 21131--- a/cef/libcef_dll/ctocpp/drag_data_ctocpp.cc 21132+++ b/cef/libcef_dll/ctocpp/drag_data_ctocpp.cc 21133@@ -1,4 +1,4 @@ 21134-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 21135+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 21136 // reserved. Use of this source code is governed by a BSD-style license that 21137 // can be found in the LICENSE file. 21138 // 21139@@ -9,7 +9,7 @@ 21140 // implementations. See the translator.README.txt file in the tools directory 21141 // for more information. 21142 // 21143-// $hash=aa1596cb76a36c6adce59bd1d7623c636c1a4740$ 21144+// $hash=57352ff85ca98fc34a0f2c58afbb1224ce1a1f09$ 21145 // 21146 21147 #include "libcef_dll/ctocpp/drag_data_ctocpp.h" 21148diff --git a/cef/libcef_dll/ctocpp/drag_data_ctocpp.h b/cef/libcef_dll/ctocpp/drag_data_ctocpp.h 21149index a8d37b80c4..952ef289b2 100644 21150--- a/cef/libcef_dll/ctocpp/drag_data_ctocpp.h 21151+++ b/cef/libcef_dll/ctocpp/drag_data_ctocpp.h 21152@@ -1,4 +1,4 @@ 21153-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 21154+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 21155 // reserved. Use of this source code is governed by a BSD-style license that 21156 // can be found in the LICENSE file. 21157 // 21158@@ -9,7 +9,7 @@ 21159 // implementations. See the translator.README.txt file in the tools directory 21160 // for more information. 21161 // 21162-// $hash=e5579ef142f0eb3873c7fd526320919b000f57ee$ 21163+// $hash=e3022098b1513ebfea27dab4213100777389cf99$ 21164 // 21165 21166 #ifndef CEF_LIBCEF_DLL_CTOCPP_DRAG_DATA_CTOCPP_H_ 21167diff --git a/cef/libcef_dll/ctocpp/drag_handler_ctocpp.cc b/cef/libcef_dll/ctocpp/drag_handler_ctocpp.cc 21168index 2ce35c09a1..ccf11d8fb5 100644 21169--- a/cef/libcef_dll/ctocpp/drag_handler_ctocpp.cc 21170+++ b/cef/libcef_dll/ctocpp/drag_handler_ctocpp.cc 21171@@ -1,4 +1,4 @@ 21172-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 21173+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 21174 // reserved. Use of this source code is governed by a BSD-style license that 21175 // can be found in the LICENSE file. 21176 // 21177@@ -9,7 +9,7 @@ 21178 // implementations. See the translator.README.txt file in the tools directory 21179 // for more information. 21180 // 21181-// $hash=86c335a8c888ca3a7e08d6cb320b91389bc2232c$ 21182+// $hash=83bbaf05bb87f369d819d4202110581c3bbe60a1$ 21183 // 21184 21185 #include "libcef_dll/ctocpp/drag_handler_ctocpp.h" 21186diff --git a/cef/libcef_dll/ctocpp/drag_handler_ctocpp.h b/cef/libcef_dll/ctocpp/drag_handler_ctocpp.h 21187index 4940eb73d2..47488db5e3 100644 21188--- a/cef/libcef_dll/ctocpp/drag_handler_ctocpp.h 21189+++ b/cef/libcef_dll/ctocpp/drag_handler_ctocpp.h 21190@@ -1,4 +1,4 @@ 21191-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 21192+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 21193 // reserved. Use of this source code is governed by a BSD-style license that 21194 // can be found in the LICENSE file. 21195 // 21196@@ -9,7 +9,7 @@ 21197 // implementations. See the translator.README.txt file in the tools directory 21198 // for more information. 21199 // 21200-// $hash=23257e88edd1dbe17b69adbaff5bbdd52149a075$ 21201+// $hash=87c40d04da449f1144f962dff8b3e0b5a1d70db7$ 21202 // 21203 21204 #ifndef CEF_LIBCEF_DLL_CTOCPP_DRAG_HANDLER_CTOCPP_H_ 21205diff --git a/cef/libcef_dll/ctocpp/end_tracing_callback_ctocpp.cc b/cef/libcef_dll/ctocpp/end_tracing_callback_ctocpp.cc 21206index 9f12dfe493..9489292a43 100644 21207--- a/cef/libcef_dll/ctocpp/end_tracing_callback_ctocpp.cc 21208+++ b/cef/libcef_dll/ctocpp/end_tracing_callback_ctocpp.cc 21209@@ -1,4 +1,4 @@ 21210-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 21211+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 21212 // reserved. Use of this source code is governed by a BSD-style license that 21213 // can be found in the LICENSE file. 21214 // 21215@@ -9,7 +9,7 @@ 21216 // implementations. See the translator.README.txt file in the tools directory 21217 // for more information. 21218 // 21219-// $hash=a9fa1d67bf81497a442096b2969a08ccee88b952$ 21220+// $hash=7f660f5500f6e299ef56d598c71ade363f5581b9$ 21221 // 21222 21223 #include "libcef_dll/ctocpp/end_tracing_callback_ctocpp.h" 21224diff --git a/cef/libcef_dll/ctocpp/end_tracing_callback_ctocpp.h b/cef/libcef_dll/ctocpp/end_tracing_callback_ctocpp.h 21225index e19d85f544..81b82fc180 100644 21226--- a/cef/libcef_dll/ctocpp/end_tracing_callback_ctocpp.h 21227+++ b/cef/libcef_dll/ctocpp/end_tracing_callback_ctocpp.h 21228@@ -1,4 +1,4 @@ 21229-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 21230+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 21231 // reserved. Use of this source code is governed by a BSD-style license that 21232 // can be found in the LICENSE file. 21233 // 21234@@ -9,7 +9,7 @@ 21235 // implementations. See the translator.README.txt file in the tools directory 21236 // for more information. 21237 // 21238-// $hash=38b8d10de419daefd1b6021283e0e7b373308948$ 21239+// $hash=43c23da2432e1336afcd21889ae744bcc109e3ed$ 21240 // 21241 21242 #ifndef CEF_LIBCEF_DLL_CTOCPP_END_TRACING_CALLBACK_CTOCPP_H_ 21243diff --git a/cef/libcef_dll/ctocpp/extension_ctocpp.cc b/cef/libcef_dll/ctocpp/extension_ctocpp.cc 21244index 693a12ffe2..a891cd0190 100644 21245--- a/cef/libcef_dll/ctocpp/extension_ctocpp.cc 21246+++ b/cef/libcef_dll/ctocpp/extension_ctocpp.cc 21247@@ -1,4 +1,4 @@ 21248-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 21249+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 21250 // reserved. Use of this source code is governed by a BSD-style license that 21251 // can be found in the LICENSE file. 21252 // 21253@@ -9,7 +9,7 @@ 21254 // implementations. See the translator.README.txt file in the tools directory 21255 // for more information. 21256 // 21257-// $hash=57e6d3169944358208705cf0bad4edfd8a6c3d16$ 21258+// $hash=de6b935b77168bd9b44f26643c510f360f8b6ebd$ 21259 // 21260 21261 #include "libcef_dll/ctocpp/extension_ctocpp.h" 21262diff --git a/cef/libcef_dll/ctocpp/extension_ctocpp.h b/cef/libcef_dll/ctocpp/extension_ctocpp.h 21263index 578f87f039..c41547e5c4 100644 21264--- a/cef/libcef_dll/ctocpp/extension_ctocpp.h 21265+++ b/cef/libcef_dll/ctocpp/extension_ctocpp.h 21266@@ -1,4 +1,4 @@ 21267-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 21268+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 21269 // reserved. Use of this source code is governed by a BSD-style license that 21270 // can be found in the LICENSE file. 21271 // 21272@@ -9,7 +9,7 @@ 21273 // implementations. See the translator.README.txt file in the tools directory 21274 // for more information. 21275 // 21276-// $hash=faae935a841ecb55281ac5c8ff3621b2624c048f$ 21277+// $hash=262f7398fd22effc7269c27ba5cb7e96ddea8b30$ 21278 // 21279 21280 #ifndef CEF_LIBCEF_DLL_CTOCPP_EXTENSION_CTOCPP_H_ 21281diff --git a/cef/libcef_dll/ctocpp/extension_handler_ctocpp.cc b/cef/libcef_dll/ctocpp/extension_handler_ctocpp.cc 21282index e390a27473..b6826310cf 100644 21283--- a/cef/libcef_dll/ctocpp/extension_handler_ctocpp.cc 21284+++ b/cef/libcef_dll/ctocpp/extension_handler_ctocpp.cc 21285@@ -1,4 +1,4 @@ 21286-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 21287+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 21288 // reserved. Use of this source code is governed by a BSD-style license that 21289 // can be found in the LICENSE file. 21290 // 21291@@ -9,7 +9,7 @@ 21292 // implementations. See the translator.README.txt file in the tools directory 21293 // for more information. 21294 // 21295-// $hash=5dee9e8035c63468d7749612f94abf592ca2c2d9$ 21296+// $hash=befb9e9bd438e431bb55b7c67413d9d7a7b263f2$ 21297 // 21298 21299 #include "libcef_dll/ctocpp/extension_handler_ctocpp.h" 21300diff --git a/cef/libcef_dll/ctocpp/extension_handler_ctocpp.h b/cef/libcef_dll/ctocpp/extension_handler_ctocpp.h 21301index c825b14032..b8bd638ea6 100644 21302--- a/cef/libcef_dll/ctocpp/extension_handler_ctocpp.h 21303+++ b/cef/libcef_dll/ctocpp/extension_handler_ctocpp.h 21304@@ -1,4 +1,4 @@ 21305-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 21306+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 21307 // reserved. Use of this source code is governed by a BSD-style license that 21308 // can be found in the LICENSE file. 21309 // 21310@@ -9,7 +9,7 @@ 21311 // implementations. See the translator.README.txt file in the tools directory 21312 // for more information. 21313 // 21314-// $hash=8f93565c27a717559fea6e381b2f8d70fbf9d601$ 21315+// $hash=147ef76bff631531a075ac9a2c823d3e9f84c409$ 21316 // 21317 21318 #ifndef CEF_LIBCEF_DLL_CTOCPP_EXTENSION_HANDLER_CTOCPP_H_ 21319diff --git a/cef/libcef_dll/ctocpp/file_dialog_callback_ctocpp.cc b/cef/libcef_dll/ctocpp/file_dialog_callback_ctocpp.cc 21320index 822bc96057..3b90ba5a36 100644 21321--- a/cef/libcef_dll/ctocpp/file_dialog_callback_ctocpp.cc 21322+++ b/cef/libcef_dll/ctocpp/file_dialog_callback_ctocpp.cc 21323@@ -1,4 +1,4 @@ 21324-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 21325+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 21326 // reserved. Use of this source code is governed by a BSD-style license that 21327 // can be found in the LICENSE file. 21328 // 21329@@ -9,7 +9,7 @@ 21330 // implementations. See the translator.README.txt file in the tools directory 21331 // for more information. 21332 // 21333-// $hash=03ee4c71a45e6c010a1a5c16d42c8dc5b0e61658$ 21334+// $hash=8fecb808fb6a84d630d1e8c5380a5ffd900b3654$ 21335 // 21336 21337 #include "libcef_dll/ctocpp/file_dialog_callback_ctocpp.h" 21338diff --git a/cef/libcef_dll/ctocpp/file_dialog_callback_ctocpp.h b/cef/libcef_dll/ctocpp/file_dialog_callback_ctocpp.h 21339index 1d66f25d53..028ee3de68 100644 21340--- a/cef/libcef_dll/ctocpp/file_dialog_callback_ctocpp.h 21341+++ b/cef/libcef_dll/ctocpp/file_dialog_callback_ctocpp.h 21342@@ -1,4 +1,4 @@ 21343-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 21344+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 21345 // reserved. Use of this source code is governed by a BSD-style license that 21346 // can be found in the LICENSE file. 21347 // 21348@@ -9,7 +9,7 @@ 21349 // implementations. See the translator.README.txt file in the tools directory 21350 // for more information. 21351 // 21352-// $hash=333ff5ff1b7dacb0ef4aa1f025d97babd4c2f252$ 21353+// $hash=155436adc4090718e65a2348fa60dbd393c6fe2e$ 21354 // 21355 21356 #ifndef CEF_LIBCEF_DLL_CTOCPP_FILE_DIALOG_CALLBACK_CTOCPP_H_ 21357diff --git a/cef/libcef_dll/ctocpp/find_handler_ctocpp.cc b/cef/libcef_dll/ctocpp/find_handler_ctocpp.cc 21358index 3a01df75da..a12e2e089c 100644 21359--- a/cef/libcef_dll/ctocpp/find_handler_ctocpp.cc 21360+++ b/cef/libcef_dll/ctocpp/find_handler_ctocpp.cc 21361@@ -1,4 +1,4 @@ 21362-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 21363+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 21364 // reserved. Use of this source code is governed by a BSD-style license that 21365 // can be found in the LICENSE file. 21366 // 21367@@ -9,7 +9,7 @@ 21368 // implementations. See the translator.README.txt file in the tools directory 21369 // for more information. 21370 // 21371-// $hash=65c786d5d1090df5c1bf74d2fae323dc70fe05d3$ 21372+// $hash=22af1e946668e89411cc87596b88c8a47880a78a$ 21373 // 21374 21375 #include "libcef_dll/ctocpp/find_handler_ctocpp.h" 21376diff --git a/cef/libcef_dll/ctocpp/find_handler_ctocpp.h b/cef/libcef_dll/ctocpp/find_handler_ctocpp.h 21377index 21d89a53fb..ce9cffbae8 100644 21378--- a/cef/libcef_dll/ctocpp/find_handler_ctocpp.h 21379+++ b/cef/libcef_dll/ctocpp/find_handler_ctocpp.h 21380@@ -1,4 +1,4 @@ 21381-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 21382+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 21383 // reserved. Use of this source code is governed by a BSD-style license that 21384 // can be found in the LICENSE file. 21385 // 21386@@ -9,7 +9,7 @@ 21387 // implementations. See the translator.README.txt file in the tools directory 21388 // for more information. 21389 // 21390-// $hash=84888f5fdae1eb1f132f1fcbaae81f3b4f87353b$ 21391+// $hash=d6ed1e4a341c9deecc217c49ecd52f444d18e236$ 21392 // 21393 21394 #ifndef CEF_LIBCEF_DLL_CTOCPP_FIND_HANDLER_CTOCPP_H_ 21395diff --git a/cef/libcef_dll/ctocpp/focus_handler_ctocpp.cc b/cef/libcef_dll/ctocpp/focus_handler_ctocpp.cc 21396index da04ab7996..42f46d1d12 100644 21397--- a/cef/libcef_dll/ctocpp/focus_handler_ctocpp.cc 21398+++ b/cef/libcef_dll/ctocpp/focus_handler_ctocpp.cc 21399@@ -1,4 +1,4 @@ 21400-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 21401+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 21402 // reserved. Use of this source code is governed by a BSD-style license that 21403 // can be found in the LICENSE file. 21404 // 21405@@ -9,7 +9,7 @@ 21406 // implementations. See the translator.README.txt file in the tools directory 21407 // for more information. 21408 // 21409-// $hash=cbd8868643e361e9e9cd94bf2fadf91c2b7f4e47$ 21410+// $hash=fe5dc43b11c24ea7a1e9a1c31846cd433a425a48$ 21411 // 21412 21413 #include "libcef_dll/ctocpp/focus_handler_ctocpp.h" 21414diff --git a/cef/libcef_dll/ctocpp/focus_handler_ctocpp.h b/cef/libcef_dll/ctocpp/focus_handler_ctocpp.h 21415index 0ef4ce5814..0c31eca72d 100644 21416--- a/cef/libcef_dll/ctocpp/focus_handler_ctocpp.h 21417+++ b/cef/libcef_dll/ctocpp/focus_handler_ctocpp.h 21418@@ -1,4 +1,4 @@ 21419-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 21420+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 21421 // reserved. Use of this source code is governed by a BSD-style license that 21422 // can be found in the LICENSE file. 21423 // 21424@@ -9,7 +9,7 @@ 21425 // implementations. See the translator.README.txt file in the tools directory 21426 // for more information. 21427 // 21428-// $hash=1e99b84b9c7ed06898fe3db94c158f9a5db96ca9$ 21429+// $hash=7a41bfc84063e89ae6a9a02ad4252b6145e06d48$ 21430 // 21431 21432 #ifndef CEF_LIBCEF_DLL_CTOCPP_FOCUS_HANDLER_CTOCPP_H_ 21433diff --git a/cef/libcef_dll/ctocpp/frame_ctocpp.cc b/cef/libcef_dll/ctocpp/frame_ctocpp.cc 21434index 4fd7242218..68afd7bd7b 100644 21435--- a/cef/libcef_dll/ctocpp/frame_ctocpp.cc 21436+++ b/cef/libcef_dll/ctocpp/frame_ctocpp.cc 21437@@ -1,4 +1,4 @@ 21438-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 21439+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 21440 // reserved. Use of this source code is governed by a BSD-style license that 21441 // can be found in the LICENSE file. 21442 // 21443@@ -9,7 +9,7 @@ 21444 // implementations. See the translator.README.txt file in the tools directory 21445 // for more information. 21446 // 21447-// $hash=18dfd50f3a29afda039123f968d8d3c93763682b$ 21448+// $hash=58457cf1e745964f12e1266265fbc1fc1b0ebcd4$ 21449 // 21450 21451 #include "libcef_dll/ctocpp/frame_ctocpp.h" 21452@@ -395,6 +395,24 @@ void CefFrameCToCpp::VisitDOM(CefRefPtr<CefDOMVisitor> visitor) { 21453 _struct->visit_dom(_struct, CefDOMVisitorCppToC::Wrap(visitor)); 21454 } 21455 21456+NO_SANITIZE("cfi-icall") 21457+void CefFrameCToCpp::LoadHeaderUrl(const CefString& url, 21458+ const CefString& additionalHttpHeaders) { 21459+ shutdown_checker::AssertNotShutdown(); 21460+ 21461+ cef_frame_t* _struct = GetStruct(); 21462+ if (CEF_MEMBER_MISSING(_struct, load_header_url)) 21463+ return; 21464+ 21465+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 21466+ 21467+ // Unverified params: url, additionalHttpHeaders 21468+ 21469+ // Execute 21470+ _struct->load_header_url(_struct, url.GetStruct(), 21471+ additionalHttpHeaders.GetStruct()); 21472+} 21473+ 21474 NO_SANITIZE("cfi-icall") 21475 CefRefPtr<CefURLRequest> CefFrameCToCpp::CreateURLRequest( 21476 CefRefPtr<CefRequest> request, 21477diff --git a/cef/libcef_dll/ctocpp/frame_ctocpp.h b/cef/libcef_dll/ctocpp/frame_ctocpp.h 21478index 5201b14a60..b9eaf9d149 100644 21479--- a/cef/libcef_dll/ctocpp/frame_ctocpp.h 21480+++ b/cef/libcef_dll/ctocpp/frame_ctocpp.h 21481@@ -1,4 +1,4 @@ 21482-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 21483+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 21484 // reserved. Use of this source code is governed by a BSD-style license that 21485 // can be found in the LICENSE file. 21486 // 21487@@ -9,7 +9,7 @@ 21488 // implementations. See the translator.README.txt file in the tools directory 21489 // for more information. 21490 // 21491-// $hash=398e1f63c0456dac74d288e3dc7a7b23e488b78a$ 21492+// $hash=adb1a1944137c612548a541cf350ea48c059c80d$ 21493 // 21494 21495 #ifndef CEF_LIBCEF_DLL_CTOCPP_FRAME_CTOCPP_H_ 21496@@ -64,6 +64,8 @@ class CefFrameCToCpp 21497 CefRefPtr<CefBrowser> GetBrowser() OVERRIDE; 21498 CefRefPtr<CefV8Context> GetV8Context() OVERRIDE; 21499 void VisitDOM(CefRefPtr<CefDOMVisitor> visitor) OVERRIDE; 21500+ void LoadHeaderUrl(const CefString& url, 21501+ const CefString& additionalHttpHeaders) OVERRIDE; 21502 CefRefPtr<CefURLRequest> CreateURLRequest( 21503 CefRefPtr<CefRequest> request, 21504 CefRefPtr<CefURLRequestClient> client) OVERRIDE; 21505diff --git a/cef/libcef_dll/ctocpp/geolocation_acess_ctocpp.cc b/cef/libcef_dll/ctocpp/geolocation_acess_ctocpp.cc 21506new file mode 100644 21507index 0000000000..8be91dcf1a 21508--- /dev/null 21509+++ b/cef/libcef_dll/ctocpp/geolocation_acess_ctocpp.cc 21510@@ -0,0 +1,126 @@ 21511+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 21512+// reserved. Use of this source code is governed by a BSD-style license that 21513+// can be found in the LICENSE file. 21514+// 21515+// --------------------------------------------------------------------------- 21516+// 21517+// This file was generated by the CEF translator tool. If making changes by 21518+// hand only do so within the body of existing method and function 21519+// implementations. See the translator.README.txt file in the tools directory 21520+// for more information. 21521+// 21522+// $hash=3997657ceba0e011684fe481bdcc221dacd24369$ 21523+// 21524+ 21525+#include "libcef_dll/ctocpp/geolocation_acess_ctocpp.h" 21526+#include "libcef_dll/shutdown_checker.h" 21527+ 21528+// VIRTUAL METHODS - Body may be edited by hand. 21529+ 21530+NO_SANITIZE("cfi-icall") 21531+bool CefGeolocationAcessCToCpp::ContainOrigin(const CefString& origin) { 21532+ shutdown_checker::AssertNotShutdown(); 21533+ 21534+ cef_geolocation_acess_t* _struct = GetStruct(); 21535+ if (CEF_MEMBER_MISSING(_struct, contain_origin)) 21536+ return false; 21537+ 21538+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 21539+ 21540+ // Verify param: origin; type: string_byref_const 21541+ DCHECK(!origin.empty()); 21542+ if (origin.empty()) 21543+ return false; 21544+ 21545+ // Execute 21546+ int _retval = _struct->contain_origin(_struct, origin.GetStruct()); 21547+ 21548+ // Return type: bool 21549+ return _retval ? true : false; 21550+} 21551+ 21552+NO_SANITIZE("cfi-icall") 21553+bool CefGeolocationAcessCToCpp::IsOriginAccessEnabled(const CefString& origin) { 21554+ shutdown_checker::AssertNotShutdown(); 21555+ 21556+ cef_geolocation_acess_t* _struct = GetStruct(); 21557+ if (CEF_MEMBER_MISSING(_struct, is_origin_access_enabled)) 21558+ return false; 21559+ 21560+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 21561+ 21562+ // Verify param: origin; type: string_byref_const 21563+ DCHECK(!origin.empty()); 21564+ if (origin.empty()) 21565+ return false; 21566+ 21567+ // Execute 21568+ int _retval = _struct->is_origin_access_enabled(_struct, origin.GetStruct()); 21569+ 21570+ // Return type: bool 21571+ return _retval ? true : false; 21572+} 21573+ 21574+NO_SANITIZE("cfi-icall") 21575+void CefGeolocationAcessCToCpp::Enabled(const CefString& origin) { 21576+ shutdown_checker::AssertNotShutdown(); 21577+ 21578+ cef_geolocation_acess_t* _struct = GetStruct(); 21579+ if (CEF_MEMBER_MISSING(_struct, enabled)) 21580+ return; 21581+ 21582+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 21583+ 21584+ // Verify param: origin; type: string_byref_const 21585+ DCHECK(!origin.empty()); 21586+ if (origin.empty()) 21587+ return; 21588+ 21589+ // Execute 21590+ _struct->enabled(_struct, origin.GetStruct()); 21591+} 21592+ 21593+NO_SANITIZE("cfi-icall") 21594+void CefGeolocationAcessCToCpp::Disabled(const CefString& origin) { 21595+ shutdown_checker::AssertNotShutdown(); 21596+ 21597+ cef_geolocation_acess_t* _struct = GetStruct(); 21598+ if (CEF_MEMBER_MISSING(_struct, disabled)) 21599+ return; 21600+ 21601+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 21602+ 21603+ // Verify param: origin; type: string_byref_const 21604+ DCHECK(!origin.empty()); 21605+ if (origin.empty()) 21606+ return; 21607+ 21608+ // Execute 21609+ _struct->disabled(_struct, origin.GetStruct()); 21610+} 21611+ 21612+// CONSTRUCTOR - Do not edit by hand. 21613+ 21614+CefGeolocationAcessCToCpp::CefGeolocationAcessCToCpp() {} 21615+ 21616+// DESTRUCTOR - Do not edit by hand. 21617+ 21618+CefGeolocationAcessCToCpp::~CefGeolocationAcessCToCpp() { 21619+ shutdown_checker::AssertNotShutdown(); 21620+} 21621+ 21622+template <> 21623+cef_geolocation_acess_t* CefCToCppRefCounted< 21624+ CefGeolocationAcessCToCpp, 21625+ CefGeolocationAcess, 21626+ cef_geolocation_acess_t>::UnwrapDerived(CefWrapperType type, 21627+ CefGeolocationAcess* c) { 21628+ NOTREACHED() << "Unexpected class type: " << type; 21629+ return nullptr; 21630+} 21631+ 21632+template <> 21633+CefWrapperType CefCToCppRefCounted<CefGeolocationAcessCToCpp, 21634+ CefGeolocationAcess, 21635+ cef_geolocation_acess_t>::kWrapperType = 21636+ WT_GEOLOCATION_ACESS; 21637diff --git a/cef/libcef_dll/ctocpp/geolocation_acess_ctocpp.h b/cef/libcef_dll/ctocpp/geolocation_acess_ctocpp.h 21638new file mode 100644 21639index 0000000000..b1d761f88e 21640--- /dev/null 21641+++ b/cef/libcef_dll/ctocpp/geolocation_acess_ctocpp.h 21642@@ -0,0 +1,44 @@ 21643+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 21644+// reserved. Use of this source code is governed by a BSD-style license that 21645+// can be found in the LICENSE file. 21646+// 21647+// --------------------------------------------------------------------------- 21648+// 21649+// This file was generated by the CEF translator tool. If making changes by 21650+// hand only do so within the body of existing method and function 21651+// implementations. See the translator.README.txt file in the tools directory 21652+// for more information. 21653+// 21654+// $hash=f2ca67e142bb0f055586312cd94ae6fffd11215b$ 21655+// 21656+ 21657+#ifndef CEF_LIBCEF_DLL_CTOCPP_GEOLOCATION_ACESS_CTOCPP_H_ 21658+#define CEF_LIBCEF_DLL_CTOCPP_GEOLOCATION_ACESS_CTOCPP_H_ 21659+#pragma once 21660+ 21661+#if !defined(WRAPPING_CEF_SHARED) 21662+#error This file can be included wrapper-side only 21663+#endif 21664+ 21665+#include "include/capi/cef_permission_request_capi.h" 21666+#include "include/cef_permission_request.h" 21667+#include "libcef_dll/ctocpp/ctocpp_ref_counted.h" 21668+ 21669+// Wrap a C structure with a C++ class. 21670+// This class may be instantiated and accessed wrapper-side only. 21671+class CefGeolocationAcessCToCpp 21672+ : public CefCToCppRefCounted<CefGeolocationAcessCToCpp, 21673+ CefGeolocationAcess, 21674+ cef_geolocation_acess_t> { 21675+ public: 21676+ CefGeolocationAcessCToCpp(); 21677+ virtual ~CefGeolocationAcessCToCpp(); 21678+ 21679+ // CefGeolocationAcess methods. 21680+ bool ContainOrigin(const CefString& origin) OVERRIDE; 21681+ bool IsOriginAccessEnabled(const CefString& origin) OVERRIDE; 21682+ void Enabled(const CefString& origin) OVERRIDE; 21683+ void Disabled(const CefString& origin) OVERRIDE; 21684+}; 21685+ 21686+#endif // CEF_LIBCEF_DLL_CTOCPP_GEOLOCATION_ACESS_CTOCPP_H_ 21687diff --git a/cef/libcef_dll/ctocpp/geolocation_permissions_ctocpp.cc b/cef/libcef_dll/ctocpp/geolocation_permissions_ctocpp.cc 21688new file mode 100644 21689index 0000000000..7dd9b0ff06 21690--- /dev/null 21691+++ b/cef/libcef_dll/ctocpp/geolocation_permissions_ctocpp.cc 21692@@ -0,0 +1,128 @@ 21693+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 21694+// reserved. Use of this source code is governed by a BSD-style license that 21695+// can be found in the LICENSE file. 21696+// 21697+// --------------------------------------------------------------------------- 21698+// 21699+// This file was generated by the CEF translator tool. If making changes by 21700+// hand only do so within the body of existing method and function 21701+// implementations. See the translator.README.txt file in the tools directory 21702+// for more information. 21703+// 21704+// $hash=73842333eb5449db43ec1be9bc603b2c40509ed8$ 21705+// 21706+ 21707+#include "libcef_dll/ctocpp/geolocation_permissions_ctocpp.h" 21708+#include "libcef_dll/shutdown_checker.h" 21709+ 21710+// VIRTUAL METHODS - Body may be edited by hand. 21711+ 21712+NO_SANITIZE("cfi-icall") 21713+bool CefGeolocationPermissionsCToCpp::ContainOrigin(const CefString& origin) { 21714+ shutdown_checker::AssertNotShutdown(); 21715+ 21716+ cef_geolocation_permissions_t* _struct = GetStruct(); 21717+ if (CEF_MEMBER_MISSING(_struct, has_origin)) 21718+ return false; 21719+ 21720+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 21721+ 21722+ // Verify param: origin; type: string_byref_const 21723+ DCHECK(!origin.empty()); 21724+ if (origin.empty()) 21725+ return false; 21726+ 21727+ // Execute 21728+ int _retval = _struct->has_origin(_struct, origin.GetStruct()); 21729+ 21730+ // Return type: bool 21731+ return _retval ? true : false; 21732+} 21733+ 21734+NO_SANITIZE("cfi-icall") 21735+bool CefGeolocationPermissionsCToCpp::IsOriginAccessEnabled(const CefString& origin) { 21736+ shutdown_checker::AssertNotShutdown(); 21737+ 21738+ cef_geolocation_permissions_t* _struct = GetStruct(); 21739+ if (CEF_MEMBER_MISSING(_struct, is_origin_allowed)) 21740+ return false; 21741+ 21742+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 21743+ 21744+ // Verify param: origin; type: string_byref_const 21745+ DCHECK(!origin.empty()); 21746+ if (origin.empty()) 21747+ return false; 21748+ 21749+ // Execute 21750+ int _retval = _struct->is_origin_allowed(_struct, origin.GetStruct()); 21751+ 21752+ // Return type: bool 21753+ return _retval ? true : false; 21754+} 21755+ 21756+NO_SANITIZE("cfi-icall") 21757+void CefGeolocationPermissionsCToCpp::Enabled(const CefString& origin) { 21758+ shutdown_checker::AssertNotShutdown(); 21759+ 21760+ cef_geolocation_permissions_t* _struct = GetStruct(); 21761+ if (CEF_MEMBER_MISSING(_struct, allow)) 21762+ return; 21763+ 21764+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 21765+ 21766+ // Verify param: origin; type: string_byref_const 21767+ DCHECK(!origin.empty()); 21768+ if (origin.empty()) 21769+ return; 21770+ 21771+ // Execute 21772+ _struct->allow(_struct, origin.GetStruct()); 21773+} 21774+ 21775+NO_SANITIZE("cfi-icall") 21776+void CefGeolocationPermissionsCToCpp::Disabled(const CefString& origin) { 21777+ shutdown_checker::AssertNotShutdown(); 21778+ 21779+ cef_geolocation_permissions_t* _struct = GetStruct(); 21780+ if (CEF_MEMBER_MISSING(_struct, deny)) 21781+ return; 21782+ 21783+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 21784+ 21785+ // Verify param: origin; type: string_byref_const 21786+ DCHECK(!origin.empty()); 21787+ if (origin.empty()) 21788+ return; 21789+ 21790+ // Execute 21791+ _struct->deny(_struct, origin.GetStruct()); 21792+} 21793+ 21794+// CONSTRUCTOR - Do not edit by hand. 21795+ 21796+CefGeolocationPermissionsCToCpp::CefGeolocationPermissionsCToCpp() {} 21797+ 21798+// DESTRUCTOR - Do not edit by hand. 21799+ 21800+CefGeolocationPermissionsCToCpp::~CefGeolocationPermissionsCToCpp() { 21801+ shutdown_checker::AssertNotShutdown(); 21802+} 21803+ 21804+template <> 21805+cef_geolocation_permissions_t* CefCToCppRefCounted< 21806+ CefGeolocationPermissionsCToCpp, 21807+ CefGeolocationAcess, 21808+ cef_geolocation_permissions_t>::UnwrapDerived(CefWrapperType type, 21809+ CefGeolocationAcess* 21810+ c) { 21811+ NOTREACHED() << "Unexpected class type: " << type; 21812+ return nullptr; 21813+} 21814+ 21815+template <> 21816+CefWrapperType 21817+ CefCToCppRefCounted<CefGeolocationPermissionsCToCpp, 21818+ CefGeolocationAcess, 21819+ cef_geolocation_permissions_t>::kWrapperType = 21820+ WT_GEOLOCATION_PERMISSIONS; 21821diff --git a/cef/libcef_dll/ctocpp/geolocation_permissions_ctocpp.h b/cef/libcef_dll/ctocpp/geolocation_permissions_ctocpp.h 21822new file mode 100644 21823index 0000000000..96d242166d 21824--- /dev/null 21825+++ b/cef/libcef_dll/ctocpp/geolocation_permissions_ctocpp.h 21826@@ -0,0 +1,44 @@ 21827+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 21828+// reserved. Use of this source code is governed by a BSD-style license that 21829+// can be found in the LICENSE file. 21830+// 21831+// --------------------------------------------------------------------------- 21832+// 21833+// This file was generated by the CEF translator tool. If making changes by 21834+// hand only do so within the body of existing method and function 21835+// implementations. See the translator.README.txt file in the tools directory 21836+// for more information. 21837+// 21838+// $hash=5f3afeee4027ff42444edd3ec1616f93ce318300$ 21839+// 21840+ 21841+#ifndef CEF_LIBCEF_DLL_CTOCPP_GEOLOCATION_PERMISSIONS_CTOCPP_H_ 21842+#define CEF_LIBCEF_DLL_CTOCPP_GEOLOCATION_PERMISSIONS_CTOCPP_H_ 21843+#pragma once 21844+ 21845+#if !defined(WRAPPING_CEF_SHARED) 21846+#error This file can be included wrapper-side only 21847+#endif 21848+ 21849+#include "include/capi/cef_permission_request_capi.h" 21850+#include "include/cef_permission_request.h" 21851+#include "libcef_dll/ctocpp/ctocpp_ref_counted.h" 21852+ 21853+// Wrap a C structure with a C++ class. 21854+// This class may be instantiated and accessed wrapper-side only. 21855+class CefGeolocationPermissionsCToCpp 21856+ : public CefCToCppRefCounted<CefGeolocationPermissionsCToCpp, 21857+ CefGeolocationAcess, 21858+ cef_geolocation_permissions_t> { 21859+ public: 21860+ CefGeolocationPermissionsCToCpp(); 21861+ virtual ~CefGeolocationPermissionsCToCpp(); 21862+ 21863+ // CefGeolocationAcess methods. 21864+ bool ContainOrigin(const CefString& origin) OVERRIDE; 21865+ bool IsOriginAccessEnabled(const CefString& origin) OVERRIDE; 21866+ void Enabled(const CefString& origin) OVERRIDE; 21867+ void Disabled(const CefString& origin) OVERRIDE; 21868+}; 21869+ 21870+#endif // CEF_LIBCEF_DLL_CTOCPP_GEOLOCATION_PERMISSIONS_CTOCPP_H_ 21871diff --git a/cef/libcef_dll/ctocpp/get_extension_resource_callback_ctocpp.cc b/cef/libcef_dll/ctocpp/get_extension_resource_callback_ctocpp.cc 21872index 944cd1a97d..faee8d5127 100644 21873--- a/cef/libcef_dll/ctocpp/get_extension_resource_callback_ctocpp.cc 21874+++ b/cef/libcef_dll/ctocpp/get_extension_resource_callback_ctocpp.cc 21875@@ -1,4 +1,4 @@ 21876-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 21877+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 21878 // reserved. Use of this source code is governed by a BSD-style license that 21879 // can be found in the LICENSE file. 21880 // 21881@@ -9,7 +9,7 @@ 21882 // implementations. See the translator.README.txt file in the tools directory 21883 // for more information. 21884 // 21885-// $hash=63092d32e63d924b5988159ff2bc522c9f260628$ 21886+// $hash=2747a6d847a7abbc8adcde347308ff7826918884$ 21887 // 21888 21889 #include "libcef_dll/ctocpp/get_extension_resource_callback_ctocpp.h" 21890diff --git a/cef/libcef_dll/ctocpp/get_extension_resource_callback_ctocpp.h b/cef/libcef_dll/ctocpp/get_extension_resource_callback_ctocpp.h 21891index b95acef386..e77b25bcc5 100644 21892--- a/cef/libcef_dll/ctocpp/get_extension_resource_callback_ctocpp.h 21893+++ b/cef/libcef_dll/ctocpp/get_extension_resource_callback_ctocpp.h 21894@@ -1,4 +1,4 @@ 21895-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 21896+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 21897 // reserved. Use of this source code is governed by a BSD-style license that 21898 // can be found in the LICENSE file. 21899 // 21900@@ -9,7 +9,7 @@ 21901 // implementations. See the translator.README.txt file in the tools directory 21902 // for more information. 21903 // 21904-// $hash=1e4ced3624db151e599c0928a7a87211d5dd8d57$ 21905+// $hash=44da630a6ed47bd22d00d86535bbd9b1bf4dafec$ 21906 // 21907 21908 #ifndef CEF_LIBCEF_DLL_CTOCPP_GET_EXTENSION_RESOURCE_CALLBACK_CTOCPP_H_ 21909diff --git a/cef/libcef_dll/ctocpp/image_ctocpp.cc b/cef/libcef_dll/ctocpp/image_ctocpp.cc 21910index a7f6fa8b1a..b766c79cd0 100644 21911--- a/cef/libcef_dll/ctocpp/image_ctocpp.cc 21912+++ b/cef/libcef_dll/ctocpp/image_ctocpp.cc 21913@@ -1,4 +1,4 @@ 21914-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 21915+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 21916 // reserved. Use of this source code is governed by a BSD-style license that 21917 // can be found in the LICENSE file. 21918 // 21919@@ -9,7 +9,7 @@ 21920 // implementations. See the translator.README.txt file in the tools directory 21921 // for more information. 21922 // 21923-// $hash=d15699feba25e9efccdef1fc4d5f66d214aa9169$ 21924+// $hash=33aeaefa103664f5cead6898d2f957d8a9a97a92$ 21925 // 21926 21927 #include "libcef_dll/ctocpp/image_ctocpp.h" 21928diff --git a/cef/libcef_dll/ctocpp/image_ctocpp.h b/cef/libcef_dll/ctocpp/image_ctocpp.h 21929index 699a1286ea..53e33373ba 100644 21930--- a/cef/libcef_dll/ctocpp/image_ctocpp.h 21931+++ b/cef/libcef_dll/ctocpp/image_ctocpp.h 21932@@ -1,4 +1,4 @@ 21933-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 21934+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 21935 // reserved. Use of this source code is governed by a BSD-style license that 21936 // can be found in the LICENSE file. 21937 // 21938@@ -9,7 +9,7 @@ 21939 // implementations. See the translator.README.txt file in the tools directory 21940 // for more information. 21941 // 21942-// $hash=417397bf09d546377dfa4c067d5c569b0348abff$ 21943+// $hash=1c7c9cf8d572383333b3938c8c54e7a8a1437bdd$ 21944 // 21945 21946 #ifndef CEF_LIBCEF_DLL_CTOCPP_IMAGE_CTOCPP_H_ 21947diff --git a/cef/libcef_dll/ctocpp/java_script_result_callback_ctocpp.cc b/cef/libcef_dll/ctocpp/java_script_result_callback_ctocpp.cc 21948new file mode 100644 21949index 0000000000..7e7ca331e7 21950--- /dev/null 21951+++ b/cef/libcef_dll/ctocpp/java_script_result_callback_ctocpp.cc 21952@@ -0,0 +1,65 @@ 21953+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 21954+// reserved. Use of this source code is governed by a BSD-style license that 21955+// can be found in the LICENSE file. 21956+// 21957+// --------------------------------------------------------------------------- 21958+// 21959+// This file was generated by the CEF translator tool. If making changes by 21960+// hand only do so within the body of existing method and function 21961+// implementations. See the translator.README.txt file in the tools directory 21962+// for more information. 21963+// 21964+// $hash=d54225cb81f976412f5924f0342241e5e1c15604$ 21965+// 21966+ 21967+#include "libcef_dll/ctocpp/java_script_result_callback_ctocpp.h" 21968+#include "libcef_dll/shutdown_checker.h" 21969+ 21970+// VIRTUAL METHODS - Body may be edited by hand. 21971+ 21972+NO_SANITIZE("cfi-icall") 21973+void CefJavaScriptResultCallbackCToCpp::OnJavaScriptExeResult( 21974+ const CefString& result) { 21975+ shutdown_checker::AssertNotShutdown(); 21976+ 21977+ cef_java_script_result_callback_t* _struct = GetStruct(); 21978+ if (CEF_MEMBER_MISSING(_struct, on_java_script_exe_result)) 21979+ return; 21980+ 21981+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 21982+ 21983+ // Verify param: result; type: string_byref_const 21984+ DCHECK(!result.empty()); 21985+ if (result.empty()) 21986+ return; 21987+ 21988+ // Execute 21989+ _struct->on_java_script_exe_result(_struct, result.GetStruct()); 21990+} 21991+ 21992+// CONSTRUCTOR - Do not edit by hand. 21993+ 21994+CefJavaScriptResultCallbackCToCpp::CefJavaScriptResultCallbackCToCpp() {} 21995+ 21996+// DESTRUCTOR - Do not edit by hand. 21997+ 21998+CefJavaScriptResultCallbackCToCpp::~CefJavaScriptResultCallbackCToCpp() { 21999+ shutdown_checker::AssertNotShutdown(); 22000+} 22001+ 22002+template <> 22003+cef_java_script_result_callback_t* 22004+CefCToCppRefCounted<CefJavaScriptResultCallbackCToCpp, 22005+ CefJavaScriptResultCallback, 22006+ cef_java_script_result_callback_t>:: 22007+ UnwrapDerived(CefWrapperType type, CefJavaScriptResultCallback* c) { 22008+ NOTREACHED() << "Unexpected class type: " << type; 22009+ return nullptr; 22010+} 22011+ 22012+template <> 22013+CefWrapperType 22014+ CefCToCppRefCounted<CefJavaScriptResultCallbackCToCpp, 22015+ CefJavaScriptResultCallback, 22016+ cef_java_script_result_callback_t>::kWrapperType = 22017+ WT_JAVA_SCRIPT_RESULT_CALLBACK; 22018diff --git a/cef/libcef_dll/ctocpp/java_script_result_callback_ctocpp.h b/cef/libcef_dll/ctocpp/java_script_result_callback_ctocpp.h 22019new file mode 100644 22020index 0000000000..b09edef38a 22021--- /dev/null 22022+++ b/cef/libcef_dll/ctocpp/java_script_result_callback_ctocpp.h 22023@@ -0,0 +1,43 @@ 22024+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 22025+// reserved. Use of this source code is governed by a BSD-style license that 22026+// can be found in the LICENSE file. 22027+// 22028+// --------------------------------------------------------------------------- 22029+// 22030+// This file was generated by the CEF translator tool. If making changes by 22031+// hand only do so within the body of existing method and function 22032+// implementations. See the translator.README.txt file in the tools directory 22033+// for more information. 22034+// 22035+// $hash=2e761fc082e89fe46754e498234c96e873d519dc$ 22036+// 22037+ 22038+#ifndef CEF_LIBCEF_DLL_CTOCPP_JAVA_SCRIPT_RESULT_CALLBACK_CTOCPP_H_ 22039+#define CEF_LIBCEF_DLL_CTOCPP_JAVA_SCRIPT_RESULT_CALLBACK_CTOCPP_H_ 22040+#pragma once 22041+ 22042+#if !defined(BUILDING_CEF_SHARED) 22043+#error This file can be included DLL-side only 22044+#endif 22045+ 22046+#include "include/capi/cef_browser_capi.h" 22047+#include "include/capi/cef_client_capi.h" 22048+#include "include/cef_browser.h" 22049+#include "include/cef_client.h" 22050+#include "libcef_dll/ctocpp/ctocpp_ref_counted.h" 22051+ 22052+// Wrap a C structure with a C++ class. 22053+// This class may be instantiated and accessed DLL-side only. 22054+class CefJavaScriptResultCallbackCToCpp 22055+ : public CefCToCppRefCounted<CefJavaScriptResultCallbackCToCpp, 22056+ CefJavaScriptResultCallback, 22057+ cef_java_script_result_callback_t> { 22058+ public: 22059+ CefJavaScriptResultCallbackCToCpp(); 22060+ virtual ~CefJavaScriptResultCallbackCToCpp(); 22061+ 22062+ // CefJavaScriptResultCallback methods. 22063+ void OnJavaScriptExeResult(const CefString& result) override; 22064+}; 22065+ 22066+#endif // CEF_LIBCEF_DLL_CTOCPP_JAVA_SCRIPT_RESULT_CALLBACK_CTOCPP_H_ 22067diff --git a/cef/libcef_dll/ctocpp/jsdialog_callback_ctocpp.cc b/cef/libcef_dll/ctocpp/jsdialog_callback_ctocpp.cc 22068index dce51979e4..ad5341aba0 100644 22069--- a/cef/libcef_dll/ctocpp/jsdialog_callback_ctocpp.cc 22070+++ b/cef/libcef_dll/ctocpp/jsdialog_callback_ctocpp.cc 22071@@ -1,4 +1,4 @@ 22072-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 22073+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 22074 // reserved. Use of this source code is governed by a BSD-style license that 22075 // can be found in the LICENSE file. 22076 // 22077@@ -9,7 +9,7 @@ 22078 // implementations. See the translator.README.txt file in the tools directory 22079 // for more information. 22080 // 22081-// $hash=7d7d71b2dfcf9b0ec721b2866bc6dd12c1738680$ 22082+// $hash=8fa9cd400d5a9ecce87183cdbbee8673845b2228$ 22083 // 22084 22085 #include "libcef_dll/ctocpp/jsdialog_callback_ctocpp.h" 22086diff --git a/cef/libcef_dll/ctocpp/jsdialog_callback_ctocpp.h b/cef/libcef_dll/ctocpp/jsdialog_callback_ctocpp.h 22087index bcce53f1dc..87c8897c35 100644 22088--- a/cef/libcef_dll/ctocpp/jsdialog_callback_ctocpp.h 22089+++ b/cef/libcef_dll/ctocpp/jsdialog_callback_ctocpp.h 22090@@ -1,4 +1,4 @@ 22091-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 22092+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 22093 // reserved. Use of this source code is governed by a BSD-style license that 22094 // can be found in the LICENSE file. 22095 // 22096@@ -9,7 +9,7 @@ 22097 // implementations. See the translator.README.txt file in the tools directory 22098 // for more information. 22099 // 22100-// $hash=036ba78ec1797ee75002a5562fd0b0b97dff7392$ 22101+// $hash=8f7c82772ef53e16bb7ee2bd9eeb0b9c6753a9d0$ 22102 // 22103 22104 #ifndef CEF_LIBCEF_DLL_CTOCPP_JSDIALOG_CALLBACK_CTOCPP_H_ 22105diff --git a/cef/libcef_dll/ctocpp/jsdialog_handler_ctocpp.cc b/cef/libcef_dll/ctocpp/jsdialog_handler_ctocpp.cc 22106index e6ed36dcc8..5293e9098d 100644 22107--- a/cef/libcef_dll/ctocpp/jsdialog_handler_ctocpp.cc 22108+++ b/cef/libcef_dll/ctocpp/jsdialog_handler_ctocpp.cc 22109@@ -1,4 +1,4 @@ 22110-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 22111+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 22112 // reserved. Use of this source code is governed by a BSD-style license that 22113 // can be found in the LICENSE file. 22114 // 22115@@ -9,7 +9,7 @@ 22116 // implementations. See the translator.README.txt file in the tools directory 22117 // for more information. 22118 // 22119-// $hash=7fa5b6402a5933b42f28ae3d3e3af21bd7a14f12$ 22120+// $hash=cf3f4ea060216018445b03ed1626f0698c01839b$ 22121 // 22122 22123 #include "libcef_dll/ctocpp/jsdialog_handler_ctocpp.h" 22124diff --git a/cef/libcef_dll/ctocpp/jsdialog_handler_ctocpp.h b/cef/libcef_dll/ctocpp/jsdialog_handler_ctocpp.h 22125index 907a65d638..24f690eafa 100644 22126--- a/cef/libcef_dll/ctocpp/jsdialog_handler_ctocpp.h 22127+++ b/cef/libcef_dll/ctocpp/jsdialog_handler_ctocpp.h 22128@@ -1,4 +1,4 @@ 22129-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 22130+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 22131 // reserved. Use of this source code is governed by a BSD-style license that 22132 // can be found in the LICENSE file. 22133 // 22134@@ -9,7 +9,7 @@ 22135 // implementations. See the translator.README.txt file in the tools directory 22136 // for more information. 22137 // 22138-// $hash=0982628dad4b4542003a6932c9bbca1b8bda438b$ 22139+// $hash=d486b4a8044df978ea21be7c6a48841ea48d7ad7$ 22140 // 22141 22142 #ifndef CEF_LIBCEF_DLL_CTOCPP_JSDIALOG_HANDLER_CTOCPP_H_ 22143diff --git a/cef/libcef_dll/ctocpp/keyboard_handler_ctocpp.cc b/cef/libcef_dll/ctocpp/keyboard_handler_ctocpp.cc 22144index 8d1d20f14e..c9c167cbcc 100644 22145--- a/cef/libcef_dll/ctocpp/keyboard_handler_ctocpp.cc 22146+++ b/cef/libcef_dll/ctocpp/keyboard_handler_ctocpp.cc 22147@@ -1,4 +1,4 @@ 22148-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 22149+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 22150 // reserved. Use of this source code is governed by a BSD-style license that 22151 // can be found in the LICENSE file. 22152 // 22153@@ -9,7 +9,7 @@ 22154 // implementations. See the translator.README.txt file in the tools directory 22155 // for more information. 22156 // 22157-// $hash=8b801f58d72582082384b6f712aaebc96d9e2d53$ 22158+// $hash=d5ba873aeb2b734e753d47420bbe10e290e8658d$ 22159 // 22160 22161 #include "libcef_dll/ctocpp/keyboard_handler_ctocpp.h" 22162diff --git a/cef/libcef_dll/ctocpp/keyboard_handler_ctocpp.h b/cef/libcef_dll/ctocpp/keyboard_handler_ctocpp.h 22163index b078dae840..48818cf815 100644 22164--- a/cef/libcef_dll/ctocpp/keyboard_handler_ctocpp.h 22165+++ b/cef/libcef_dll/ctocpp/keyboard_handler_ctocpp.h 22166@@ -1,4 +1,4 @@ 22167-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 22168+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 22169 // reserved. Use of this source code is governed by a BSD-style license that 22170 // can be found in the LICENSE file. 22171 // 22172@@ -9,7 +9,7 @@ 22173 // implementations. See the translator.README.txt file in the tools directory 22174 // for more information. 22175 // 22176-// $hash=c8c04ba8d1a0cce53417bf5824189288e0c38840$ 22177+// $hash=ab70636733b9287db1e87f11f8c73610afa35337$ 22178 // 22179 22180 #ifndef CEF_LIBCEF_DLL_CTOCPP_KEYBOARD_HANDLER_CTOCPP_H_ 22181diff --git a/cef/libcef_dll/ctocpp/life_span_handler_ctocpp.cc b/cef/libcef_dll/ctocpp/life_span_handler_ctocpp.cc 22182index 59c2378aca..7a94a3483c 100644 22183--- a/cef/libcef_dll/ctocpp/life_span_handler_ctocpp.cc 22184+++ b/cef/libcef_dll/ctocpp/life_span_handler_ctocpp.cc 22185@@ -1,4 +1,4 @@ 22186-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 22187+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 22188 // reserved. Use of this source code is governed by a BSD-style license that 22189 // can be found in the LICENSE file. 22190 // 22191@@ -9,7 +9,7 @@ 22192 // implementations. See the translator.README.txt file in the tools directory 22193 // for more information. 22194 // 22195-// $hash=0540cd6df681993544511bbd5dd8c8a40e0f8b9e$ 22196+// $hash=374e065650a2c8fb36590542723d8e171f5de9ad$ 22197 // 22198 22199 #include "libcef_dll/ctocpp/life_span_handler_ctocpp.h" 22200diff --git a/cef/libcef_dll/ctocpp/life_span_handler_ctocpp.h b/cef/libcef_dll/ctocpp/life_span_handler_ctocpp.h 22201index b014708d3b..da2893672d 100644 22202--- a/cef/libcef_dll/ctocpp/life_span_handler_ctocpp.h 22203+++ b/cef/libcef_dll/ctocpp/life_span_handler_ctocpp.h 22204@@ -1,4 +1,4 @@ 22205-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 22206+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 22207 // reserved. Use of this source code is governed by a BSD-style license that 22208 // can be found in the LICENSE file. 22209 // 22210@@ -9,7 +9,7 @@ 22211 // implementations. See the translator.README.txt file in the tools directory 22212 // for more information. 22213 // 22214-// $hash=7d7057b99a886fda1aefd86fe66591dc7f9f84f3$ 22215+// $hash=0061dae2023d2285c9f3e3d2bd9bfa4603208535$ 22216 // 22217 22218 #ifndef CEF_LIBCEF_DLL_CTOCPP_LIFE_SPAN_HANDLER_CTOCPP_H_ 22219diff --git a/cef/libcef_dll/ctocpp/list_value_ctocpp.cc b/cef/libcef_dll/ctocpp/list_value_ctocpp.cc 22220index 72d0193dd2..9194d1da62 100644 22221--- a/cef/libcef_dll/ctocpp/list_value_ctocpp.cc 22222+++ b/cef/libcef_dll/ctocpp/list_value_ctocpp.cc 22223@@ -1,4 +1,4 @@ 22224-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 22225+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 22226 // reserved. Use of this source code is governed by a BSD-style license that 22227 // can be found in the LICENSE file. 22228 // 22229@@ -9,7 +9,7 @@ 22230 // implementations. See the translator.README.txt file in the tools directory 22231 // for more information. 22232 // 22233-// $hash=76b9241cf4cdceea6408f9404ccef0690e83e26f$ 22234+// $hash=93f45c1e39dc2ba72a6cb44bc3d762f3870f2ef2$ 22235 // 22236 22237 #include "libcef_dll/ctocpp/list_value_ctocpp.h" 22238diff --git a/cef/libcef_dll/ctocpp/list_value_ctocpp.h b/cef/libcef_dll/ctocpp/list_value_ctocpp.h 22239index e2d0e4fbe2..747a53dcf5 100644 22240--- a/cef/libcef_dll/ctocpp/list_value_ctocpp.h 22241+++ b/cef/libcef_dll/ctocpp/list_value_ctocpp.h 22242@@ -1,4 +1,4 @@ 22243-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 22244+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 22245 // reserved. Use of this source code is governed by a BSD-style license that 22246 // can be found in the LICENSE file. 22247 // 22248@@ -9,7 +9,7 @@ 22249 // implementations. See the translator.README.txt file in the tools directory 22250 // for more information. 22251 // 22252-// $hash=643127d0c9772dbab1980c797ceef47a12f00f48$ 22253+// $hash=12ac5ebafd2e805008d3ed0f0b4ea562029d8ea3$ 22254 // 22255 22256 #ifndef CEF_LIBCEF_DLL_CTOCPP_LIST_VALUE_CTOCPP_H_ 22257diff --git a/cef/libcef_dll/ctocpp/load_handler_ctocpp.cc b/cef/libcef_dll/ctocpp/load_handler_ctocpp.cc 22258index d81edc48e0..ea239aadf4 100644 22259--- a/cef/libcef_dll/ctocpp/load_handler_ctocpp.cc 22260+++ b/cef/libcef_dll/ctocpp/load_handler_ctocpp.cc 22261@@ -1,4 +1,4 @@ 22262-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 22263+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 22264 // reserved. Use of this source code is governed by a BSD-style license that 22265 // can be found in the LICENSE file. 22266 // 22267@@ -9,12 +9,14 @@ 22268 // implementations. See the translator.README.txt file in the tools directory 22269 // for more information. 22270 // 22271-// $hash=28e44ecfd603542d959a55d20af2ed8991b3e06d$ 22272+// $hash=a815207886f2b474bff70f4f988a4407bcb3d42a$ 22273 // 22274 22275 #include "libcef_dll/ctocpp/load_handler_ctocpp.h" 22276 #include "libcef_dll/cpptoc/browser_cpptoc.h" 22277 #include "libcef_dll/cpptoc/frame_cpptoc.h" 22278+#include "libcef_dll/cpptoc/request_cpptoc.h" 22279+#include "libcef_dll/cpptoc/response_cpptoc.h" 22280 #include "libcef_dll/shutdown_checker.h" 22281 22282 // VIRTUAL METHODS - Body may be edited by hand. 22283@@ -128,6 +130,63 @@ void CefLoadHandlerCToCpp::OnLoadError(CefRefPtr<CefBrowser> browser, 22284 errorText.GetStruct(), failedUrl.GetStruct()); 22285 } 22286 22287+NO_SANITIZE("cfi-icall") 22288+void CefLoadHandlerCToCpp::OnLoadErrorWithRequest(CefRefPtr<CefRequest> request, 22289+ bool is_main_frame, 22290+ bool has_user_gesture, 22291+ int error_code, 22292+ const CefString& error_text) { 22293+ shutdown_checker::AssertNotShutdown(); 22294+ 22295+ cef_load_handler_t* _struct = GetStruct(); 22296+ if (CEF_MEMBER_MISSING(_struct, on_load_error_with_request)) 22297+ return; 22298+ 22299+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 22300+ 22301+ // Verify param: request; type: refptr_diff 22302+ DCHECK(request.get()); 22303+ if (!request.get()) 22304+ return; 22305+ // Verify param: error_text; type: string_byref_const 22306+ DCHECK(!error_text.empty()); 22307+ if (error_text.empty()) 22308+ return; 22309+ 22310+ // Execute 22311+ _struct->on_load_error_with_request(_struct, CefRequestCppToC::Wrap(request), 22312+ is_main_frame, has_user_gesture, 22313+ error_code, error_text.GetStruct()); 22314+} 22315+ 22316+NO_SANITIZE("cfi-icall") 22317+void CefLoadHandlerCToCpp::OnHttpError(CefRefPtr<CefRequest> request, 22318+ bool is_main_frame, 22319+ bool has_user_gesture, 22320+ CefRefPtr<CefResponse> response) { 22321+ shutdown_checker::AssertNotShutdown(); 22322+ 22323+ cef_load_handler_t* _struct = GetStruct(); 22324+ if (CEF_MEMBER_MISSING(_struct, on_http_error)) 22325+ return; 22326+ 22327+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 22328+ 22329+ // Verify param: request; type: refptr_diff 22330+ DCHECK(request.get()); 22331+ if (!request.get()) 22332+ return; 22333+ // Verify param: response; type: refptr_diff 22334+ DCHECK(response.get()); 22335+ if (!response.get()) 22336+ return; 22337+ 22338+ // Execute 22339+ _struct->on_http_error(_struct, CefRequestCppToC::Wrap(request), 22340+ is_main_frame, has_user_gesture, 22341+ CefResponseCppToC::Wrap(response)); 22342+} 22343+ 22344 // CONSTRUCTOR - Do not edit by hand. 22345 22346 CefLoadHandlerCToCpp::CefLoadHandlerCToCpp() {} 22347diff --git a/cef/libcef_dll/ctocpp/load_handler_ctocpp.h b/cef/libcef_dll/ctocpp/load_handler_ctocpp.h 22348index 4bebc8723c..0ef91fc464 100644 22349--- a/cef/libcef_dll/ctocpp/load_handler_ctocpp.h 22350+++ b/cef/libcef_dll/ctocpp/load_handler_ctocpp.h 22351@@ -1,4 +1,4 @@ 22352-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 22353+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 22354 // reserved. Use of this source code is governed by a BSD-style license that 22355 // can be found in the LICENSE file. 22356 // 22357@@ -9,7 +9,7 @@ 22358 // implementations. See the translator.README.txt file in the tools directory 22359 // for more information. 22360 // 22361-// $hash=1f37820ecbaa80912b6d5659cc3d165a524eba4f$ 22362+// $hash=dcaaaa3afd30e1e4be34e0d22cedacddc71e41d0$ 22363 // 22364 22365 #ifndef CEF_LIBCEF_DLL_CTOCPP_LOAD_HANDLER_CTOCPP_H_ 22366@@ -49,6 +49,15 @@ class CefLoadHandlerCToCpp : public CefCToCppRefCounted<CefLoadHandlerCToCpp, 22367 ErrorCode errorCode, 22368 const CefString& errorText, 22369 const CefString& failedUrl) override; 22370+ void OnLoadErrorWithRequest(CefRefPtr<CefRequest> request, 22371+ bool is_main_frame, 22372+ bool has_user_gesture, 22373+ int error_code, 22374+ const CefString& error_text) override; 22375+ void OnHttpError(CefRefPtr<CefRequest> request, 22376+ bool is_main_frame, 22377+ bool has_user_gesture, 22378+ CefRefPtr<CefResponse> response) override; 22379 }; 22380 22381 #endif // CEF_LIBCEF_DLL_CTOCPP_LOAD_HANDLER_CTOCPP_H_ 22382diff --git a/cef/libcef_dll/ctocpp/media_observer_ctocpp.cc b/cef/libcef_dll/ctocpp/media_observer_ctocpp.cc 22383index d3bff26989..46d7c96f54 100644 22384--- a/cef/libcef_dll/ctocpp/media_observer_ctocpp.cc 22385+++ b/cef/libcef_dll/ctocpp/media_observer_ctocpp.cc 22386@@ -1,4 +1,4 @@ 22387-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 22388+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 22389 // reserved. Use of this source code is governed by a BSD-style license that 22390 // can be found in the LICENSE file. 22391 // 22392@@ -9,7 +9,7 @@ 22393 // implementations. See the translator.README.txt file in the tools directory 22394 // for more information. 22395 // 22396-// $hash=0b4d805c7313e553fe3b0f47905810172d666df7$ 22397+// $hash=53afe2dd1a5d413790a04a6d622bf0175302da00$ 22398 // 22399 22400 #include "libcef_dll/ctocpp/media_observer_ctocpp.h" 22401diff --git a/cef/libcef_dll/ctocpp/media_observer_ctocpp.h b/cef/libcef_dll/ctocpp/media_observer_ctocpp.h 22402index ef40b9226c..5e95fc5d76 100644 22403--- a/cef/libcef_dll/ctocpp/media_observer_ctocpp.h 22404+++ b/cef/libcef_dll/ctocpp/media_observer_ctocpp.h 22405@@ -1,4 +1,4 @@ 22406-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 22407+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 22408 // reserved. Use of this source code is governed by a BSD-style license that 22409 // can be found in the LICENSE file. 22410 // 22411@@ -9,7 +9,7 @@ 22412 // implementations. See the translator.README.txt file in the tools directory 22413 // for more information. 22414 // 22415-// $hash=39f0cc0430368e97f71cf2096b5e76e70a2445e5$ 22416+// $hash=2ad630d884be7968333098308a5bb25c608a037e$ 22417 // 22418 22419 #ifndef CEF_LIBCEF_DLL_CTOCPP_MEDIA_OBSERVER_CTOCPP_H_ 22420diff --git a/cef/libcef_dll/ctocpp/media_route_create_callback_ctocpp.cc b/cef/libcef_dll/ctocpp/media_route_create_callback_ctocpp.cc 22421index d5b844129f..a2db7997ff 100644 22422--- a/cef/libcef_dll/ctocpp/media_route_create_callback_ctocpp.cc 22423+++ b/cef/libcef_dll/ctocpp/media_route_create_callback_ctocpp.cc 22424@@ -1,4 +1,4 @@ 22425-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 22426+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 22427 // reserved. Use of this source code is governed by a BSD-style license that 22428 // can be found in the LICENSE file. 22429 // 22430@@ -9,7 +9,7 @@ 22431 // implementations. See the translator.README.txt file in the tools directory 22432 // for more information. 22433 // 22434-// $hash=ef5393916b6e3a97556d6d1e8c7b799a12f53f7b$ 22435+// $hash=7766e19198313fadc94a2f99f5869a33b0c3069c$ 22436 // 22437 22438 #include "libcef_dll/ctocpp/media_route_create_callback_ctocpp.h" 22439diff --git a/cef/libcef_dll/ctocpp/media_route_create_callback_ctocpp.h b/cef/libcef_dll/ctocpp/media_route_create_callback_ctocpp.h 22440index 78c837c757..5174c0260a 100644 22441--- a/cef/libcef_dll/ctocpp/media_route_create_callback_ctocpp.h 22442+++ b/cef/libcef_dll/ctocpp/media_route_create_callback_ctocpp.h 22443@@ -1,4 +1,4 @@ 22444-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 22445+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 22446 // reserved. Use of this source code is governed by a BSD-style license that 22447 // can be found in the LICENSE file. 22448 // 22449@@ -9,7 +9,7 @@ 22450 // implementations. See the translator.README.txt file in the tools directory 22451 // for more information. 22452 // 22453-// $hash=a8a6fac342156f3c8a2b6b0c9e6ecbcfed456334$ 22454+// $hash=567434633bea7215a9cce6591342116152136320$ 22455 // 22456 22457 #ifndef CEF_LIBCEF_DLL_CTOCPP_MEDIA_ROUTE_CREATE_CALLBACK_CTOCPP_H_ 22458diff --git a/cef/libcef_dll/ctocpp/media_route_ctocpp.cc b/cef/libcef_dll/ctocpp/media_route_ctocpp.cc 22459index ccde1e2c3a..570931251d 100644 22460--- a/cef/libcef_dll/ctocpp/media_route_ctocpp.cc 22461+++ b/cef/libcef_dll/ctocpp/media_route_ctocpp.cc 22462@@ -1,4 +1,4 @@ 22463-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 22464+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 22465 // reserved. Use of this source code is governed by a BSD-style license that 22466 // can be found in the LICENSE file. 22467 // 22468@@ -9,7 +9,7 @@ 22469 // implementations. See the translator.README.txt file in the tools directory 22470 // for more information. 22471 // 22472-// $hash=1491fa52e0a88044e5902809fcc6e56da42f3216$ 22473+// $hash=3df118413888e04f3e10121c80e68014de545462$ 22474 // 22475 22476 #include "libcef_dll/ctocpp/media_route_ctocpp.h" 22477diff --git a/cef/libcef_dll/ctocpp/media_route_ctocpp.h b/cef/libcef_dll/ctocpp/media_route_ctocpp.h 22478index 036d7fb9de..c0d26ceb7d 100644 22479--- a/cef/libcef_dll/ctocpp/media_route_ctocpp.h 22480+++ b/cef/libcef_dll/ctocpp/media_route_ctocpp.h 22481@@ -1,4 +1,4 @@ 22482-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 22483+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 22484 // reserved. Use of this source code is governed by a BSD-style license that 22485 // can be found in the LICENSE file. 22486 // 22487@@ -9,7 +9,7 @@ 22488 // implementations. See the translator.README.txt file in the tools directory 22489 // for more information. 22490 // 22491-// $hash=2332af38a85b938ce097ee671f957fa20622004e$ 22492+// $hash=7c90b25cbcf30d260f705680de21e3a114af7642$ 22493 // 22494 22495 #ifndef CEF_LIBCEF_DLL_CTOCPP_MEDIA_ROUTE_CTOCPP_H_ 22496diff --git a/cef/libcef_dll/ctocpp/media_router_ctocpp.cc b/cef/libcef_dll/ctocpp/media_router_ctocpp.cc 22497index 51e76b58fb..fe3aa2fb72 100644 22498--- a/cef/libcef_dll/ctocpp/media_router_ctocpp.cc 22499+++ b/cef/libcef_dll/ctocpp/media_router_ctocpp.cc 22500@@ -1,4 +1,4 @@ 22501-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 22502+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 22503 // reserved. Use of this source code is governed by a BSD-style license that 22504 // can be found in the LICENSE file. 22505 // 22506@@ -9,7 +9,7 @@ 22507 // implementations. See the translator.README.txt file in the tools directory 22508 // for more information. 22509 // 22510-// $hash=8e7b2e3e8124ede620b8a04116656550949f89f1$ 22511+// $hash=33a691883b3956a4e2fa2937ab8dc42dc80d78c8$ 22512 // 22513 22514 #include "libcef_dll/ctocpp/media_router_ctocpp.h" 22515diff --git a/cef/libcef_dll/ctocpp/media_router_ctocpp.h b/cef/libcef_dll/ctocpp/media_router_ctocpp.h 22516index c10562496b..ba12ab31a2 100644 22517--- a/cef/libcef_dll/ctocpp/media_router_ctocpp.h 22518+++ b/cef/libcef_dll/ctocpp/media_router_ctocpp.h 22519@@ -1,4 +1,4 @@ 22520-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 22521+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 22522 // reserved. Use of this source code is governed by a BSD-style license that 22523 // can be found in the LICENSE file. 22524 // 22525@@ -9,7 +9,7 @@ 22526 // implementations. See the translator.README.txt file in the tools directory 22527 // for more information. 22528 // 22529-// $hash=f17d39aa48d464eddc04143796492dd36563f773$ 22530+// $hash=65b2a9af763c644cc0444314ef63b0c98c7e1c98$ 22531 // 22532 22533 #ifndef CEF_LIBCEF_DLL_CTOCPP_MEDIA_ROUTER_CTOCPP_H_ 22534diff --git a/cef/libcef_dll/ctocpp/media_sink_ctocpp.cc b/cef/libcef_dll/ctocpp/media_sink_ctocpp.cc 22535index e5d4fa9811..afd0dd2924 100644 22536--- a/cef/libcef_dll/ctocpp/media_sink_ctocpp.cc 22537+++ b/cef/libcef_dll/ctocpp/media_sink_ctocpp.cc 22538@@ -1,4 +1,4 @@ 22539-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 22540+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 22541 // reserved. Use of this source code is governed by a BSD-style license that 22542 // can be found in the LICENSE file. 22543 // 22544@@ -9,7 +9,7 @@ 22545 // implementations. See the translator.README.txt file in the tools directory 22546 // for more information. 22547 // 22548-// $hash=50a71dcdcaa9669a6ac927e5e555266fcadb6be3$ 22549+// $hash=01d0b01e291c90ceba7c416ff9dd56c10eb46f3b$ 22550 // 22551 22552 #include "libcef_dll/ctocpp/media_sink_ctocpp.h" 22553diff --git a/cef/libcef_dll/ctocpp/media_sink_ctocpp.h b/cef/libcef_dll/ctocpp/media_sink_ctocpp.h 22554index 909adabc67..2779315282 100644 22555--- a/cef/libcef_dll/ctocpp/media_sink_ctocpp.h 22556+++ b/cef/libcef_dll/ctocpp/media_sink_ctocpp.h 22557@@ -1,4 +1,4 @@ 22558-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 22559+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 22560 // reserved. Use of this source code is governed by a BSD-style license that 22561 // can be found in the LICENSE file. 22562 // 22563@@ -9,7 +9,7 @@ 22564 // implementations. See the translator.README.txt file in the tools directory 22565 // for more information. 22566 // 22567-// $hash=cd0189f46038a0f941bfd592127ce29866257b40$ 22568+// $hash=1e9ba43e9c736e58e0ec49687408d7e44253f42a$ 22569 // 22570 22571 #ifndef CEF_LIBCEF_DLL_CTOCPP_MEDIA_SINK_CTOCPP_H_ 22572diff --git a/cef/libcef_dll/ctocpp/media_sink_device_info_callback_ctocpp.cc b/cef/libcef_dll/ctocpp/media_sink_device_info_callback_ctocpp.cc 22573index 05f621e8d4..00a6de90ec 100644 22574--- a/cef/libcef_dll/ctocpp/media_sink_device_info_callback_ctocpp.cc 22575+++ b/cef/libcef_dll/ctocpp/media_sink_device_info_callback_ctocpp.cc 22576@@ -1,4 +1,4 @@ 22577-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 22578+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 22579 // reserved. Use of this source code is governed by a BSD-style license that 22580 // can be found in the LICENSE file. 22581 // 22582@@ -9,7 +9,7 @@ 22583 // implementations. See the translator.README.txt file in the tools directory 22584 // for more information. 22585 // 22586-// $hash=f04f1f70369822fc963af542e03e95db02d3c0de$ 22587+// $hash=9664002969db52fb75ab4f02ecd72aa7c4473115$ 22588 // 22589 22590 #include "libcef_dll/ctocpp/media_sink_device_info_callback_ctocpp.h" 22591diff --git a/cef/libcef_dll/ctocpp/media_sink_device_info_callback_ctocpp.h b/cef/libcef_dll/ctocpp/media_sink_device_info_callback_ctocpp.h 22592index 631d2ffab2..89104bccbb 100644 22593--- a/cef/libcef_dll/ctocpp/media_sink_device_info_callback_ctocpp.h 22594+++ b/cef/libcef_dll/ctocpp/media_sink_device_info_callback_ctocpp.h 22595@@ -1,4 +1,4 @@ 22596-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 22597+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 22598 // reserved. Use of this source code is governed by a BSD-style license that 22599 // can be found in the LICENSE file. 22600 // 22601@@ -9,7 +9,7 @@ 22602 // implementations. See the translator.README.txt file in the tools directory 22603 // for more information. 22604 // 22605-// $hash=fadb149e3874c78219a545fa3c373515e9ef8a0d$ 22606+// $hash=7d9031bd579a9d4b9ee12b54d44ab0eb4aad62c3$ 22607 // 22608 22609 #ifndef CEF_LIBCEF_DLL_CTOCPP_MEDIA_SINK_DEVICE_INFO_CALLBACK_CTOCPP_H_ 22610diff --git a/cef/libcef_dll/ctocpp/media_source_ctocpp.cc b/cef/libcef_dll/ctocpp/media_source_ctocpp.cc 22611index c499eea012..75896db6f2 100644 22612--- a/cef/libcef_dll/ctocpp/media_source_ctocpp.cc 22613+++ b/cef/libcef_dll/ctocpp/media_source_ctocpp.cc 22614@@ -1,4 +1,4 @@ 22615-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 22616+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 22617 // reserved. Use of this source code is governed by a BSD-style license that 22618 // can be found in the LICENSE file. 22619 // 22620@@ -9,7 +9,7 @@ 22621 // implementations. See the translator.README.txt file in the tools directory 22622 // for more information. 22623 // 22624-// $hash=10b01c1ea00ea8a7ef4b1a26b6e227a93755d7e8$ 22625+// $hash=aa6efd61a1ebf39506a9cb655dd1c07168dc3d33$ 22626 // 22627 22628 #include "libcef_dll/ctocpp/media_source_ctocpp.h" 22629diff --git a/cef/libcef_dll/ctocpp/media_source_ctocpp.h b/cef/libcef_dll/ctocpp/media_source_ctocpp.h 22630index ee708064a4..05f0fd35e5 100644 22631--- a/cef/libcef_dll/ctocpp/media_source_ctocpp.h 22632+++ b/cef/libcef_dll/ctocpp/media_source_ctocpp.h 22633@@ -1,4 +1,4 @@ 22634-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 22635+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 22636 // reserved. Use of this source code is governed by a BSD-style license that 22637 // can be found in the LICENSE file. 22638 // 22639@@ -9,7 +9,7 @@ 22640 // implementations. See the translator.README.txt file in the tools directory 22641 // for more information. 22642 // 22643-// $hash=0f4a7c8d49d309dfcd2bbb739d0497c9e805678b$ 22644+// $hash=33a042c9ae8867e363396723f3600554feee84da$ 22645 // 22646 22647 #ifndef CEF_LIBCEF_DLL_CTOCPP_MEDIA_SOURCE_CTOCPP_H_ 22648diff --git a/cef/libcef_dll/ctocpp/menu_model_ctocpp.cc b/cef/libcef_dll/ctocpp/menu_model_ctocpp.cc 22649index e098b87104..7bf4664867 100644 22650--- a/cef/libcef_dll/ctocpp/menu_model_ctocpp.cc 22651+++ b/cef/libcef_dll/ctocpp/menu_model_ctocpp.cc 22652@@ -1,4 +1,4 @@ 22653-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 22654+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 22655 // reserved. Use of this source code is governed by a BSD-style license that 22656 // can be found in the LICENSE file. 22657 // 22658@@ -9,7 +9,7 @@ 22659 // implementations. See the translator.README.txt file in the tools directory 22660 // for more information. 22661 // 22662-// $hash=3d73717837ad42de475cc883fbc0243072bd3a26$ 22663+// $hash=16bf2696e26746eddb06f7c6003eec81d3fc1c23$ 22664 // 22665 22666 #include "libcef_dll/ctocpp/menu_model_ctocpp.h" 22667diff --git a/cef/libcef_dll/ctocpp/menu_model_ctocpp.h b/cef/libcef_dll/ctocpp/menu_model_ctocpp.h 22668index 8544560047..34a47d0d49 100644 22669--- a/cef/libcef_dll/ctocpp/menu_model_ctocpp.h 22670+++ b/cef/libcef_dll/ctocpp/menu_model_ctocpp.h 22671@@ -1,4 +1,4 @@ 22672-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 22673+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 22674 // reserved. Use of this source code is governed by a BSD-style license that 22675 // can be found in the LICENSE file. 22676 // 22677@@ -9,7 +9,7 @@ 22678 // implementations. See the translator.README.txt file in the tools directory 22679 // for more information. 22680 // 22681-// $hash=46e412e9d4ce0d6af2b3c065e731b73e93d885d4$ 22682+// $hash=7f9101216683ca800cfde376ddc3c8500d86d728$ 22683 // 22684 22685 #ifndef CEF_LIBCEF_DLL_CTOCPP_MENU_MODEL_CTOCPP_H_ 22686diff --git a/cef/libcef_dll/ctocpp/menu_model_delegate_ctocpp.cc b/cef/libcef_dll/ctocpp/menu_model_delegate_ctocpp.cc 22687index dafc7bd499..407692062f 100644 22688--- a/cef/libcef_dll/ctocpp/menu_model_delegate_ctocpp.cc 22689+++ b/cef/libcef_dll/ctocpp/menu_model_delegate_ctocpp.cc 22690@@ -1,4 +1,4 @@ 22691-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 22692+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 22693 // reserved. Use of this source code is governed by a BSD-style license that 22694 // can be found in the LICENSE file. 22695 // 22696@@ -9,7 +9,7 @@ 22697 // implementations. See the translator.README.txt file in the tools directory 22698 // for more information. 22699 // 22700-// $hash=90fe1e689682edacce57a4c24a1eeb08ff4afd7a$ 22701+// $hash=09421982fe76735de86b67b1f7d8828a1cc36f6e$ 22702 // 22703 22704 #include "libcef_dll/ctocpp/menu_model_delegate_ctocpp.h" 22705diff --git a/cef/libcef_dll/ctocpp/menu_model_delegate_ctocpp.h b/cef/libcef_dll/ctocpp/menu_model_delegate_ctocpp.h 22706index 1755872b1b..6fc6c44150 100644 22707--- a/cef/libcef_dll/ctocpp/menu_model_delegate_ctocpp.h 22708+++ b/cef/libcef_dll/ctocpp/menu_model_delegate_ctocpp.h 22709@@ -1,4 +1,4 @@ 22710-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 22711+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 22712 // reserved. Use of this source code is governed by a BSD-style license that 22713 // can be found in the LICENSE file. 22714 // 22715@@ -9,7 +9,7 @@ 22716 // implementations. See the translator.README.txt file in the tools directory 22717 // for more information. 22718 // 22719-// $hash=845390c0396c10c059a57f28bef6c8a3c2b684ae$ 22720+// $hash=0dcaca76119b9db970c61a30ba90d841f2fb7186$ 22721 // 22722 22723 #ifndef CEF_LIBCEF_DLL_CTOCPP_MENU_MODEL_DELEGATE_CTOCPP_H_ 22724diff --git a/cef/libcef_dll/ctocpp/navigation_entry_ctocpp.cc b/cef/libcef_dll/ctocpp/navigation_entry_ctocpp.cc 22725index 1507666ebb..47cbe987d0 100644 22726--- a/cef/libcef_dll/ctocpp/navigation_entry_ctocpp.cc 22727+++ b/cef/libcef_dll/ctocpp/navigation_entry_ctocpp.cc 22728@@ -1,4 +1,4 @@ 22729-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 22730+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 22731 // reserved. Use of this source code is governed by a BSD-style license that 22732 // can be found in the LICENSE file. 22733 // 22734@@ -9,7 +9,7 @@ 22735 // implementations. See the translator.README.txt file in the tools directory 22736 // for more information. 22737 // 22738-// $hash=b522ba519ba41df6dd21c70ec49c385d3561d849$ 22739+// $hash=824aed5040e7aee5f9bf2079eafdf6d612b7d2d0$ 22740 // 22741 22742 #include "libcef_dll/ctocpp/navigation_entry_ctocpp.h" 22743diff --git a/cef/libcef_dll/ctocpp/navigation_entry_ctocpp.h b/cef/libcef_dll/ctocpp/navigation_entry_ctocpp.h 22744index 41d937da58..52e0b8c32a 100644 22745--- a/cef/libcef_dll/ctocpp/navigation_entry_ctocpp.h 22746+++ b/cef/libcef_dll/ctocpp/navigation_entry_ctocpp.h 22747@@ -1,4 +1,4 @@ 22748-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 22749+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 22750 // reserved. Use of this source code is governed by a BSD-style license that 22751 // can be found in the LICENSE file. 22752 // 22753@@ -9,7 +9,7 @@ 22754 // implementations. See the translator.README.txt file in the tools directory 22755 // for more information. 22756 // 22757-// $hash=990d05c70f40b68b043cac0ad1e13f7004864bbe$ 22758+// $hash=7592055d6e74a862e5b0661966637527e2fd90d2$ 22759 // 22760 22761 #ifndef CEF_LIBCEF_DLL_CTOCPP_NAVIGATION_ENTRY_CTOCPP_H_ 22762diff --git a/cef/libcef_dll/ctocpp/navigation_entry_visitor_ctocpp.cc b/cef/libcef_dll/ctocpp/navigation_entry_visitor_ctocpp.cc 22763index 891380dbfe..e9f156b0bd 100644 22764--- a/cef/libcef_dll/ctocpp/navigation_entry_visitor_ctocpp.cc 22765+++ b/cef/libcef_dll/ctocpp/navigation_entry_visitor_ctocpp.cc 22766@@ -1,4 +1,4 @@ 22767-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 22768+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 22769 // reserved. Use of this source code is governed by a BSD-style license that 22770 // can be found in the LICENSE file. 22771 // 22772@@ -9,7 +9,7 @@ 22773 // implementations. See the translator.README.txt file in the tools directory 22774 // for more information. 22775 // 22776-// $hash=bf2e34ba5f2073b0f4662fff0fb14d9f27b0bc50$ 22777+// $hash=057910c31bf56f3bb5def469638942802300c7d8$ 22778 // 22779 22780 #include "libcef_dll/ctocpp/navigation_entry_visitor_ctocpp.h" 22781diff --git a/cef/libcef_dll/ctocpp/navigation_entry_visitor_ctocpp.h b/cef/libcef_dll/ctocpp/navigation_entry_visitor_ctocpp.h 22782index 39352267e3..f619bfc41d 100644 22783--- a/cef/libcef_dll/ctocpp/navigation_entry_visitor_ctocpp.h 22784+++ b/cef/libcef_dll/ctocpp/navigation_entry_visitor_ctocpp.h 22785@@ -1,4 +1,4 @@ 22786-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 22787+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 22788 // reserved. Use of this source code is governed by a BSD-style license that 22789 // can be found in the LICENSE file. 22790 // 22791@@ -9,7 +9,7 @@ 22792 // implementations. See the translator.README.txt file in the tools directory 22793 // for more information. 22794 // 22795-// $hash=e559882064e6791f9f755fa9958871e568ab9a92$ 22796+// $hash=478d39c2ee5c0e2dcd0e0923d47b20bc05e8a3b7$ 22797 // 22798 22799 #ifndef CEF_LIBCEF_DLL_CTOCPP_NAVIGATION_ENTRY_VISITOR_CTOCPP_H_ 22800diff --git a/cef/libcef_dll/ctocpp/pdf_print_callback_ctocpp.cc b/cef/libcef_dll/ctocpp/pdf_print_callback_ctocpp.cc 22801index 046a804fc4..74720e7fdc 100644 22802--- a/cef/libcef_dll/ctocpp/pdf_print_callback_ctocpp.cc 22803+++ b/cef/libcef_dll/ctocpp/pdf_print_callback_ctocpp.cc 22804@@ -1,4 +1,4 @@ 22805-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 22806+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 22807 // reserved. Use of this source code is governed by a BSD-style license that 22808 // can be found in the LICENSE file. 22809 // 22810@@ -9,7 +9,7 @@ 22811 // implementations. See the translator.README.txt file in the tools directory 22812 // for more information. 22813 // 22814-// $hash=2bc8707239e1177eb19ae4a16c0ebd0ce4516b93$ 22815+// $hash=970ecf239bb133f5c62c372762e00ba913e492a2$ 22816 // 22817 22818 #include "libcef_dll/ctocpp/pdf_print_callback_ctocpp.h" 22819diff --git a/cef/libcef_dll/ctocpp/pdf_print_callback_ctocpp.h b/cef/libcef_dll/ctocpp/pdf_print_callback_ctocpp.h 22820index fe3da7d7fa..ba235369d5 100644 22821--- a/cef/libcef_dll/ctocpp/pdf_print_callback_ctocpp.h 22822+++ b/cef/libcef_dll/ctocpp/pdf_print_callback_ctocpp.h 22823@@ -1,4 +1,4 @@ 22824-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 22825+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 22826 // reserved. Use of this source code is governed by a BSD-style license that 22827 // can be found in the LICENSE file. 22828 // 22829@@ -9,7 +9,7 @@ 22830 // implementations. See the translator.README.txt file in the tools directory 22831 // for more information. 22832 // 22833-// $hash=c17abbf5797081fea86172c9e40165a9aeac7efc$ 22834+// $hash=6ec768e5cc0ef58766105bee24c3841367995a1e$ 22835 // 22836 22837 #ifndef CEF_LIBCEF_DLL_CTOCPP_PDF_PRINT_CALLBACK_CTOCPP_H_ 22838diff --git a/cef/libcef_dll/ctocpp/permission_request_ctocpp.cc b/cef/libcef_dll/ctocpp/permission_request_ctocpp.cc 22839new file mode 100644 22840index 0000000000..1b5876d571 22841--- /dev/null 22842+++ b/cef/libcef_dll/ctocpp/permission_request_ctocpp.cc 22843@@ -0,0 +1,108 @@ 22844+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 22845+// reserved. Use of this source code is governed by a BSD-style license that 22846+// can be found in the LICENSE file. 22847+// 22848+// --------------------------------------------------------------------------- 22849+// 22850+// This file was generated by the CEF translator tool. If making changes by 22851+// hand only do so within the body of existing method and function 22852+// implementations. See the translator.README.txt file in the tools directory 22853+// for more information. 22854+// 22855+// $hash=12f03dbc264ba05a28f5dc8273117ca6c6c74b8b$ 22856+// 22857+ 22858+#include "libcef_dll/ctocpp/permission_request_ctocpp.h" 22859+#include "libcef_dll/cpptoc/access_request_cpptoc.h" 22860+ 22861+// VIRTUAL METHODS - Body may be edited by hand. 22862+ 22863+NO_SANITIZE("cfi-icall") 22864+void CefPermissionRequestCToCpp::OnGeolocationShow(const CefString& origin) { 22865+ cef_permission_request_t* _struct = GetStruct(); 22866+ if (CEF_MEMBER_MISSING(_struct, on_geolocation_show)) 22867+ return; 22868+ 22869+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 22870+ 22871+ // Verify param: origin; type: string_byref_const 22872+ DCHECK(!origin.empty()); 22873+ if (origin.empty()) 22874+ return; 22875+ 22876+ // Execute 22877+ _struct->on_geolocation_show(_struct, origin.GetStruct()); 22878+} 22879+ 22880+NO_SANITIZE("cfi-icall") void CefPermissionRequestCToCpp::OnGeolocationHide() { 22881+ cef_permission_request_t* _struct = GetStruct(); 22882+ if (CEF_MEMBER_MISSING(_struct, on_geolocation_hide)) 22883+ return; 22884+ 22885+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 22886+ 22887+ // Execute 22888+ _struct->on_geolocation_hide(_struct); 22889+} 22890+ 22891+NO_SANITIZE("cfi-icall") 22892+void CefPermissionRequestCToCpp::OnPermissionRequest( 22893+ CefRefPtr<CefAccessRequest> request) { 22894+ cef_permission_request_t* _struct = GetStruct(); 22895+ if (CEF_MEMBER_MISSING(_struct, on_permission_request)) 22896+ return; 22897+ 22898+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 22899+ 22900+ // Verify param: request; type: refptr_diff 22901+ DCHECK(request.get()); 22902+ if (!request.get()) 22903+ return; 22904+ 22905+ // Execute 22906+ _struct->on_permission_request(_struct, 22907+ CefAccessRequestCppToC::Wrap(request)); 22908+} 22909+ 22910+NO_SANITIZE("cfi-icall") 22911+void CefPermissionRequestCToCpp::OnPermissionRequestCanceled( 22912+ CefRefPtr<CefAccessRequest> request) { 22913+ cef_permission_request_t* _struct = GetStruct(); 22914+ if (CEF_MEMBER_MISSING(_struct, on_permission_request_canceled)) 22915+ return; 22916+ 22917+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 22918+ 22919+ // Verify param: request; type: refptr_diff 22920+ DCHECK(request.get()); 22921+ if (!request.get()) 22922+ return; 22923+ 22924+ // Execute 22925+ _struct->on_permission_request_canceled( 22926+ _struct, CefAccessRequestCppToC::Wrap(request)); 22927+} 22928+ 22929+// CONSTRUCTOR - Do not edit by hand. 22930+ 22931+CefPermissionRequestCToCpp::CefPermissionRequestCToCpp() {} 22932+ 22933+// DESTRUCTOR - Do not edit by hand. 22934+ 22935+CefPermissionRequestCToCpp::~CefPermissionRequestCToCpp() {} 22936+ 22937+template <> 22938+cef_permission_request_t* CefCToCppRefCounted< 22939+ CefPermissionRequestCToCpp, 22940+ CefPermissionRequest, 22941+ cef_permission_request_t>::UnwrapDerived(CefWrapperType type, 22942+ CefPermissionRequest* c) { 22943+ NOTREACHED() << "Unexpected class type: " << type; 22944+ return nullptr; 22945+} 22946+ 22947+template <> 22948+CefWrapperType CefCToCppRefCounted<CefPermissionRequestCToCpp, 22949+ CefPermissionRequest, 22950+ cef_permission_request_t>::kWrapperType = 22951+ WT_PERMISSION_REQUEST; 22952diff --git a/cef/libcef_dll/ctocpp/permission_request_ctocpp.h b/cef/libcef_dll/ctocpp/permission_request_ctocpp.h 22953new file mode 100644 22954index 0000000000..2ed4bcebca 22955--- /dev/null 22956+++ b/cef/libcef_dll/ctocpp/permission_request_ctocpp.h 22957@@ -0,0 +1,45 @@ 22958+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 22959+// reserved. Use of this source code is governed by a BSD-style license that 22960+// can be found in the LICENSE file. 22961+// 22962+// --------------------------------------------------------------------------- 22963+// 22964+// This file was generated by the CEF translator tool. If making changes by 22965+// hand only do so within the body of existing method and function 22966+// implementations. See the translator.README.txt file in the tools directory 22967+// for more information. 22968+// 22969+// $hash=d3dcf1dc594597e78adcd93c64e185a6223992d1$ 22970+// 22971+ 22972+#ifndef CEF_LIBCEF_DLL_CTOCPP_PERMISSION_REQUEST_CTOCPP_H_ 22973+#define CEF_LIBCEF_DLL_CTOCPP_PERMISSION_REQUEST_CTOCPP_H_ 22974+#pragma once 22975+ 22976+#if !defined(BUILDING_CEF_SHARED) 22977+#error This file can be included DLL-side only 22978+#endif 22979+ 22980+#include "include/capi/cef_permission_request_capi.h" 22981+#include "include/cef_permission_request.h" 22982+#include "libcef_dll/ctocpp/ctocpp_ref_counted.h" 22983+ 22984+// Wrap a C structure with a C++ class. 22985+// This class may be instantiated and accessed DLL-side only. 22986+class CefPermissionRequestCToCpp 22987+ : public CefCToCppRefCounted<CefPermissionRequestCToCpp, 22988+ CefPermissionRequest, 22989+ cef_permission_request_t> { 22990+ public: 22991+ CefPermissionRequestCToCpp(); 22992+ virtual ~CefPermissionRequestCToCpp(); 22993+ 22994+ // CefPermissionRequest methods. 22995+ void OnGeolocationShow(const CefString& origin) override; 22996+ void OnGeolocationHide() override; 22997+ void OnPermissionRequest(CefRefPtr<CefAccessRequest> request) override; 22998+ void OnPermissionRequestCanceled( 22999+ CefRefPtr<CefAccessRequest> request) override; 23000+}; 23001+ 23002+#endif // CEF_LIBCEF_DLL_CTOCPP_PERMISSION_REQUEST_CTOCPP_H_ 23003diff --git a/cef/libcef_dll/ctocpp/post_data_ctocpp.cc b/cef/libcef_dll/ctocpp/post_data_ctocpp.cc 23004index 28cbdf8e2b..123d5c364a 100644 23005--- a/cef/libcef_dll/ctocpp/post_data_ctocpp.cc 23006+++ b/cef/libcef_dll/ctocpp/post_data_ctocpp.cc 23007@@ -1,4 +1,4 @@ 23008-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 23009+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 23010 // reserved. Use of this source code is governed by a BSD-style license that 23011 // can be found in the LICENSE file. 23012 // 23013@@ -9,7 +9,7 @@ 23014 // implementations. See the translator.README.txt file in the tools directory 23015 // for more information. 23016 // 23017-// $hash=68732af95710438f0d2af338dd2b24d51c52f6b1$ 23018+// $hash=7a24d4020666f0277e76e190926df2081637a174$ 23019 // 23020 23021 #include "libcef_dll/ctocpp/post_data_ctocpp.h" 23022diff --git a/cef/libcef_dll/ctocpp/post_data_ctocpp.h b/cef/libcef_dll/ctocpp/post_data_ctocpp.h 23023index 8d7f1ae3ab..fbc141ceca 100644 23024--- a/cef/libcef_dll/ctocpp/post_data_ctocpp.h 23025+++ b/cef/libcef_dll/ctocpp/post_data_ctocpp.h 23026@@ -1,4 +1,4 @@ 23027-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 23028+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 23029 // reserved. Use of this source code is governed by a BSD-style license that 23030 // can be found in the LICENSE file. 23031 // 23032@@ -9,7 +9,7 @@ 23033 // implementations. See the translator.README.txt file in the tools directory 23034 // for more information. 23035 // 23036-// $hash=4f27c0931e83f3f5b140eaeeffaf976dd751b1d2$ 23037+// $hash=12c1c14c4041b778fbcff69cd57ee3a41124b776$ 23038 // 23039 23040 #ifndef CEF_LIBCEF_DLL_CTOCPP_POST_DATA_CTOCPP_H_ 23041diff --git a/cef/libcef_dll/ctocpp/post_data_element_ctocpp.cc b/cef/libcef_dll/ctocpp/post_data_element_ctocpp.cc 23042index afc9d30e20..ac01ab2ad7 100644 23043--- a/cef/libcef_dll/ctocpp/post_data_element_ctocpp.cc 23044+++ b/cef/libcef_dll/ctocpp/post_data_element_ctocpp.cc 23045@@ -1,4 +1,4 @@ 23046-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 23047+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 23048 // reserved. Use of this source code is governed by a BSD-style license that 23049 // can be found in the LICENSE file. 23050 // 23051@@ -9,7 +9,7 @@ 23052 // implementations. See the translator.README.txt file in the tools directory 23053 // for more information. 23054 // 23055-// $hash=b2fbcfc48bc4b1969c28e8f10a998a003bacca77$ 23056+// $hash=027842b89846614ba6d0e3056db65004bc3a6b06$ 23057 // 23058 23059 #include "libcef_dll/ctocpp/post_data_element_ctocpp.h" 23060diff --git a/cef/libcef_dll/ctocpp/post_data_element_ctocpp.h b/cef/libcef_dll/ctocpp/post_data_element_ctocpp.h 23061index 21d2ff8863..85c1a46c26 100644 23062--- a/cef/libcef_dll/ctocpp/post_data_element_ctocpp.h 23063+++ b/cef/libcef_dll/ctocpp/post_data_element_ctocpp.h 23064@@ -1,4 +1,4 @@ 23065-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 23066+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 23067 // reserved. Use of this source code is governed by a BSD-style license that 23068 // can be found in the LICENSE file. 23069 // 23070@@ -9,7 +9,7 @@ 23071 // implementations. See the translator.README.txt file in the tools directory 23072 // for more information. 23073 // 23074-// $hash=6ba7cc0530f7160b93a18d692512755b3fcb633b$ 23075+// $hash=9e1e390bfc2af0256f422ca204af60a53ce84292$ 23076 // 23077 23078 #ifndef CEF_LIBCEF_DLL_CTOCPP_POST_DATA_ELEMENT_CTOCPP_H_ 23079diff --git a/cef/libcef_dll/ctocpp/print_dialog_callback_ctocpp.cc b/cef/libcef_dll/ctocpp/print_dialog_callback_ctocpp.cc 23080index c6ac75fecf..27c6e0b331 100644 23081--- a/cef/libcef_dll/ctocpp/print_dialog_callback_ctocpp.cc 23082+++ b/cef/libcef_dll/ctocpp/print_dialog_callback_ctocpp.cc 23083@@ -1,4 +1,4 @@ 23084-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 23085+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 23086 // reserved. Use of this source code is governed by a BSD-style license that 23087 // can be found in the LICENSE file. 23088 // 23089@@ -9,7 +9,7 @@ 23090 // implementations. See the translator.README.txt file in the tools directory 23091 // for more information. 23092 // 23093-// $hash=33b3e45502d0b48d2cc14aaa83373d12c3e0f1dc$ 23094+// $hash=2e3cda6569368540518b84119205e1e5f6e0d36b$ 23095 // 23096 23097 #include "libcef_dll/ctocpp/print_dialog_callback_ctocpp.h" 23098diff --git a/cef/libcef_dll/ctocpp/print_dialog_callback_ctocpp.h b/cef/libcef_dll/ctocpp/print_dialog_callback_ctocpp.h 23099index 20f3b63403..1777757d11 100644 23100--- a/cef/libcef_dll/ctocpp/print_dialog_callback_ctocpp.h 23101+++ b/cef/libcef_dll/ctocpp/print_dialog_callback_ctocpp.h 23102@@ -1,4 +1,4 @@ 23103-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 23104+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 23105 // reserved. Use of this source code is governed by a BSD-style license that 23106 // can be found in the LICENSE file. 23107 // 23108@@ -9,7 +9,7 @@ 23109 // implementations. See the translator.README.txt file in the tools directory 23110 // for more information. 23111 // 23112-// $hash=991c4e5902ba3fc4de818d4d124dccb10dfb5d52$ 23113+// $hash=27350ac036c20ac24186e9250816873f9e4c0e35$ 23114 // 23115 23116 #ifndef CEF_LIBCEF_DLL_CTOCPP_PRINT_DIALOG_CALLBACK_CTOCPP_H_ 23117diff --git a/cef/libcef_dll/ctocpp/print_handler_ctocpp.cc b/cef/libcef_dll/ctocpp/print_handler_ctocpp.cc 23118index 8f2025964d..b5f02d80bf 100644 23119--- a/cef/libcef_dll/ctocpp/print_handler_ctocpp.cc 23120+++ b/cef/libcef_dll/ctocpp/print_handler_ctocpp.cc 23121@@ -1,4 +1,4 @@ 23122-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 23123+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 23124 // reserved. Use of this source code is governed by a BSD-style license that 23125 // can be found in the LICENSE file. 23126 // 23127@@ -9,7 +9,7 @@ 23128 // implementations. See the translator.README.txt file in the tools directory 23129 // for more information. 23130 // 23131-// $hash=5c1f65c2b1b111d248d5b7b27ddcb59b06594923$ 23132+// $hash=f81708853d5cb6ee2fb397f401787068b722b060$ 23133 // 23134 23135 #include "libcef_dll/ctocpp/print_handler_ctocpp.h" 23136diff --git a/cef/libcef_dll/ctocpp/print_handler_ctocpp.h b/cef/libcef_dll/ctocpp/print_handler_ctocpp.h 23137index 204d9e5044..e82154e3e7 100644 23138--- a/cef/libcef_dll/ctocpp/print_handler_ctocpp.h 23139+++ b/cef/libcef_dll/ctocpp/print_handler_ctocpp.h 23140@@ -1,4 +1,4 @@ 23141-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 23142+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 23143 // reserved. Use of this source code is governed by a BSD-style license that 23144 // can be found in the LICENSE file. 23145 // 23146@@ -9,7 +9,7 @@ 23147 // implementations. See the translator.README.txt file in the tools directory 23148 // for more information. 23149 // 23150-// $hash=5592945a1621a79ccff78a053a98e68bf08d9a8b$ 23151+// $hash=861bf98595a13f8c42a23b5742471332c066b57a$ 23152 // 23153 23154 #ifndef CEF_LIBCEF_DLL_CTOCPP_PRINT_HANDLER_CTOCPP_H_ 23155diff --git a/cef/libcef_dll/ctocpp/print_job_callback_ctocpp.cc b/cef/libcef_dll/ctocpp/print_job_callback_ctocpp.cc 23156index a8768c7355..072666c9d1 100644 23157--- a/cef/libcef_dll/ctocpp/print_job_callback_ctocpp.cc 23158+++ b/cef/libcef_dll/ctocpp/print_job_callback_ctocpp.cc 23159@@ -1,4 +1,4 @@ 23160-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 23161+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 23162 // reserved. Use of this source code is governed by a BSD-style license that 23163 // can be found in the LICENSE file. 23164 // 23165@@ -9,7 +9,7 @@ 23166 // implementations. See the translator.README.txt file in the tools directory 23167 // for more information. 23168 // 23169-// $hash=5be7390f9203b4e881de1fcb69f835f19818a2f3$ 23170+// $hash=c952b7985eb56fd18e552e4905a5563380277bac$ 23171 // 23172 23173 #include "libcef_dll/ctocpp/print_job_callback_ctocpp.h" 23174diff --git a/cef/libcef_dll/ctocpp/print_job_callback_ctocpp.h b/cef/libcef_dll/ctocpp/print_job_callback_ctocpp.h 23175index c219017800..fe03116440 100644 23176--- a/cef/libcef_dll/ctocpp/print_job_callback_ctocpp.h 23177+++ b/cef/libcef_dll/ctocpp/print_job_callback_ctocpp.h 23178@@ -1,4 +1,4 @@ 23179-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 23180+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 23181 // reserved. Use of this source code is governed by a BSD-style license that 23182 // can be found in the LICENSE file. 23183 // 23184@@ -9,7 +9,7 @@ 23185 // implementations. See the translator.README.txt file in the tools directory 23186 // for more information. 23187 // 23188-// $hash=0c54d50effa8f690b879fd6ba0cdc1b3221c1cf5$ 23189+// $hash=991490679f135c2cbda7e0f22dba88e162440ed2$ 23190 // 23191 23192 #ifndef CEF_LIBCEF_DLL_CTOCPP_PRINT_JOB_CALLBACK_CTOCPP_H_ 23193diff --git a/cef/libcef_dll/ctocpp/print_settings_ctocpp.cc b/cef/libcef_dll/ctocpp/print_settings_ctocpp.cc 23194index 0706a56459..04880402b9 100644 23195--- a/cef/libcef_dll/ctocpp/print_settings_ctocpp.cc 23196+++ b/cef/libcef_dll/ctocpp/print_settings_ctocpp.cc 23197@@ -1,4 +1,4 @@ 23198-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 23199+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 23200 // reserved. Use of this source code is governed by a BSD-style license that 23201 // can be found in the LICENSE file. 23202 // 23203@@ -9,7 +9,7 @@ 23204 // implementations. See the translator.README.txt file in the tools directory 23205 // for more information. 23206 // 23207-// $hash=81d4ac9fdd16de0622995a85cc463ca4b118139f$ 23208+// $hash=70eeeda85eb67d546066854051f2f921fadcca18$ 23209 // 23210 23211 #include "libcef_dll/ctocpp/print_settings_ctocpp.h" 23212diff --git a/cef/libcef_dll/ctocpp/print_settings_ctocpp.h b/cef/libcef_dll/ctocpp/print_settings_ctocpp.h 23213index 81f152aa8c..b4d4b53ae4 100644 23214--- a/cef/libcef_dll/ctocpp/print_settings_ctocpp.h 23215+++ b/cef/libcef_dll/ctocpp/print_settings_ctocpp.h 23216@@ -1,4 +1,4 @@ 23217-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 23218+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 23219 // reserved. Use of this source code is governed by a BSD-style license that 23220 // can be found in the LICENSE file. 23221 // 23222@@ -9,7 +9,7 @@ 23223 // implementations. See the translator.README.txt file in the tools directory 23224 // for more information. 23225 // 23226-// $hash=9e906ae27be45f6d7996a566cf6d43060dd87069$ 23227+// $hash=66dddeb455e83f4a56d68eaea4d402267729c47a$ 23228 // 23229 23230 #ifndef CEF_LIBCEF_DLL_CTOCPP_PRINT_SETTINGS_CTOCPP_H_ 23231diff --git a/cef/libcef_dll/ctocpp/process_message_ctocpp.cc b/cef/libcef_dll/ctocpp/process_message_ctocpp.cc 23232index c7652aa6e1..afa319731a 100644 23233--- a/cef/libcef_dll/ctocpp/process_message_ctocpp.cc 23234+++ b/cef/libcef_dll/ctocpp/process_message_ctocpp.cc 23235@@ -1,4 +1,4 @@ 23236-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 23237+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 23238 // reserved. Use of this source code is governed by a BSD-style license that 23239 // can be found in the LICENSE file. 23240 // 23241@@ -9,7 +9,7 @@ 23242 // implementations. See the translator.README.txt file in the tools directory 23243 // for more information. 23244 // 23245-// $hash=4c4e96f11773cedab61cd03417534348d4d69711$ 23246+// $hash=7ab779c6c98a1bd2385f14d514304a28ef58717f$ 23247 // 23248 23249 #include "libcef_dll/ctocpp/process_message_ctocpp.h" 23250diff --git a/cef/libcef_dll/ctocpp/process_message_ctocpp.h b/cef/libcef_dll/ctocpp/process_message_ctocpp.h 23251index b0d50061c9..e06f471cf7 100644 23252--- a/cef/libcef_dll/ctocpp/process_message_ctocpp.h 23253+++ b/cef/libcef_dll/ctocpp/process_message_ctocpp.h 23254@@ -1,4 +1,4 @@ 23255-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 23256+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 23257 // reserved. Use of this source code is governed by a BSD-style license that 23258 // can be found in the LICENSE file. 23259 // 23260@@ -9,7 +9,7 @@ 23261 // implementations. See the translator.README.txt file in the tools directory 23262 // for more information. 23263 // 23264-// $hash=c6de5a60b4d438f164b9915b9adc1e1c319c0f53$ 23265+// $hash=046196d936aa82e7581a7387b2f6dd27e9f3a90e$ 23266 // 23267 23268 #ifndef CEF_LIBCEF_DLL_CTOCPP_PROCESS_MESSAGE_CTOCPP_H_ 23269diff --git a/cef/libcef_dll/ctocpp/read_handler_ctocpp.cc b/cef/libcef_dll/ctocpp/read_handler_ctocpp.cc 23270index 188b913a24..858a1cc301 100644 23271--- a/cef/libcef_dll/ctocpp/read_handler_ctocpp.cc 23272+++ b/cef/libcef_dll/ctocpp/read_handler_ctocpp.cc 23273@@ -1,4 +1,4 @@ 23274-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 23275+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 23276 // reserved. Use of this source code is governed by a BSD-style license that 23277 // can be found in the LICENSE file. 23278 // 23279@@ -9,7 +9,7 @@ 23280 // implementations. See the translator.README.txt file in the tools directory 23281 // for more information. 23282 // 23283-// $hash=cae87f4fd617852ca5e45aea6fea51bc85317b67$ 23284+// $hash=0332caff5ce6230d2cb2d7663fc0bbfac8e45069$ 23285 // 23286 23287 #include "libcef_dll/ctocpp/read_handler_ctocpp.h" 23288diff --git a/cef/libcef_dll/ctocpp/read_handler_ctocpp.h b/cef/libcef_dll/ctocpp/read_handler_ctocpp.h 23289index fa874fb180..a1b88e03fb 100644 23290--- a/cef/libcef_dll/ctocpp/read_handler_ctocpp.h 23291+++ b/cef/libcef_dll/ctocpp/read_handler_ctocpp.h 23292@@ -1,4 +1,4 @@ 23293-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 23294+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 23295 // reserved. Use of this source code is governed by a BSD-style license that 23296 // can be found in the LICENSE file. 23297 // 23298@@ -9,7 +9,7 @@ 23299 // implementations. See the translator.README.txt file in the tools directory 23300 // for more information. 23301 // 23302-// $hash=4f3dd3394b3ae65c936602bd537e105ea1b030fc$ 23303+// $hash=f3d43ae771f8e17084fd9397fd4e2bef9471ea73$ 23304 // 23305 23306 #ifndef CEF_LIBCEF_DLL_CTOCPP_READ_HANDLER_CTOCPP_H_ 23307diff --git a/cef/libcef_dll/ctocpp/register_cdm_callback_ctocpp.cc b/cef/libcef_dll/ctocpp/register_cdm_callback_ctocpp.cc 23308index 694ae365e4..10b68c07ef 100644 23309--- a/cef/libcef_dll/ctocpp/register_cdm_callback_ctocpp.cc 23310+++ b/cef/libcef_dll/ctocpp/register_cdm_callback_ctocpp.cc 23311@@ -1,4 +1,4 @@ 23312-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 23313+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 23314 // reserved. Use of this source code is governed by a BSD-style license that 23315 // can be found in the LICENSE file. 23316 // 23317@@ -9,7 +9,7 @@ 23318 // implementations. See the translator.README.txt file in the tools directory 23319 // for more information. 23320 // 23321-// $hash=cf53fb30f47eeda9354fa60731d554ea757a47ac$ 23322+// $hash=40583eaf5b031c6f6d149e4b78f731c40fc84d18$ 23323 // 23324 23325 #include "libcef_dll/ctocpp/register_cdm_callback_ctocpp.h" 23326diff --git a/cef/libcef_dll/ctocpp/register_cdm_callback_ctocpp.h b/cef/libcef_dll/ctocpp/register_cdm_callback_ctocpp.h 23327index 9775e9ec40..6289167d79 100644 23328--- a/cef/libcef_dll/ctocpp/register_cdm_callback_ctocpp.h 23329+++ b/cef/libcef_dll/ctocpp/register_cdm_callback_ctocpp.h 23330@@ -1,4 +1,4 @@ 23331-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 23332+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 23333 // reserved. Use of this source code is governed by a BSD-style license that 23334 // can be found in the LICENSE file. 23335 // 23336@@ -9,7 +9,7 @@ 23337 // implementations. See the translator.README.txt file in the tools directory 23338 // for more information. 23339 // 23340-// $hash=202e9ab7dd5d4dc53daa2f716e0dd74c623ecd8c$ 23341+// $hash=19283660196a59102c9acf03565a932026f6062b$ 23342 // 23343 23344 #ifndef CEF_LIBCEF_DLL_CTOCPP_REGISTER_CDM_CALLBACK_CTOCPP_H_ 23345diff --git a/cef/libcef_dll/ctocpp/registration_ctocpp.cc b/cef/libcef_dll/ctocpp/registration_ctocpp.cc 23346index ea1bf2ba4a..fad182ef7b 100644 23347--- a/cef/libcef_dll/ctocpp/registration_ctocpp.cc 23348+++ b/cef/libcef_dll/ctocpp/registration_ctocpp.cc 23349@@ -1,4 +1,4 @@ 23350-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 23351+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 23352 // reserved. Use of this source code is governed by a BSD-style license that 23353 // can be found in the LICENSE file. 23354 // 23355@@ -9,7 +9,7 @@ 23356 // implementations. See the translator.README.txt file in the tools directory 23357 // for more information. 23358 // 23359-// $hash=7f10b2c40262aaaf1b2943a28e468e87667d57b5$ 23360+// $hash=36f275457b15025ac7b979eca3179cd127f45ffb$ 23361 // 23362 23363 #include "libcef_dll/ctocpp/registration_ctocpp.h" 23364diff --git a/cef/libcef_dll/ctocpp/registration_ctocpp.h b/cef/libcef_dll/ctocpp/registration_ctocpp.h 23365index 1fff4da7ad..00c48e0213 100644 23366--- a/cef/libcef_dll/ctocpp/registration_ctocpp.h 23367+++ b/cef/libcef_dll/ctocpp/registration_ctocpp.h 23368@@ -1,4 +1,4 @@ 23369-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 23370+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 23371 // reserved. Use of this source code is governed by a BSD-style license that 23372 // can be found in the LICENSE file. 23373 // 23374@@ -9,7 +9,7 @@ 23375 // implementations. See the translator.README.txt file in the tools directory 23376 // for more information. 23377 // 23378-// $hash=bd5157a829fab277a56e86b8f70deb7eae16fb38$ 23379+// $hash=84ca9a25ae345642994cc1b44cd71f90e7406f19$ 23380 // 23381 23382 #ifndef CEF_LIBCEF_DLL_CTOCPP_REGISTRATION_CTOCPP_H_ 23383diff --git a/cef/libcef_dll/ctocpp/render_handler_ctocpp.cc b/cef/libcef_dll/ctocpp/render_handler_ctocpp.cc 23384index 5bda63ac50..2840c8e455 100644 23385--- a/cef/libcef_dll/ctocpp/render_handler_ctocpp.cc 23386+++ b/cef/libcef_dll/ctocpp/render_handler_ctocpp.cc 23387@@ -1,4 +1,4 @@ 23388-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 23389+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 23390 // reserved. Use of this source code is governed by a BSD-style license that 23391 // can be found in the LICENSE file. 23392 // 23393@@ -9,7 +9,7 @@ 23394 // implementations. See the translator.README.txt file in the tools directory 23395 // for more information. 23396 // 23397-// $hash=9eb4dcf3fdacae57758ab29d6dc457e6d9ea92a9$ 23398+// $hash=c49c659f1eb3f77224ec5a1bb68b2c1b1cd0d955$ 23399 // 23400 23401 #include "libcef_dll/ctocpp/render_handler_ctocpp.h" 23402@@ -341,6 +341,28 @@ void CefRenderHandlerCToCpp::OnScrollOffsetChanged( 23403 y); 23404 } 23405 23406+NO_SANITIZE("cfi-icall") 23407+void CefRenderHandlerCToCpp::OnRootLayerChanged(CefRefPtr<CefBrowser> browser, 23408+ int height, 23409+ int width) { 23410+ shutdown_checker::AssertNotShutdown(); 23411+ 23412+ cef_render_handler_t* _struct = GetStruct(); 23413+ if (CEF_MEMBER_MISSING(_struct, on_root_layer_changed)) 23414+ return; 23415+ 23416+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING 23417+ 23418+ // Verify param: browser; type: refptr_diff 23419+ DCHECK(browser.get()); 23420+ if (!browser.get()) 23421+ return; 23422+ 23423+ // Execute 23424+ _struct->on_root_layer_changed(_struct, CefBrowserCppToC::Wrap(browser), 23425+ height, width); 23426+} 23427+ 23428 NO_SANITIZE("cfi-icall") 23429 void CefRenderHandlerCToCpp::OnImeCompositionRangeChanged( 23430 CefRefPtr<CefBrowser> browser, 23431diff --git a/cef/libcef_dll/ctocpp/render_handler_ctocpp.h b/cef/libcef_dll/ctocpp/render_handler_ctocpp.h 23432index 3f32296ec8..dfeed9cc6e 100644 23433--- a/cef/libcef_dll/ctocpp/render_handler_ctocpp.h 23434+++ b/cef/libcef_dll/ctocpp/render_handler_ctocpp.h 23435@@ -1,4 +1,4 @@ 23436-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 23437+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 23438 // reserved. Use of this source code is governed by a BSD-style license that 23439 // can be found in the LICENSE file. 23440 // 23441@@ -9,7 +9,7 @@ 23442 // implementations. See the translator.README.txt file in the tools directory 23443 // for more information. 23444 // 23445-// $hash=250d5b59061799513e4aeaab46ca728082127806$ 23446+// $hash=be7d8da1b315dfa07566846d90b95848fae0f83b$ 23447 // 23448 23449 #ifndef CEF_LIBCEF_DLL_CTOCPP_RENDER_HANDLER_CTOCPP_H_ 23450@@ -67,6 +67,9 @@ class CefRenderHandlerCToCpp 23451 void OnScrollOffsetChanged(CefRefPtr<CefBrowser> browser, 23452 double x, 23453 double y) override; 23454+ void OnRootLayerChanged(CefRefPtr<CefBrowser> browser, 23455+ int height, 23456+ int width) override; 23457 void OnImeCompositionRangeChanged(CefRefPtr<CefBrowser> browser, 23458 const CefRange& selected_range, 23459 const RectList& character_bounds) override; 23460diff --git a/cef/libcef_dll/ctocpp/render_process_handler_ctocpp.cc b/cef/libcef_dll/ctocpp/render_process_handler_ctocpp.cc 23461index 4d4e1f4d52..e7143908f2 100644 23462--- a/cef/libcef_dll/ctocpp/render_process_handler_ctocpp.cc 23463+++ b/cef/libcef_dll/ctocpp/render_process_handler_ctocpp.cc 23464@@ -1,4 +1,4 @@ 23465-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 23466+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 23467 // reserved. Use of this source code is governed by a BSD-style license that 23468 // can be found in the LICENSE file. 23469 // 23470@@ -9,7 +9,7 @@ 23471 // implementations. See the translator.README.txt file in the tools directory 23472 // for more information. 23473 // 23474-// $hash=4cc516704229f90c49852b46f932b8882b4bf8d4$ 23475+// $hash=ff8f6b33244916e65041e46461e5f1129c2c242d$ 23476 // 23477 23478 #include "libcef_dll/ctocpp/render_process_handler_ctocpp.h" 23479diff --git a/cef/libcef_dll/ctocpp/render_process_handler_ctocpp.h b/cef/libcef_dll/ctocpp/render_process_handler_ctocpp.h 23480index c5d808a3e3..b587be7aa2 100644 23481--- a/cef/libcef_dll/ctocpp/render_process_handler_ctocpp.h 23482+++ b/cef/libcef_dll/ctocpp/render_process_handler_ctocpp.h 23483@@ -1,4 +1,4 @@ 23484-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 23485+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 23486 // reserved. Use of this source code is governed by a BSD-style license that 23487 // can be found in the LICENSE file. 23488 // 23489@@ -9,7 +9,7 @@ 23490 // implementations. See the translator.README.txt file in the tools directory 23491 // for more information. 23492 // 23493-// $hash=b6af4ad8b6507e539170e35b6c6e16c58c921eb9$ 23494+// $hash=c87a2a5637615d6b7994f80cef17651c73cdb8e2$ 23495 // 23496 23497 #ifndef CEF_LIBCEF_DLL_CTOCPP_RENDER_PROCESS_HANDLER_CTOCPP_H_ 23498diff --git a/cef/libcef_dll/ctocpp/request_callback_ctocpp.cc b/cef/libcef_dll/ctocpp/request_callback_ctocpp.cc 23499index 3e552308dd..7f912043aa 100644 23500--- a/cef/libcef_dll/ctocpp/request_callback_ctocpp.cc 23501+++ b/cef/libcef_dll/ctocpp/request_callback_ctocpp.cc 23502@@ -1,4 +1,4 @@ 23503-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 23504+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 23505 // reserved. Use of this source code is governed by a BSD-style license that 23506 // can be found in the LICENSE file. 23507 // 23508@@ -9,7 +9,7 @@ 23509 // implementations. See the translator.README.txt file in the tools directory 23510 // for more information. 23511 // 23512-// $hash=9fb040d47f4b6627904cc50518d0293bfe11d25d$ 23513+// $hash=e562ec21e0cd256643af02c7794dcba9a8447918$ 23514 // 23515 23516 #include "libcef_dll/ctocpp/request_callback_ctocpp.h" 23517diff --git a/cef/libcef_dll/ctocpp/request_callback_ctocpp.h b/cef/libcef_dll/ctocpp/request_callback_ctocpp.h 23518index 7666530356..4a7a987c89 100644 23519--- a/cef/libcef_dll/ctocpp/request_callback_ctocpp.h 23520+++ b/cef/libcef_dll/ctocpp/request_callback_ctocpp.h 23521@@ -1,4 +1,4 @@ 23522-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 23523+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 23524 // reserved. Use of this source code is governed by a BSD-style license that 23525 // can be found in the LICENSE file. 23526 // 23527@@ -9,7 +9,7 @@ 23528 // implementations. See the translator.README.txt file in the tools directory 23529 // for more information. 23530 // 23531-// $hash=1ede257dfc48418e456f733bff7a062e8b841efe$ 23532+// $hash=21b9b01cafe388bfca99042b72b70a16f8704bca$ 23533 // 23534 23535 #ifndef CEF_LIBCEF_DLL_CTOCPP_REQUEST_CALLBACK_CTOCPP_H_ 23536diff --git a/cef/libcef_dll/ctocpp/request_context_ctocpp.cc b/cef/libcef_dll/ctocpp/request_context_ctocpp.cc 23537index d358aed81e..c1297f2a05 100644 23538--- a/cef/libcef_dll/ctocpp/request_context_ctocpp.cc 23539+++ b/cef/libcef_dll/ctocpp/request_context_ctocpp.cc 23540@@ -1,4 +1,4 @@ 23541-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 23542+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 23543 // reserved. Use of this source code is governed by a BSD-style license that 23544 // can be found in the LICENSE file. 23545 // 23546@@ -9,7 +9,7 @@ 23547 // implementations. See the translator.README.txt file in the tools directory 23548 // for more information. 23549 // 23550-// $hash=67bc021917c8f7d1e386859bbfae6e007b292f45$ 23551+// $hash=856dc903108cc2e295f4ddc67f820d36a1896472$ 23552 // 23553 23554 #include "libcef_dll/ctocpp/request_context_ctocpp.h" 23555diff --git a/cef/libcef_dll/ctocpp/request_context_ctocpp.h b/cef/libcef_dll/ctocpp/request_context_ctocpp.h 23556index 314110af2f..a8abb88cef 100644 23557--- a/cef/libcef_dll/ctocpp/request_context_ctocpp.h 23558+++ b/cef/libcef_dll/ctocpp/request_context_ctocpp.h 23559@@ -1,4 +1,4 @@ 23560-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 23561+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 23562 // reserved. Use of this source code is governed by a BSD-style license that 23563 // can be found in the LICENSE file. 23564 // 23565@@ -9,7 +9,7 @@ 23566 // implementations. See the translator.README.txt file in the tools directory 23567 // for more information. 23568 // 23569-// $hash=0aff81f2ccc5881001e9fd61cc6e349253fb2ac5$ 23570+// $hash=e0837e0c338f59260e5c52a490edfbbb82490e01$ 23571 // 23572 23573 #ifndef CEF_LIBCEF_DLL_CTOCPP_REQUEST_CONTEXT_CTOCPP_H_ 23574diff --git a/cef/libcef_dll/ctocpp/request_context_handler_ctocpp.cc b/cef/libcef_dll/ctocpp/request_context_handler_ctocpp.cc 23575index 3e744f2582..28953ad9f3 100644 23576--- a/cef/libcef_dll/ctocpp/request_context_handler_ctocpp.cc 23577+++ b/cef/libcef_dll/ctocpp/request_context_handler_ctocpp.cc 23578@@ -1,4 +1,4 @@ 23579-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 23580+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 23581 // reserved. Use of this source code is governed by a BSD-style license that 23582 // can be found in the LICENSE file. 23583 // 23584@@ -9,7 +9,7 @@ 23585 // implementations. See the translator.README.txt file in the tools directory 23586 // for more information. 23587 // 23588-// $hash=e857bba04c337c16c2ea4ebce2e99c00d10280e1$ 23589+// $hash=7d59490393a71bacad28096ecf95211d1f3c3303$ 23590 // 23591 23592 #include "libcef_dll/ctocpp/request_context_handler_ctocpp.h" 23593diff --git a/cef/libcef_dll/ctocpp/request_context_handler_ctocpp.h b/cef/libcef_dll/ctocpp/request_context_handler_ctocpp.h 23594index b4d5b92bc1..76b73e91d0 100644 23595--- a/cef/libcef_dll/ctocpp/request_context_handler_ctocpp.h 23596+++ b/cef/libcef_dll/ctocpp/request_context_handler_ctocpp.h 23597@@ -1,4 +1,4 @@ 23598-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 23599+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 23600 // reserved. Use of this source code is governed by a BSD-style license that 23601 // can be found in the LICENSE file. 23602 // 23603@@ -9,7 +9,7 @@ 23604 // implementations. See the translator.README.txt file in the tools directory 23605 // for more information. 23606 // 23607-// $hash=448e862b43cb41f8f01519501733ef9bbe0d1607$ 23608+// $hash=7e6ec1e205a0f3b516d8c503bdaa10f5e7bcc274$ 23609 // 23610 23611 #ifndef CEF_LIBCEF_DLL_CTOCPP_REQUEST_CONTEXT_HANDLER_CTOCPP_H_ 23612diff --git a/cef/libcef_dll/ctocpp/request_ctocpp.cc b/cef/libcef_dll/ctocpp/request_ctocpp.cc 23613index 3be0627c98..5626e4c25d 100644 23614--- a/cef/libcef_dll/ctocpp/request_ctocpp.cc 23615+++ b/cef/libcef_dll/ctocpp/request_ctocpp.cc 23616@@ -1,4 +1,4 @@ 23617-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 23618+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 23619 // reserved. Use of this source code is governed by a BSD-style license that 23620 // can be found in the LICENSE file. 23621 // 23622@@ -9,7 +9,7 @@ 23623 // implementations. See the translator.README.txt file in the tools directory 23624 // for more information. 23625 // 23626-// $hash=82d97339b034e8ba484ecca0ed92d6b0c13f21b3$ 23627+// $hash=b1dd4486a797ac139f453e02e3a49c74b7568ca8$ 23628 // 23629 23630 #include "libcef_dll/ctocpp/request_ctocpp.h" 23631diff --git a/cef/libcef_dll/ctocpp/request_ctocpp.h b/cef/libcef_dll/ctocpp/request_ctocpp.h 23632index a53848cb43..dd2b599ea5 100644 23633--- a/cef/libcef_dll/ctocpp/request_ctocpp.h 23634+++ b/cef/libcef_dll/ctocpp/request_ctocpp.h 23635@@ -1,4 +1,4 @@ 23636-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 23637+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 23638 // reserved. Use of this source code is governed by a BSD-style license that 23639 // can be found in the LICENSE file. 23640 // 23641@@ -9,7 +9,7 @@ 23642 // implementations. See the translator.README.txt file in the tools directory 23643 // for more information. 23644 // 23645-// $hash=77fee821efba296de9f9c01aa42f77596fb381d1$ 23646+// $hash=c4b9e409b8ebcd1d460b66913e81742ab7c92782$ 23647 // 23648 23649 #ifndef CEF_LIBCEF_DLL_CTOCPP_REQUEST_CTOCPP_H_ 23650diff --git a/cef/libcef_dll/ctocpp/request_handler_ctocpp.cc b/cef/libcef_dll/ctocpp/request_handler_ctocpp.cc 23651index a6d88fc4dd..aaa756b980 100644 23652--- a/cef/libcef_dll/ctocpp/request_handler_ctocpp.cc 23653+++ b/cef/libcef_dll/ctocpp/request_handler_ctocpp.cc 23654@@ -1,4 +1,4 @@ 23655-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 23656+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 23657 // reserved. Use of this source code is governed by a BSD-style license that 23658 // can be found in the LICENSE file. 23659 // 23660@@ -9,7 +9,7 @@ 23661 // implementations. See the translator.README.txt file in the tools directory 23662 // for more information. 23663 // 23664-// $hash=cac9a84a4ddb5aa01e9c6fc97f5c4bcb4f4c368f$ 23665+// $hash=5df945d13e76eb21611ae848d99505eaae5e7602$ 23666 // 23667 23668 #include "libcef_dll/ctocpp/request_handler_ctocpp.h" 23669diff --git a/cef/libcef_dll/ctocpp/request_handler_ctocpp.h b/cef/libcef_dll/ctocpp/request_handler_ctocpp.h 23670index ef74cbc8bc..32b5dac844 100644 23671--- a/cef/libcef_dll/ctocpp/request_handler_ctocpp.h 23672+++ b/cef/libcef_dll/ctocpp/request_handler_ctocpp.h 23673@@ -1,4 +1,4 @@ 23674-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 23675+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 23676 // reserved. Use of this source code is governed by a BSD-style license that 23677 // can be found in the LICENSE file. 23678 // 23679@@ -9,7 +9,7 @@ 23680 // implementations. See the translator.README.txt file in the tools directory 23681 // for more information. 23682 // 23683-// $hash=771c124f112f02314f57b5f9bd475afe6cef3242$ 23684+// $hash=dff7280d248bbc08733c6765a3ddfe5ae3978348$ 23685 // 23686 23687 #ifndef CEF_LIBCEF_DLL_CTOCPP_REQUEST_HANDLER_CTOCPP_H_ 23688diff --git a/cef/libcef_dll/ctocpp/resolve_callback_ctocpp.cc b/cef/libcef_dll/ctocpp/resolve_callback_ctocpp.cc 23689index d0f1c0099e..d348c199a6 100644 23690--- a/cef/libcef_dll/ctocpp/resolve_callback_ctocpp.cc 23691+++ b/cef/libcef_dll/ctocpp/resolve_callback_ctocpp.cc 23692@@ -1,4 +1,4 @@ 23693-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 23694+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 23695 // reserved. Use of this source code is governed by a BSD-style license that 23696 // can be found in the LICENSE file. 23697 // 23698@@ -9,7 +9,7 @@ 23699 // implementations. See the translator.README.txt file in the tools directory 23700 // for more information. 23701 // 23702-// $hash=80b9eb74012b88e0d43fc4d4996130aac8fc0511$ 23703+// $hash=c71d6fd8b0ee493102fdae90612f15b01e4a9f6b$ 23704 // 23705 23706 #include "libcef_dll/ctocpp/resolve_callback_ctocpp.h" 23707diff --git a/cef/libcef_dll/ctocpp/resolve_callback_ctocpp.h b/cef/libcef_dll/ctocpp/resolve_callback_ctocpp.h 23708index c94c9a4ab5..b1f00880bc 100644 23709--- a/cef/libcef_dll/ctocpp/resolve_callback_ctocpp.h 23710+++ b/cef/libcef_dll/ctocpp/resolve_callback_ctocpp.h 23711@@ -1,4 +1,4 @@ 23712-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 23713+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 23714 // reserved. Use of this source code is governed by a BSD-style license that 23715 // can be found in the LICENSE file. 23716 // 23717@@ -9,7 +9,7 @@ 23718 // implementations. See the translator.README.txt file in the tools directory 23719 // for more information. 23720 // 23721-// $hash=1f07689db3a9b68d0fb50aef636486885aef6ea0$ 23722+// $hash=493826dcfb1c8e1b46489225a74332552d591d63$ 23723 // 23724 23725 #ifndef CEF_LIBCEF_DLL_CTOCPP_RESOLVE_CALLBACK_CTOCPP_H_ 23726diff --git a/cef/libcef_dll/ctocpp/resource_bundle_ctocpp.cc b/cef/libcef_dll/ctocpp/resource_bundle_ctocpp.cc 23727index 6a5fc7cd37..66bc65cc31 100644 23728--- a/cef/libcef_dll/ctocpp/resource_bundle_ctocpp.cc 23729+++ b/cef/libcef_dll/ctocpp/resource_bundle_ctocpp.cc 23730@@ -1,4 +1,4 @@ 23731-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 23732+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 23733 // reserved. Use of this source code is governed by a BSD-style license that 23734 // can be found in the LICENSE file. 23735 // 23736@@ -9,7 +9,7 @@ 23737 // implementations. See the translator.README.txt file in the tools directory 23738 // for more information. 23739 // 23740-// $hash=01882602db6e3a075edeceecec82063f1e3a4d8f$ 23741+// $hash=a62aa669321b0f86ea3508ce31ea5b1a0bc3f9b5$ 23742 // 23743 23744 #include "libcef_dll/ctocpp/resource_bundle_ctocpp.h" 23745diff --git a/cef/libcef_dll/ctocpp/resource_bundle_ctocpp.h b/cef/libcef_dll/ctocpp/resource_bundle_ctocpp.h 23746index 072ad85949..2687e1046e 100644 23747--- a/cef/libcef_dll/ctocpp/resource_bundle_ctocpp.h 23748+++ b/cef/libcef_dll/ctocpp/resource_bundle_ctocpp.h 23749@@ -1,4 +1,4 @@ 23750-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 23751+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 23752 // reserved. Use of this source code is governed by a BSD-style license that 23753 // can be found in the LICENSE file. 23754 // 23755@@ -9,7 +9,7 @@ 23756 // implementations. See the translator.README.txt file in the tools directory 23757 // for more information. 23758 // 23759-// $hash=00c386274cefb6ae461544f93cea6df7d2a6f367$ 23760+// $hash=245ec814ff08ef80a2c11830e0d4493150544ede$ 23761 // 23762 23763 #ifndef CEF_LIBCEF_DLL_CTOCPP_RESOURCE_BUNDLE_CTOCPP_H_ 23764diff --git a/cef/libcef_dll/ctocpp/resource_bundle_handler_ctocpp.cc b/cef/libcef_dll/ctocpp/resource_bundle_handler_ctocpp.cc 23765index e5ba02f3c8..722f909420 100644 23766--- a/cef/libcef_dll/ctocpp/resource_bundle_handler_ctocpp.cc 23767+++ b/cef/libcef_dll/ctocpp/resource_bundle_handler_ctocpp.cc 23768@@ -1,4 +1,4 @@ 23769-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 23770+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 23771 // reserved. Use of this source code is governed by a BSD-style license that 23772 // can be found in the LICENSE file. 23773 // 23774@@ -9,7 +9,7 @@ 23775 // implementations. See the translator.README.txt file in the tools directory 23776 // for more information. 23777 // 23778-// $hash=202d1371e39e1211d2db18afcc0610a341725b2b$ 23779+// $hash=12556834893a7ae50b8f8bef2b71915fa1a141ca$ 23780 // 23781 23782 #include "libcef_dll/ctocpp/resource_bundle_handler_ctocpp.h" 23783diff --git a/cef/libcef_dll/ctocpp/resource_bundle_handler_ctocpp.h b/cef/libcef_dll/ctocpp/resource_bundle_handler_ctocpp.h 23784index c689054e22..354a15e078 100644 23785--- a/cef/libcef_dll/ctocpp/resource_bundle_handler_ctocpp.h 23786+++ b/cef/libcef_dll/ctocpp/resource_bundle_handler_ctocpp.h 23787@@ -1,4 +1,4 @@ 23788-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 23789+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 23790 // reserved. Use of this source code is governed by a BSD-style license that 23791 // can be found in the LICENSE file. 23792 // 23793@@ -9,7 +9,7 @@ 23794 // implementations. See the translator.README.txt file in the tools directory 23795 // for more information. 23796 // 23797-// $hash=bb6805610f1eb4d2bf1931dbf910b4603786ef4f$ 23798+// $hash=ba179fe7fc169637ab6f1727351a81952c82826d$ 23799 // 23800 23801 #ifndef CEF_LIBCEF_DLL_CTOCPP_RESOURCE_BUNDLE_HANDLER_CTOCPP_H_ 23802diff --git a/cef/libcef_dll/ctocpp/resource_handler_ctocpp.cc b/cef/libcef_dll/ctocpp/resource_handler_ctocpp.cc 23803index aae931436c..4396a57db1 100644 23804--- a/cef/libcef_dll/ctocpp/resource_handler_ctocpp.cc 23805+++ b/cef/libcef_dll/ctocpp/resource_handler_ctocpp.cc 23806@@ -1,4 +1,4 @@ 23807-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 23808+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 23809 // reserved. Use of this source code is governed by a BSD-style license that 23810 // can be found in the LICENSE file. 23811 // 23812@@ -9,7 +9,7 @@ 23813 // implementations. See the translator.README.txt file in the tools directory 23814 // for more information. 23815 // 23816-// $hash=3167c77e6d2a2fc436fd3691b2f6681bccba3fd1$ 23817+// $hash=16d3a6bd2555917b295d7dbb3ccd95ccfc35b111$ 23818 // 23819 23820 #include "libcef_dll/ctocpp/resource_handler_ctocpp.h" 23821diff --git a/cef/libcef_dll/ctocpp/resource_handler_ctocpp.h b/cef/libcef_dll/ctocpp/resource_handler_ctocpp.h 23822index e90d7d6c59..ae74e58fd3 100644 23823--- a/cef/libcef_dll/ctocpp/resource_handler_ctocpp.h 23824+++ b/cef/libcef_dll/ctocpp/resource_handler_ctocpp.h 23825@@ -1,4 +1,4 @@ 23826-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 23827+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 23828 // reserved. Use of this source code is governed by a BSD-style license that 23829 // can be found in the LICENSE file. 23830 // 23831@@ -9,7 +9,7 @@ 23832 // implementations. See the translator.README.txt file in the tools directory 23833 // for more information. 23834 // 23835-// $hash=bd1bde0a4122e06dfccc7cf8ad47448ed6276a35$ 23836+// $hash=2b60744909728ffbff2e846438bf122a61fec5c7$ 23837 // 23838 23839 #ifndef CEF_LIBCEF_DLL_CTOCPP_RESOURCE_HANDLER_CTOCPP_H_ 23840diff --git a/cef/libcef_dll/ctocpp/resource_read_callback_ctocpp.cc b/cef/libcef_dll/ctocpp/resource_read_callback_ctocpp.cc 23841index f0c94d8cd1..1e9523ef77 100644 23842--- a/cef/libcef_dll/ctocpp/resource_read_callback_ctocpp.cc 23843+++ b/cef/libcef_dll/ctocpp/resource_read_callback_ctocpp.cc 23844@@ -1,4 +1,4 @@ 23845-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 23846+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 23847 // reserved. Use of this source code is governed by a BSD-style license that 23848 // can be found in the LICENSE file. 23849 // 23850@@ -9,7 +9,7 @@ 23851 // implementations. See the translator.README.txt file in the tools directory 23852 // for more information. 23853 // 23854-// $hash=cbb99c39dde3ebfe149fa2051c63c813f86f3926$ 23855+// $hash=c251aa59688ffe5c12d2ec3c8a4a896d016e86a0$ 23856 // 23857 23858 #include "libcef_dll/ctocpp/resource_read_callback_ctocpp.h" 23859diff --git a/cef/libcef_dll/ctocpp/resource_read_callback_ctocpp.h b/cef/libcef_dll/ctocpp/resource_read_callback_ctocpp.h 23860index f1115e7747..3a38441651 100644 23861--- a/cef/libcef_dll/ctocpp/resource_read_callback_ctocpp.h 23862+++ b/cef/libcef_dll/ctocpp/resource_read_callback_ctocpp.h 23863@@ -1,4 +1,4 @@ 23864-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 23865+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 23866 // reserved. Use of this source code is governed by a BSD-style license that 23867 // can be found in the LICENSE file. 23868 // 23869@@ -9,7 +9,7 @@ 23870 // implementations. See the translator.README.txt file in the tools directory 23871 // for more information. 23872 // 23873-// $hash=1678dd45fdeac3cf3f0674138791fa2eb51f08e2$ 23874+// $hash=5225eea48911cd7a7df5f6b6d2ddc1c445d7e460$ 23875 // 23876 23877 #ifndef CEF_LIBCEF_DLL_CTOCPP_RESOURCE_READ_CALLBACK_CTOCPP_H_ 23878diff --git a/cef/libcef_dll/ctocpp/resource_request_handler_ctocpp.cc b/cef/libcef_dll/ctocpp/resource_request_handler_ctocpp.cc 23879index 8937d0c9a9..096427d9db 100644 23880--- a/cef/libcef_dll/ctocpp/resource_request_handler_ctocpp.cc 23881+++ b/cef/libcef_dll/ctocpp/resource_request_handler_ctocpp.cc 23882@@ -1,4 +1,4 @@ 23883-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 23884+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 23885 // reserved. Use of this source code is governed by a BSD-style license that 23886 // can be found in the LICENSE file. 23887 // 23888@@ -9,7 +9,7 @@ 23889 // implementations. See the translator.README.txt file in the tools directory 23890 // for more information. 23891 // 23892-// $hash=a53f4f53f8063044f5c82870f2cef1ef89a91d83$ 23893+// $hash=451a51625d4a8e229e9f29dba9148314d126cfb0$ 23894 // 23895 23896 #include "libcef_dll/ctocpp/resource_request_handler_ctocpp.h" 23897diff --git a/cef/libcef_dll/ctocpp/resource_request_handler_ctocpp.h b/cef/libcef_dll/ctocpp/resource_request_handler_ctocpp.h 23898index 4f7636eb2e..4fa41c22a6 100644 23899--- a/cef/libcef_dll/ctocpp/resource_request_handler_ctocpp.h 23900+++ b/cef/libcef_dll/ctocpp/resource_request_handler_ctocpp.h 23901@@ -1,4 +1,4 @@ 23902-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 23903+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 23904 // reserved. Use of this source code is governed by a BSD-style license that 23905 // can be found in the LICENSE file. 23906 // 23907@@ -9,7 +9,7 @@ 23908 // implementations. See the translator.README.txt file in the tools directory 23909 // for more information. 23910 // 23911-// $hash=0168c1a4e9321014b8a0a9434ea85f89de100cc7$ 23912+// $hash=f5d801ab34b0a86b9c19ce0bcaeb97a965785705$ 23913 // 23914 23915 #ifndef CEF_LIBCEF_DLL_CTOCPP_RESOURCE_REQUEST_HANDLER_CTOCPP_H_ 23916diff --git a/cef/libcef_dll/ctocpp/resource_skip_callback_ctocpp.cc b/cef/libcef_dll/ctocpp/resource_skip_callback_ctocpp.cc 23917index 6321981860..cdafb7bea0 100644 23918--- a/cef/libcef_dll/ctocpp/resource_skip_callback_ctocpp.cc 23919+++ b/cef/libcef_dll/ctocpp/resource_skip_callback_ctocpp.cc 23920@@ -1,4 +1,4 @@ 23921-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 23922+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 23923 // reserved. Use of this source code is governed by a BSD-style license that 23924 // can be found in the LICENSE file. 23925 // 23926@@ -9,7 +9,7 @@ 23927 // implementations. See the translator.README.txt file in the tools directory 23928 // for more information. 23929 // 23930-// $hash=b2d1fb3d20a88e971781e3fea9034b579b73b33e$ 23931+// $hash=df7b14a723e4f2b9dd7946fddfbe8dc9652ccb75$ 23932 // 23933 23934 #include "libcef_dll/ctocpp/resource_skip_callback_ctocpp.h" 23935diff --git a/cef/libcef_dll/ctocpp/resource_skip_callback_ctocpp.h b/cef/libcef_dll/ctocpp/resource_skip_callback_ctocpp.h 23936index 0e90c6fa0a..b9a274f045 100644 23937--- a/cef/libcef_dll/ctocpp/resource_skip_callback_ctocpp.h 23938+++ b/cef/libcef_dll/ctocpp/resource_skip_callback_ctocpp.h 23939@@ -1,4 +1,4 @@ 23940-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 23941+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 23942 // reserved. Use of this source code is governed by a BSD-style license that 23943 // can be found in the LICENSE file. 23944 // 23945@@ -9,7 +9,7 @@ 23946 // implementations. See the translator.README.txt file in the tools directory 23947 // for more information. 23948 // 23949-// $hash=e5f6f5e49687972c21461aa8055a17aa73d9f5dc$ 23950+// $hash=6f3f45c5e29c0d6b3b3bf59e0dad240c6850aad4$ 23951 // 23952 23953 #ifndef CEF_LIBCEF_DLL_CTOCPP_RESOURCE_SKIP_CALLBACK_CTOCPP_H_ 23954diff --git a/cef/libcef_dll/ctocpp/response_ctocpp.cc b/cef/libcef_dll/ctocpp/response_ctocpp.cc 23955index 0d127812bc..e34c60e857 100644 23956--- a/cef/libcef_dll/ctocpp/response_ctocpp.cc 23957+++ b/cef/libcef_dll/ctocpp/response_ctocpp.cc 23958@@ -1,4 +1,4 @@ 23959-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 23960+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 23961 // reserved. Use of this source code is governed by a BSD-style license that 23962 // can be found in the LICENSE file. 23963 // 23964@@ -9,7 +9,7 @@ 23965 // implementations. See the translator.README.txt file in the tools directory 23966 // for more information. 23967 // 23968-// $hash=095a5d712639de515ace623f92b3098b029936c8$ 23969+// $hash=ac30aa16fee147cd041b64db7f2743d578dc6384$ 23970 // 23971 23972 #include "libcef_dll/ctocpp/response_ctocpp.h" 23973diff --git a/cef/libcef_dll/ctocpp/response_ctocpp.h b/cef/libcef_dll/ctocpp/response_ctocpp.h 23974index a1b1a5dcb5..4d89fbcf51 100644 23975--- a/cef/libcef_dll/ctocpp/response_ctocpp.h 23976+++ b/cef/libcef_dll/ctocpp/response_ctocpp.h 23977@@ -1,4 +1,4 @@ 23978-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 23979+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 23980 // reserved. Use of this source code is governed by a BSD-style license that 23981 // can be found in the LICENSE file. 23982 // 23983@@ -9,7 +9,7 @@ 23984 // implementations. See the translator.README.txt file in the tools directory 23985 // for more information. 23986 // 23987-// $hash=82ca98c4f8fbbac643f826f882ae4e4efe80e821$ 23988+// $hash=39a5419239b8bb9345d71ad873cab02adc682f71$ 23989 // 23990 23991 #ifndef CEF_LIBCEF_DLL_CTOCPP_RESPONSE_CTOCPP_H_ 23992diff --git a/cef/libcef_dll/ctocpp/response_filter_ctocpp.cc b/cef/libcef_dll/ctocpp/response_filter_ctocpp.cc 23993index 0d46d8814b..90d82249ae 100644 23994--- a/cef/libcef_dll/ctocpp/response_filter_ctocpp.cc 23995+++ b/cef/libcef_dll/ctocpp/response_filter_ctocpp.cc 23996@@ -1,4 +1,4 @@ 23997-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 23998+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 23999 // reserved. Use of this source code is governed by a BSD-style license that 24000 // can be found in the LICENSE file. 24001 // 24002@@ -9,7 +9,7 @@ 24003 // implementations. See the translator.README.txt file in the tools directory 24004 // for more information. 24005 // 24006-// $hash=b3f3fa1f1cb167a65ad7e968b5b3c62354e83e32$ 24007+// $hash=ddb4710d1e5bc73df68f132d56661b0d22520ad9$ 24008 // 24009 24010 #include "libcef_dll/ctocpp/response_filter_ctocpp.h" 24011diff --git a/cef/libcef_dll/ctocpp/response_filter_ctocpp.h b/cef/libcef_dll/ctocpp/response_filter_ctocpp.h 24012index 5e94723ec1..a1f7a5eff4 100644 24013--- a/cef/libcef_dll/ctocpp/response_filter_ctocpp.h 24014+++ b/cef/libcef_dll/ctocpp/response_filter_ctocpp.h 24015@@ -1,4 +1,4 @@ 24016-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 24017+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 24018 // reserved. Use of this source code is governed by a BSD-style license that 24019 // can be found in the LICENSE file. 24020 // 24021@@ -9,7 +9,7 @@ 24022 // implementations. See the translator.README.txt file in the tools directory 24023 // for more information. 24024 // 24025-// $hash=e8747c2fe177d25d623680bd6144e179a50df203$ 24026+// $hash=3e7c6b0f991e335db755172d65e2a03e5e00a270$ 24027 // 24028 24029 #ifndef CEF_LIBCEF_DLL_CTOCPP_RESPONSE_FILTER_CTOCPP_H_ 24030diff --git a/cef/libcef_dll/ctocpp/run_context_menu_callback_ctocpp.cc b/cef/libcef_dll/ctocpp/run_context_menu_callback_ctocpp.cc 24031index 664e8d1c71..dede7b1aab 100644 24032--- a/cef/libcef_dll/ctocpp/run_context_menu_callback_ctocpp.cc 24033+++ b/cef/libcef_dll/ctocpp/run_context_menu_callback_ctocpp.cc 24034@@ -1,4 +1,4 @@ 24035-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 24036+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 24037 // reserved. Use of this source code is governed by a BSD-style license that 24038 // can be found in the LICENSE file. 24039 // 24040@@ -9,7 +9,7 @@ 24041 // implementations. See the translator.README.txt file in the tools directory 24042 // for more information. 24043 // 24044-// $hash=63a8d238ef8d6d46bc4950db235b5960d2eb42a2$ 24045+// $hash=f77743d285768c21bd89b9955d47176ef52f1e1a$ 24046 // 24047 24048 #include "libcef_dll/ctocpp/run_context_menu_callback_ctocpp.h" 24049diff --git a/cef/libcef_dll/ctocpp/run_context_menu_callback_ctocpp.h b/cef/libcef_dll/ctocpp/run_context_menu_callback_ctocpp.h 24050index e9c82b7ad6..58ed604c56 100644 24051--- a/cef/libcef_dll/ctocpp/run_context_menu_callback_ctocpp.h 24052+++ b/cef/libcef_dll/ctocpp/run_context_menu_callback_ctocpp.h 24053@@ -1,4 +1,4 @@ 24054-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 24055+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 24056 // reserved. Use of this source code is governed by a BSD-style license that 24057 // can be found in the LICENSE file. 24058 // 24059@@ -9,7 +9,7 @@ 24060 // implementations. See the translator.README.txt file in the tools directory 24061 // for more information. 24062 // 24063-// $hash=15e8c2e8426ce3f7ea6662aa7dc1a51bf541a3d2$ 24064+// $hash=837fb72b6eccf8e7048e1ba8017846b261a4c3b2$ 24065 // 24066 24067 #ifndef CEF_LIBCEF_DLL_CTOCPP_RUN_CONTEXT_MENU_CALLBACK_CTOCPP_H_ 24068diff --git a/cef/libcef_dll/ctocpp/run_file_dialog_callback_ctocpp.cc b/cef/libcef_dll/ctocpp/run_file_dialog_callback_ctocpp.cc 24069index ce41c989aa..fb42b0d4cf 100644 24070--- a/cef/libcef_dll/ctocpp/run_file_dialog_callback_ctocpp.cc 24071+++ b/cef/libcef_dll/ctocpp/run_file_dialog_callback_ctocpp.cc 24072@@ -1,4 +1,4 @@ 24073-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 24074+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 24075 // reserved. Use of this source code is governed by a BSD-style license that 24076 // can be found in the LICENSE file. 24077 // 24078@@ -9,7 +9,7 @@ 24079 // implementations. See the translator.README.txt file in the tools directory 24080 // for more information. 24081 // 24082-// $hash=dd5b08b33086b2ef0c9899029228c615bd75555d$ 24083+// $hash=cb29585261ed25ddd2ee1b4b5c890565e72e5d22$ 24084 // 24085 24086 #include "libcef_dll/ctocpp/run_file_dialog_callback_ctocpp.h" 24087diff --git a/cef/libcef_dll/ctocpp/run_file_dialog_callback_ctocpp.h b/cef/libcef_dll/ctocpp/run_file_dialog_callback_ctocpp.h 24088index 5af79fbfed..2b4fc7dde8 100644 24089--- a/cef/libcef_dll/ctocpp/run_file_dialog_callback_ctocpp.h 24090+++ b/cef/libcef_dll/ctocpp/run_file_dialog_callback_ctocpp.h 24091@@ -1,4 +1,4 @@ 24092-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 24093+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 24094 // reserved. Use of this source code is governed by a BSD-style license that 24095 // can be found in the LICENSE file. 24096 // 24097@@ -9,7 +9,7 @@ 24098 // implementations. See the translator.README.txt file in the tools directory 24099 // for more information. 24100 // 24101-// $hash=cf11a44cbafd136e5c36633b393bc2f49685cb10$ 24102+// $hash=63d2d1da715395296899acc4ed165cf7dae4d78c$ 24103 // 24104 24105 #ifndef CEF_LIBCEF_DLL_CTOCPP_RUN_FILE_DIALOG_CALLBACK_CTOCPP_H_ 24106diff --git a/cef/libcef_dll/ctocpp/scheme_handler_factory_ctocpp.cc b/cef/libcef_dll/ctocpp/scheme_handler_factory_ctocpp.cc 24107index c2219f471b..9be13e699b 100644 24108--- a/cef/libcef_dll/ctocpp/scheme_handler_factory_ctocpp.cc 24109+++ b/cef/libcef_dll/ctocpp/scheme_handler_factory_ctocpp.cc 24110@@ -1,4 +1,4 @@ 24111-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 24112+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 24113 // reserved. Use of this source code is governed by a BSD-style license that 24114 // can be found in the LICENSE file. 24115 // 24116@@ -9,7 +9,7 @@ 24117 // implementations. See the translator.README.txt file in the tools directory 24118 // for more information. 24119 // 24120-// $hash=a81d84e127dfa02a8093d6144b934b1528e63792$ 24121+// $hash=5e94a999784332a91c40a4608644bf7dc36e0729$ 24122 // 24123 24124 #include "libcef_dll/ctocpp/scheme_handler_factory_ctocpp.h" 24125diff --git a/cef/libcef_dll/ctocpp/scheme_handler_factory_ctocpp.h b/cef/libcef_dll/ctocpp/scheme_handler_factory_ctocpp.h 24126index 1783069491..8e1d45052d 100644 24127--- a/cef/libcef_dll/ctocpp/scheme_handler_factory_ctocpp.h 24128+++ b/cef/libcef_dll/ctocpp/scheme_handler_factory_ctocpp.h 24129@@ -1,4 +1,4 @@ 24130-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 24131+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 24132 // reserved. Use of this source code is governed by a BSD-style license that 24133 // can be found in the LICENSE file. 24134 // 24135@@ -9,7 +9,7 @@ 24136 // implementations. See the translator.README.txt file in the tools directory 24137 // for more information. 24138 // 24139-// $hash=2e8b90402803dda047746a07de047eeb28836386$ 24140+// $hash=ff0cb366799a5abce0f4e43bd98fcaf993fad77d$ 24141 // 24142 24143 #ifndef CEF_LIBCEF_DLL_CTOCPP_SCHEME_HANDLER_FACTORY_CTOCPP_H_ 24144diff --git a/cef/libcef_dll/ctocpp/scheme_registrar_ctocpp.cc b/cef/libcef_dll/ctocpp/scheme_registrar_ctocpp.cc 24145index 10c474483d..c86d129734 100644 24146--- a/cef/libcef_dll/ctocpp/scheme_registrar_ctocpp.cc 24147+++ b/cef/libcef_dll/ctocpp/scheme_registrar_ctocpp.cc 24148@@ -1,4 +1,4 @@ 24149-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 24150+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 24151 // reserved. Use of this source code is governed by a BSD-style license that 24152 // can be found in the LICENSE file. 24153 // 24154@@ -9,7 +9,7 @@ 24155 // implementations. See the translator.README.txt file in the tools directory 24156 // for more information. 24157 // 24158-// $hash=7e35edcef126b362aef8f288a1bdbb516ac2d9b3$ 24159+// $hash=3f55a43485f2833e5000e7444d57ef47ff7af0e9$ 24160 // 24161 24162 #include "libcef_dll/ctocpp/scheme_registrar_ctocpp.h" 24163diff --git a/cef/libcef_dll/ctocpp/scheme_registrar_ctocpp.h b/cef/libcef_dll/ctocpp/scheme_registrar_ctocpp.h 24164index d5109a7085..b2d1d7bed6 100644 24165--- a/cef/libcef_dll/ctocpp/scheme_registrar_ctocpp.h 24166+++ b/cef/libcef_dll/ctocpp/scheme_registrar_ctocpp.h 24167@@ -1,4 +1,4 @@ 24168-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 24169+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 24170 // reserved. Use of this source code is governed by a BSD-style license that 24171 // can be found in the LICENSE file. 24172 // 24173@@ -9,7 +9,7 @@ 24174 // implementations. See the translator.README.txt file in the tools directory 24175 // for more information. 24176 // 24177-// $hash=ca1012f1234d42169d2f513c39f05866cdc24f02$ 24178+// $hash=1155632639cae3bcc3923fd590c5712359c4908e$ 24179 // 24180 24181 #ifndef CEF_LIBCEF_DLL_CTOCPP_SCHEME_REGISTRAR_CTOCPP_H_ 24182diff --git a/cef/libcef_dll/ctocpp/select_client_certificate_callback_ctocpp.cc b/cef/libcef_dll/ctocpp/select_client_certificate_callback_ctocpp.cc 24183index 8c8f234926..6d2ac0ee92 100644 24184--- a/cef/libcef_dll/ctocpp/select_client_certificate_callback_ctocpp.cc 24185+++ b/cef/libcef_dll/ctocpp/select_client_certificate_callback_ctocpp.cc 24186@@ -1,4 +1,4 @@ 24187-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 24188+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 24189 // reserved. Use of this source code is governed by a BSD-style license that 24190 // can be found in the LICENSE file. 24191 // 24192@@ -9,7 +9,7 @@ 24193 // implementations. See the translator.README.txt file in the tools directory 24194 // for more information. 24195 // 24196-// $hash=0f367fb3849adf120197cf9dc38f91ea1d050abd$ 24197+// $hash=97852992a8406868d2b0dedf08a538a78b1cde9c$ 24198 // 24199 24200 #include "libcef_dll/ctocpp/select_client_certificate_callback_ctocpp.h" 24201diff --git a/cef/libcef_dll/ctocpp/select_client_certificate_callback_ctocpp.h b/cef/libcef_dll/ctocpp/select_client_certificate_callback_ctocpp.h 24202index bf055d8cb8..d3d36a9fcb 100644 24203--- a/cef/libcef_dll/ctocpp/select_client_certificate_callback_ctocpp.h 24204+++ b/cef/libcef_dll/ctocpp/select_client_certificate_callback_ctocpp.h 24205@@ -1,4 +1,4 @@ 24206-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 24207+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 24208 // reserved. Use of this source code is governed by a BSD-style license that 24209 // can be found in the LICENSE file. 24210 // 24211@@ -9,7 +9,7 @@ 24212 // implementations. See the translator.README.txt file in the tools directory 24213 // for more information. 24214 // 24215-// $hash=868c4d33bd4776ca5f2044d2707f2a78f16bd074$ 24216+// $hash=d18f32f1cb6917a6f6e83be4321e36aad309ea8b$ 24217 // 24218 24219 #ifndef CEF_LIBCEF_DLL_CTOCPP_SELECT_CLIENT_CERTIFICATE_CALLBACK_CTOCPP_H_ 24220diff --git a/cef/libcef_dll/ctocpp/server_ctocpp.cc b/cef/libcef_dll/ctocpp/server_ctocpp.cc 24221index 1891681396..51fe2ead4b 100644 24222--- a/cef/libcef_dll/ctocpp/server_ctocpp.cc 24223+++ b/cef/libcef_dll/ctocpp/server_ctocpp.cc 24224@@ -1,4 +1,4 @@ 24225-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 24226+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 24227 // reserved. Use of this source code is governed by a BSD-style license that 24228 // can be found in the LICENSE file. 24229 // 24230@@ -9,7 +9,7 @@ 24231 // implementations. See the translator.README.txt file in the tools directory 24232 // for more information. 24233 // 24234-// $hash=080b8ca695bf378c062506977ebe001297effdb5$ 24235+// $hash=d8cfb6cafc2a9aa0cffe4a998071e8a96b04740b$ 24236 // 24237 24238 #include "libcef_dll/ctocpp/server_ctocpp.h" 24239diff --git a/cef/libcef_dll/ctocpp/server_ctocpp.h b/cef/libcef_dll/ctocpp/server_ctocpp.h 24240index 1f92857cb7..113dc4b5ff 100644 24241--- a/cef/libcef_dll/ctocpp/server_ctocpp.h 24242+++ b/cef/libcef_dll/ctocpp/server_ctocpp.h 24243@@ -1,4 +1,4 @@ 24244-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 24245+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 24246 // reserved. Use of this source code is governed by a BSD-style license that 24247 // can be found in the LICENSE file. 24248 // 24249@@ -9,7 +9,7 @@ 24250 // implementations. See the translator.README.txt file in the tools directory 24251 // for more information. 24252 // 24253-// $hash=0e1ecc65bf21127a32292fe7e84378bacbf649ed$ 24254+// $hash=0669fa6732d15e3079341843673c17f4578c3747$ 24255 // 24256 24257 #ifndef CEF_LIBCEF_DLL_CTOCPP_SERVER_CTOCPP_H_ 24258diff --git a/cef/libcef_dll/ctocpp/server_handler_ctocpp.cc b/cef/libcef_dll/ctocpp/server_handler_ctocpp.cc 24259index 217882a5f3..b82fd8f5b1 100644 24260--- a/cef/libcef_dll/ctocpp/server_handler_ctocpp.cc 24261+++ b/cef/libcef_dll/ctocpp/server_handler_ctocpp.cc 24262@@ -1,4 +1,4 @@ 24263-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 24264+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 24265 // reserved. Use of this source code is governed by a BSD-style license that 24266 // can be found in the LICENSE file. 24267 // 24268@@ -9,7 +9,7 @@ 24269 // implementations. See the translator.README.txt file in the tools directory 24270 // for more information. 24271 // 24272-// $hash=ee34f4005745102926018e7c4bdeef7fcb16ca32$ 24273+// $hash=a14c40cc86f5fd61d548d981c99c59a559619eda$ 24274 // 24275 24276 #include "libcef_dll/ctocpp/server_handler_ctocpp.h" 24277diff --git a/cef/libcef_dll/ctocpp/server_handler_ctocpp.h b/cef/libcef_dll/ctocpp/server_handler_ctocpp.h 24278index 227847b544..08df48f950 100644 24279--- a/cef/libcef_dll/ctocpp/server_handler_ctocpp.h 24280+++ b/cef/libcef_dll/ctocpp/server_handler_ctocpp.h 24281@@ -1,4 +1,4 @@ 24282-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 24283+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 24284 // reserved. Use of this source code is governed by a BSD-style license that 24285 // can be found in the LICENSE file. 24286 // 24287@@ -9,7 +9,7 @@ 24288 // implementations. See the translator.README.txt file in the tools directory 24289 // for more information. 24290 // 24291-// $hash=20281fa6c712f4f712e6371dfed2e184227ff89c$ 24292+// $hash=b9b38b204c2b9d385ebefb11aa0b45efcd684cbc$ 24293 // 24294 24295 #ifndef CEF_LIBCEF_DLL_CTOCPP_SERVER_HANDLER_CTOCPP_H_ 24296diff --git a/cef/libcef_dll/ctocpp/set_cookie_callback_ctocpp.cc b/cef/libcef_dll/ctocpp/set_cookie_callback_ctocpp.cc 24297index 53c2486cd9..63048eec4b 100644 24298--- a/cef/libcef_dll/ctocpp/set_cookie_callback_ctocpp.cc 24299+++ b/cef/libcef_dll/ctocpp/set_cookie_callback_ctocpp.cc 24300@@ -1,4 +1,4 @@ 24301-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 24302+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 24303 // reserved. Use of this source code is governed by a BSD-style license that 24304 // can be found in the LICENSE file. 24305 // 24306@@ -9,7 +9,7 @@ 24307 // implementations. See the translator.README.txt file in the tools directory 24308 // for more information. 24309 // 24310-// $hash=4dc50d118e2ee97dff3eadbb8474743c873b1b7f$ 24311+// $hash=5767c600167159c0ad3f5d10461f1bf107c668cc$ 24312 // 24313 24314 #include "libcef_dll/ctocpp/set_cookie_callback_ctocpp.h" 24315diff --git a/cef/libcef_dll/ctocpp/set_cookie_callback_ctocpp.h b/cef/libcef_dll/ctocpp/set_cookie_callback_ctocpp.h 24316index 69d695f626..f4ca2b5612 100644 24317--- a/cef/libcef_dll/ctocpp/set_cookie_callback_ctocpp.h 24318+++ b/cef/libcef_dll/ctocpp/set_cookie_callback_ctocpp.h 24319@@ -1,4 +1,4 @@ 24320-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 24321+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 24322 // reserved. Use of this source code is governed by a BSD-style license that 24323 // can be found in the LICENSE file. 24324 // 24325@@ -9,7 +9,7 @@ 24326 // implementations. See the translator.README.txt file in the tools directory 24327 // for more information. 24328 // 24329-// $hash=8c3441fdc78f2f566903a7c2dbb8660954e677cc$ 24330+// $hash=83c8143e3d126fca9a02f8e5ffa75bf99d291518$ 24331 // 24332 24333 #ifndef CEF_LIBCEF_DLL_CTOCPP_SET_COOKIE_CALLBACK_CTOCPP_H_ 24334diff --git a/cef/libcef_dll/ctocpp/sslinfo_ctocpp.cc b/cef/libcef_dll/ctocpp/sslinfo_ctocpp.cc 24335index a173d2d0f2..81512b8b69 100644 24336--- a/cef/libcef_dll/ctocpp/sslinfo_ctocpp.cc 24337+++ b/cef/libcef_dll/ctocpp/sslinfo_ctocpp.cc 24338@@ -1,4 +1,4 @@ 24339-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 24340+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 24341 // reserved. Use of this source code is governed by a BSD-style license that 24342 // can be found in the LICENSE file. 24343 // 24344@@ -9,7 +9,7 @@ 24345 // implementations. See the translator.README.txt file in the tools directory 24346 // for more information. 24347 // 24348-// $hash=ce4a97355d799789b70c90757138b5c639da55a8$ 24349+// $hash=67037943cdfae2a56924694d302a4b5697dc9a22$ 24350 // 24351 24352 #include "libcef_dll/ctocpp/sslinfo_ctocpp.h" 24353diff --git a/cef/libcef_dll/ctocpp/sslinfo_ctocpp.h b/cef/libcef_dll/ctocpp/sslinfo_ctocpp.h 24354index f3326b17fb..a0bc9e7f5b 100644 24355--- a/cef/libcef_dll/ctocpp/sslinfo_ctocpp.h 24356+++ b/cef/libcef_dll/ctocpp/sslinfo_ctocpp.h 24357@@ -1,4 +1,4 @@ 24358-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 24359+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 24360 // reserved. Use of this source code is governed by a BSD-style license that 24361 // can be found in the LICENSE file. 24362 // 24363@@ -9,7 +9,7 @@ 24364 // implementations. See the translator.README.txt file in the tools directory 24365 // for more information. 24366 // 24367-// $hash=ce3dfac0c94806a0e33ba0783482c3c3f2dada1c$ 24368+// $hash=2ed723f95adb888bd72792ea622f466d27eff641$ 24369 // 24370 24371 #ifndef CEF_LIBCEF_DLL_CTOCPP_SSLINFO_CTOCPP_H_ 24372diff --git a/cef/libcef_dll/ctocpp/sslstatus_ctocpp.cc b/cef/libcef_dll/ctocpp/sslstatus_ctocpp.cc 24373index cf40a1c9b9..b0392d95c4 100644 24374--- a/cef/libcef_dll/ctocpp/sslstatus_ctocpp.cc 24375+++ b/cef/libcef_dll/ctocpp/sslstatus_ctocpp.cc 24376@@ -1,4 +1,4 @@ 24377-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 24378+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 24379 // reserved. Use of this source code is governed by a BSD-style license that 24380 // can be found in the LICENSE file. 24381 // 24382@@ -9,7 +9,7 @@ 24383 // implementations. See the translator.README.txt file in the tools directory 24384 // for more information. 24385 // 24386-// $hash=037e9e9e94f032a78fa6b2f870b1959b3c41a854$ 24387+// $hash=18492d14d83b0dfd272ddd9dd95a2fc292bf8904$ 24388 // 24389 24390 #include "libcef_dll/ctocpp/sslstatus_ctocpp.h" 24391diff --git a/cef/libcef_dll/ctocpp/sslstatus_ctocpp.h b/cef/libcef_dll/ctocpp/sslstatus_ctocpp.h 24392index 246fb8c0f1..66a1b4e238 100644 24393--- a/cef/libcef_dll/ctocpp/sslstatus_ctocpp.h 24394+++ b/cef/libcef_dll/ctocpp/sslstatus_ctocpp.h 24395@@ -1,4 +1,4 @@ 24396-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 24397+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 24398 // reserved. Use of this source code is governed by a BSD-style license that 24399 // can be found in the LICENSE file. 24400 // 24401@@ -9,7 +9,7 @@ 24402 // implementations. See the translator.README.txt file in the tools directory 24403 // for more information. 24404 // 24405-// $hash=a3876890dd91d430af51c1f0ce639e8449453bc3$ 24406+// $hash=36e17cab076ba840f97b3c90045548b2d47c0c3a$ 24407 // 24408 24409 #ifndef CEF_LIBCEF_DLL_CTOCPP_SSLSTATUS_CTOCPP_H_ 24410diff --git a/cef/libcef_dll/ctocpp/stream_reader_ctocpp.cc b/cef/libcef_dll/ctocpp/stream_reader_ctocpp.cc 24411index 92a009d4a8..522ebdea88 100644 24412--- a/cef/libcef_dll/ctocpp/stream_reader_ctocpp.cc 24413+++ b/cef/libcef_dll/ctocpp/stream_reader_ctocpp.cc 24414@@ -1,4 +1,4 @@ 24415-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 24416+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 24417 // reserved. Use of this source code is governed by a BSD-style license that 24418 // can be found in the LICENSE file. 24419 // 24420@@ -9,7 +9,7 @@ 24421 // implementations. See the translator.README.txt file in the tools directory 24422 // for more information. 24423 // 24424-// $hash=8f50e68fb34d73fef8f33ce31423ac74bbd4841b$ 24425+// $hash=964179bd73f8b5fa8d8adbd955deb7e720caaca7$ 24426 // 24427 24428 #include "libcef_dll/ctocpp/stream_reader_ctocpp.h" 24429diff --git a/cef/libcef_dll/ctocpp/stream_reader_ctocpp.h b/cef/libcef_dll/ctocpp/stream_reader_ctocpp.h 24430index cb25318df3..8aa36e1e84 100644 24431--- a/cef/libcef_dll/ctocpp/stream_reader_ctocpp.h 24432+++ b/cef/libcef_dll/ctocpp/stream_reader_ctocpp.h 24433@@ -1,4 +1,4 @@ 24434-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 24435+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 24436 // reserved. Use of this source code is governed by a BSD-style license that 24437 // can be found in the LICENSE file. 24438 // 24439@@ -9,7 +9,7 @@ 24440 // implementations. See the translator.README.txt file in the tools directory 24441 // for more information. 24442 // 24443-// $hash=9e52f14c3559e2cc88c422105b9cea12a5be65b9$ 24444+// $hash=9797745dea00aea7c768c2ed96c6c05af8053d20$ 24445 // 24446 24447 #ifndef CEF_LIBCEF_DLL_CTOCPP_STREAM_READER_CTOCPP_H_ 24448diff --git a/cef/libcef_dll/ctocpp/stream_writer_ctocpp.cc b/cef/libcef_dll/ctocpp/stream_writer_ctocpp.cc 24449index f43660df52..d11649c31b 100644 24450--- a/cef/libcef_dll/ctocpp/stream_writer_ctocpp.cc 24451+++ b/cef/libcef_dll/ctocpp/stream_writer_ctocpp.cc 24452@@ -1,4 +1,4 @@ 24453-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 24454+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 24455 // reserved. Use of this source code is governed by a BSD-style license that 24456 // can be found in the LICENSE file. 24457 // 24458@@ -9,7 +9,7 @@ 24459 // implementations. See the translator.README.txt file in the tools directory 24460 // for more information. 24461 // 24462-// $hash=f79416c520b2744118ca54319dc1ce0d57ca10b8$ 24463+// $hash=e32b4745b887e33f589cb04e8b46a7317686e4c2$ 24464 // 24465 24466 #include "libcef_dll/ctocpp/stream_writer_ctocpp.h" 24467diff --git a/cef/libcef_dll/ctocpp/stream_writer_ctocpp.h b/cef/libcef_dll/ctocpp/stream_writer_ctocpp.h 24468index 7ef7648650..40eee3aaf9 100644 24469--- a/cef/libcef_dll/ctocpp/stream_writer_ctocpp.h 24470+++ b/cef/libcef_dll/ctocpp/stream_writer_ctocpp.h 24471@@ -1,4 +1,4 @@ 24472-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 24473+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 24474 // reserved. Use of this source code is governed by a BSD-style license that 24475 // can be found in the LICENSE file. 24476 // 24477@@ -9,7 +9,7 @@ 24478 // implementations. See the translator.README.txt file in the tools directory 24479 // for more information. 24480 // 24481-// $hash=35633443453d19b5089b4bfa493b42f1497064f6$ 24482+// $hash=7aca7e4794048577217de35c3a8eab52ab4ab9b7$ 24483 // 24484 24485 #ifndef CEF_LIBCEF_DLL_CTOCPP_STREAM_WRITER_CTOCPP_H_ 24486diff --git a/cef/libcef_dll/ctocpp/string_visitor_ctocpp.cc b/cef/libcef_dll/ctocpp/string_visitor_ctocpp.cc 24487index 55279345da..c1ece7b76f 100644 24488--- a/cef/libcef_dll/ctocpp/string_visitor_ctocpp.cc 24489+++ b/cef/libcef_dll/ctocpp/string_visitor_ctocpp.cc 24490@@ -1,4 +1,4 @@ 24491-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 24492+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 24493 // reserved. Use of this source code is governed by a BSD-style license that 24494 // can be found in the LICENSE file. 24495 // 24496@@ -9,7 +9,7 @@ 24497 // implementations. See the translator.README.txt file in the tools directory 24498 // for more information. 24499 // 24500-// $hash=f9a94b45084ce5da324706dcc36605d478e200b3$ 24501+// $hash=97c52e0e29be9e4452825fb57d4014221c537baa$ 24502 // 24503 24504 #include "libcef_dll/ctocpp/string_visitor_ctocpp.h" 24505diff --git a/cef/libcef_dll/ctocpp/string_visitor_ctocpp.h b/cef/libcef_dll/ctocpp/string_visitor_ctocpp.h 24506index bf57acd90c..c107e783ea 100644 24507--- a/cef/libcef_dll/ctocpp/string_visitor_ctocpp.h 24508+++ b/cef/libcef_dll/ctocpp/string_visitor_ctocpp.h 24509@@ -1,4 +1,4 @@ 24510-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 24511+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 24512 // reserved. Use of this source code is governed by a BSD-style license that 24513 // can be found in the LICENSE file. 24514 // 24515@@ -9,7 +9,7 @@ 24516 // implementations. See the translator.README.txt file in the tools directory 24517 // for more information. 24518 // 24519-// $hash=f9e763cd2d5babce18e4584c315ee279bb2ed7c5$ 24520+// $hash=470dd514d2a3091216588819ee28296424649b57$ 24521 // 24522 24523 #ifndef CEF_LIBCEF_DLL_CTOCPP_STRING_VISITOR_CTOCPP_H_ 24524diff --git a/cef/libcef_dll/ctocpp/task_ctocpp.cc b/cef/libcef_dll/ctocpp/task_ctocpp.cc 24525index 1909003d20..d621f77995 100644 24526--- a/cef/libcef_dll/ctocpp/task_ctocpp.cc 24527+++ b/cef/libcef_dll/ctocpp/task_ctocpp.cc 24528@@ -1,4 +1,4 @@ 24529-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 24530+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 24531 // reserved. Use of this source code is governed by a BSD-style license that 24532 // can be found in the LICENSE file. 24533 // 24534@@ -9,7 +9,7 @@ 24535 // implementations. See the translator.README.txt file in the tools directory 24536 // for more information. 24537 // 24538-// $hash=9e0bf935d4cb59b78ea08501b990ba401a3bc4fd$ 24539+// $hash=b99582b454aa33c5e9b2fa3f891ed0754621c377$ 24540 // 24541 24542 #include "libcef_dll/ctocpp/task_ctocpp.h" 24543diff --git a/cef/libcef_dll/ctocpp/task_ctocpp.h b/cef/libcef_dll/ctocpp/task_ctocpp.h 24544index 58d24bafb2..0fdb427d2e 100644 24545--- a/cef/libcef_dll/ctocpp/task_ctocpp.h 24546+++ b/cef/libcef_dll/ctocpp/task_ctocpp.h 24547@@ -1,4 +1,4 @@ 24548-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 24549+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 24550 // reserved. Use of this source code is governed by a BSD-style license that 24551 // can be found in the LICENSE file. 24552 // 24553@@ -9,7 +9,7 @@ 24554 // implementations. See the translator.README.txt file in the tools directory 24555 // for more information. 24556 // 24557-// $hash=cdf9967908bbc36202fab5804cf12566f3743527$ 24558+// $hash=ec78aa696165cd02a3b7f19e877b89d58518d5ad$ 24559 // 24560 24561 #ifndef CEF_LIBCEF_DLL_CTOCPP_TASK_CTOCPP_H_ 24562diff --git a/cef/libcef_dll/ctocpp/task_runner_ctocpp.cc b/cef/libcef_dll/ctocpp/task_runner_ctocpp.cc 24563index 449335bd2f..89bf91e95c 100644 24564--- a/cef/libcef_dll/ctocpp/task_runner_ctocpp.cc 24565+++ b/cef/libcef_dll/ctocpp/task_runner_ctocpp.cc 24566@@ -1,4 +1,4 @@ 24567-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 24568+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 24569 // reserved. Use of this source code is governed by a BSD-style license that 24570 // can be found in the LICENSE file. 24571 // 24572@@ -9,7 +9,7 @@ 24573 // implementations. See the translator.README.txt file in the tools directory 24574 // for more information. 24575 // 24576-// $hash=f103c70132477cac5ba83a5a5a33d73d94fb84c0$ 24577+// $hash=c4e54b985b45c9cf57f70a3c560fb1d6c5230f9a$ 24578 // 24579 24580 #include "libcef_dll/ctocpp/task_runner_ctocpp.h" 24581diff --git a/cef/libcef_dll/ctocpp/task_runner_ctocpp.h b/cef/libcef_dll/ctocpp/task_runner_ctocpp.h 24582index d5e031e973..02fd8ed932 100644 24583--- a/cef/libcef_dll/ctocpp/task_runner_ctocpp.h 24584+++ b/cef/libcef_dll/ctocpp/task_runner_ctocpp.h 24585@@ -1,4 +1,4 @@ 24586-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 24587+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 24588 // reserved. Use of this source code is governed by a BSD-style license that 24589 // can be found in the LICENSE file. 24590 // 24591@@ -9,7 +9,7 @@ 24592 // implementations. See the translator.README.txt file in the tools directory 24593 // for more information. 24594 // 24595-// $hash=2f61617ce59c2fe7ac1ad6f9944646ca712931cf$ 24596+// $hash=ed29a7e48a3c44c14ad26a22fe2dbd595a253724$ 24597 // 24598 24599 #ifndef CEF_LIBCEF_DLL_CTOCPP_TASK_RUNNER_CTOCPP_H_ 24600diff --git a/cef/libcef_dll/ctocpp/test/translator_test_ctocpp.cc b/cef/libcef_dll/ctocpp/test/translator_test_ctocpp.cc 24601index af3527075f..2c354cd6ee 100644 24602--- a/cef/libcef_dll/ctocpp/test/translator_test_ctocpp.cc 24603+++ b/cef/libcef_dll/ctocpp/test/translator_test_ctocpp.cc 24604@@ -1,4 +1,4 @@ 24605-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 24606+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 24607 // reserved. Use of this source code is governed by a BSD-style license that 24608 // can be found in the LICENSE file. 24609 // 24610@@ -9,7 +9,7 @@ 24611 // implementations. See the translator.README.txt file in the tools directory 24612 // for more information. 24613 // 24614-// $hash=ff27c226ced0b2651b858eadea688d164dfa777e$ 24615+// $hash=43f755239342406e0300dc9508b0c52a8a6fe8e8$ 24616 // 24617 24618 #include "libcef_dll/ctocpp/test/translator_test_ctocpp.h" 24619diff --git a/cef/libcef_dll/ctocpp/test/translator_test_ctocpp.h b/cef/libcef_dll/ctocpp/test/translator_test_ctocpp.h 24620index 9a2ff9e3fe..01596482ff 100644 24621--- a/cef/libcef_dll/ctocpp/test/translator_test_ctocpp.h 24622+++ b/cef/libcef_dll/ctocpp/test/translator_test_ctocpp.h 24623@@ -1,4 +1,4 @@ 24624-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 24625+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 24626 // reserved. Use of this source code is governed by a BSD-style license that 24627 // can be found in the LICENSE file. 24628 // 24629@@ -9,7 +9,7 @@ 24630 // implementations. See the translator.README.txt file in the tools directory 24631 // for more information. 24632 // 24633-// $hash=db05a06c80f30f0d25b2eec12b50bbf0310e36fb$ 24634+// $hash=b58ddca240db2fb0fc1bdedf70c64b7b21f30e69$ 24635 // 24636 24637 #ifndef CEF_LIBCEF_DLL_CTOCPP_TEST_TRANSLATOR_TEST_CTOCPP_H_ 24638diff --git a/cef/libcef_dll/ctocpp/test/translator_test_ref_ptr_client_child_ctocpp.cc b/cef/libcef_dll/ctocpp/test/translator_test_ref_ptr_client_child_ctocpp.cc 24639index 2d89e7ac7b..89c9f27dba 100644 24640--- a/cef/libcef_dll/ctocpp/test/translator_test_ref_ptr_client_child_ctocpp.cc 24641+++ b/cef/libcef_dll/ctocpp/test/translator_test_ref_ptr_client_child_ctocpp.cc 24642@@ -1,4 +1,4 @@ 24643-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 24644+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 24645 // reserved. Use of this source code is governed by a BSD-style license that 24646 // can be found in the LICENSE file. 24647 // 24648@@ -9,7 +9,7 @@ 24649 // implementations. See the translator.README.txt file in the tools directory 24650 // for more information. 24651 // 24652-// $hash=a92a6f312228d01293ecb6197e7105d8f1c9fc19$ 24653+// $hash=6aacf410858db1defe08179c985f4466fca2751f$ 24654 // 24655 24656 #include "libcef_dll/ctocpp/test/translator_test_ref_ptr_client_child_ctocpp.h" 24657diff --git a/cef/libcef_dll/ctocpp/test/translator_test_ref_ptr_client_child_ctocpp.h b/cef/libcef_dll/ctocpp/test/translator_test_ref_ptr_client_child_ctocpp.h 24658index 62bc2be0af..944ad33402 100644 24659--- a/cef/libcef_dll/ctocpp/test/translator_test_ref_ptr_client_child_ctocpp.h 24660+++ b/cef/libcef_dll/ctocpp/test/translator_test_ref_ptr_client_child_ctocpp.h 24661@@ -1,4 +1,4 @@ 24662-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 24663+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 24664 // reserved. Use of this source code is governed by a BSD-style license that 24665 // can be found in the LICENSE file. 24666 // 24667@@ -9,7 +9,7 @@ 24668 // implementations. See the translator.README.txt file in the tools directory 24669 // for more information. 24670 // 24671-// $hash=451ca857138ff1d4540a0626549f9ecb0b391e59$ 24672+// $hash=f3c4158147b008b8fff038ff6f731419a9950c4d$ 24673 // 24674 24675 #ifndef CEF_LIBCEF_DLL_CTOCPP_TEST_TRANSLATOR_TEST_REF_PTR_CLIENT_CHILD_CTOCPP_H_ 24676diff --git a/cef/libcef_dll/ctocpp/test/translator_test_ref_ptr_client_ctocpp.cc b/cef/libcef_dll/ctocpp/test/translator_test_ref_ptr_client_ctocpp.cc 24677index 0720373300..014e615300 100644 24678--- a/cef/libcef_dll/ctocpp/test/translator_test_ref_ptr_client_ctocpp.cc 24679+++ b/cef/libcef_dll/ctocpp/test/translator_test_ref_ptr_client_ctocpp.cc 24680@@ -1,4 +1,4 @@ 24681-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 24682+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 24683 // reserved. Use of this source code is governed by a BSD-style license that 24684 // can be found in the LICENSE file. 24685 // 24686@@ -9,7 +9,7 @@ 24687 // implementations. See the translator.README.txt file in the tools directory 24688 // for more information. 24689 // 24690-// $hash=3e4c3d73f50654bf23ff5e23ec18102818f60f00$ 24691+// $hash=ca187683ddab3822fcf3d957c76ed27db6e8e433$ 24692 // 24693 24694 #include "libcef_dll/ctocpp/test/translator_test_ref_ptr_client_ctocpp.h" 24695diff --git a/cef/libcef_dll/ctocpp/test/translator_test_ref_ptr_client_ctocpp.h b/cef/libcef_dll/ctocpp/test/translator_test_ref_ptr_client_ctocpp.h 24696index ab2970c1da..0c06f5828d 100644 24697--- a/cef/libcef_dll/ctocpp/test/translator_test_ref_ptr_client_ctocpp.h 24698+++ b/cef/libcef_dll/ctocpp/test/translator_test_ref_ptr_client_ctocpp.h 24699@@ -1,4 +1,4 @@ 24700-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 24701+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 24702 // reserved. Use of this source code is governed by a BSD-style license that 24703 // can be found in the LICENSE file. 24704 // 24705@@ -9,7 +9,7 @@ 24706 // implementations. See the translator.README.txt file in the tools directory 24707 // for more information. 24708 // 24709-// $hash=c4901e13820abd27a4ac5e9a67a9a94f08ca8a11$ 24710+// $hash=2e2a98039972801804b3b4d7b1d1220406489ad3$ 24711 // 24712 24713 #ifndef CEF_LIBCEF_DLL_CTOCPP_TEST_TRANSLATOR_TEST_REF_PTR_CLIENT_CTOCPP_H_ 24714diff --git a/cef/libcef_dll/ctocpp/test/translator_test_ref_ptr_library_child_child_ctocpp.cc b/cef/libcef_dll/ctocpp/test/translator_test_ref_ptr_library_child_child_ctocpp.cc 24715index a4f56c3051..8713b04d02 100644 24716--- a/cef/libcef_dll/ctocpp/test/translator_test_ref_ptr_library_child_child_ctocpp.cc 24717+++ b/cef/libcef_dll/ctocpp/test/translator_test_ref_ptr_library_child_child_ctocpp.cc 24718@@ -1,4 +1,4 @@ 24719-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 24720+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 24721 // reserved. Use of this source code is governed by a BSD-style license that 24722 // can be found in the LICENSE file. 24723 // 24724@@ -9,7 +9,7 @@ 24725 // implementations. See the translator.README.txt file in the tools directory 24726 // for more information. 24727 // 24728-// $hash=86fc8175e83449b99699a879e1b2a9279058704f$ 24729+// $hash=5e599a9605e47372695d89a86eab37827e5971f2$ 24730 // 24731 24732 #include "libcef_dll/ctocpp/test/translator_test_ref_ptr_library_child_child_ctocpp.h" 24733diff --git a/cef/libcef_dll/ctocpp/test/translator_test_ref_ptr_library_child_child_ctocpp.h b/cef/libcef_dll/ctocpp/test/translator_test_ref_ptr_library_child_child_ctocpp.h 24734index 3599497403..b404a984d3 100644 24735--- a/cef/libcef_dll/ctocpp/test/translator_test_ref_ptr_library_child_child_ctocpp.h 24736+++ b/cef/libcef_dll/ctocpp/test/translator_test_ref_ptr_library_child_child_ctocpp.h 24737@@ -1,4 +1,4 @@ 24738-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 24739+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 24740 // reserved. Use of this source code is governed by a BSD-style license that 24741 // can be found in the LICENSE file. 24742 // 24743@@ -9,7 +9,7 @@ 24744 // implementations. See the translator.README.txt file in the tools directory 24745 // for more information. 24746 // 24747-// $hash=6a66e2e38975072adf919a3b585ce94b254a7639$ 24748+// $hash=6879832c76fd2d8c82259db714adac84c71d8913$ 24749 // 24750 24751 #ifndef CEF_LIBCEF_DLL_CTOCPP_TEST_TRANSLATOR_TEST_REF_PTR_LIBRARY_CHILD_CHILD_CTOCPP_H_ 24752diff --git a/cef/libcef_dll/ctocpp/test/translator_test_ref_ptr_library_child_ctocpp.cc b/cef/libcef_dll/ctocpp/test/translator_test_ref_ptr_library_child_ctocpp.cc 24753index a4b1f2f7c3..de345e9eed 100644 24754--- a/cef/libcef_dll/ctocpp/test/translator_test_ref_ptr_library_child_ctocpp.cc 24755+++ b/cef/libcef_dll/ctocpp/test/translator_test_ref_ptr_library_child_ctocpp.cc 24756@@ -1,4 +1,4 @@ 24757-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 24758+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 24759 // reserved. Use of this source code is governed by a BSD-style license that 24760 // can be found in the LICENSE file. 24761 // 24762@@ -9,7 +9,7 @@ 24763 // implementations. See the translator.README.txt file in the tools directory 24764 // for more information. 24765 // 24766-// $hash=b5974d668995480f482832f5e64c212b82c715d1$ 24767+// $hash=8559b9fd1e73bb91333d687174f5730e67f1f0f2$ 24768 // 24769 24770 #include "libcef_dll/ctocpp/test/translator_test_ref_ptr_library_child_ctocpp.h" 24771diff --git a/cef/libcef_dll/ctocpp/test/translator_test_ref_ptr_library_child_ctocpp.h b/cef/libcef_dll/ctocpp/test/translator_test_ref_ptr_library_child_ctocpp.h 24772index 4e44691bc8..36cf35a8f8 100644 24773--- a/cef/libcef_dll/ctocpp/test/translator_test_ref_ptr_library_child_ctocpp.h 24774+++ b/cef/libcef_dll/ctocpp/test/translator_test_ref_ptr_library_child_ctocpp.h 24775@@ -1,4 +1,4 @@ 24776-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 24777+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 24778 // reserved. Use of this source code is governed by a BSD-style license that 24779 // can be found in the LICENSE file. 24780 // 24781@@ -9,7 +9,7 @@ 24782 // implementations. See the translator.README.txt file in the tools directory 24783 // for more information. 24784 // 24785-// $hash=0d111f8f1933fc569fa28128a85c269fb6b0e173$ 24786+// $hash=0fad7ec9b17e6ccd0af8f32290745438e1c11b91$ 24787 // 24788 24789 #ifndef CEF_LIBCEF_DLL_CTOCPP_TEST_TRANSLATOR_TEST_REF_PTR_LIBRARY_CHILD_CTOCPP_H_ 24790diff --git a/cef/libcef_dll/ctocpp/test/translator_test_ref_ptr_library_ctocpp.cc b/cef/libcef_dll/ctocpp/test/translator_test_ref_ptr_library_ctocpp.cc 24791index 0f681f8f2d..52a05afcb8 100644 24792--- a/cef/libcef_dll/ctocpp/test/translator_test_ref_ptr_library_ctocpp.cc 24793+++ b/cef/libcef_dll/ctocpp/test/translator_test_ref_ptr_library_ctocpp.cc 24794@@ -1,4 +1,4 @@ 24795-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 24796+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 24797 // reserved. Use of this source code is governed by a BSD-style license that 24798 // can be found in the LICENSE file. 24799 // 24800@@ -9,7 +9,7 @@ 24801 // implementations. See the translator.README.txt file in the tools directory 24802 // for more information. 24803 // 24804-// $hash=3885a1c1f273b7a7558fbd3128636b9cfa23b791$ 24805+// $hash=f320ce71f5396e28767dfdb2292c87a8c2396cf8$ 24806 // 24807 24808 #include "libcef_dll/ctocpp/test/translator_test_ref_ptr_library_ctocpp.h" 24809diff --git a/cef/libcef_dll/ctocpp/test/translator_test_ref_ptr_library_ctocpp.h b/cef/libcef_dll/ctocpp/test/translator_test_ref_ptr_library_ctocpp.h 24810index 28d51db42a..847b296fc4 100644 24811--- a/cef/libcef_dll/ctocpp/test/translator_test_ref_ptr_library_ctocpp.h 24812+++ b/cef/libcef_dll/ctocpp/test/translator_test_ref_ptr_library_ctocpp.h 24813@@ -1,4 +1,4 @@ 24814-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 24815+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 24816 // reserved. Use of this source code is governed by a BSD-style license that 24817 // can be found in the LICENSE file. 24818 // 24819@@ -9,7 +9,7 @@ 24820 // implementations. See the translator.README.txt file in the tools directory 24821 // for more information. 24822 // 24823-// $hash=abede61a749b1cbb1f546918c32601cb707a6ed7$ 24824+// $hash=7e04728098bdaabddebe04874ee5b90acc87109b$ 24825 // 24826 24827 #ifndef CEF_LIBCEF_DLL_CTOCPP_TEST_TRANSLATOR_TEST_REF_PTR_LIBRARY_CTOCPP_H_ 24828diff --git a/cef/libcef_dll/ctocpp/test/translator_test_scoped_client_child_ctocpp.cc b/cef/libcef_dll/ctocpp/test/translator_test_scoped_client_child_ctocpp.cc 24829index 650cbf185c..2d9a98250d 100644 24830--- a/cef/libcef_dll/ctocpp/test/translator_test_scoped_client_child_ctocpp.cc 24831+++ b/cef/libcef_dll/ctocpp/test/translator_test_scoped_client_child_ctocpp.cc 24832@@ -1,4 +1,4 @@ 24833-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 24834+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 24835 // reserved. Use of this source code is governed by a BSD-style license that 24836 // can be found in the LICENSE file. 24837 // 24838@@ -9,7 +9,7 @@ 24839 // implementations. See the translator.README.txt file in the tools directory 24840 // for more information. 24841 // 24842-// $hash=1750bdef7a5b01b56a7c7bd34aeb22994434f436$ 24843+// $hash=fa5ba1bf14400032e49a447b7fe9dbe9cf1ba397$ 24844 // 24845 24846 #include "libcef_dll/ctocpp/test/translator_test_scoped_client_child_ctocpp.h" 24847diff --git a/cef/libcef_dll/ctocpp/test/translator_test_scoped_client_child_ctocpp.h b/cef/libcef_dll/ctocpp/test/translator_test_scoped_client_child_ctocpp.h 24848index 6bb32d555c..7476a3f9cf 100644 24849--- a/cef/libcef_dll/ctocpp/test/translator_test_scoped_client_child_ctocpp.h 24850+++ b/cef/libcef_dll/ctocpp/test/translator_test_scoped_client_child_ctocpp.h 24851@@ -1,4 +1,4 @@ 24852-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 24853+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 24854 // reserved. Use of this source code is governed by a BSD-style license that 24855 // can be found in the LICENSE file. 24856 // 24857@@ -9,7 +9,7 @@ 24858 // implementations. See the translator.README.txt file in the tools directory 24859 // for more information. 24860 // 24861-// $hash=572919914dd3e3c22d62a34c203ca73831cdb732$ 24862+// $hash=4ab24d3002067939ef0106a8686ca59559b2270e$ 24863 // 24864 24865 #ifndef CEF_LIBCEF_DLL_CTOCPP_TEST_TRANSLATOR_TEST_SCOPED_CLIENT_CHILD_CTOCPP_H_ 24866diff --git a/cef/libcef_dll/ctocpp/test/translator_test_scoped_client_ctocpp.cc b/cef/libcef_dll/ctocpp/test/translator_test_scoped_client_ctocpp.cc 24867index c32a2f90aa..431593d8bb 100644 24868--- a/cef/libcef_dll/ctocpp/test/translator_test_scoped_client_ctocpp.cc 24869+++ b/cef/libcef_dll/ctocpp/test/translator_test_scoped_client_ctocpp.cc 24870@@ -1,4 +1,4 @@ 24871-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 24872+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 24873 // reserved. Use of this source code is governed by a BSD-style license that 24874 // can be found in the LICENSE file. 24875 // 24876@@ -9,7 +9,7 @@ 24877 // implementations. See the translator.README.txt file in the tools directory 24878 // for more information. 24879 // 24880-// $hash=bfa7d52202c1d09dfa86e05df4f60f3b9264e19c$ 24881+// $hash=47bbdadfb28bf00824856270be679932f99df645$ 24882 // 24883 24884 #include "libcef_dll/ctocpp/test/translator_test_scoped_client_ctocpp.h" 24885diff --git a/cef/libcef_dll/ctocpp/test/translator_test_scoped_client_ctocpp.h b/cef/libcef_dll/ctocpp/test/translator_test_scoped_client_ctocpp.h 24886index 1f384e914a..8ca713b78e 100644 24887--- a/cef/libcef_dll/ctocpp/test/translator_test_scoped_client_ctocpp.h 24888+++ b/cef/libcef_dll/ctocpp/test/translator_test_scoped_client_ctocpp.h 24889@@ -1,4 +1,4 @@ 24890-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 24891+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 24892 // reserved. Use of this source code is governed by a BSD-style license that 24893 // can be found in the LICENSE file. 24894 // 24895@@ -9,7 +9,7 @@ 24896 // implementations. See the translator.README.txt file in the tools directory 24897 // for more information. 24898 // 24899-// $hash=d5b70ad6c7c25b3edfefd8f058d814943ed386d0$ 24900+// $hash=d0a9d6ca17834c09fbd63e06ebb38c337dc64f62$ 24901 // 24902 24903 #ifndef CEF_LIBCEF_DLL_CTOCPP_TEST_TRANSLATOR_TEST_SCOPED_CLIENT_CTOCPP_H_ 24904diff --git a/cef/libcef_dll/ctocpp/test/translator_test_scoped_library_child_child_ctocpp.cc b/cef/libcef_dll/ctocpp/test/translator_test_scoped_library_child_child_ctocpp.cc 24905index cd5e9f8308..491addae2c 100644 24906--- a/cef/libcef_dll/ctocpp/test/translator_test_scoped_library_child_child_ctocpp.cc 24907+++ b/cef/libcef_dll/ctocpp/test/translator_test_scoped_library_child_child_ctocpp.cc 24908@@ -1,4 +1,4 @@ 24909-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 24910+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 24911 // reserved. Use of this source code is governed by a BSD-style license that 24912 // can be found in the LICENSE file. 24913 // 24914@@ -9,7 +9,7 @@ 24915 // implementations. See the translator.README.txt file in the tools directory 24916 // for more information. 24917 // 24918-// $hash=ede3c78c823b9db15c86b9e25dd666a516237541$ 24919+// $hash=2663f92f7373738d13ee8d194684e6f818afa950$ 24920 // 24921 24922 #include "libcef_dll/ctocpp/test/translator_test_scoped_library_child_child_ctocpp.h" 24923diff --git a/cef/libcef_dll/ctocpp/test/translator_test_scoped_library_child_child_ctocpp.h b/cef/libcef_dll/ctocpp/test/translator_test_scoped_library_child_child_ctocpp.h 24924index a8215a9fe4..ef6f048ff8 100644 24925--- a/cef/libcef_dll/ctocpp/test/translator_test_scoped_library_child_child_ctocpp.h 24926+++ b/cef/libcef_dll/ctocpp/test/translator_test_scoped_library_child_child_ctocpp.h 24927@@ -1,4 +1,4 @@ 24928-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 24929+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 24930 // reserved. Use of this source code is governed by a BSD-style license that 24931 // can be found in the LICENSE file. 24932 // 24933@@ -9,7 +9,7 @@ 24934 // implementations. See the translator.README.txt file in the tools directory 24935 // for more information. 24936 // 24937-// $hash=3cbadd1fe76cfdd2cdc69bf74ef5cecded4678a0$ 24938+// $hash=f79248bfdf3bf130b2bef7e2f7d682cfb01bf315$ 24939 // 24940 24941 #ifndef CEF_LIBCEF_DLL_CTOCPP_TEST_TRANSLATOR_TEST_SCOPED_LIBRARY_CHILD_CHILD_CTOCPP_H_ 24942diff --git a/cef/libcef_dll/ctocpp/test/translator_test_scoped_library_child_ctocpp.cc b/cef/libcef_dll/ctocpp/test/translator_test_scoped_library_child_ctocpp.cc 24943index aed7fc4549..4e2761c3e7 100644 24944--- a/cef/libcef_dll/ctocpp/test/translator_test_scoped_library_child_ctocpp.cc 24945+++ b/cef/libcef_dll/ctocpp/test/translator_test_scoped_library_child_ctocpp.cc 24946@@ -1,4 +1,4 @@ 24947-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 24948+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 24949 // reserved. Use of this source code is governed by a BSD-style license that 24950 // can be found in the LICENSE file. 24951 // 24952@@ -9,7 +9,7 @@ 24953 // implementations. See the translator.README.txt file in the tools directory 24954 // for more information. 24955 // 24956-// $hash=3218861c702d3419a97a3a49b87898e1afc3d55e$ 24957+// $hash=8d662be456cc9fb61fba3adfe7661079c7207444$ 24958 // 24959 24960 #include "libcef_dll/ctocpp/test/translator_test_scoped_library_child_ctocpp.h" 24961diff --git a/cef/libcef_dll/ctocpp/test/translator_test_scoped_library_child_ctocpp.h b/cef/libcef_dll/ctocpp/test/translator_test_scoped_library_child_ctocpp.h 24962index 52cd06e156..239ea596ab 100644 24963--- a/cef/libcef_dll/ctocpp/test/translator_test_scoped_library_child_ctocpp.h 24964+++ b/cef/libcef_dll/ctocpp/test/translator_test_scoped_library_child_ctocpp.h 24965@@ -1,4 +1,4 @@ 24966-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 24967+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 24968 // reserved. Use of this source code is governed by a BSD-style license that 24969 // can be found in the LICENSE file. 24970 // 24971@@ -9,7 +9,7 @@ 24972 // implementations. See the translator.README.txt file in the tools directory 24973 // for more information. 24974 // 24975-// $hash=f7643df00ccbcefbbca15979c07763502de4af2e$ 24976+// $hash=6acbb967fdae293649ef3f86fd44bb51a6bdacf1$ 24977 // 24978 24979 #ifndef CEF_LIBCEF_DLL_CTOCPP_TEST_TRANSLATOR_TEST_SCOPED_LIBRARY_CHILD_CTOCPP_H_ 24980diff --git a/cef/libcef_dll/ctocpp/test/translator_test_scoped_library_ctocpp.cc b/cef/libcef_dll/ctocpp/test/translator_test_scoped_library_ctocpp.cc 24981index 324b1d51cc..981a595cd1 100644 24982--- a/cef/libcef_dll/ctocpp/test/translator_test_scoped_library_ctocpp.cc 24983+++ b/cef/libcef_dll/ctocpp/test/translator_test_scoped_library_ctocpp.cc 24984@@ -1,4 +1,4 @@ 24985-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 24986+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 24987 // reserved. Use of this source code is governed by a BSD-style license that 24988 // can be found in the LICENSE file. 24989 // 24990@@ -9,7 +9,7 @@ 24991 // implementations. See the translator.README.txt file in the tools directory 24992 // for more information. 24993 // 24994-// $hash=93bec9c1c78c75b71ca887b790977d027f197a79$ 24995+// $hash=a064c6cc20c7399979309f9bdd471272bb37747a$ 24996 // 24997 24998 #include "libcef_dll/ctocpp/test/translator_test_scoped_library_ctocpp.h" 24999diff --git a/cef/libcef_dll/ctocpp/test/translator_test_scoped_library_ctocpp.h b/cef/libcef_dll/ctocpp/test/translator_test_scoped_library_ctocpp.h 25000index 2cbf56e9c2..f650acdbf8 100644 25001--- a/cef/libcef_dll/ctocpp/test/translator_test_scoped_library_ctocpp.h 25002+++ b/cef/libcef_dll/ctocpp/test/translator_test_scoped_library_ctocpp.h 25003@@ -1,4 +1,4 @@ 25004-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 25005+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 25006 // reserved. Use of this source code is governed by a BSD-style license that 25007 // can be found in the LICENSE file. 25008 // 25009@@ -9,7 +9,7 @@ 25010 // implementations. See the translator.README.txt file in the tools directory 25011 // for more information. 25012 // 25013-// $hash=32beea0e95a0acdbf22d552970d719382785554a$ 25014+// $hash=0935d3f5ae7629fb1c05b3fee01992af3148c15b$ 25015 // 25016 25017 #ifndef CEF_LIBCEF_DLL_CTOCPP_TEST_TRANSLATOR_TEST_SCOPED_LIBRARY_CTOCPP_H_ 25018diff --git a/cef/libcef_dll/ctocpp/thread_ctocpp.cc b/cef/libcef_dll/ctocpp/thread_ctocpp.cc 25019index 2cdfa05c20..9409fb6c2d 100644 25020--- a/cef/libcef_dll/ctocpp/thread_ctocpp.cc 25021+++ b/cef/libcef_dll/ctocpp/thread_ctocpp.cc 25022@@ -1,4 +1,4 @@ 25023-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 25024+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 25025 // reserved. Use of this source code is governed by a BSD-style license that 25026 // can be found in the LICENSE file. 25027 // 25028@@ -9,7 +9,7 @@ 25029 // implementations. See the translator.README.txt file in the tools directory 25030 // for more information. 25031 // 25032-// $hash=e5d301643a4d2a5e6af8566f30d76ecf798ddee9$ 25033+// $hash=207fe292d5fec167e20971c9948d0b183e6b3b20$ 25034 // 25035 25036 #include "libcef_dll/ctocpp/thread_ctocpp.h" 25037diff --git a/cef/libcef_dll/ctocpp/thread_ctocpp.h b/cef/libcef_dll/ctocpp/thread_ctocpp.h 25038index ce8f0ceb19..9176d2325f 100644 25039--- a/cef/libcef_dll/ctocpp/thread_ctocpp.h 25040+++ b/cef/libcef_dll/ctocpp/thread_ctocpp.h 25041@@ -1,4 +1,4 @@ 25042-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 25043+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 25044 // reserved. Use of this source code is governed by a BSD-style license that 25045 // can be found in the LICENSE file. 25046 // 25047@@ -9,7 +9,7 @@ 25048 // implementations. See the translator.README.txt file in the tools directory 25049 // for more information. 25050 // 25051-// $hash=67c710cc8e62052d841bcadb7aacc1ccddb4b54f$ 25052+// $hash=a6e88ef581ddca2825ad28105dd77f31b71c50c9$ 25053 // 25054 25055 #ifndef CEF_LIBCEF_DLL_CTOCPP_THREAD_CTOCPP_H_ 25056diff --git a/cef/libcef_dll/ctocpp/urlrequest_client_ctocpp.cc b/cef/libcef_dll/ctocpp/urlrequest_client_ctocpp.cc 25057index e112598ed2..8e6bf46caf 100644 25058--- a/cef/libcef_dll/ctocpp/urlrequest_client_ctocpp.cc 25059+++ b/cef/libcef_dll/ctocpp/urlrequest_client_ctocpp.cc 25060@@ -1,4 +1,4 @@ 25061-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 25062+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 25063 // reserved. Use of this source code is governed by a BSD-style license that 25064 // can be found in the LICENSE file. 25065 // 25066@@ -9,7 +9,7 @@ 25067 // implementations. See the translator.README.txt file in the tools directory 25068 // for more information. 25069 // 25070-// $hash=741dc4b7ad30068a5334f7aad44018dbaa4e1c29$ 25071+// $hash=54962c13fcad1a38aaad37a7dae6744090ebee97$ 25072 // 25073 25074 #include "libcef_dll/ctocpp/urlrequest_client_ctocpp.h" 25075diff --git a/cef/libcef_dll/ctocpp/urlrequest_client_ctocpp.h b/cef/libcef_dll/ctocpp/urlrequest_client_ctocpp.h 25076index 9b5ba975e7..7cef3061cc 100644 25077--- a/cef/libcef_dll/ctocpp/urlrequest_client_ctocpp.h 25078+++ b/cef/libcef_dll/ctocpp/urlrequest_client_ctocpp.h 25079@@ -1,4 +1,4 @@ 25080-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 25081+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 25082 // reserved. Use of this source code is governed by a BSD-style license that 25083 // can be found in the LICENSE file. 25084 // 25085@@ -9,7 +9,7 @@ 25086 // implementations. See the translator.README.txt file in the tools directory 25087 // for more information. 25088 // 25089-// $hash=3d73c0e6186268e2b01fdea08c6b0568a7e83531$ 25090+// $hash=31b2f537bea0b8088a861224b42c313ee87927d6$ 25091 // 25092 25093 #ifndef CEF_LIBCEF_DLL_CTOCPP_URLREQUEST_CLIENT_CTOCPP_H_ 25094diff --git a/cef/libcef_dll/ctocpp/urlrequest_ctocpp.cc b/cef/libcef_dll/ctocpp/urlrequest_ctocpp.cc 25095index 7144ad1b6a..6acd4a9cd2 100644 25096--- a/cef/libcef_dll/ctocpp/urlrequest_ctocpp.cc 25097+++ b/cef/libcef_dll/ctocpp/urlrequest_ctocpp.cc 25098@@ -1,4 +1,4 @@ 25099-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 25100+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 25101 // reserved. Use of this source code is governed by a BSD-style license that 25102 // can be found in the LICENSE file. 25103 // 25104@@ -9,7 +9,7 @@ 25105 // implementations. See the translator.README.txt file in the tools directory 25106 // for more information. 25107 // 25108-// $hash=38e348c618868d4a2d018f8d6dbb4bae36e98c6e$ 25109+// $hash=d3d0a83754df9a39d8f951ea488dd5417d20e9b2$ 25110 // 25111 25112 #include "libcef_dll/ctocpp/urlrequest_ctocpp.h" 25113diff --git a/cef/libcef_dll/ctocpp/urlrequest_ctocpp.h b/cef/libcef_dll/ctocpp/urlrequest_ctocpp.h 25114index 80ac486213..2e88c99c41 100644 25115--- a/cef/libcef_dll/ctocpp/urlrequest_ctocpp.h 25116+++ b/cef/libcef_dll/ctocpp/urlrequest_ctocpp.h 25117@@ -1,4 +1,4 @@ 25118-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 25119+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 25120 // reserved. Use of this source code is governed by a BSD-style license that 25121 // can be found in the LICENSE file. 25122 // 25123@@ -9,7 +9,7 @@ 25124 // implementations. See the translator.README.txt file in the tools directory 25125 // for more information. 25126 // 25127-// $hash=7751e600cb13017cbdfac3eae39dc7c94d2afec9$ 25128+// $hash=b35cb83be82518c5b1a9d95e3062a9748bfa1c62$ 25129 // 25130 25131 #ifndef CEF_LIBCEF_DLL_CTOCPP_URLREQUEST_CTOCPP_H_ 25132diff --git a/cef/libcef_dll/ctocpp/v8accessor_ctocpp.cc b/cef/libcef_dll/ctocpp/v8accessor_ctocpp.cc 25133index 52f291f93b..8b6fd3bd71 100644 25134--- a/cef/libcef_dll/ctocpp/v8accessor_ctocpp.cc 25135+++ b/cef/libcef_dll/ctocpp/v8accessor_ctocpp.cc 25136@@ -1,4 +1,4 @@ 25137-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 25138+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 25139 // reserved. Use of this source code is governed by a BSD-style license that 25140 // can be found in the LICENSE file. 25141 // 25142@@ -9,7 +9,7 @@ 25143 // implementations. See the translator.README.txt file in the tools directory 25144 // for more information. 25145 // 25146-// $hash=e2d3ed0d58c0888c784526deaf4d36bb04765939$ 25147+// $hash=c2815712e9960e6850bb646ba0009fe42e8a2624$ 25148 // 25149 25150 #include "libcef_dll/ctocpp/v8accessor_ctocpp.h" 25151diff --git a/cef/libcef_dll/ctocpp/v8accessor_ctocpp.h b/cef/libcef_dll/ctocpp/v8accessor_ctocpp.h 25152index 7bcd78745f..6b552a781e 100644 25153--- a/cef/libcef_dll/ctocpp/v8accessor_ctocpp.h 25154+++ b/cef/libcef_dll/ctocpp/v8accessor_ctocpp.h 25155@@ -1,4 +1,4 @@ 25156-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 25157+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 25158 // reserved. Use of this source code is governed by a BSD-style license that 25159 // can be found in the LICENSE file. 25160 // 25161@@ -9,7 +9,7 @@ 25162 // implementations. See the translator.README.txt file in the tools directory 25163 // for more information. 25164 // 25165-// $hash=b3cdc33e16cb7a55d0b249a9a7a0bd90563ce264$ 25166+// $hash=0c7b83fe013c87d35cf3c944e53ec7afef0ac11a$ 25167 // 25168 25169 #ifndef CEF_LIBCEF_DLL_CTOCPP_V8ACCESSOR_CTOCPP_H_ 25170diff --git a/cef/libcef_dll/ctocpp/v8array_buffer_release_callback_ctocpp.cc b/cef/libcef_dll/ctocpp/v8array_buffer_release_callback_ctocpp.cc 25171index dc3b820ea6..aa062aa4a6 100644 25172--- a/cef/libcef_dll/ctocpp/v8array_buffer_release_callback_ctocpp.cc 25173+++ b/cef/libcef_dll/ctocpp/v8array_buffer_release_callback_ctocpp.cc 25174@@ -1,4 +1,4 @@ 25175-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 25176+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 25177 // reserved. Use of this source code is governed by a BSD-style license that 25178 // can be found in the LICENSE file. 25179 // 25180@@ -9,7 +9,7 @@ 25181 // implementations. See the translator.README.txt file in the tools directory 25182 // for more information. 25183 // 25184-// $hash=fe202cc53e5a33730f30d401042e712da0f67aaa$ 25185+// $hash=04697e01edeb16ce60053867fa2b11d03dec3427$ 25186 // 25187 25188 #include "libcef_dll/ctocpp/v8array_buffer_release_callback_ctocpp.h" 25189diff --git a/cef/libcef_dll/ctocpp/v8array_buffer_release_callback_ctocpp.h b/cef/libcef_dll/ctocpp/v8array_buffer_release_callback_ctocpp.h 25190index 7ed88cf727..b1d10766a0 100644 25191--- a/cef/libcef_dll/ctocpp/v8array_buffer_release_callback_ctocpp.h 25192+++ b/cef/libcef_dll/ctocpp/v8array_buffer_release_callback_ctocpp.h 25193@@ -1,4 +1,4 @@ 25194-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 25195+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 25196 // reserved. Use of this source code is governed by a BSD-style license that 25197 // can be found in the LICENSE file. 25198 // 25199@@ -9,7 +9,7 @@ 25200 // implementations. See the translator.README.txt file in the tools directory 25201 // for more information. 25202 // 25203-// $hash=1711598fdde49e880b5f7cb99da4517f1d3c8f09$ 25204+// $hash=e494919a69c37ed2aa5dcd0f8ddfcbbdafba2ebb$ 25205 // 25206 25207 #ifndef CEF_LIBCEF_DLL_CTOCPP_V8ARRAY_BUFFER_RELEASE_CALLBACK_CTOCPP_H_ 25208diff --git a/cef/libcef_dll/ctocpp/v8context_ctocpp.cc b/cef/libcef_dll/ctocpp/v8context_ctocpp.cc 25209index e0dae6b3cd..d6f4bdc054 100644 25210--- a/cef/libcef_dll/ctocpp/v8context_ctocpp.cc 25211+++ b/cef/libcef_dll/ctocpp/v8context_ctocpp.cc 25212@@ -1,4 +1,4 @@ 25213-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 25214+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 25215 // reserved. Use of this source code is governed by a BSD-style license that 25216 // can be found in the LICENSE file. 25217 // 25218@@ -9,7 +9,7 @@ 25219 // implementations. See the translator.README.txt file in the tools directory 25220 // for more information. 25221 // 25222-// $hash=f35a129486c5242f3f2063b529b8c2cf97a6faed$ 25223+// $hash=8d8c4cf20f877a5eb60b47fb55d938940bb10c82$ 25224 // 25225 25226 #include "libcef_dll/ctocpp/v8context_ctocpp.h" 25227diff --git a/cef/libcef_dll/ctocpp/v8context_ctocpp.h b/cef/libcef_dll/ctocpp/v8context_ctocpp.h 25228index 08857be37c..36cd939b66 100644 25229--- a/cef/libcef_dll/ctocpp/v8context_ctocpp.h 25230+++ b/cef/libcef_dll/ctocpp/v8context_ctocpp.h 25231@@ -1,4 +1,4 @@ 25232-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 25233+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 25234 // reserved. Use of this source code is governed by a BSD-style license that 25235 // can be found in the LICENSE file. 25236 // 25237@@ -9,7 +9,7 @@ 25238 // implementations. See the translator.README.txt file in the tools directory 25239 // for more information. 25240 // 25241-// $hash=033d22b4a0516a84c2b319ee46a033af7a8009b2$ 25242+// $hash=fa43162137ab92deca52489511794e1c9cd28d0c$ 25243 // 25244 25245 #ifndef CEF_LIBCEF_DLL_CTOCPP_V8CONTEXT_CTOCPP_H_ 25246diff --git a/cef/libcef_dll/ctocpp/v8exception_ctocpp.cc b/cef/libcef_dll/ctocpp/v8exception_ctocpp.cc 25247index 78410437b8..374d81edc7 100644 25248--- a/cef/libcef_dll/ctocpp/v8exception_ctocpp.cc 25249+++ b/cef/libcef_dll/ctocpp/v8exception_ctocpp.cc 25250@@ -1,4 +1,4 @@ 25251-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 25252+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 25253 // reserved. Use of this source code is governed by a BSD-style license that 25254 // can be found in the LICENSE file. 25255 // 25256@@ -9,7 +9,7 @@ 25257 // implementations. See the translator.README.txt file in the tools directory 25258 // for more information. 25259 // 25260-// $hash=6a0c3e4e5cb161ed124b5688ce3719d44588d1b0$ 25261+// $hash=49589f2e4ad8e5598df9411f613dd717fe6a3852$ 25262 // 25263 25264 #include "libcef_dll/ctocpp/v8exception_ctocpp.h" 25265diff --git a/cef/libcef_dll/ctocpp/v8exception_ctocpp.h b/cef/libcef_dll/ctocpp/v8exception_ctocpp.h 25266index 2aefb41483..199ffda98e 100644 25267--- a/cef/libcef_dll/ctocpp/v8exception_ctocpp.h 25268+++ b/cef/libcef_dll/ctocpp/v8exception_ctocpp.h 25269@@ -1,4 +1,4 @@ 25270-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 25271+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 25272 // reserved. Use of this source code is governed by a BSD-style license that 25273 // can be found in the LICENSE file. 25274 // 25275@@ -9,7 +9,7 @@ 25276 // implementations. See the translator.README.txt file in the tools directory 25277 // for more information. 25278 // 25279-// $hash=b6fc50fa3a6e0156743a5c3fce97b1a683e1720a$ 25280+// $hash=e4e96d04ed604a7628db640e7e4cd9f219aabf03$ 25281 // 25282 25283 #ifndef CEF_LIBCEF_DLL_CTOCPP_V8EXCEPTION_CTOCPP_H_ 25284diff --git a/cef/libcef_dll/ctocpp/v8handler_ctocpp.cc b/cef/libcef_dll/ctocpp/v8handler_ctocpp.cc 25285index c97d632f61..47bc30d371 100644 25286--- a/cef/libcef_dll/ctocpp/v8handler_ctocpp.cc 25287+++ b/cef/libcef_dll/ctocpp/v8handler_ctocpp.cc 25288@@ -1,4 +1,4 @@ 25289-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 25290+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 25291 // reserved. Use of this source code is governed by a BSD-style license that 25292 // can be found in the LICENSE file. 25293 // 25294@@ -9,7 +9,7 @@ 25295 // implementations. See the translator.README.txt file in the tools directory 25296 // for more information. 25297 // 25298-// $hash=b3e0e604cd187d5b73c1bf378734214457d68311$ 25299+// $hash=365e5e2b4e3ced4e615fa504a0cb68c66854fc37$ 25300 // 25301 25302 #include "libcef_dll/ctocpp/v8handler_ctocpp.h" 25303diff --git a/cef/libcef_dll/ctocpp/v8handler_ctocpp.h b/cef/libcef_dll/ctocpp/v8handler_ctocpp.h 25304index 6d3fd3a013..f4acf3ec35 100644 25305--- a/cef/libcef_dll/ctocpp/v8handler_ctocpp.h 25306+++ b/cef/libcef_dll/ctocpp/v8handler_ctocpp.h 25307@@ -1,4 +1,4 @@ 25308-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 25309+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 25310 // reserved. Use of this source code is governed by a BSD-style license that 25311 // can be found in the LICENSE file. 25312 // 25313@@ -9,7 +9,7 @@ 25314 // implementations. See the translator.README.txt file in the tools directory 25315 // for more information. 25316 // 25317-// $hash=bc6a214c0c54093b9a8b83a5a44b192307e4b10c$ 25318+// $hash=0207510d301deece41373f5693eaed1a8fd185b8$ 25319 // 25320 25321 #ifndef CEF_LIBCEF_DLL_CTOCPP_V8HANDLER_CTOCPP_H_ 25322diff --git a/cef/libcef_dll/ctocpp/v8interceptor_ctocpp.cc b/cef/libcef_dll/ctocpp/v8interceptor_ctocpp.cc 25323index ecb1443638..32b52b1f71 100644 25324--- a/cef/libcef_dll/ctocpp/v8interceptor_ctocpp.cc 25325+++ b/cef/libcef_dll/ctocpp/v8interceptor_ctocpp.cc 25326@@ -1,4 +1,4 @@ 25327-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 25328+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 25329 // reserved. Use of this source code is governed by a BSD-style license that 25330 // can be found in the LICENSE file. 25331 // 25332@@ -9,7 +9,7 @@ 25333 // implementations. See the translator.README.txt file in the tools directory 25334 // for more information. 25335 // 25336-// $hash=f80e0608bce92dbff7e3b6377a727f4fc71ab8b2$ 25337+// $hash=d466cd3a17a35074eedcb222b9acd2063c297fe2$ 25338 // 25339 25340 #include "libcef_dll/ctocpp/v8interceptor_ctocpp.h" 25341diff --git a/cef/libcef_dll/ctocpp/v8interceptor_ctocpp.h b/cef/libcef_dll/ctocpp/v8interceptor_ctocpp.h 25342index a92c3b7722..f7e646274c 100644 25343--- a/cef/libcef_dll/ctocpp/v8interceptor_ctocpp.h 25344+++ b/cef/libcef_dll/ctocpp/v8interceptor_ctocpp.h 25345@@ -1,4 +1,4 @@ 25346-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 25347+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 25348 // reserved. Use of this source code is governed by a BSD-style license that 25349 // can be found in the LICENSE file. 25350 // 25351@@ -9,7 +9,7 @@ 25352 // implementations. See the translator.README.txt file in the tools directory 25353 // for more information. 25354 // 25355-// $hash=ec3b8546155193e09dbfad36b935d5866357c20f$ 25356+// $hash=301ccb6fb65513bc2e6197c7fa1712c5e33f2bcf$ 25357 // 25358 25359 #ifndef CEF_LIBCEF_DLL_CTOCPP_V8INTERCEPTOR_CTOCPP_H_ 25360diff --git a/cef/libcef_dll/ctocpp/v8stack_frame_ctocpp.cc b/cef/libcef_dll/ctocpp/v8stack_frame_ctocpp.cc 25361index 5b17553442..009efe1a08 100644 25362--- a/cef/libcef_dll/ctocpp/v8stack_frame_ctocpp.cc 25363+++ b/cef/libcef_dll/ctocpp/v8stack_frame_ctocpp.cc 25364@@ -1,4 +1,4 @@ 25365-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 25366+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 25367 // reserved. Use of this source code is governed by a BSD-style license that 25368 // can be found in the LICENSE file. 25369 // 25370@@ -9,7 +9,7 @@ 25371 // implementations. See the translator.README.txt file in the tools directory 25372 // for more information. 25373 // 25374-// $hash=26bac2fc65cf78053cd85f665bcd4c034fe85b07$ 25375+// $hash=5dad5940fbf85e63683112a937d47dbe52f1b64a$ 25376 // 25377 25378 #include "libcef_dll/ctocpp/v8stack_frame_ctocpp.h" 25379diff --git a/cef/libcef_dll/ctocpp/v8stack_frame_ctocpp.h b/cef/libcef_dll/ctocpp/v8stack_frame_ctocpp.h 25380index ae18bfa2f9..2837420d07 100644 25381--- a/cef/libcef_dll/ctocpp/v8stack_frame_ctocpp.h 25382+++ b/cef/libcef_dll/ctocpp/v8stack_frame_ctocpp.h 25383@@ -1,4 +1,4 @@ 25384-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 25385+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 25386 // reserved. Use of this source code is governed by a BSD-style license that 25387 // can be found in the LICENSE file. 25388 // 25389@@ -9,7 +9,7 @@ 25390 // implementations. See the translator.README.txt file in the tools directory 25391 // for more information. 25392 // 25393-// $hash=d8338dcb3a42fe51b2be32870283801bf5c3367b$ 25394+// $hash=23ccdae0421547bb56eaf433ea7c607a6bef578f$ 25395 // 25396 25397 #ifndef CEF_LIBCEF_DLL_CTOCPP_V8STACK_FRAME_CTOCPP_H_ 25398diff --git a/cef/libcef_dll/ctocpp/v8stack_trace_ctocpp.cc b/cef/libcef_dll/ctocpp/v8stack_trace_ctocpp.cc 25399index 0953a2dc18..d51002ad6b 100644 25400--- a/cef/libcef_dll/ctocpp/v8stack_trace_ctocpp.cc 25401+++ b/cef/libcef_dll/ctocpp/v8stack_trace_ctocpp.cc 25402@@ -1,4 +1,4 @@ 25403-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 25404+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 25405 // reserved. Use of this source code is governed by a BSD-style license that 25406 // can be found in the LICENSE file. 25407 // 25408@@ -9,7 +9,7 @@ 25409 // implementations. See the translator.README.txt file in the tools directory 25410 // for more information. 25411 // 25412-// $hash=8c7d2704a26a5e4a3a2916c8f338d1da55dc1159$ 25413+// $hash=bf78c133604e1535633ac8c93ca153bcefe2718d$ 25414 // 25415 25416 #include "libcef_dll/ctocpp/v8stack_trace_ctocpp.h" 25417diff --git a/cef/libcef_dll/ctocpp/v8stack_trace_ctocpp.h b/cef/libcef_dll/ctocpp/v8stack_trace_ctocpp.h 25418index 81bf42a988..e56d4b6bcd 100644 25419--- a/cef/libcef_dll/ctocpp/v8stack_trace_ctocpp.h 25420+++ b/cef/libcef_dll/ctocpp/v8stack_trace_ctocpp.h 25421@@ -1,4 +1,4 @@ 25422-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 25423+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 25424 // reserved. Use of this source code is governed by a BSD-style license that 25425 // can be found in the LICENSE file. 25426 // 25427@@ -9,7 +9,7 @@ 25428 // implementations. See the translator.README.txt file in the tools directory 25429 // for more information. 25430 // 25431-// $hash=293e9949e304f81acfd28e41be9b43000feb2bca$ 25432+// $hash=9cbeedd31def9f1e0f2e423c575ba2cef5f05400$ 25433 // 25434 25435 #ifndef CEF_LIBCEF_DLL_CTOCPP_V8STACK_TRACE_CTOCPP_H_ 25436diff --git a/cef/libcef_dll/ctocpp/v8value_ctocpp.cc b/cef/libcef_dll/ctocpp/v8value_ctocpp.cc 25437index 2ccdee0fb0..6b716896ea 100644 25438--- a/cef/libcef_dll/ctocpp/v8value_ctocpp.cc 25439+++ b/cef/libcef_dll/ctocpp/v8value_ctocpp.cc 25440@@ -1,4 +1,4 @@ 25441-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 25442+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 25443 // reserved. Use of this source code is governed by a BSD-style license that 25444 // can be found in the LICENSE file. 25445 // 25446@@ -9,7 +9,7 @@ 25447 // implementations. See the translator.README.txt file in the tools directory 25448 // for more information. 25449 // 25450-// $hash=bca752bef24a557dc0e7a958ed2fe434fc0950d4$ 25451+// $hash=7863f5701d466f8d5a5c91962e14b14b500315a3$ 25452 // 25453 25454 #include "libcef_dll/ctocpp/v8value_ctocpp.h" 25455diff --git a/cef/libcef_dll/ctocpp/v8value_ctocpp.h b/cef/libcef_dll/ctocpp/v8value_ctocpp.h 25456index ddb675fbf0..5cc7bdcc3a 100644 25457--- a/cef/libcef_dll/ctocpp/v8value_ctocpp.h 25458+++ b/cef/libcef_dll/ctocpp/v8value_ctocpp.h 25459@@ -1,4 +1,4 @@ 25460-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 25461+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 25462 // reserved. Use of this source code is governed by a BSD-style license that 25463 // can be found in the LICENSE file. 25464 // 25465@@ -9,7 +9,7 @@ 25466 // implementations. See the translator.README.txt file in the tools directory 25467 // for more information. 25468 // 25469-// $hash=910a0180e7ea517327b439aec32d6e4cede15e80$ 25470+// $hash=685b550819fe0cdb03e24bf989828b2e7cce4485$ 25471 // 25472 25473 #ifndef CEF_LIBCEF_DLL_CTOCPP_V8VALUE_CTOCPP_H_ 25474diff --git a/cef/libcef_dll/ctocpp/value_ctocpp.cc b/cef/libcef_dll/ctocpp/value_ctocpp.cc 25475index 053b27a8f9..192c9cfc2e 100644 25476--- a/cef/libcef_dll/ctocpp/value_ctocpp.cc 25477+++ b/cef/libcef_dll/ctocpp/value_ctocpp.cc 25478@@ -1,4 +1,4 @@ 25479-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 25480+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 25481 // reserved. Use of this source code is governed by a BSD-style license that 25482 // can be found in the LICENSE file. 25483 // 25484@@ -9,7 +9,7 @@ 25485 // implementations. See the translator.README.txt file in the tools directory 25486 // for more information. 25487 // 25488-// $hash=01641d605a4274ff4fd6697618469f34ccc77a7a$ 25489+// $hash=9f75af2c3d5e4411027b6f26bcc0d31728baed34$ 25490 // 25491 25492 #include "libcef_dll/ctocpp/value_ctocpp.h" 25493diff --git a/cef/libcef_dll/ctocpp/value_ctocpp.h b/cef/libcef_dll/ctocpp/value_ctocpp.h 25494index d737f67859..a424b506f9 100644 25495--- a/cef/libcef_dll/ctocpp/value_ctocpp.h 25496+++ b/cef/libcef_dll/ctocpp/value_ctocpp.h 25497@@ -1,4 +1,4 @@ 25498-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 25499+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 25500 // reserved. Use of this source code is governed by a BSD-style license that 25501 // can be found in the LICENSE file. 25502 // 25503@@ -9,7 +9,7 @@ 25504 // implementations. See the translator.README.txt file in the tools directory 25505 // for more information. 25506 // 25507-// $hash=5ade4141053ca1aa2f8c97eb4b93ab02af2aaf33$ 25508+// $hash=56d61ad314449577492010f6609feaa6ec14099d$ 25509 // 25510 25511 #ifndef CEF_LIBCEF_DLL_CTOCPP_VALUE_CTOCPP_H_ 25512diff --git a/cef/libcef_dll/ctocpp/views/box_layout_ctocpp.cc b/cef/libcef_dll/ctocpp/views/box_layout_ctocpp.cc 25513index 31fa15a29b..b8787d66c0 100644 25514--- a/cef/libcef_dll/ctocpp/views/box_layout_ctocpp.cc 25515+++ b/cef/libcef_dll/ctocpp/views/box_layout_ctocpp.cc 25516@@ -1,4 +1,4 @@ 25517-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 25518+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 25519 // reserved. Use of this source code is governed by a BSD-style license that 25520 // can be found in the LICENSE file. 25521 // 25522@@ -9,7 +9,7 @@ 25523 // implementations. See the translator.README.txt file in the tools directory 25524 // for more information. 25525 // 25526-// $hash=bf44ff25f91ee40b3e8167f6936afa9498780cc7$ 25527+// $hash=40ce0ebcedcd5995a5a3147049e5b34c016b8519$ 25528 // 25529 25530 #include "libcef_dll/ctocpp/views/box_layout_ctocpp.h" 25531diff --git a/cef/libcef_dll/ctocpp/views/box_layout_ctocpp.h b/cef/libcef_dll/ctocpp/views/box_layout_ctocpp.h 25532index 939190a71f..7462bfc1ec 100644 25533--- a/cef/libcef_dll/ctocpp/views/box_layout_ctocpp.h 25534+++ b/cef/libcef_dll/ctocpp/views/box_layout_ctocpp.h 25535@@ -1,4 +1,4 @@ 25536-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 25537+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 25538 // reserved. Use of this source code is governed by a BSD-style license that 25539 // can be found in the LICENSE file. 25540 // 25541@@ -9,7 +9,7 @@ 25542 // implementations. See the translator.README.txt file in the tools directory 25543 // for more information. 25544 // 25545-// $hash=50dddd7ad5a249b2c8cfe95d766c3294c359b288$ 25546+// $hash=566d0c9b929476e71cf8c658ed5b26b203796ca2$ 25547 // 25548 25549 #ifndef CEF_LIBCEF_DLL_CTOCPP_VIEWS_BOX_LAYOUT_CTOCPP_H_ 25550diff --git a/cef/libcef_dll/ctocpp/views/browser_view_ctocpp.cc b/cef/libcef_dll/ctocpp/views/browser_view_ctocpp.cc 25551index d2420a9f72..fbf0878b9b 100644 25552--- a/cef/libcef_dll/ctocpp/views/browser_view_ctocpp.cc 25553+++ b/cef/libcef_dll/ctocpp/views/browser_view_ctocpp.cc 25554@@ -1,4 +1,4 @@ 25555-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 25556+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 25557 // reserved. Use of this source code is governed by a BSD-style license that 25558 // can be found in the LICENSE file. 25559 // 25560@@ -9,7 +9,7 @@ 25561 // implementations. See the translator.README.txt file in the tools directory 25562 // for more information. 25563 // 25564-// $hash=912a0807db8bc1405188d61961545cc8e540aacf$ 25565+// $hash=c6708708ced4b89e1448ed8371d7cb2a7bc480f4$ 25566 // 25567 25568 #include "libcef_dll/ctocpp/views/browser_view_ctocpp.h" 25569diff --git a/cef/libcef_dll/ctocpp/views/browser_view_ctocpp.h b/cef/libcef_dll/ctocpp/views/browser_view_ctocpp.h 25570index af2222ccc2..372a997462 100644 25571--- a/cef/libcef_dll/ctocpp/views/browser_view_ctocpp.h 25572+++ b/cef/libcef_dll/ctocpp/views/browser_view_ctocpp.h 25573@@ -1,4 +1,4 @@ 25574-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 25575+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 25576 // reserved. Use of this source code is governed by a BSD-style license that 25577 // can be found in the LICENSE file. 25578 // 25579@@ -9,7 +9,7 @@ 25580 // implementations. See the translator.README.txt file in the tools directory 25581 // for more information. 25582 // 25583-// $hash=f17d395c61d650a824016d14bc06d0cb9db9a6e6$ 25584+// $hash=0e351243369daff89716c9debc5135e6827a6726$ 25585 // 25586 25587 #ifndef CEF_LIBCEF_DLL_CTOCPP_VIEWS_BROWSER_VIEW_CTOCPP_H_ 25588diff --git a/cef/libcef_dll/ctocpp/views/browser_view_delegate_ctocpp.cc b/cef/libcef_dll/ctocpp/views/browser_view_delegate_ctocpp.cc 25589index 40f6734d3f..17bcb1cdef 100644 25590--- a/cef/libcef_dll/ctocpp/views/browser_view_delegate_ctocpp.cc 25591+++ b/cef/libcef_dll/ctocpp/views/browser_view_delegate_ctocpp.cc 25592@@ -1,4 +1,4 @@ 25593-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 25594+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 25595 // reserved. Use of this source code is governed by a BSD-style license that 25596 // can be found in the LICENSE file. 25597 // 25598@@ -9,7 +9,7 @@ 25599 // implementations. See the translator.README.txt file in the tools directory 25600 // for more information. 25601 // 25602-// $hash=9aed01b6014f1c22815e7847eba321d75dbfa45d$ 25603+// $hash=a94b101b94086af801cf7ac8eff13354ba96550b$ 25604 // 25605 25606 #include "libcef_dll/ctocpp/views/browser_view_delegate_ctocpp.h" 25607@@ -75,12 +75,11 @@ void CefBrowserViewDelegateCToCpp::OnBrowserDestroyed( 25608 } 25609 25610 NO_SANITIZE("cfi-icall") 25611-CefRefPtr<CefBrowserViewDelegate> 25612-CefBrowserViewDelegateCToCpp::GetDelegateForPopupBrowserView( 25613- CefRefPtr<CefBrowserView> browser_view, 25614- const CefBrowserSettings& settings, 25615- CefRefPtr<CefClient> client, 25616- bool is_devtools) { 25617+CefRefPtr<CefBrowserViewDelegate> CefBrowserViewDelegateCToCpp:: 25618+ GetDelegateForPopupBrowserView(CefRefPtr<CefBrowserView> browser_view, 25619+ const CefBrowserSettings& settings, 25620+ CefRefPtr<CefClient> client, 25621+ bool is_devtools) { 25622 shutdown_checker::AssertNotShutdown(); 25623 25624 cef_browser_view_delegate_t* _struct = GetStruct(); 25625@@ -141,7 +140,7 @@ bool CefBrowserViewDelegateCToCpp::OnPopupBrowserViewCreated( 25626 25627 NO_SANITIZE("cfi-icall") 25628 CefBrowserViewDelegate::ChromeToolbarType 25629-CefBrowserViewDelegateCToCpp::GetChromeToolbarType() { 25630+ CefBrowserViewDelegateCToCpp::GetChromeToolbarType() { 25631 shutdown_checker::AssertNotShutdown(); 25632 25633 cef_browser_view_delegate_t* _struct = GetStruct(); 25634@@ -158,8 +157,8 @@ CefBrowserViewDelegateCToCpp::GetChromeToolbarType() { 25635 } 25636 25637 NO_SANITIZE("cfi-icall") 25638-CefSize CefBrowserViewDelegateCToCpp::GetPreferredSize( 25639- CefRefPtr<CefView> view) { 25640+CefSize 25641+ CefBrowserViewDelegateCToCpp::GetPreferredSize(CefRefPtr<CefView> view) { 25642 shutdown_checker::AssertNotShutdown(); 25643 25644 cef_view_delegate_t* _struct = 25645diff --git a/cef/libcef_dll/ctocpp/views/browser_view_delegate_ctocpp.h b/cef/libcef_dll/ctocpp/views/browser_view_delegate_ctocpp.h 25646index 371638af5e..63e3be2426 100644 25647--- a/cef/libcef_dll/ctocpp/views/browser_view_delegate_ctocpp.h 25648+++ b/cef/libcef_dll/ctocpp/views/browser_view_delegate_ctocpp.h 25649@@ -1,4 +1,4 @@ 25650-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 25651+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 25652 // reserved. Use of this source code is governed by a BSD-style license that 25653 // can be found in the LICENSE file. 25654 // 25655@@ -9,7 +9,7 @@ 25656 // implementations. See the translator.README.txt file in the tools directory 25657 // for more information. 25658 // 25659-// $hash=20b067cabc4baa4c9edecaffb38a2ebb28524ccc$ 25660+// $hash=da85fe3e18272f65134c7586cf94fd41784f9bae$ 25661 // 25662 25663 #ifndef CEF_LIBCEF_DLL_CTOCPP_VIEWS_BROWSER_VIEW_DELEGATE_CTOCPP_H_ 25664diff --git a/cef/libcef_dll/ctocpp/views/button_ctocpp.cc b/cef/libcef_dll/ctocpp/views/button_ctocpp.cc 25665index 043f41fad8..c0bad28fb8 100644 25666--- a/cef/libcef_dll/ctocpp/views/button_ctocpp.cc 25667+++ b/cef/libcef_dll/ctocpp/views/button_ctocpp.cc 25668@@ -1,4 +1,4 @@ 25669-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 25670+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 25671 // reserved. Use of this source code is governed by a BSD-style license that 25672 // can be found in the LICENSE file. 25673 // 25674@@ -9,7 +9,7 @@ 25675 // implementations. See the translator.README.txt file in the tools directory 25676 // for more information. 25677 // 25678-// $hash=b359b8f9e2c70946ed9831869100e82774a5ea2d$ 25679+// $hash=af9995eb4c92687eac363aa4722bb0214ab1588e$ 25680 // 25681 25682 #include "libcef_dll/ctocpp/views/button_ctocpp.h" 25683diff --git a/cef/libcef_dll/ctocpp/views/button_ctocpp.h b/cef/libcef_dll/ctocpp/views/button_ctocpp.h 25684index af803bb16b..68a5c42eed 100644 25685--- a/cef/libcef_dll/ctocpp/views/button_ctocpp.h 25686+++ b/cef/libcef_dll/ctocpp/views/button_ctocpp.h 25687@@ -1,4 +1,4 @@ 25688-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 25689+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 25690 // reserved. Use of this source code is governed by a BSD-style license that 25691 // can be found in the LICENSE file. 25692 // 25693@@ -9,7 +9,7 @@ 25694 // implementations. See the translator.README.txt file in the tools directory 25695 // for more information. 25696 // 25697-// $hash=2741cab25f5633f178ba1f924abe58e418f1f084$ 25698+// $hash=bab8d54de14f05a413e8fc65aa21793d19ad122b$ 25699 // 25700 25701 #ifndef CEF_LIBCEF_DLL_CTOCPP_VIEWS_BUTTON_CTOCPP_H_ 25702diff --git a/cef/libcef_dll/ctocpp/views/button_delegate_ctocpp.cc b/cef/libcef_dll/ctocpp/views/button_delegate_ctocpp.cc 25703index 8f71a16123..2481e1e364 100644 25704--- a/cef/libcef_dll/ctocpp/views/button_delegate_ctocpp.cc 25705+++ b/cef/libcef_dll/ctocpp/views/button_delegate_ctocpp.cc 25706@@ -1,4 +1,4 @@ 25707-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 25708+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 25709 // reserved. Use of this source code is governed by a BSD-style license that 25710 // can be found in the LICENSE file. 25711 // 25712@@ -9,7 +9,7 @@ 25713 // implementations. See the translator.README.txt file in the tools directory 25714 // for more information. 25715 // 25716-// $hash=fc962d2832eeb3dee99e9a201f234d4a4b4d6f0f$ 25717+// $hash=759bdf6e675ddd3a2f0eb622356232346ce02162$ 25718 // 25719 25720 #include "libcef_dll/ctocpp/views/button_delegate_ctocpp.h" 25721diff --git a/cef/libcef_dll/ctocpp/views/button_delegate_ctocpp.h b/cef/libcef_dll/ctocpp/views/button_delegate_ctocpp.h 25722index cffab417e2..97f34a6399 100644 25723--- a/cef/libcef_dll/ctocpp/views/button_delegate_ctocpp.h 25724+++ b/cef/libcef_dll/ctocpp/views/button_delegate_ctocpp.h 25725@@ -1,4 +1,4 @@ 25726-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 25727+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 25728 // reserved. Use of this source code is governed by a BSD-style license that 25729 // can be found in the LICENSE file. 25730 // 25731@@ -9,7 +9,7 @@ 25732 // implementations. See the translator.README.txt file in the tools directory 25733 // for more information. 25734 // 25735-// $hash=6a72a71a9becd6103d44719ed88b000d576d95eb$ 25736+// $hash=376915b5bf2da4101167af17eb8c3ca3ad8db1f7$ 25737 // 25738 25739 #ifndef CEF_LIBCEF_DLL_CTOCPP_VIEWS_BUTTON_DELEGATE_CTOCPP_H_ 25740diff --git a/cef/libcef_dll/ctocpp/views/display_ctocpp.cc b/cef/libcef_dll/ctocpp/views/display_ctocpp.cc 25741index 59562010ed..9a6477c2e2 100644 25742--- a/cef/libcef_dll/ctocpp/views/display_ctocpp.cc 25743+++ b/cef/libcef_dll/ctocpp/views/display_ctocpp.cc 25744@@ -1,4 +1,4 @@ 25745-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 25746+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 25747 // reserved. Use of this source code is governed by a BSD-style license that 25748 // can be found in the LICENSE file. 25749 // 25750@@ -9,7 +9,7 @@ 25751 // implementations. See the translator.README.txt file in the tools directory 25752 // for more information. 25753 // 25754-// $hash=410bbb9dbc1b836136b420ffa4d821326159fe7e$ 25755+// $hash=ba41b36a0cdd335f2a964665576aaf50d8be9c55$ 25756 // 25757 25758 #include "libcef_dll/ctocpp/views/display_ctocpp.h" 25759diff --git a/cef/libcef_dll/ctocpp/views/display_ctocpp.h b/cef/libcef_dll/ctocpp/views/display_ctocpp.h 25760index bb5dfe4375..00050d1e3d 100644 25761--- a/cef/libcef_dll/ctocpp/views/display_ctocpp.h 25762+++ b/cef/libcef_dll/ctocpp/views/display_ctocpp.h 25763@@ -1,4 +1,4 @@ 25764-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 25765+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 25766 // reserved. Use of this source code is governed by a BSD-style license that 25767 // can be found in the LICENSE file. 25768 // 25769@@ -9,7 +9,7 @@ 25770 // implementations. See the translator.README.txt file in the tools directory 25771 // for more information. 25772 // 25773-// $hash=5f9d1b14172e8cbd5071f836319840c439b0c74f$ 25774+// $hash=79f3a320fac5905198d42a3b53df37eced5a4c0a$ 25775 // 25776 25777 #ifndef CEF_LIBCEF_DLL_CTOCPP_VIEWS_DISPLAY_CTOCPP_H_ 25778diff --git a/cef/libcef_dll/ctocpp/views/fill_layout_ctocpp.cc b/cef/libcef_dll/ctocpp/views/fill_layout_ctocpp.cc 25779index cf83576fb8..b8de0a3a70 100644 25780--- a/cef/libcef_dll/ctocpp/views/fill_layout_ctocpp.cc 25781+++ b/cef/libcef_dll/ctocpp/views/fill_layout_ctocpp.cc 25782@@ -1,4 +1,4 @@ 25783-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 25784+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 25785 // reserved. Use of this source code is governed by a BSD-style license that 25786 // can be found in the LICENSE file. 25787 // 25788@@ -9,7 +9,7 @@ 25789 // implementations. See the translator.README.txt file in the tools directory 25790 // for more information. 25791 // 25792-// $hash=196a1684038f46e2067c6faadfd58667f6bdf498$ 25793+// $hash=dafea3abdc32cc7dd8552bbdf5bd2bb32e816c5f$ 25794 // 25795 25796 #include "libcef_dll/ctocpp/views/fill_layout_ctocpp.h" 25797diff --git a/cef/libcef_dll/ctocpp/views/fill_layout_ctocpp.h b/cef/libcef_dll/ctocpp/views/fill_layout_ctocpp.h 25798index 7a0b50e25d..c7815e2367 100644 25799--- a/cef/libcef_dll/ctocpp/views/fill_layout_ctocpp.h 25800+++ b/cef/libcef_dll/ctocpp/views/fill_layout_ctocpp.h 25801@@ -1,4 +1,4 @@ 25802-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 25803+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 25804 // reserved. Use of this source code is governed by a BSD-style license that 25805 // can be found in the LICENSE file. 25806 // 25807@@ -9,7 +9,7 @@ 25808 // implementations. See the translator.README.txt file in the tools directory 25809 // for more information. 25810 // 25811-// $hash=333a603b19a7093fcb7303382626a9542172da24$ 25812+// $hash=edcc9287e560452dd4dde022b9c166455e959d2f$ 25813 // 25814 25815 #ifndef CEF_LIBCEF_DLL_CTOCPP_VIEWS_FILL_LAYOUT_CTOCPP_H_ 25816diff --git a/cef/libcef_dll/ctocpp/views/label_button_ctocpp.cc b/cef/libcef_dll/ctocpp/views/label_button_ctocpp.cc 25817index 0667587714..32475abf83 100644 25818--- a/cef/libcef_dll/ctocpp/views/label_button_ctocpp.cc 25819+++ b/cef/libcef_dll/ctocpp/views/label_button_ctocpp.cc 25820@@ -1,4 +1,4 @@ 25821-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 25822+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 25823 // reserved. Use of this source code is governed by a BSD-style license that 25824 // can be found in the LICENSE file. 25825 // 25826@@ -9,7 +9,7 @@ 25827 // implementations. See the translator.README.txt file in the tools directory 25828 // for more information. 25829 // 25830-// $hash=7e8ef08cc7510dc0ca0b580ae4d8031cb7acc268$ 25831+// $hash=b88aef8ea10f897dc9d8a409b8083693b4c1a4ee$ 25832 // 25833 25834 #include "libcef_dll/ctocpp/views/label_button_ctocpp.h" 25835diff --git a/cef/libcef_dll/ctocpp/views/label_button_ctocpp.h b/cef/libcef_dll/ctocpp/views/label_button_ctocpp.h 25836index e7b32f62ea..9afb0cee6f 100644 25837--- a/cef/libcef_dll/ctocpp/views/label_button_ctocpp.h 25838+++ b/cef/libcef_dll/ctocpp/views/label_button_ctocpp.h 25839@@ -1,4 +1,4 @@ 25840-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 25841+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 25842 // reserved. Use of this source code is governed by a BSD-style license that 25843 // can be found in the LICENSE file. 25844 // 25845@@ -9,7 +9,7 @@ 25846 // implementations. See the translator.README.txt file in the tools directory 25847 // for more information. 25848 // 25849-// $hash=303a2dc851723c3bf14c8dc8d58168d75d7f173a$ 25850+// $hash=10cbee6b8780c34ac47db87d3fec9286ae7547c9$ 25851 // 25852 25853 #ifndef CEF_LIBCEF_DLL_CTOCPP_VIEWS_LABEL_BUTTON_CTOCPP_H_ 25854diff --git a/cef/libcef_dll/ctocpp/views/layout_ctocpp.cc b/cef/libcef_dll/ctocpp/views/layout_ctocpp.cc 25855index b1d7a75107..f336044420 100644 25856--- a/cef/libcef_dll/ctocpp/views/layout_ctocpp.cc 25857+++ b/cef/libcef_dll/ctocpp/views/layout_ctocpp.cc 25858@@ -1,4 +1,4 @@ 25859-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 25860+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 25861 // reserved. Use of this source code is governed by a BSD-style license that 25862 // can be found in the LICENSE file. 25863 // 25864@@ -9,7 +9,7 @@ 25865 // implementations. See the translator.README.txt file in the tools directory 25866 // for more information. 25867 // 25868-// $hash=b23ba6d5b25baf2cfe38578368fbec5ea2769907$ 25869+// $hash=6607a4c252dafd39ba695b5d4ecfb14286d70672$ 25870 // 25871 25872 #include "libcef_dll/ctocpp/views/layout_ctocpp.h" 25873diff --git a/cef/libcef_dll/ctocpp/views/layout_ctocpp.h b/cef/libcef_dll/ctocpp/views/layout_ctocpp.h 25874index 02d4d52623..7e956dd33d 100644 25875--- a/cef/libcef_dll/ctocpp/views/layout_ctocpp.h 25876+++ b/cef/libcef_dll/ctocpp/views/layout_ctocpp.h 25877@@ -1,4 +1,4 @@ 25878-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 25879+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 25880 // reserved. Use of this source code is governed by a BSD-style license that 25881 // can be found in the LICENSE file. 25882 // 25883@@ -9,7 +9,7 @@ 25884 // implementations. See the translator.README.txt file in the tools directory 25885 // for more information. 25886 // 25887-// $hash=4f7c396f1ffa7895fcf12595e623f6466f396b2a$ 25888+// $hash=bca67132316cf340babc0457a7728bfbbad55dc2$ 25889 // 25890 25891 #ifndef CEF_LIBCEF_DLL_CTOCPP_VIEWS_LAYOUT_CTOCPP_H_ 25892diff --git a/cef/libcef_dll/ctocpp/views/menu_button_ctocpp.cc b/cef/libcef_dll/ctocpp/views/menu_button_ctocpp.cc 25893index 308d8447b8..ef76ecef7d 100644 25894--- a/cef/libcef_dll/ctocpp/views/menu_button_ctocpp.cc 25895+++ b/cef/libcef_dll/ctocpp/views/menu_button_ctocpp.cc 25896@@ -1,4 +1,4 @@ 25897-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 25898+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 25899 // reserved. Use of this source code is governed by a BSD-style license that 25900 // can be found in the LICENSE file. 25901 // 25902@@ -9,7 +9,7 @@ 25903 // implementations. See the translator.README.txt file in the tools directory 25904 // for more information. 25905 // 25906-// $hash=8f766b8f5a014054dcc79f504d34d0df27f75f9d$ 25907+// $hash=aad03d06e87ab5901e44bdb5589232bfef133537$ 25908 // 25909 25910 #include "libcef_dll/ctocpp/views/menu_button_ctocpp.h" 25911diff --git a/cef/libcef_dll/ctocpp/views/menu_button_ctocpp.h b/cef/libcef_dll/ctocpp/views/menu_button_ctocpp.h 25912index c25b5d7de6..664a4e3364 100644 25913--- a/cef/libcef_dll/ctocpp/views/menu_button_ctocpp.h 25914+++ b/cef/libcef_dll/ctocpp/views/menu_button_ctocpp.h 25915@@ -1,4 +1,4 @@ 25916-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 25917+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 25918 // reserved. Use of this source code is governed by a BSD-style license that 25919 // can be found in the LICENSE file. 25920 // 25921@@ -9,7 +9,7 @@ 25922 // implementations. See the translator.README.txt file in the tools directory 25923 // for more information. 25924 // 25925-// $hash=b8208488ed5afed11401a1e2dd647af06a8fe25a$ 25926+// $hash=f3adf1e33126dc8df0cb2087e6da4d87569ae1b8$ 25927 // 25928 25929 #ifndef CEF_LIBCEF_DLL_CTOCPP_VIEWS_MENU_BUTTON_CTOCPP_H_ 25930diff --git a/cef/libcef_dll/ctocpp/views/menu_button_delegate_ctocpp.cc b/cef/libcef_dll/ctocpp/views/menu_button_delegate_ctocpp.cc 25931index 89d2e9c61c..9bfe838600 100644 25932--- a/cef/libcef_dll/ctocpp/views/menu_button_delegate_ctocpp.cc 25933+++ b/cef/libcef_dll/ctocpp/views/menu_button_delegate_ctocpp.cc 25934@@ -1,4 +1,4 @@ 25935-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 25936+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 25937 // reserved. Use of this source code is governed by a BSD-style license that 25938 // can be found in the LICENSE file. 25939 // 25940@@ -9,7 +9,7 @@ 25941 // implementations. See the translator.README.txt file in the tools directory 25942 // for more information. 25943 // 25944-// $hash=9ecd07954f90dc14ddf36072285c942f2ee8082f$ 25945+// $hash=ba83047a0e8f5cbc30c5438b9d1344c84dda638d$ 25946 // 25947 25948 #include "libcef_dll/ctocpp/views/menu_button_delegate_ctocpp.h" 25949diff --git a/cef/libcef_dll/ctocpp/views/menu_button_delegate_ctocpp.h b/cef/libcef_dll/ctocpp/views/menu_button_delegate_ctocpp.h 25950index cfdf7c1695..f8627086c2 100644 25951--- a/cef/libcef_dll/ctocpp/views/menu_button_delegate_ctocpp.h 25952+++ b/cef/libcef_dll/ctocpp/views/menu_button_delegate_ctocpp.h 25953@@ -1,4 +1,4 @@ 25954-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 25955+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 25956 // reserved. Use of this source code is governed by a BSD-style license that 25957 // can be found in the LICENSE file. 25958 // 25959@@ -9,7 +9,7 @@ 25960 // implementations. See the translator.README.txt file in the tools directory 25961 // for more information. 25962 // 25963-// $hash=7836ec7b53349057b1d1d75c6ba8506620bed53d$ 25964+// $hash=7470b3c7a3986cd3cbbbbb484d88fac00fe32a22$ 25965 // 25966 25967 #ifndef CEF_LIBCEF_DLL_CTOCPP_VIEWS_MENU_BUTTON_DELEGATE_CTOCPP_H_ 25968diff --git a/cef/libcef_dll/ctocpp/views/menu_button_pressed_lock_ctocpp.cc b/cef/libcef_dll/ctocpp/views/menu_button_pressed_lock_ctocpp.cc 25969index ab26a6c8e7..3d9127cafb 100644 25970--- a/cef/libcef_dll/ctocpp/views/menu_button_pressed_lock_ctocpp.cc 25971+++ b/cef/libcef_dll/ctocpp/views/menu_button_pressed_lock_ctocpp.cc 25972@@ -1,4 +1,4 @@ 25973-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 25974+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 25975 // reserved. Use of this source code is governed by a BSD-style license that 25976 // can be found in the LICENSE file. 25977 // 25978@@ -9,7 +9,7 @@ 25979 // implementations. See the translator.README.txt file in the tools directory 25980 // for more information. 25981 // 25982-// $hash=81e02ced6b0354b18971801f02dee14243699b79$ 25983+// $hash=684914b489c5d322b41d61d46f5d387675da2c30$ 25984 // 25985 25986 #include "libcef_dll/ctocpp/views/menu_button_pressed_lock_ctocpp.h" 25987diff --git a/cef/libcef_dll/ctocpp/views/menu_button_pressed_lock_ctocpp.h b/cef/libcef_dll/ctocpp/views/menu_button_pressed_lock_ctocpp.h 25988index f9df5eb4ab..fed9e9be2f 100644 25989--- a/cef/libcef_dll/ctocpp/views/menu_button_pressed_lock_ctocpp.h 25990+++ b/cef/libcef_dll/ctocpp/views/menu_button_pressed_lock_ctocpp.h 25991@@ -1,4 +1,4 @@ 25992-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 25993+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 25994 // reserved. Use of this source code is governed by a BSD-style license that 25995 // can be found in the LICENSE file. 25996 // 25997@@ -9,7 +9,7 @@ 25998 // implementations. See the translator.README.txt file in the tools directory 25999 // for more information. 26000 // 26001-// $hash=b9629230d3cd22c16cb3c6125cb20d31d5308bda$ 26002+// $hash=ea81c8b651b803c0d78b06a850c409da3e632b44$ 26003 // 26004 26005 #ifndef CEF_LIBCEF_DLL_CTOCPP_VIEWS_MENU_BUTTON_PRESSED_LOCK_CTOCPP_H_ 26006diff --git a/cef/libcef_dll/ctocpp/views/panel_ctocpp.cc b/cef/libcef_dll/ctocpp/views/panel_ctocpp.cc 26007index 3aa7739a0e..a8d1877508 100644 26008--- a/cef/libcef_dll/ctocpp/views/panel_ctocpp.cc 26009+++ b/cef/libcef_dll/ctocpp/views/panel_ctocpp.cc 26010@@ -1,4 +1,4 @@ 26011-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 26012+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 26013 // reserved. Use of this source code is governed by a BSD-style license that 26014 // can be found in the LICENSE file. 26015 // 26016@@ -9,7 +9,7 @@ 26017 // implementations. See the translator.README.txt file in the tools directory 26018 // for more information. 26019 // 26020-// $hash=3e77ca44ea8a99a3fc8c335cca58b4cbc790e9cb$ 26021+// $hash=f5c2df20f4b31533822ac3f5b4f2bc623b4cef98$ 26022 // 26023 26024 #include "libcef_dll/ctocpp/views/panel_ctocpp.h" 26025diff --git a/cef/libcef_dll/ctocpp/views/panel_ctocpp.h b/cef/libcef_dll/ctocpp/views/panel_ctocpp.h 26026index 242849532f..ebc311563f 100644 26027--- a/cef/libcef_dll/ctocpp/views/panel_ctocpp.h 26028+++ b/cef/libcef_dll/ctocpp/views/panel_ctocpp.h 26029@@ -1,4 +1,4 @@ 26030-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 26031+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 26032 // reserved. Use of this source code is governed by a BSD-style license that 26033 // can be found in the LICENSE file. 26034 // 26035@@ -9,7 +9,7 @@ 26036 // implementations. See the translator.README.txt file in the tools directory 26037 // for more information. 26038 // 26039-// $hash=190c731496daef9548f00ed5306c89dac367f035$ 26040+// $hash=983c98e6a56fec46770cde83d5c9b500c32569bf$ 26041 // 26042 26043 #ifndef CEF_LIBCEF_DLL_CTOCPP_VIEWS_PANEL_CTOCPP_H_ 26044diff --git a/cef/libcef_dll/ctocpp/views/panel_delegate_ctocpp.cc b/cef/libcef_dll/ctocpp/views/panel_delegate_ctocpp.cc 26045index 0553e58966..e3b9e9608f 100644 26046--- a/cef/libcef_dll/ctocpp/views/panel_delegate_ctocpp.cc 26047+++ b/cef/libcef_dll/ctocpp/views/panel_delegate_ctocpp.cc 26048@@ -1,4 +1,4 @@ 26049-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 26050+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 26051 // reserved. Use of this source code is governed by a BSD-style license that 26052 // can be found in the LICENSE file. 26053 // 26054@@ -9,7 +9,7 @@ 26055 // implementations. See the translator.README.txt file in the tools directory 26056 // for more information. 26057 // 26058-// $hash=4bffffc0fe09523839a08109aef1e3de90f6e25c$ 26059+// $hash=d22d1a4b06badcf9dde2731dceb782a4a26754ca$ 26060 // 26061 26062 #include "libcef_dll/ctocpp/views/panel_delegate_ctocpp.h" 26063diff --git a/cef/libcef_dll/ctocpp/views/panel_delegate_ctocpp.h b/cef/libcef_dll/ctocpp/views/panel_delegate_ctocpp.h 26064index 5830b5eddd..898cbca060 100644 26065--- a/cef/libcef_dll/ctocpp/views/panel_delegate_ctocpp.h 26066+++ b/cef/libcef_dll/ctocpp/views/panel_delegate_ctocpp.h 26067@@ -1,4 +1,4 @@ 26068-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 26069+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 26070 // reserved. Use of this source code is governed by a BSD-style license that 26071 // can be found in the LICENSE file. 26072 // 26073@@ -9,7 +9,7 @@ 26074 // implementations. See the translator.README.txt file in the tools directory 26075 // for more information. 26076 // 26077-// $hash=d508126f22cba29931a4d53aecbdaaca7dd39b9d$ 26078+// $hash=97314a7d775123710e30d5cb577522d82668afab$ 26079 // 26080 26081 #ifndef CEF_LIBCEF_DLL_CTOCPP_VIEWS_PANEL_DELEGATE_CTOCPP_H_ 26082diff --git a/cef/libcef_dll/ctocpp/views/scroll_view_ctocpp.cc b/cef/libcef_dll/ctocpp/views/scroll_view_ctocpp.cc 26083index 0a459c6ace..c55fcb36d9 100644 26084--- a/cef/libcef_dll/ctocpp/views/scroll_view_ctocpp.cc 26085+++ b/cef/libcef_dll/ctocpp/views/scroll_view_ctocpp.cc 26086@@ -1,4 +1,4 @@ 26087-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 26088+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 26089 // reserved. Use of this source code is governed by a BSD-style license that 26090 // can be found in the LICENSE file. 26091 // 26092@@ -9,7 +9,7 @@ 26093 // implementations. See the translator.README.txt file in the tools directory 26094 // for more information. 26095 // 26096-// $hash=8c2b3c821c18076ce40392ea339c177c66d53cc2$ 26097+// $hash=93f714e0318bf826518c32b46bcad1ef228a6d66$ 26098 // 26099 26100 #include "libcef_dll/ctocpp/views/scroll_view_ctocpp.h" 26101diff --git a/cef/libcef_dll/ctocpp/views/scroll_view_ctocpp.h b/cef/libcef_dll/ctocpp/views/scroll_view_ctocpp.h 26102index 939ae3aac5..8fa0406dea 100644 26103--- a/cef/libcef_dll/ctocpp/views/scroll_view_ctocpp.h 26104+++ b/cef/libcef_dll/ctocpp/views/scroll_view_ctocpp.h 26105@@ -1,4 +1,4 @@ 26106-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 26107+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 26108 // reserved. Use of this source code is governed by a BSD-style license that 26109 // can be found in the LICENSE file. 26110 // 26111@@ -9,7 +9,7 @@ 26112 // implementations. See the translator.README.txt file in the tools directory 26113 // for more information. 26114 // 26115-// $hash=0a09eb1829f89d4f677c43909e0d4e1727ba1758$ 26116+// $hash=2fd0fb3cec5a7211fb2121a644ebccc36e4fb06d$ 26117 // 26118 26119 #ifndef CEF_LIBCEF_DLL_CTOCPP_VIEWS_SCROLL_VIEW_CTOCPP_H_ 26120diff --git a/cef/libcef_dll/ctocpp/views/textfield_ctocpp.cc b/cef/libcef_dll/ctocpp/views/textfield_ctocpp.cc 26121index 30b3c3049e..5f0d3af247 100644 26122--- a/cef/libcef_dll/ctocpp/views/textfield_ctocpp.cc 26123+++ b/cef/libcef_dll/ctocpp/views/textfield_ctocpp.cc 26124@@ -1,4 +1,4 @@ 26125-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 26126+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 26127 // reserved. Use of this source code is governed by a BSD-style license that 26128 // can be found in the LICENSE file. 26129 // 26130@@ -9,7 +9,7 @@ 26131 // implementations. See the translator.README.txt file in the tools directory 26132 // for more information. 26133 // 26134-// $hash=132a40648e492f00f21d6762ff63d4491e8060c3$ 26135+// $hash=75f0e7ca7793781032c055104e275f39a13bddb9$ 26136 // 26137 26138 #include "libcef_dll/ctocpp/views/textfield_ctocpp.h" 26139diff --git a/cef/libcef_dll/ctocpp/views/textfield_ctocpp.h b/cef/libcef_dll/ctocpp/views/textfield_ctocpp.h 26140index 0beb9c123c..d68c0992cc 100644 26141--- a/cef/libcef_dll/ctocpp/views/textfield_ctocpp.h 26142+++ b/cef/libcef_dll/ctocpp/views/textfield_ctocpp.h 26143@@ -1,4 +1,4 @@ 26144-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 26145+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 26146 // reserved. Use of this source code is governed by a BSD-style license that 26147 // can be found in the LICENSE file. 26148 // 26149@@ -9,7 +9,7 @@ 26150 // implementations. See the translator.README.txt file in the tools directory 26151 // for more information. 26152 // 26153-// $hash=f57b9f72a806aecacaa984faf584fdf7c1c99301$ 26154+// $hash=e07b698a905f01b008c99e0e7a7a0f7f1fcceed7$ 26155 // 26156 26157 #ifndef CEF_LIBCEF_DLL_CTOCPP_VIEWS_TEXTFIELD_CTOCPP_H_ 26158diff --git a/cef/libcef_dll/ctocpp/views/textfield_delegate_ctocpp.cc b/cef/libcef_dll/ctocpp/views/textfield_delegate_ctocpp.cc 26159index d2d841a3d6..8956ce249a 100644 26160--- a/cef/libcef_dll/ctocpp/views/textfield_delegate_ctocpp.cc 26161+++ b/cef/libcef_dll/ctocpp/views/textfield_delegate_ctocpp.cc 26162@@ -1,4 +1,4 @@ 26163-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 26164+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 26165 // reserved. Use of this source code is governed by a BSD-style license that 26166 // can be found in the LICENSE file. 26167 // 26168@@ -9,7 +9,7 @@ 26169 // implementations. See the translator.README.txt file in the tools directory 26170 // for more information. 26171 // 26172-// $hash=8582eda62f90bab166d04bb6a2f8783a98fabe15$ 26173+// $hash=04d04a0da9c1afb8e475b32941a0be5f5c6ff846$ 26174 // 26175 26176 #include "libcef_dll/ctocpp/views/textfield_delegate_ctocpp.h" 26177diff --git a/cef/libcef_dll/ctocpp/views/textfield_delegate_ctocpp.h b/cef/libcef_dll/ctocpp/views/textfield_delegate_ctocpp.h 26178index dd2af45863..dc4ae92cbd 100644 26179--- a/cef/libcef_dll/ctocpp/views/textfield_delegate_ctocpp.h 26180+++ b/cef/libcef_dll/ctocpp/views/textfield_delegate_ctocpp.h 26181@@ -1,4 +1,4 @@ 26182-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 26183+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 26184 // reserved. Use of this source code is governed by a BSD-style license that 26185 // can be found in the LICENSE file. 26186 // 26187@@ -9,7 +9,7 @@ 26188 // implementations. See the translator.README.txt file in the tools directory 26189 // for more information. 26190 // 26191-// $hash=3a83b906a29ba302874b73804e457680d2b7251e$ 26192+// $hash=304355beb3188c856d75fb9b51a4ca69f1cb815d$ 26193 // 26194 26195 #ifndef CEF_LIBCEF_DLL_CTOCPP_VIEWS_TEXTFIELD_DELEGATE_CTOCPP_H_ 26196diff --git a/cef/libcef_dll/ctocpp/views/view_ctocpp.cc b/cef/libcef_dll/ctocpp/views/view_ctocpp.cc 26197index 631c02cf30..f130aa0fda 100644 26198--- a/cef/libcef_dll/ctocpp/views/view_ctocpp.cc 26199+++ b/cef/libcef_dll/ctocpp/views/view_ctocpp.cc 26200@@ -1,4 +1,4 @@ 26201-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 26202+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 26203 // reserved. Use of this source code is governed by a BSD-style license that 26204 // can be found in the LICENSE file. 26205 // 26206@@ -9,7 +9,7 @@ 26207 // implementations. See the translator.README.txt file in the tools directory 26208 // for more information. 26209 // 26210-// $hash=d791f23eeaa056cdc478743acd452c1d60a4fd00$ 26211+// $hash=34ee98e682e61eafd7cfdd22ff2419ab399b15f4$ 26212 // 26213 26214 #include "libcef_dll/ctocpp/views/view_ctocpp.h" 26215diff --git a/cef/libcef_dll/ctocpp/views/view_ctocpp.h b/cef/libcef_dll/ctocpp/views/view_ctocpp.h 26216index fb48b96b0f..0f877ce392 100644 26217--- a/cef/libcef_dll/ctocpp/views/view_ctocpp.h 26218+++ b/cef/libcef_dll/ctocpp/views/view_ctocpp.h 26219@@ -1,4 +1,4 @@ 26220-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 26221+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 26222 // reserved. Use of this source code is governed by a BSD-style license that 26223 // can be found in the LICENSE file. 26224 // 26225@@ -9,7 +9,7 @@ 26226 // implementations. See the translator.README.txt file in the tools directory 26227 // for more information. 26228 // 26229-// $hash=841ccd4760ce1b41c48476df1575b1ac61661a23$ 26230+// $hash=a3e0a96f62afa3dc0a61a25e71c41209efa658a7$ 26231 // 26232 26233 #ifndef CEF_LIBCEF_DLL_CTOCPP_VIEWS_VIEW_CTOCPP_H_ 26234diff --git a/cef/libcef_dll/ctocpp/views/view_delegate_ctocpp.cc b/cef/libcef_dll/ctocpp/views/view_delegate_ctocpp.cc 26235index a0351ab67c..023de30f86 100644 26236--- a/cef/libcef_dll/ctocpp/views/view_delegate_ctocpp.cc 26237+++ b/cef/libcef_dll/ctocpp/views/view_delegate_ctocpp.cc 26238@@ -1,4 +1,4 @@ 26239-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 26240+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 26241 // reserved. Use of this source code is governed by a BSD-style license that 26242 // can be found in the LICENSE file. 26243 // 26244@@ -9,7 +9,7 @@ 26245 // implementations. See the translator.README.txt file in the tools directory 26246 // for more information. 26247 // 26248-// $hash=7a6d2ca91509c2e6c510d5c9585a74c2fe10499b$ 26249+// $hash=b6cc59e6fa1ba6b871f152f75c7f5875a7068172$ 26250 // 26251 26252 #include "libcef_dll/ctocpp/views/view_delegate_ctocpp.h" 26253diff --git a/cef/libcef_dll/ctocpp/views/view_delegate_ctocpp.h b/cef/libcef_dll/ctocpp/views/view_delegate_ctocpp.h 26254index c1465a6ff9..8fad2af4d3 100644 26255--- a/cef/libcef_dll/ctocpp/views/view_delegate_ctocpp.h 26256+++ b/cef/libcef_dll/ctocpp/views/view_delegate_ctocpp.h 26257@@ -1,4 +1,4 @@ 26258-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 26259+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 26260 // reserved. Use of this source code is governed by a BSD-style license that 26261 // can be found in the LICENSE file. 26262 // 26263@@ -9,7 +9,7 @@ 26264 // implementations. See the translator.README.txt file in the tools directory 26265 // for more information. 26266 // 26267-// $hash=f049a053042a00be15899439f324a376ee309dbb$ 26268+// $hash=fce672472de411169f81476a6ce779bc9f31846c$ 26269 // 26270 26271 #ifndef CEF_LIBCEF_DLL_CTOCPP_VIEWS_VIEW_DELEGATE_CTOCPP_H_ 26272diff --git a/cef/libcef_dll/ctocpp/views/window_ctocpp.cc b/cef/libcef_dll/ctocpp/views/window_ctocpp.cc 26273index 6905ef7695..c05d7bbede 100644 26274--- a/cef/libcef_dll/ctocpp/views/window_ctocpp.cc 26275+++ b/cef/libcef_dll/ctocpp/views/window_ctocpp.cc 26276@@ -1,4 +1,4 @@ 26277-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 26278+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 26279 // reserved. Use of this source code is governed by a BSD-style license that 26280 // can be found in the LICENSE file. 26281 // 26282@@ -9,7 +9,7 @@ 26283 // implementations. See the translator.README.txt file in the tools directory 26284 // for more information. 26285 // 26286-// $hash=6480777364c6c194652bf69ef2bb087c0805eddf$ 26287+// $hash=4df98951ff8475f4b02a4b9efad8bd82ac9b5ea8$ 26288 // 26289 26290 #include "libcef_dll/ctocpp/views/window_ctocpp.h" 26291diff --git a/cef/libcef_dll/ctocpp/views/window_ctocpp.h b/cef/libcef_dll/ctocpp/views/window_ctocpp.h 26292index e680f68c74..ca6e2f4554 100644 26293--- a/cef/libcef_dll/ctocpp/views/window_ctocpp.h 26294+++ b/cef/libcef_dll/ctocpp/views/window_ctocpp.h 26295@@ -1,4 +1,4 @@ 26296-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 26297+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 26298 // reserved. Use of this source code is governed by a BSD-style license that 26299 // can be found in the LICENSE file. 26300 // 26301@@ -9,7 +9,7 @@ 26302 // implementations. See the translator.README.txt file in the tools directory 26303 // for more information. 26304 // 26305-// $hash=6aa7373f97dc08f125b239bd6018bc9ad2c52c3c$ 26306+// $hash=d0176d98368bf239b93d2c65932b6f4fce62802a$ 26307 // 26308 26309 #ifndef CEF_LIBCEF_DLL_CTOCPP_VIEWS_WINDOW_CTOCPP_H_ 26310diff --git a/cef/libcef_dll/ctocpp/views/window_delegate_ctocpp.cc b/cef/libcef_dll/ctocpp/views/window_delegate_ctocpp.cc 26311index 6e724157ed..115b56e488 100644 26312--- a/cef/libcef_dll/ctocpp/views/window_delegate_ctocpp.cc 26313+++ b/cef/libcef_dll/ctocpp/views/window_delegate_ctocpp.cc 26314@@ -1,4 +1,4 @@ 26315-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 26316+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 26317 // reserved. Use of this source code is governed by a BSD-style license that 26318 // can be found in the LICENSE file. 26319 // 26320@@ -9,7 +9,7 @@ 26321 // implementations. See the translator.README.txt file in the tools directory 26322 // for more information. 26323 // 26324-// $hash=dda345b957ac58c71770da1cf4813ce16ea568b8$ 26325+// $hash=c0a17efae4f7dc02fa35f774999b290c4f70d96c$ 26326 // 26327 26328 #include "libcef_dll/ctocpp/views/window_delegate_ctocpp.h" 26329diff --git a/cef/libcef_dll/ctocpp/views/window_delegate_ctocpp.h b/cef/libcef_dll/ctocpp/views/window_delegate_ctocpp.h 26330index 5790e9a73d..4b84fd4326 100644 26331--- a/cef/libcef_dll/ctocpp/views/window_delegate_ctocpp.h 26332+++ b/cef/libcef_dll/ctocpp/views/window_delegate_ctocpp.h 26333@@ -1,4 +1,4 @@ 26334-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 26335+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 26336 // reserved. Use of this source code is governed by a BSD-style license that 26337 // can be found in the LICENSE file. 26338 // 26339@@ -9,7 +9,7 @@ 26340 // implementations. See the translator.README.txt file in the tools directory 26341 // for more information. 26342 // 26343-// $hash=4e5e470d6aa929b3b2d4286eb4bcdc90dba052dc$ 26344+// $hash=3478d6b39e5fee0d77086b34b717b47ff267e2e7$ 26345 // 26346 26347 #ifndef CEF_LIBCEF_DLL_CTOCPP_VIEWS_WINDOW_DELEGATE_CTOCPP_H_ 26348diff --git a/cef/libcef_dll/ctocpp/waitable_event_ctocpp.cc b/cef/libcef_dll/ctocpp/waitable_event_ctocpp.cc 26349index 5febe1d854..175fe0601c 100644 26350--- a/cef/libcef_dll/ctocpp/waitable_event_ctocpp.cc 26351+++ b/cef/libcef_dll/ctocpp/waitable_event_ctocpp.cc 26352@@ -1,4 +1,4 @@ 26353-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 26354+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 26355 // reserved. Use of this source code is governed by a BSD-style license that 26356 // can be found in the LICENSE file. 26357 // 26358@@ -9,7 +9,7 @@ 26359 // implementations. See the translator.README.txt file in the tools directory 26360 // for more information. 26361 // 26362-// $hash=d1714ee1ee61285942fd381b92cb197503320efb$ 26363+// $hash=4d16f6afcc06cee186ba3aa5752dc5933e6b57f4$ 26364 // 26365 26366 #include "libcef_dll/ctocpp/waitable_event_ctocpp.h" 26367diff --git a/cef/libcef_dll/ctocpp/waitable_event_ctocpp.h b/cef/libcef_dll/ctocpp/waitable_event_ctocpp.h 26368index c0016d530b..66b5b645e6 100644 26369--- a/cef/libcef_dll/ctocpp/waitable_event_ctocpp.h 26370+++ b/cef/libcef_dll/ctocpp/waitable_event_ctocpp.h 26371@@ -1,4 +1,4 @@ 26372-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 26373+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 26374 // reserved. Use of this source code is governed by a BSD-style license that 26375 // can be found in the LICENSE file. 26376 // 26377@@ -9,7 +9,7 @@ 26378 // implementations. See the translator.README.txt file in the tools directory 26379 // for more information. 26380 // 26381-// $hash=f5669491fd2475dc9755a6e624a737312711d2d3$ 26382+// $hash=8dc1c2feaee54c36914be2bbcdcfd4a7c9a42107$ 26383 // 26384 26385 #ifndef CEF_LIBCEF_DLL_CTOCPP_WAITABLE_EVENT_CTOCPP_H_ 26386diff --git a/cef/libcef_dll/ctocpp/web_plugin_info_ctocpp.cc b/cef/libcef_dll/ctocpp/web_plugin_info_ctocpp.cc 26387index e1779cc86e..6638dba62e 100644 26388--- a/cef/libcef_dll/ctocpp/web_plugin_info_ctocpp.cc 26389+++ b/cef/libcef_dll/ctocpp/web_plugin_info_ctocpp.cc 26390@@ -1,4 +1,4 @@ 26391-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 26392+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 26393 // reserved. Use of this source code is governed by a BSD-style license that 26394 // can be found in the LICENSE file. 26395 // 26396@@ -9,7 +9,7 @@ 26397 // implementations. See the translator.README.txt file in the tools directory 26398 // for more information. 26399 // 26400-// $hash=1ba28481accff89ed45808c7bf4ea45f58ad4bfb$ 26401+// $hash=9d4817b23d989f8ebda6d7be594bca00fe84c3a6$ 26402 // 26403 26404 #include "libcef_dll/ctocpp/web_plugin_info_ctocpp.h" 26405diff --git a/cef/libcef_dll/ctocpp/web_plugin_info_ctocpp.h b/cef/libcef_dll/ctocpp/web_plugin_info_ctocpp.h 26406index 64a055165c..849b2e87a1 100644 26407--- a/cef/libcef_dll/ctocpp/web_plugin_info_ctocpp.h 26408+++ b/cef/libcef_dll/ctocpp/web_plugin_info_ctocpp.h 26409@@ -1,4 +1,4 @@ 26410-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 26411+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 26412 // reserved. Use of this source code is governed by a BSD-style license that 26413 // can be found in the LICENSE file. 26414 // 26415@@ -9,7 +9,7 @@ 26416 // implementations. See the translator.README.txt file in the tools directory 26417 // for more information. 26418 // 26419-// $hash=012c4dec0875476356fe25c479539a4481a550c3$ 26420+// $hash=7d528ce85760411eb45e53ed2c33ae9012c5ca19$ 26421 // 26422 26423 #ifndef CEF_LIBCEF_DLL_CTOCPP_WEB_PLUGIN_INFO_CTOCPP_H_ 26424diff --git a/cef/libcef_dll/ctocpp/web_plugin_info_visitor_ctocpp.cc b/cef/libcef_dll/ctocpp/web_plugin_info_visitor_ctocpp.cc 26425index 92d937bce3..50615c2372 100644 26426--- a/cef/libcef_dll/ctocpp/web_plugin_info_visitor_ctocpp.cc 26427+++ b/cef/libcef_dll/ctocpp/web_plugin_info_visitor_ctocpp.cc 26428@@ -1,4 +1,4 @@ 26429-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 26430+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 26431 // reserved. Use of this source code is governed by a BSD-style license that 26432 // can be found in the LICENSE file. 26433 // 26434@@ -9,7 +9,7 @@ 26435 // implementations. See the translator.README.txt file in the tools directory 26436 // for more information. 26437 // 26438-// $hash=5327077faa6f56201e5e4b1334f505899341e06f$ 26439+// $hash=387ecb28b55d3ece3eb4fcf0e119918fd5e36fd7$ 26440 // 26441 26442 #include "libcef_dll/ctocpp/web_plugin_info_visitor_ctocpp.h" 26443diff --git a/cef/libcef_dll/ctocpp/web_plugin_info_visitor_ctocpp.h b/cef/libcef_dll/ctocpp/web_plugin_info_visitor_ctocpp.h 26444index 9004cfa6cd..b2dbc50fa4 100644 26445--- a/cef/libcef_dll/ctocpp/web_plugin_info_visitor_ctocpp.h 26446+++ b/cef/libcef_dll/ctocpp/web_plugin_info_visitor_ctocpp.h 26447@@ -1,4 +1,4 @@ 26448-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 26449+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 26450 // reserved. Use of this source code is governed by a BSD-style license that 26451 // can be found in the LICENSE file. 26452 // 26453@@ -9,7 +9,7 @@ 26454 // implementations. See the translator.README.txt file in the tools directory 26455 // for more information. 26456 // 26457-// $hash=1c1a81686fed72638be69dd0bef2ae468ae0700c$ 26458+// $hash=eb32b50c8f9ec072541fe4effffd00159f99ad0b$ 26459 // 26460 26461 #ifndef CEF_LIBCEF_DLL_CTOCPP_WEB_PLUGIN_INFO_VISITOR_CTOCPP_H_ 26462diff --git a/cef/libcef_dll/ctocpp/web_plugin_unstable_callback_ctocpp.cc b/cef/libcef_dll/ctocpp/web_plugin_unstable_callback_ctocpp.cc 26463index 29640902b9..eafe8956d6 100644 26464--- a/cef/libcef_dll/ctocpp/web_plugin_unstable_callback_ctocpp.cc 26465+++ b/cef/libcef_dll/ctocpp/web_plugin_unstable_callback_ctocpp.cc 26466@@ -1,4 +1,4 @@ 26467-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 26468+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 26469 // reserved. Use of this source code is governed by a BSD-style license that 26470 // can be found in the LICENSE file. 26471 // 26472@@ -9,7 +9,7 @@ 26473 // implementations. See the translator.README.txt file in the tools directory 26474 // for more information. 26475 // 26476-// $hash=71e7051f64bfaf814c4d16874c3b49204d2c6bce$ 26477+// $hash=feef390ffa570224c4ff5ef11ecce9cb87b32f65$ 26478 // 26479 26480 #include "libcef_dll/ctocpp/web_plugin_unstable_callback_ctocpp.h" 26481diff --git a/cef/libcef_dll/ctocpp/web_plugin_unstable_callback_ctocpp.h b/cef/libcef_dll/ctocpp/web_plugin_unstable_callback_ctocpp.h 26482index f5848ff1f7..004acc20eb 100644 26483--- a/cef/libcef_dll/ctocpp/web_plugin_unstable_callback_ctocpp.h 26484+++ b/cef/libcef_dll/ctocpp/web_plugin_unstable_callback_ctocpp.h 26485@@ -1,4 +1,4 @@ 26486-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 26487+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 26488 // reserved. Use of this source code is governed by a BSD-style license that 26489 // can be found in the LICENSE file. 26490 // 26491@@ -9,7 +9,7 @@ 26492 // implementations. See the translator.README.txt file in the tools directory 26493 // for more information. 26494 // 26495-// $hash=245c0ca666ccbc844a44c9c4ad8676b82656ee93$ 26496+// $hash=b3c9d90a4db5994aa5283611044dceffc5ef2baa$ 26497 // 26498 26499 #ifndef CEF_LIBCEF_DLL_CTOCPP_WEB_PLUGIN_UNSTABLE_CALLBACK_CTOCPP_H_ 26500diff --git a/cef/libcef_dll/ctocpp/write_handler_ctocpp.cc b/cef/libcef_dll/ctocpp/write_handler_ctocpp.cc 26501index 2916b45f4c..4efb2d1a7c 100644 26502--- a/cef/libcef_dll/ctocpp/write_handler_ctocpp.cc 26503+++ b/cef/libcef_dll/ctocpp/write_handler_ctocpp.cc 26504@@ -1,4 +1,4 @@ 26505-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 26506+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 26507 // reserved. Use of this source code is governed by a BSD-style license that 26508 // can be found in the LICENSE file. 26509 // 26510@@ -9,7 +9,7 @@ 26511 // implementations. See the translator.README.txt file in the tools directory 26512 // for more information. 26513 // 26514-// $hash=d5e6c2b29cf08f7aa4586f919c0c90b810fb4727$ 26515+// $hash=728e5a2aa03b7884d5001f784dcf6bc6fb79254a$ 26516 // 26517 26518 #include "libcef_dll/ctocpp/write_handler_ctocpp.h" 26519diff --git a/cef/libcef_dll/ctocpp/write_handler_ctocpp.h b/cef/libcef_dll/ctocpp/write_handler_ctocpp.h 26520index ed4f73f268..b302f19cda 100644 26521--- a/cef/libcef_dll/ctocpp/write_handler_ctocpp.h 26522+++ b/cef/libcef_dll/ctocpp/write_handler_ctocpp.h 26523@@ -1,4 +1,4 @@ 26524-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 26525+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 26526 // reserved. Use of this source code is governed by a BSD-style license that 26527 // can be found in the LICENSE file. 26528 // 26529@@ -9,7 +9,7 @@ 26530 // implementations. See the translator.README.txt file in the tools directory 26531 // for more information. 26532 // 26533-// $hash=b49e30471f4102194bf6d1c64b5277e368901f58$ 26534+// $hash=f6c9ec7aa1916be4cc120149c9e174751fc3ea77$ 26535 // 26536 26537 #ifndef CEF_LIBCEF_DLL_CTOCPP_WRITE_HANDLER_CTOCPP_H_ 26538diff --git a/cef/libcef_dll/ctocpp/x509cert_principal_ctocpp.cc b/cef/libcef_dll/ctocpp/x509cert_principal_ctocpp.cc 26539index 391ea9f3f7..23a7bb776b 100644 26540--- a/cef/libcef_dll/ctocpp/x509cert_principal_ctocpp.cc 26541+++ b/cef/libcef_dll/ctocpp/x509cert_principal_ctocpp.cc 26542@@ -1,4 +1,4 @@ 26543-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 26544+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 26545 // reserved. Use of this source code is governed by a BSD-style license that 26546 // can be found in the LICENSE file. 26547 // 26548@@ -9,7 +9,7 @@ 26549 // implementations. See the translator.README.txt file in the tools directory 26550 // for more information. 26551 // 26552-// $hash=f23f6d879d43ceea6d21e76c20942c242464deb8$ 26553+// $hash=1799aec02f9d2491056fbf3042b4ba89498adaf4$ 26554 // 26555 26556 #include "libcef_dll/ctocpp/x509cert_principal_ctocpp.h" 26557diff --git a/cef/libcef_dll/ctocpp/x509cert_principal_ctocpp.h b/cef/libcef_dll/ctocpp/x509cert_principal_ctocpp.h 26558index 4bb4a8c6d7..ff7b2dc291 100644 26559--- a/cef/libcef_dll/ctocpp/x509cert_principal_ctocpp.h 26560+++ b/cef/libcef_dll/ctocpp/x509cert_principal_ctocpp.h 26561@@ -1,4 +1,4 @@ 26562-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 26563+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 26564 // reserved. Use of this source code is governed by a BSD-style license that 26565 // can be found in the LICENSE file. 26566 // 26567@@ -9,7 +9,7 @@ 26568 // implementations. See the translator.README.txt file in the tools directory 26569 // for more information. 26570 // 26571-// $hash=4bf290893db30f92b41162cf2cd47457f94b9940$ 26572+// $hash=13b7a4dd2d7677a378def6201fcf32495ec89701$ 26573 // 26574 26575 #ifndef CEF_LIBCEF_DLL_CTOCPP_X509CERT_PRINCIPAL_CTOCPP_H_ 26576diff --git a/cef/libcef_dll/ctocpp/x509certificate_ctocpp.cc b/cef/libcef_dll/ctocpp/x509certificate_ctocpp.cc 26577index 71584b8282..5dc3e32e11 100644 26578--- a/cef/libcef_dll/ctocpp/x509certificate_ctocpp.cc 26579+++ b/cef/libcef_dll/ctocpp/x509certificate_ctocpp.cc 26580@@ -1,4 +1,4 @@ 26581-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 26582+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 26583 // reserved. Use of this source code is governed by a BSD-style license that 26584 // can be found in the LICENSE file. 26585 // 26586@@ -9,7 +9,7 @@ 26587 // implementations. See the translator.README.txt file in the tools directory 26588 // for more information. 26589 // 26590-// $hash=fa094f8add3043e35ad18783484c11aa2b883fa7$ 26591+// $hash=b5ab278c54b7ed9046b43a7f362a18ebc8bde146$ 26592 // 26593 26594 #include "libcef_dll/ctocpp/x509certificate_ctocpp.h" 26595diff --git a/cef/libcef_dll/ctocpp/x509certificate_ctocpp.h b/cef/libcef_dll/ctocpp/x509certificate_ctocpp.h 26596index 1179cbd7cf..23adbfa10b 100644 26597--- a/cef/libcef_dll/ctocpp/x509certificate_ctocpp.h 26598+++ b/cef/libcef_dll/ctocpp/x509certificate_ctocpp.h 26599@@ -1,4 +1,4 @@ 26600-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 26601+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 26602 // reserved. Use of this source code is governed by a BSD-style license that 26603 // can be found in the LICENSE file. 26604 // 26605@@ -9,7 +9,7 @@ 26606 // implementations. See the translator.README.txt file in the tools directory 26607 // for more information. 26608 // 26609-// $hash=96506815984e01c7670fededdc24ea0b5b6b4cee$ 26610+// $hash=858a4d6e0fb14d1f20ad386c90efbfe2f3778ac4$ 26611 // 26612 26613 #ifndef CEF_LIBCEF_DLL_CTOCPP_X509CERTIFICATE_CTOCPP_H_ 26614diff --git a/cef/libcef_dll/ctocpp/xml_reader_ctocpp.cc b/cef/libcef_dll/ctocpp/xml_reader_ctocpp.cc 26615index d6a7ce2366..617f05151b 100644 26616--- a/cef/libcef_dll/ctocpp/xml_reader_ctocpp.cc 26617+++ b/cef/libcef_dll/ctocpp/xml_reader_ctocpp.cc 26618@@ -1,4 +1,4 @@ 26619-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 26620+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 26621 // reserved. Use of this source code is governed by a BSD-style license that 26622 // can be found in the LICENSE file. 26623 // 26624@@ -9,7 +9,7 @@ 26625 // implementations. See the translator.README.txt file in the tools directory 26626 // for more information. 26627 // 26628-// $hash=579edc584404eea55aa9e33a0dc789b1a1afa5ce$ 26629+// $hash=9fc59c7d9a9acbf92fde0cfceda151c4936c136b$ 26630 // 26631 26632 #include "libcef_dll/ctocpp/xml_reader_ctocpp.h" 26633diff --git a/cef/libcef_dll/ctocpp/xml_reader_ctocpp.h b/cef/libcef_dll/ctocpp/xml_reader_ctocpp.h 26634index 817c6834e8..f1c4128598 100644 26635--- a/cef/libcef_dll/ctocpp/xml_reader_ctocpp.h 26636+++ b/cef/libcef_dll/ctocpp/xml_reader_ctocpp.h 26637@@ -1,4 +1,4 @@ 26638-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 26639+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 26640 // reserved. Use of this source code is governed by a BSD-style license that 26641 // can be found in the LICENSE file. 26642 // 26643@@ -9,7 +9,7 @@ 26644 // implementations. See the translator.README.txt file in the tools directory 26645 // for more information. 26646 // 26647-// $hash=ba444818045821388677e80af1f848b3938a7f1b$ 26648+// $hash=65bd41873882fe44f3a8274b9a5b2abc0be9bc4f$ 26649 // 26650 26651 #ifndef CEF_LIBCEF_DLL_CTOCPP_XML_READER_CTOCPP_H_ 26652diff --git a/cef/libcef_dll/ctocpp/zip_reader_ctocpp.cc b/cef/libcef_dll/ctocpp/zip_reader_ctocpp.cc 26653index de1eee085a..381241d341 100644 26654--- a/cef/libcef_dll/ctocpp/zip_reader_ctocpp.cc 26655+++ b/cef/libcef_dll/ctocpp/zip_reader_ctocpp.cc 26656@@ -1,4 +1,4 @@ 26657-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 26658+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 26659 // reserved. Use of this source code is governed by a BSD-style license that 26660 // can be found in the LICENSE file. 26661 // 26662@@ -9,7 +9,7 @@ 26663 // implementations. See the translator.README.txt file in the tools directory 26664 // for more information. 26665 // 26666-// $hash=883eb778e50772e1cb2901f59693e837790847c6$ 26667+// $hash=f01ac0e38723b8786f115a14dbca8d4d3d1a57bf$ 26668 // 26669 26670 #include "libcef_dll/ctocpp/zip_reader_ctocpp.h" 26671diff --git a/cef/libcef_dll/ctocpp/zip_reader_ctocpp.h b/cef/libcef_dll/ctocpp/zip_reader_ctocpp.h 26672index 31c8bfc5ae..6d63d873dd 100644 26673--- a/cef/libcef_dll/ctocpp/zip_reader_ctocpp.h 26674+++ b/cef/libcef_dll/ctocpp/zip_reader_ctocpp.h 26675@@ -1,4 +1,4 @@ 26676-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 26677+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 26678 // reserved. Use of this source code is governed by a BSD-style license that 26679 // can be found in the LICENSE file. 26680 // 26681@@ -9,7 +9,7 @@ 26682 // implementations. See the translator.README.txt file in the tools directory 26683 // for more information. 26684 // 26685-// $hash=e405cb0ca0caf967b58bc31d542bf346d6989022$ 26686+// $hash=5467459fccd6d42323c5ce2e6338423ee98026db$ 26687 // 26688 26689 #ifndef CEF_LIBCEF_DLL_CTOCPP_ZIP_READER_CTOCPP_H_ 26690diff --git a/cef/libcef_dll/libcef_dll.cc b/cef/libcef_dll/libcef_dll.cc 26691index f9c52222c0..a6ffa54d33 100644 26692--- a/cef/libcef_dll/libcef_dll.cc 26693+++ b/cef/libcef_dll/libcef_dll.cc 26694@@ -1,4 +1,4 @@ 26695-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 26696+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 26697 // reserved. Use of this source code is governed by a BSD-style license that 26698 // can be found in the LICENSE file. 26699 // 26700@@ -9,7 +9,7 @@ 26701 // implementations. See the translator.README.txt file in the tools directory 26702 // for more information. 26703 // 26704-// $hash=b2f22315d4021be203ececa54d5bb8c651f60dfc$ 26705+// $hash=4c84753487cbffec964954a78088e667f63df1e3$ 26706 // 26707 26708 #include "include/capi/cef_app_capi.h" 26709diff --git a/cef/libcef_dll/views_stub.cc b/cef/libcef_dll/views_stub.cc 26710index 70b15bc112..5ebce32154 100644 26711--- a/cef/libcef_dll/views_stub.cc 26712+++ b/cef/libcef_dll/views_stub.cc 26713@@ -1,4 +1,4 @@ 26714-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 26715+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 26716 // reserved. Use of this source code is governed by a BSD-style license that 26717 // can be found in the LICENSE file. 26718 // 26719@@ -9,7 +9,7 @@ 26720 // implementations. See the translator.README.txt file in the tools directory 26721 // for more information. 26722 // 26723-// $hash=912ed008854d84294dca15c3c9e1b9a362c4a886$ 26724+// $hash=892496158fbb51c0534dfbdfd4597daef6b21da7$ 26725 // 26726 26727 #include "include/views/cef_browser_view.h" 26728diff --git a/cef/libcef_dll/wrapper/libcef_dll_dylib.cc b/cef/libcef_dll/wrapper/libcef_dll_dylib.cc 26729index 67655ef1dc..1158ab5b75 100644 26730--- a/cef/libcef_dll/wrapper/libcef_dll_dylib.cc 26731+++ b/cef/libcef_dll/wrapper/libcef_dll_dylib.cc 26732@@ -1,4 +1,4 @@ 26733-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 26734+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 26735 // reserved. Use of this source code is governed by a BSD-style license that 26736 // can be found in the LICENSE file. 26737 // 26738@@ -9,7 +9,7 @@ 26739 // implementations. See the translator.README.txt file in the tools directory 26740 // for more information. 26741 // 26742-// $hash=9fbe1de9cf7f32c551c535e190d4c82b4947765d$ 26743+// $hash=63f62b21e8d9e400f6e19f11f93ddb3f838e7620$ 26744 // 26745 26746 #include <dlfcn.h> 26747@@ -201,6 +201,9 @@ typedef struct _cef_command_line_t* (*cef_command_line_get_global_ptr)(); 26748 typedef struct _cef_cookie_manager_t* ( 26749 *cef_cookie_manager_get_global_manager_ptr)( 26750 struct _cef_completion_callback_t*); 26751+typedef int (*cef_cookie_manager_create_cef_cookie_ptr)(const cef_string_t*, 26752+ const cef_string_t*, 26753+ struct _cef_cookie_t*); 26754 typedef struct _cef_drag_data_t* (*cef_drag_data_create_ptr)(); 26755 typedef struct _cef_image_t* (*cef_image_create_ptr)(); 26756 typedef struct _cef_media_router_t* (*cef_media_router_get_global_ptr)( 26757@@ -578,6 +581,7 @@ struct libcef_pointers { 26758 cef_command_line_get_global_ptr cef_command_line_get_global; 26759 cef_cookie_manager_get_global_manager_ptr 26760 cef_cookie_manager_get_global_manager; 26761+ cef_cookie_manager_create_cef_cookie_ptr cef_cookie_manager_create_cef_cookie; 26762 cef_drag_data_create_ptr cef_drag_data_create; 26763 cef_image_create_ptr cef_image_create; 26764 cef_media_router_get_global_ptr cef_media_router_get_global; 26765@@ -793,6 +797,7 @@ int libcef_init_pointers(const char* path) { 26766 INIT_ENTRY(cef_command_line_create); 26767 INIT_ENTRY(cef_command_line_get_global); 26768 INIT_ENTRY(cef_cookie_manager_get_global_manager); 26769+ INIT_ENTRY(cef_cookie_manager_create_cef_cookie); 26770 INIT_ENTRY(cef_drag_data_create); 26771 INIT_ENTRY(cef_image_create); 26772 INIT_ENTRY(cef_media_router_get_global); 26773@@ -1094,8 +1099,8 @@ int cef_create_url(const struct _cef_urlparts_t* parts, cef_string_t* url) { 26774 } 26775 26776 NO_SANITIZE("cfi-icall") 26777-cef_string_userfree_t cef_format_url_for_security_display( 26778- const cef_string_t* origin_url) { 26779+cef_string_userfree_t 26780+ cef_format_url_for_security_display(const cef_string_t* origin_url) { 26781 return g_libcef_pointers.cef_format_url_for_security_display(origin_url); 26782 } 26783 26784@@ -1307,6 +1312,14 @@ struct _cef_cookie_manager_t* cef_cookie_manager_get_global_manager( 26785 return g_libcef_pointers.cef_cookie_manager_get_global_manager(callback); 26786 } 26787 26788+NO_SANITIZE("cfi-icall") 26789+int cef_cookie_manager_create_cef_cookie(const cef_string_t* url, 26790+ const cef_string_t* value, 26791+ struct _cef_cookie_t* cef_cookie) { 26792+ return g_libcef_pointers.cef_cookie_manager_create_cef_cookie(url, value, 26793+ cef_cookie); 26794+} 26795+ 26796 NO_SANITIZE("cfi-icall") struct _cef_drag_data_t* cef_drag_data_create() { 26797 return g_libcef_pointers.cef_drag_data_create(); 26798 } 26799@@ -1581,46 +1594,54 @@ struct _cef_translator_test_t* cef_translator_test_create() { 26800 } 26801 26802 NO_SANITIZE("cfi-icall") 26803-struct _cef_translator_test_ref_ptr_library_t* 26804-cef_translator_test_ref_ptr_library_create(int value) { 26805+struct 26806+ _cef_translator_test_ref_ptr_library_t* cef_translator_test_ref_ptr_library_create( 26807+ int value) { 26808 return g_libcef_pointers.cef_translator_test_ref_ptr_library_create(value); 26809 } 26810 26811 NO_SANITIZE("cfi-icall") 26812-struct _cef_translator_test_ref_ptr_library_child_t* 26813-cef_translator_test_ref_ptr_library_child_create(int value, int other_value) { 26814+struct 26815+ _cef_translator_test_ref_ptr_library_child_t* cef_translator_test_ref_ptr_library_child_create( 26816+ int value, 26817+ int other_value) { 26818 return g_libcef_pointers.cef_translator_test_ref_ptr_library_child_create( 26819 value, other_value); 26820 } 26821 26822 NO_SANITIZE("cfi-icall") 26823-struct _cef_translator_test_ref_ptr_library_child_child_t* 26824-cef_translator_test_ref_ptr_library_child_child_create(int value, 26825- int other_value, 26826- int other_other_value) { 26827+struct 26828+ _cef_translator_test_ref_ptr_library_child_child_t* cef_translator_test_ref_ptr_library_child_child_create( 26829+ int value, 26830+ int other_value, 26831+ int other_other_value) { 26832 return g_libcef_pointers 26833 .cef_translator_test_ref_ptr_library_child_child_create( 26834 value, other_value, other_other_value); 26835 } 26836 26837 NO_SANITIZE("cfi-icall") 26838-struct _cef_translator_test_scoped_library_t* 26839-cef_translator_test_scoped_library_create(int value) { 26840+struct 26841+ _cef_translator_test_scoped_library_t* cef_translator_test_scoped_library_create( 26842+ int value) { 26843 return g_libcef_pointers.cef_translator_test_scoped_library_create(value); 26844 } 26845 26846 NO_SANITIZE("cfi-icall") 26847-struct _cef_translator_test_scoped_library_child_t* 26848-cef_translator_test_scoped_library_child_create(int value, int other_value) { 26849+struct 26850+ _cef_translator_test_scoped_library_child_t* cef_translator_test_scoped_library_child_create( 26851+ int value, 26852+ int other_value) { 26853 return g_libcef_pointers.cef_translator_test_scoped_library_child_create( 26854 value, other_value); 26855 } 26856 26857 NO_SANITIZE("cfi-icall") 26858-struct _cef_translator_test_scoped_library_child_child_t* 26859-cef_translator_test_scoped_library_child_child_create(int value, 26860- int other_value, 26861- int other_other_value) { 26862+struct 26863+ _cef_translator_test_scoped_library_child_child_t* cef_translator_test_scoped_library_child_child_create( 26864+ int value, 26865+ int other_value, 26866+ int other_other_value) { 26867 return g_libcef_pointers 26868 .cef_translator_test_scoped_library_child_child_create(value, other_value, 26869 other_other_value); 26870diff --git a/cef/libcef_dll/wrapper/libcef_dll_wrapper.cc b/cef/libcef_dll/wrapper/libcef_dll_wrapper.cc 26871index 7fc8d57281..d57bf25a63 100644 26872--- a/cef/libcef_dll/wrapper/libcef_dll_wrapper.cc 26873+++ b/cef/libcef_dll/wrapper/libcef_dll_wrapper.cc 26874@@ -1,4 +1,4 @@ 26875-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 26876+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 26877 // reserved. Use of this source code is governed by a BSD-style license that 26878 // can be found in the LICENSE file. 26879 // 26880@@ -9,7 +9,7 @@ 26881 // implementations. See the translator.README.txt file in the tools directory 26882 // for more information. 26883 // 26884-// $hash=b43931d8bb81fbfd7a55c011ac6e5b471b3a30ac$ 26885+// $hash=c9dcf926082220ee6e62f4f7742d5c7df0ae6399$ 26886 // 26887 26888 #include "include/capi/cef_app_capi.h" 26889diff --git a/cef/libcef_dll/wrapper_types.h b/cef/libcef_dll/wrapper_types.h 26890index 61734c211e..eb0eb8371e 100644 26891--- a/cef/libcef_dll/wrapper_types.h 26892+++ b/cef/libcef_dll/wrapper_types.h 26893@@ -1,4 +1,4 @@ 26894-// Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights 26895+// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights 26896 // reserved. Use of this source code is governed by a BSD-style license that 26897 // can be found in the LICENSE file. 26898 // 26899@@ -9,7 +9,7 @@ 26900 // implementations. See the translator.README.txt file in the tools directory 26901 // for more information. 26902 // 26903-// $hash=8e09f43f2c7faf35a14e7367b2156f4d4e89b74d$ 26904+// $hash=9ed6ec0a8c3e23163d32a47dc35933b6602d8470$ 26905 // 26906 26907 #ifndef CEF_LIBCEF_DLL_WRAPPER_TYPES_H_ 26908@@ -19,6 +19,7 @@ 26909 enum CefWrapperType { 26910 WT_BASE_REF_COUNTED = 1, 26911 WT_BASE_SCOPED, 26912+ WT_ACCESS_REQUEST, 26913 WT_ACCESSIBILITY_HANDLER, 26914 WT_APP, 26915 WT_AUDIO_HANDLER, 26916@@ -28,6 +29,7 @@ enum CefWrapperType { 26917 WT_BOX_LAYOUT, 26918 WT_BROWSER, 26919 WT_BROWSER_HOST, 26920+ WT_BROWSER_PERMISSION_REQUEST_DELEGATE, 26921 WT_BROWSER_PROCESS_HANDLER, 26922 WT_BROWSER_VIEW, 26923 WT_BROWSER_VIEW_DELEGATE, 26924@@ -65,10 +67,12 @@ enum CefWrapperType { 26925 WT_FIND_HANDLER, 26926 WT_FOCUS_HANDLER, 26927 WT_FRAME, 26928+ WT_GEOLOCATION_ACESS, 26929 WT_GET_EXTENSION_RESOURCE_CALLBACK, 26930 WT_IMAGE, 26931 WT_JSDIALOG_CALLBACK, 26932 WT_JSDIALOG_HANDLER, 26933+ WT_JAVA_SCRIPT_RESULT_CALLBACK, 26934 WT_KEYBOARD_HANDLER, 26935 WT_LABEL_BUTTON, 26936 WT_LAYOUT, 26937@@ -92,6 +96,7 @@ enum CefWrapperType { 26938 WT_PANEL, 26939 WT_PANEL_DELEGATE, 26940 WT_PDF_PRINT_CALLBACK, 26941+ WT_PERMISSION_REQUEST, 26942 WT_POST_DATA, 26943 WT_POST_DATA_ELEMENT, 26944 WT_PRINT_DIALOG_CALLBACK, 26945diff --git a/chrome/browser/offline_pages/offline_page_utils.cc b/chrome/browser/offline_pages/offline_page_utils.cc 26946index 422bb582f0..750012338a 100644 26947--- a/chrome/browser/offline_pages/offline_page_utils.cc 26948+++ b/chrome/browser/offline_pages/offline_page_utils.cc 26949@@ -121,6 +121,7 @@ void DoCalculateSizeBetween( 26950 std::move(callback).Run(total_size); 26951 } 26952 26953+#if defined(OS_ANDROID) 26954 content::WebContents* GetWebContentsByFrameID(int render_process_id, 26955 int render_frame_id) { 26956 content::RenderFrameHost* render_frame_host = 26957@@ -129,7 +130,9 @@ content::WebContents* GetWebContentsByFrameID(int render_process_id, 26958 return NULL; 26959 return content::WebContents::FromRenderFrameHost(render_frame_host); 26960 } 26961+#endif 26962 26963+#if defined(OS_ANDROID) 26964 content::WebContents::Getter GetWebContentsGetter( 26965 content::WebContents* web_contents) { 26966 // The FrameTreeNode ID should be used to access the WebContents. 26967@@ -146,6 +149,7 @@ content::WebContents::Getter GetWebContentsGetter( 26968 web_contents->GetMainFrame()->GetProcess()->GetID(), 26969 web_contents->GetMainFrame()->GetRoutingID()); 26970 } 26971+#endif 26972 26973 void AcquireFileAccessPermissionDoneForScheduleDownload( 26974 content::WebContents* web_contents, 26975diff --git a/chrome/browser/plugins/plugin_info_host_impl.cc b/chrome/browser/plugins/plugin_info_host_impl.cc 26976index ed191bd7f9..302d6dcc78 100644 26977--- a/chrome/browser/plugins/plugin_info_host_impl.cc 26978+++ b/chrome/browser/plugins/plugin_info_host_impl.cc 26979@@ -143,6 +143,7 @@ PluginInfoHostImpl::Context::Context(int render_process_id, Profile* profile) 26980 profile->GetPrefs()); 26981 run_all_flash_in_allow_mode_.Init(prefs::kRunAllFlashInAllowMode, 26982 profile->GetPrefs()); 26983+ 26984 #if BUILDFLAG(ENABLE_EXTENSIONS) 26985 #if BUILDFLAG(ENABLE_CEF) 26986 if (!cef::IsAlloyRuntimeEnabled() || extensions::ExtensionsEnabled()) 26987diff --git a/chrome/browser/plugins/plugin_utils.cc b/chrome/browser/plugins/plugin_utils.cc 26988index a1117001ad..831d5794ec 100644 26989--- a/chrome/browser/plugins/plugin_utils.cc 26990+++ b/chrome/browser/plugins/plugin_utils.cc 26991@@ -6,7 +6,7 @@ 26992 26993 #include "base/values.h" 26994 #include "cef/libcef/features/runtime.h" 26995-#include "chrome/browser/profiles/profile.h" 26996+#include "chrome/browser/profiles/profile_io_data.h" 26997 #include "chrome/common/plugin_utils.h" 26998 #include "components/content_settings/core/browser/host_content_settings_map.h" 26999 #include "components/content_settings/core/common/content_settings_types.h" 27000diff --git a/chrome/browser/profiles/profile_manager.cc b/chrome/browser/profiles/profile_manager.cc 27001index 4a0a8f429e..49d5ca9a07 100644 27002--- a/chrome/browser/profiles/profile_manager.cc 27003+++ b/chrome/browser/profiles/profile_manager.cc 27004@@ -396,7 +396,7 @@ ProfileManager::ProfileManager(const base::FilePath& user_data_dir) 27005 registrar_.Add(this, chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 27006 content::NotificationService::AllSources()); 27007 27008- if (ProfileShortcutManager::IsFeatureEnabled() && !user_data_dir_.empty()) 27009+ if (!user_data_dir_.empty() && ProfileShortcutManager::IsFeatureEnabled()) 27010 profile_shortcut_manager_ = ProfileShortcutManager::Create(this); 27011 } 27012 27013diff --git a/chrome/browser/profiles/profile_manager.h b/chrome/browser/profiles/profile_manager.h 27014index f44ed58d92..47c31af2c1 100644 27015--- a/chrome/browser/profiles/profile_manager.h 27016+++ b/chrome/browser/profiles/profile_manager.h 27017@@ -155,6 +155,8 @@ class ProfileManager : public content::NotificationObserver, 27018 // Get the Profile last used (the Profile to which owns the most recently 27019 // focused window) with this Chrome build. If no signed profile has been 27020 // stored in Local State, hand back the Default profile. 27021+ // TODO(https://crbug.com/1195201): Remove `user_data_dir` parameter since it 27022+ // always must match `user_data_dir_` field. 27023 virtual Profile* GetLastUsedProfile(const base::FilePath& user_data_dir); 27024 27025 // Get the path of the last used profile, or if that's undefined, the default 27026diff --git a/chrome/browser/ui/views/frame/browser_view.cc b/chrome/browser/ui/views/frame/browser_view.cc 27027index b200857173..a912d66269 100644 27028--- a/chrome/browser/ui/views/frame/browser_view.cc 27029+++ b/chrome/browser/ui/views/frame/browser_view.cc 27030@@ -562,7 +562,6 @@ BrowserView::BrowserView() : BrowserView(nullptr) {} 27031 27032 BrowserView::BrowserView(std::unique_ptr<Browser> browser) 27033 : views::ClientView(nullptr, nullptr), 27034- browser_(std::move(browser)), 27035 accessibility_mode_observer_( 27036 std::make_unique<AccessibilityModeObserver>(this)) { 27037 if (browser) 27038diff --git a/chrome/browser/ui/views/page_info/page_info_bubble_view.cc b/chrome/browser/ui/views/page_info/page_info_bubble_view.cc 27039index 5cc8109549..c591206e62 100644 27040--- a/chrome/browser/ui/views/page_info/page_info_bubble_view.cc 27041+++ b/chrome/browser/ui/views/page_info/page_info_bubble_view.cc 27042@@ -1030,6 +1030,8 @@ void PageInfoBubbleView::HandleMoreInfoRequestAsync(int view_id) { 27043 PageInfo::PAGE_INFO_CERTIFICATE_DIALOG_OPENED); 27044 #if !defined(OS_OHOS) 27045 ShowCertificateViewer(web_contents(), top_window, certificate_.get()); 27046+#else 27047+ //// TODO for OHOS 27048 #endif 27049 } 27050 break; 27051diff --git a/components/password_manager/core/browser/password_manager_client.h b/components/password_manager/core/browser/password_manager_client.h 27052index 099adbdc8b..1074394efe 100644 27053--- a/components/password_manager/core/browser/password_manager_client.h 27054+++ b/components/password_manager/core/browser/password_manager_client.h 27055@@ -342,6 +342,7 @@ class PasswordManagerClient { 27056 const GURL& frame_url) = 0; 27057 #endif 27058 27059+#if defined(PASSWORD_REUSE_DETECTION_ENABLED) 27060 // Checks the safe browsing reputation of the webpage where password reuse 27061 // happens. This is called by the PasswordReuseDetectionManager when a 27062 // protected password is typed on the wrong domain. This may trigger a 27063@@ -354,6 +355,7 @@ class PasswordManagerClient { 27064 const std::string& username, 27065 const std::vector<MatchingReusedCredential>& matching_reused_credentials, 27066 bool password_field_exists) = 0; 27067+#endif 27068 27069 // Records a Chrome Sync event that GAIA password reuse was detected. 27070 virtual void LogPasswordReuseDetectedEvent() = 0; 27071diff --git a/components/password_manager/core/browser/password_reuse_detection_manager.cc b/components/password_manager/core/browser/password_reuse_detection_manager.cc 27072index 491cdacd13..4a82f32cad 100644 27073--- a/components/password_manager/core/browser/password_reuse_detection_manager.cc 27074+++ b/components/password_manager/core/browser/password_reuse_detection_manager.cc 27075@@ -170,10 +170,12 @@ void PasswordReuseDetectionManager::OnReuseCheckDone( 27076 ? reused_protected_password_hash->username 27077 : ""; 27078 27079+#if defined(PASSWORD_REUSE_DETECTION_ENABLED) 27080 client_->CheckProtectedPasswordEntry( 27081 reused_password_type, username, 27082 std::move(all_matching_reused_credentials_).extract(), 27083 password_field_detected); 27084+#endif 27085 27086 all_matching_reused_credentials_.clear(); 27087 } 27088diff --git a/components/viz/service/display/gl_renderer.cc b/components/viz/service/display/gl_renderer.cc 27089index a0fc635ce9..80fbe080b1 100644 27090--- a/components/viz/service/display/gl_renderer.cc 27091+++ b/components/viz/service/display/gl_renderer.cc 27092@@ -512,11 +512,17 @@ void GLRenderer::ReleaseRenderPassTextures() { 27093 void GLRenderer::DiscardPixels() { 27094 if (!use_discard_framebuffer_) 27095 return; 27096+#if defined(OS_OHOS) 27097+ // use GL_COLOR_ATTACHMENT0_EXT directly to avoid INVALID_ENUM ERROR in 27098+ // GLES2DecoderImpl::InvalidateFramebufferImpl temporarily 27099+ GLenum attachments[] = {static_cast<GLenum>(GL_COLOR_ATTACHMENT0_EXT)}; 27100+#else 27101 bool using_default_framebuffer = 27102 !current_framebuffer_texture_ && 27103 output_surface_->capabilities().uses_default_gl_framebuffer; 27104 GLenum attachments[] = {static_cast<GLenum>( 27105 using_default_framebuffer ? GL_COLOR_EXT : GL_COLOR_ATTACHMENT0_EXT)}; 27106+#endif 27107 gl_->DiscardFramebufferEXT(GL_FRAMEBUFFER, base::size(attachments), 27108 attachments); 27109 } 27110diff --git a/content/browser/BUILD.gn b/content/browser/BUILD.gn 27111index a63f357a8a..157b489c3a 100644 27112--- a/content/browser/BUILD.gn 27113+++ b/content/browser/BUILD.gn 27114@@ -2088,6 +2088,21 @@ source_set("browser") { 27115 ] 27116 } 27117 27118+ if (is_ohos) { 27119+ import("//build/config/ohos/config.gni") 27120+ sources += [ 27121+ "media/ohos/ohos_media_player_renderer.cc", 27122+ "media/ohos/ohos_media_player_renderer.h", 27123+ ] 27124+ 27125+ libs = [ 27126+ "surface.z", 27127+ "media_client.z", 27128+ ] 27129+ include_dirs = ohos_src_includes 27130+ lib_dirs = ohos_libs_dir 27131+ } 27132+ 27133 if (is_win) { 27134 sources += [ 27135 "accessibility/accessibility_event_recorder_uia_win.cc", 27136diff --git a/content/browser/browser_context.cc b/content/browser/browser_context.cc 27137index 5848ee6863..d3f1a12a21 100644 27138--- a/content/browser/browser_context.cc 27139+++ b/content/browser/browser_context.cc 27140@@ -575,7 +575,8 @@ media::VideoDecodePerfHistory* BrowserContext::GetVideoDecodePerfHistory() { 27141 const bool kUseInMemoryDBDefault = false; 27142 bool use_in_memory_db = base::GetFieldTrialParamByFeatureAsBool( 27143 media::kMediaCapabilitiesWithParameters, kUseInMemoryDBParamName, 27144- kUseInMemoryDBDefault) || GetPath().empty(); 27145+ kUseInMemoryDBDefault) || 27146+ GetPath().empty(); 27147 27148 std::unique_ptr<media::VideoDecodeStatsDB> stats_db; 27149 if (use_in_memory_db) { 27150diff --git a/content/browser/media/frameless_media_interface_proxy.cc b/content/browser/media/frameless_media_interface_proxy.cc 27151index dc71e7c719..a0c48542cb 100644 27152--- a/content/browser/media/frameless_media_interface_proxy.cc 27153+++ b/content/browser/media/frameless_media_interface_proxy.cc 27154@@ -65,13 +65,15 @@ void FramelessMediaInterfaceProxy::CreateFlingingRenderer( 27155 client_extenion, 27156 mojo::PendingReceiver<media::mojom::Renderer> receiver) {} 27157 27158+#endif // defined(OS_ANDROID) 27159+#if defined(OS_ANDROID) || defined(OS_OHOS) 27160 void FramelessMediaInterfaceProxy::CreateMediaPlayerRenderer( 27161 mojo::PendingRemote<media::mojom::MediaPlayerRendererClientExtension> 27162 client_extension_remote, 27163 mojo::PendingReceiver<media::mojom::Renderer> receiver, 27164 mojo::PendingReceiver<media::mojom::MediaPlayerRendererExtension> 27165 renderer_extension_receiver) {} 27166-#endif // defined(OS_ANDROID) 27167+#endif // defined(OS_ANDROID) || defined(OS_OHOS) 27168 27169 #if defined(OS_WIN) 27170 // Unimplemented method as this requires CDM and media::Renderer services with 27171diff --git a/content/browser/media/frameless_media_interface_proxy.h b/content/browser/media/frameless_media_interface_proxy.h 27172index 7198bc6cec..6aee2a9884 100644 27173--- a/content/browser/media/frameless_media_interface_proxy.h 27174+++ b/content/browser/media/frameless_media_interface_proxy.h 27175@@ -50,13 +50,15 @@ class CONTENT_EXPORT FramelessMediaInterfaceProxy final 27176 const base::UnguessableToken& overlay_plane_id, 27177 mojo::PendingReceiver<media::mojom::Renderer> receiver) final; 27178 #endif 27179-#if defined(OS_ANDROID) 27180+#if defined(OS_ANDROID) || defined(OS_OHOS) 27181 void CreateMediaPlayerRenderer( 27182 mojo::PendingRemote<media::mojom::MediaPlayerRendererClientExtension> 27183 client_extension_remote, 27184 mojo::PendingReceiver<media::mojom::Renderer> receiver, 27185 mojo::PendingReceiver<media::mojom::MediaPlayerRendererExtension> 27186 renderer_extension_receiver) final; 27187+#endif // defined(OS_ANDROID) || defined(OS_OHOS) 27188+#if defined(OS_ANDROID) 27189 void CreateFlingingRenderer( 27190 const std::string& presentation_id, 27191 mojo::PendingRemote<media::mojom::FlingingRendererClientExtension> 27192diff --git a/content/browser/media/media_interface_proxy.cc b/content/browser/media/media_interface_proxy.cc 27193index a570a90966..886c40d31e 100644 27194--- a/content/browser/media/media_interface_proxy.cc 27195+++ b/content/browser/media/media_interface_proxy.cc 27196@@ -63,6 +63,11 @@ 27197 #include "base/time/time.h" 27198 #endif // defined(OS_WIN) 27199 27200+#if defined(OS_OHOS) 27201+#include "content/browser/media/ohos/ohos_media_player_renderer.h" 27202+#include "media/mojo/services/mojo_renderer_service.h" // nogncheck 27203+#endif 27204+ 27205 #if defined(OS_ANDROID) 27206 #include "content/browser/media/android/media_player_renderer.h" 27207 #include "content/browser/media/flinging_renderer.h" 27208@@ -465,7 +470,9 @@ void MediaInterfaceProxy::CreateFlingingRenderer( 27209 media::MojoRendererService::Create(nullptr, std::move(flinging_renderer), 27210 std::move(receiver)); 27211 } 27212+#endif 27213 27214+#if defined(OS_ANDROID) || defined(OS_OHOS) 27215 void MediaInterfaceProxy::CreateMediaPlayerRenderer( 27216 mojo::PendingRemote<media::mojom::MediaPlayerRendererClientExtension> 27217 client_extension_remote, 27218@@ -476,7 +483,11 @@ void MediaInterfaceProxy::CreateMediaPlayerRenderer( 27219 27220 media::MojoRendererService::Create( 27221 nullptr, 27222+#if defined(OS_ANDROID) 27223 std::make_unique<MediaPlayerRenderer>( 27224+#else 27225+ std::make_unique<OHOSMediaPlayerRenderer>( 27226+#endif 27227 render_frame_host_->GetProcess()->GetID(), 27228 render_frame_host_->GetRoutingID(), 27229 static_cast<RenderFrameHostImpl*>(render_frame_host_) 27230diff --git a/content/browser/media/media_interface_proxy.h b/content/browser/media/media_interface_proxy.h 27231index 61fec19350..a1c481c2df 100644 27232--- a/content/browser/media/media_interface_proxy.h 27233+++ b/content/browser/media/media_interface_proxy.h 27234@@ -74,13 +74,15 @@ class MediaInterfaceProxy final : public media::mojom::InterfaceFactory { 27235 mojo::PendingRemote<media::mojom::FlingingRendererClientExtension> 27236 client_extension, 27237 mojo::PendingReceiver<media::mojom::Renderer> receiver) final; 27238+#endif // defined(OS_ANDROID) 27239+#if defined(OS_ANDROID) || defined(OS_OHOS) 27240 void CreateMediaPlayerRenderer( 27241 mojo::PendingRemote<media::mojom::MediaPlayerRendererClientExtension> 27242 client_extension_remote, 27243 mojo::PendingReceiver<media::mojom::Renderer> receiver, 27244 mojo::PendingReceiver<media::mojom::MediaPlayerRendererExtension> 27245 renderer_extension_request) final; 27246-#endif // defined(OS_ANDROID) 27247+#endif // defined(OS_ANDROID) || defined(OS_OHOS) 27248 #if defined(OS_WIN) 27249 void CreateMediaFoundationRenderer( 27250 mojo::PendingReceiver<media::mojom::Renderer> receiver, 27251diff --git a/content/browser/media/ohos/ohos_media_player_renderer.cc b/content/browser/media/ohos/ohos_media_player_renderer.cc 27252new file mode 100644 27253index 0000000000..69bbd72e2f 27254--- /dev/null 27255+++ b/content/browser/media/ohos/ohos_media_player_renderer.cc 27256@@ -0,0 +1,194 @@ 27257+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 27258+// Use of this source code is governed by a BSD-style license that can be 27259+// found in the LICENSE file. 27260+ 27261+#include "content/browser/media/ohos/ohos_media_player_renderer.h" 27262+ 27263+#include <memory> 27264+ 27265+#include "base/bind.h" 27266+#include "base/callback_helpers.h" 27267+#include "content/browser/web_contents/web_contents_impl.h" 27268+#include "content/public/browser/browser_context.h" 27269+#include "content/public/browser/browser_task_traits.h" 27270+#include "content/public/browser/browser_thread.h" 27271+#include "content/public/browser/content_browser_client.h" 27272+#include "content/public/browser/render_process_host.h" 27273+#include "content/public/browser/storage_partition.h" 27274+#include "content/public/browser/web_contents.h" 27275+#include "content/public/common/content_client.h" 27276+#include "media/base/timestamp_constants.h" 27277+ 27278+namespace content { 27279+ 27280+namespace { 27281+const float kDefaultVolume = 1.0; 27282+} // namespace 27283+ 27284+OHOSMediaPlayerRenderer::OHOSMediaPlayerRenderer( 27285+ int process_id, 27286+ int routing_id, 27287+ WebContents* web_contents, 27288+ mojo::PendingReceiver<RendererExtension> renderer_extension_receiver, 27289+ mojo::PendingRemote<ClientExtension> client_extension_remote) 27290+ : client_extension_(std::move(client_extension_remote)), 27291+ has_error_(false), 27292+ volume_(kDefaultVolume), 27293+ renderer_extension_receiver_(this, 27294+ std::move(renderer_extension_receiver)) {} 27295+ 27296+OHOSMediaPlayerRenderer::~OHOSMediaPlayerRenderer() {} 27297+ 27298+void OHOSMediaPlayerRenderer::Initialize( 27299+ media::MediaResource* media_resource, 27300+ media::RendererClient* client, 27301+ media::PipelineStatusCallback init_cb) { 27302+ renderer_client_ = client; 27303+ if (media_resource->GetType() != media::MediaResource::Type::URL) { 27304+ DLOG(ERROR) << "MediaResource is not of Type URL"; 27305+ std::move(init_cb).Run(media::PIPELINE_ERROR_INITIALIZATION_FAILED); 27306+ return; 27307+ } 27308+ 27309+ CreateMediaPlayer(media_resource->GetMediaUrlParams(), std::move(init_cb)); 27310+} 27311+ 27312+void OHOSMediaPlayerRenderer::CreateMediaPlayer( 27313+ const media::MediaUrlParams& url_params, 27314+ media::PipelineStatusCallback init_cb) { 27315+ const std::string user_agent = GetContentClient()->browser()->GetUserAgent(); 27316+ media_player_.reset(new media::OHOSMediaPlayerBridge( 27317+ url_params.media_url, url_params.site_for_cookies, 27318+ url_params.top_frame_origin, user_agent, 27319+ false, // hide_url_log 27320+ this, url_params.allow_credentials, url_params.is_hls)); 27321+ int32_t ret = media_player_->Initialize(); 27322+ if (ret == 0) { 27323+ UpdateVolume(); 27324+ std::move(init_cb).Run(media::PIPELINE_OK); 27325+ initialized_ = true; 27326+ } else { 27327+ std::move(init_cb).Run(media::PIPELINE_ERROR_INITIALIZATION_FAILED); 27328+ } 27329+} 27330+ 27331+void OHOSMediaPlayerRenderer::SetLatencyHint( 27332+ base::Optional<base::TimeDelta> latency_hint) {} 27333+ 27334+void OHOSMediaPlayerRenderer::Flush(base::OnceClosure flush_cb) { 27335+ std::move(flush_cb).Run(); 27336+} 27337+ 27338+void OHOSMediaPlayerRenderer::StartPlayingFrom(base::TimeDelta time) { 27339+ if (has_error_ || !media_player_) 27340+ return; 27341+ media_player_->SeekTo(time); 27342+ renderer_client_->OnBufferingStateChange( 27343+ media::BufferingState::BUFFERING_HAVE_ENOUGH, 27344+ media::BufferingStateChangeReason::BUFFERING_CHANGE_REASON_UNKNOWN); 27345+} 27346+ 27347+void OHOSMediaPlayerRenderer::SetPlaybackRate(double playback_rate) { 27348+ if (has_error_) 27349+ return; 27350+ if (playback_rate <= 0) { 27351+ media_player_->Pause(); 27352+ } else { 27353+ OHOS::Media::PlaybackRateMode mode; 27354+ if (playback_rate < 1) { 27355+ mode = OHOS::Media::SPEED_FORWARD_0_75_X; 27356+ } else if (playback_rate < 1.25) { 27357+ mode = OHOS::Media::SPEED_FORWARD_1_00_X; 27358+ } else if (playback_rate < 1.75) { 27359+ mode = OHOS::Media::SPEED_FORWARD_1_25_X; 27360+ } else if (playback_rate < 2) { 27361+ mode = OHOS::Media::SPEED_FORWARD_1_75_X; 27362+ } else { 27363+ mode = OHOS::Media::SPEED_FORWARD_2_00_X; 27364+ } 27365+ media_player_->SetPlaybackSpeed(mode); 27366+ media_player_->Start(); 27367+ } 27368+ OnMediaDurationChanged(media_player_->GetDuration()); 27369+} 27370+ 27371+void OHOSMediaPlayerRenderer::InitiateScopedSurfaceRequest( 27372+ InitiateScopedSurfaceRequestCallback callback) {} 27373+ 27374+void OHOSMediaPlayerRenderer::FinishPaint(int32_t fd) { 27375+ if (media_player_) { 27376+ media_player_->FinishPaint(fd); 27377+ } 27378+} 27379+ 27380+void OHOSMediaPlayerRenderer::OnFrameAvailable(int fd, 27381+ uint32_t size, 27382+ int32_t width, 27383+ int32_t height) { 27384+ if (client_extension_) { 27385+ auto ohos_buffer = media::mojom::OhosSurfaceBufferHandle::New(); 27386+ ohos_buffer->buffer_size = size; 27387+ base::ScopedFD buffer_fd(dup(fd)); 27388+ ohos_buffer->fd_browser = fd; 27389+ ohos_buffer->width = width; 27390+ ohos_buffer->height = height; 27391+ ohos_buffer->buffer_fd = mojo::PlatformHandle(std::move(buffer_fd)); 27392+ client_extension_->OnFrameUpdate(std::move(ohos_buffer)); 27393+ } 27394+} 27395+ 27396+void OHOSMediaPlayerRenderer::OnMediaDurationChanged(base::TimeDelta duration) { 27397+ if (duration.is_zero()) 27398+ duration = media::kInfiniteDuration; 27399+ 27400+ if (duration_ != duration) { 27401+ duration_ = duration; 27402+ client_extension_->OnDurationChange(duration); 27403+ } 27404+} 27405+ 27406+void OHOSMediaPlayerRenderer::OnPlaybackComplete() { 27407+ renderer_client_->OnEnded(); 27408+} 27409+ 27410+void OHOSMediaPlayerRenderer::OnError(int error) { 27411+ if (error == 27412+ media::OHOSMediaPlayerBridge::MediaErrorType::MEDIA_ERROR_INVALID_CODE) { 27413+ return; 27414+ } 27415+ LOG(ERROR) << __func__ << " Error: " << error; 27416+ has_error_ = true; 27417+ if (initialized_) { 27418+ renderer_client_->OnError(media::PIPELINE_ERROR_EXTERNAL_RENDERER_FAILED); 27419+ } 27420+} 27421+ 27422+void OHOSMediaPlayerRenderer::OnVideoSizeChanged(int width, int height) { 27423+ gfx::Size new_size = gfx::Size(width, height); 27424+ if (video_size_ != new_size) { 27425+ video_size_ = new_size; 27426+ // Send via |client_extension_| instead of |renderer_client_|, so 27427+ // MediaPlayerRendererClient can update its texture size. 27428+ // MPRClient will then continue propagating changes via its RendererClient. 27429+ client_extension_->OnVideoSizeChange(video_size_); 27430+ } 27431+} 27432+ 27433+void OHOSMediaPlayerRenderer::SetVolume(float volume) { 27434+ volume_ = volume; 27435+ UpdateVolume(); 27436+} 27437+ 27438+void OHOSMediaPlayerRenderer::UpdateVolume() { 27439+ if (media_player_) 27440+ media_player_->SetVolume(volume_); 27441+} 27442+ 27443+base::TimeDelta OHOSMediaPlayerRenderer::GetMediaTime() { 27444+ if (media_player_) { 27445+ return media_player_->GetMediaTime(); 27446+ } 27447+ return base::TimeDelta::FromMilliseconds(0); 27448+} 27449+ 27450+} // namespace content 27451diff --git a/content/browser/media/ohos/ohos_media_player_renderer.h b/content/browser/media/ohos/ohos_media_player_renderer.h 27452new file mode 100644 27453index 0000000000..38c5d0c224 27454--- /dev/null 27455+++ b/content/browser/media/ohos/ohos_media_player_renderer.h 27456@@ -0,0 +1,115 @@ 27457+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 27458+// Use of this source code is governed by a BSD-style license that can be 27459+// found in the LICENSE file. 27460+ 27461+#ifndef CONTENT_BROWSER_MEDIA_OHOS_MEDIA_PLAYER_RENDERER_H_ 27462+#define CONTENT_BROWSER_MEDIA_OHOS_MEDIA_PLAYER_RENDERER_H_ 27463+ 27464+#include "base/callback.h" 27465+#include "base/macros.h" 27466+#include "base/memory/weak_ptr.h" 27467+#include "base/unguessable_token.h" 27468+#include "content/common/content_export.h" 27469+#include "content/public/browser/render_frame_host.h" 27470+#include "media/base/media_log.h" 27471+#include "media/base/media_resource.h" 27472+#include "media/base/ohos/ohos_media_player_bridge.h" 27473+#include "media/base/renderer.h" 27474+#include "media/base/renderer_client.h" 27475+#include "media/mojo/mojom/renderer_extensions.mojom.h" 27476+#include "mojo/public/cpp/bindings/pending_receiver.h" 27477+#include "mojo/public/cpp/bindings/pending_remote.h" 27478+#include "mojo/public/cpp/bindings/receiver.h" 27479+#include "mojo/public/cpp/bindings/remote.h" 27480+#include "url/gurl.h" 27481+ 27482+namespace content { 27483+class WebContents; 27484+ 27485+class CONTENT_EXPORT OHOSMediaPlayerRenderer 27486+ : public media::Renderer, 27487+ public media::mojom::MediaPlayerRendererExtension, 27488+ public media::OHOSMediaPlayerBridge::Client { 27489+ public: 27490+ using RendererExtension = media::mojom::MediaPlayerRendererExtension; 27491+ using ClientExtension = media::mojom::MediaPlayerRendererClientExtension; 27492+ 27493+ OHOSMediaPlayerRenderer( 27494+ int process_id, 27495+ int routing_id, 27496+ WebContents* web_contents, 27497+ mojo::PendingReceiver<RendererExtension> renderer_extension_receiver, 27498+ mojo::PendingRemote<ClientExtension> client_extension_remote); 27499+ 27500+ ~OHOSMediaPlayerRenderer() override; 27501+ 27502+ // media::Renderer implementation 27503+ void Initialize(media::MediaResource* media_resource, 27504+ media::RendererClient* client, 27505+ media::PipelineStatusCallback init_cb) override; 27506+ void SetLatencyHint(base::Optional<base::TimeDelta> latency_hint) override; 27507+ void Flush(base::OnceClosure flush_cb) override; 27508+ void StartPlayingFrom(base::TimeDelta time) override; 27509+ 27510+ void SetPlaybackRate(double playback_rate) override; 27511+ void SetVolume(float volume) override; 27512+ base::TimeDelta GetMediaTime() override; 27513+ 27514+ // media::OHOSMediaPlayerBridge::Client implementation 27515+ void OnFrameAvailable(int fd, 27516+ uint32_t size, 27517+ int32_t width, 27518+ int32_t height) override; 27519+ void OnMediaDurationChanged(base::TimeDelta duration) override; 27520+ void OnPlaybackComplete() override; 27521+ void OnError(int error) override; 27522+ void OnVideoSizeChanged(int width, int height) override; 27523+ 27524+ // media::mojom::MediaPlayerRendererExtension implementation. 27525+ // 27526+ // Registers a request in the content::ScopedSurfaceRequestManager, and 27527+ // returns the token associated to the request. The token can then be used to 27528+ // complete the request via the gpu::ScopedSurfaceRequestConduit. 27529+ // A completed request will call back to OnScopedSurfaceRequestCompleted(). 27530+ // 27531+ // NOTE: If a request is already pending, calling this method again will 27532+ // safely cancel the pending request before registering a new one. 27533+ void InitiateScopedSurfaceRequest( 27534+ InitiateScopedSurfaceRequestCallback callback) override; 27535+ void FinishPaint(int32_t fd) override; 27536+ 27537+ private: 27538+ void CreateMediaPlayer(const media::MediaUrlParams& params, 27539+ media::PipelineStatusCallback init_cb); 27540+ 27541+ void UpdateVolume(); 27542+ 27543+ mojo::Remote<ClientExtension> client_extension_; 27544+ 27545+ media::RendererClient* renderer_client_; 27546+ 27547+ std::unique_ptr<media::OHOSMediaPlayerBridge> media_player_; 27548+ 27549+ // Current duration of the media. 27550+ base::TimeDelta duration_; 27551+ 27552+ // Indicates if a serious error has been encountered by the |media_player_|. 27553+ bool has_error_; 27554+ 27555+ gfx::Size video_size_; 27556+ 27557+ float volume_; 27558+ 27559+ bool initialized_ = false; 27560+ 27561+ mojo::Receiver<MediaPlayerRendererExtension> renderer_extension_receiver_; 27562+ 27563+ // NOTE: Weak pointers must be invalidated before all other member variables. 27564+ base::WeakPtrFactory<OHOSMediaPlayerRenderer> weak_factory_{this}; 27565+ 27566+ DISALLOW_COPY_AND_ASSIGN(OHOSMediaPlayerRenderer); 27567+}; 27568+ 27569+} // namespace content 27570+ 27571+#endif // CONTENT_BROWSER_MEDIA_OHOS_MEDIA_PLAYER_RENDERER_H_ 27572diff --git a/content/browser/renderer_host/navigation_controller_impl.cc b/content/browser/renderer_host/navigation_controller_impl.cc 27573index 96372e9474..fcd76a294e 100644 27574--- a/content/browser/renderer_host/navigation_controller_impl.cc 27575+++ b/content/browser/renderer_host/navigation_controller_impl.cc 27576@@ -1016,6 +1016,7 @@ void NavigationControllerImpl::LoadURL(const GURL& url, 27577 params.referrer = referrer; 27578 params.transition_type = transition; 27579 params.extra_headers = extra_headers; 27580+ params.override_user_agent = NavigationController::UA_OVERRIDE_TRUE; 27581 LoadURLWithParams(params); 27582 } 27583 27584diff --git a/content/browser/speech/tts_ohos.cc b/content/browser/speech/tts_ohos.cc 27585index c4ba8612d9..24b801ff0a 100644 27586--- a/content/browser/speech/tts_ohos.cc 27587+++ b/content/browser/speech/tts_ohos.cc 27588@@ -1,4 +1,4 @@ 27589-// Copyright (c) 2022 The Chromium Authors. All rights reserved. 27590+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 27591 // Use of this source code is governed by a BSD-style license that can be 27592 // found in the LICENSE file. 27593 27594diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc 27595index 2be0a83293..3e19bacca3 100644 27596--- a/content/browser/web_contents/web_contents_impl.cc 27597+++ b/content/browser/web_contents/web_contents_impl.cc 27598@@ -1499,7 +1499,6 @@ void WebContentsImpl::UpdateZoom() { 27599 rwh->SynchronizeVisualProperties(); 27600 } 27601 27602- 27603 void WebContentsImpl::UpdateZoomIfNecessary(const std::string& scheme, 27604 const std::string& host) { 27605 OPTIONAL_TRACE_EVENT2("content", "WebContentsImpl::UpdateZoomIfNecessary", 27606@@ -2759,16 +2758,16 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params) { 27607 } 27608 27609 if (!view_) { 27610- WebContentsViewDelegate* delegate = 27611- GetContentClient()->browser()->GetWebContentsViewDelegate(this); 27612+ WebContentsViewDelegate* delegate = 27613+ GetContentClient()->browser()->GetWebContentsViewDelegate(this); 27614 27615- if (browser_plugin_guest_) { 27616- view_ = std::make_unique<WebContentsViewChildFrame>( 27617- this, delegate, &render_view_host_delegate_view_); 27618- } else { 27619- view_.reset(CreateWebContentsView(this, delegate, 27620- &render_view_host_delegate_view_)); 27621- } 27622+ if (browser_plugin_guest_) { 27623+ view_ = std::make_unique<WebContentsViewChildFrame>( 27624+ this, delegate, &render_view_host_delegate_view_); 27625+ } else { 27626+ view_.reset(CreateWebContentsView(this, delegate, 27627+ &render_view_host_delegate_view_)); 27628+ } 27629 } 27630 CHECK(render_view_host_delegate_view_); 27631 CHECK(view_.get()); 27632@@ -3199,8 +3198,8 @@ void WebContentsImpl::ExitFullscreenMode(bool will_cause_resize) { 27633 // required. 27634 if (!will_cause_resize) { 27635 if (RenderWidgetHostView* rwhv = GetRenderWidgetHostView()) { 27636- if (RenderWidgetHost* render_widget_host = rwhv->GetRenderWidgetHost()) 27637- render_widget_host->SynchronizeVisualProperties(); 27638+ if (RenderWidgetHost* render_widget_host = rwhv->GetRenderWidgetHost()) 27639+ render_widget_host->SynchronizeVisualProperties(); 27640 } 27641 } 27642 27643@@ -3620,12 +3619,9 @@ RenderFrameHostDelegate* WebContentsImpl::CreateNewWindow( 27644 create_params.renderer_initiated_creation = !is_new_browsing_instance; 27645 27646 if (delegate_) { 27647- delegate_->GetCustomWebContentsView(this, 27648- params.target_url, 27649- render_process_id, 27650- opener->GetRoutingID(), 27651- &create_params.view, 27652- &create_params.delegate_view); 27653+ delegate_->GetCustomWebContentsView( 27654+ this, params.target_url, render_process_id, opener->GetRoutingID(), 27655+ &create_params.view, &create_params.delegate_view); 27656 } 27657 27658 std::unique_ptr<WebContentsImpl> new_contents; 27659@@ -4023,9 +4019,10 @@ bool WebContentsImpl::ShouldIgnoreUnresponsiveRenderer() { 27660 if (suppress_unresponsive_renderer_count_ > 0) 27661 return true; 27662 27663- // Ignore unresponsive renderers if the debugger is attached to them since the 27664- // unresponsiveness might be a result of the renderer sitting on a breakpoint. 27665- // 27666+ // Ignore unresponsive renderers if the debugger is attached to them since 27667+ // the unresponsiveness might be a result of the renderer sitting on a 27668+ // breakpoint. 27669+ // 27670 #ifdef OS_WIN 27671 // Check if a windows debugger is attached to the renderer process. 27672 base::ProcessHandle process_handle = 27673@@ -4648,8 +4645,8 @@ void WebContentsImpl::SaveFrameWithHeaders( 27674 policy_exception_justification: "Not implemented." 27675 })"); 27676 auto params = std::make_unique<download::DownloadUrlParameters>( 27677- url, frame_host->GetProcess()->GetID(), 27678- frame_host->GetRoutingID(), traffic_annotation); 27679+ url, frame_host->GetProcess()->GetID(), frame_host->GetRoutingID(), 27680+ traffic_annotation); 27681 params->set_referrer(referrer.url); 27682 params->set_referrer_policy( 27683 Referrer::ReferrerPolicyForUrlRequest(referrer.policy)); 27684@@ -5633,6 +5630,7 @@ bool WebContentsImpl::IsWebPreferencesSet() const { 27685 void WebContentsImpl::SetWebPreferences( 27686 const blink::web_pref::WebPreferences& prefs) { 27687 OPTIONAL_TRACE_EVENT0("content", "WebContentsImpl::SetWebPreferences"); 27688+ 27689 web_preferences_ = std::make_unique<blink::web_pref::WebPreferences>(prefs); 27690 // Get all the RenderViewHosts (except the ones for currently back-forward 27691 // cached pages), and make them send the current WebPreferences 27692@@ -6182,7 +6180,7 @@ void WebContentsImpl::LoadingStateChanged(bool to_different_document, 27693 int type = is_loading ? NOTIFICATION_LOAD_START : NOTIFICATION_LOAD_STOP; 27694 NotificationDetails det = NotificationService::NoDetails(); 27695 if (details) 27696- det = Details<LoadNotificationDetails>(details); 27697+ det = Details<LoadNotificationDetails>(details); 27698 NotificationService::current()->Notify( 27699 type, Source<NavigationController>(&GetController()), det); 27700 } 27701@@ -7009,7 +7007,8 @@ void WebContentsImpl::DidChangeLoadProgress() { 27702 // immediately if enough time has passed. 27703 base::TimeDelta min_delay = 27704 base::TimeDelta::FromMilliseconds(kMinimumDelayBetweenLoadingUpdatesMS); 27705- bool delay_elapsed = loading_last_progress_update_.is_null() || 27706+ bool delay_elapsed = 27707+ loading_last_progress_update_.is_null() || 27708 base::TimeTicks::Now() - loading_last_progress_update_ > min_delay; 27709 27710 if (load_progress == 0.0 || load_progress == 1.0 || delay_elapsed) { 27711@@ -7141,10 +7140,9 @@ void WebContentsImpl::DocumentOnLoadCompleted( 27712 render_frame_host); 27713 27714 // TODO(avi): Remove. http://crbug.com/170921 27715- NotificationService::current()->Notify( 27716- NOTIFICATION_LOAD_COMPLETED_MAIN_FRAME, 27717- Source<WebContents>(this), 27718- NotificationService::NoDetails()); 27719+ NotificationService::current()->Notify(NOTIFICATION_LOAD_COMPLETED_MAIN_FRAME, 27720+ Source<WebContents>(this), 27721+ NotificationService::NoDetails()); 27722 } 27723 27724 void WebContentsImpl::UpdateTitle(RenderFrameHostImpl* render_frame_host, 27725@@ -7513,7 +7511,8 @@ void WebContentsImpl::SubframeCrashed( 27726 } 27727 27728 void WebContentsImpl::BeforeUnloadFiredFromRenderManager( 27729- bool proceed, const base::TimeTicks& proceed_time, 27730+ bool proceed, 27731+ const base::TimeTicks& proceed_time, 27732 bool* proceed_to_fire_unload) { 27733 OPTIONAL_TRACE_EVENT0("content", 27734 "WebContentsImpl::BeforeUnloadFiredFromRenderManager"); 27735@@ -7699,8 +7698,7 @@ void WebContentsImpl::ClearWebContentsAndroid() { 27736 web_contents_android_.reset(); 27737 } 27738 27739-void WebContentsImpl::ActivateNearestFindResult(float x, 27740- float y) { 27741+void WebContentsImpl::ActivateNearestFindResult(float x, float y) { 27742 OPTIONAL_TRACE_EVENT0("content", 27743 "WebContentsImpl::ActivateNearestFindResult"); 27744 GetOrCreateFindRequestManager()->ActivateNearestFindResult(x, y); 27745@@ -7750,8 +7748,8 @@ void WebContentsImpl::OnDialogClosed(int render_process_id, 27746 bool dialog_was_suppressed, 27747 bool success, 27748 const std::u16string& user_input) { 27749- RenderFrameHostImpl* rfh = RenderFrameHostImpl::FromID(render_process_id, 27750- render_frame_id); 27751+ RenderFrameHostImpl* rfh = 27752+ RenderFrameHostImpl::FromID(render_process_id, render_frame_id); 27753 OPTIONAL_TRACE_EVENT1("content", "WebContentsImpl::OnDialogClosed", 27754 "render_frame_host", rfh); 27755 last_dialog_suppressed_ = dialog_was_suppressed; 27756diff --git a/content/renderer/BUILD.gn b/content/renderer/BUILD.gn 27757index 3cdc94634e..dd529be39b 100644 27758--- a/content/renderer/BUILD.gn 27759+++ b/content/renderer/BUILD.gn 27760@@ -215,6 +215,14 @@ target(link_target_type, "renderer") { 27761 ] 27762 } 27763 27764+ if (is_ohos) { 27765+ sources += [ 27766+ "media/ohos/ohos_media_player_renderer_client.cc", 27767+ "media/ohos/ohos_media_player_renderer_client.h", 27768+ "media/ohos/ohos_media_player_renderer_client_factory.cc", 27769+ "media/ohos/ohos_media_player_renderer_client_factory.h", 27770+ ] 27771+ } 27772 27773 if (is_linux || is_chromeos || is_ohos) { 27774 sources += [ "renderer_main_platform_delegate_linux.cc" ] 27775diff --git a/content/renderer/media/media_factory.cc b/content/renderer/media/media_factory.cc 27776index 58b55ea5a7..06a512c666 100644 27777--- a/content/renderer/media/media_factory.cc 27778+++ b/content/renderer/media/media_factory.cc 27779@@ -109,6 +109,10 @@ 27780 #include "media/mojo/clients/win/media_foundation_renderer_client_factory.h" 27781 #endif // defined(OS_WIN) 27782 27783+#if defined(OS_OHOS) 27784+#include "content/renderer/media/ohos/ohos_media_player_renderer_client_factory.h" 27785+#endif 27786+ 27787 namespace { 27788 class FrameFetchContext : public media::ResourceFetchContext { 27789 public: 27790@@ -564,6 +568,14 @@ MediaFactory::CreateRendererFactorySelector( 27791 use_media_player_renderer = UseMediaPlayerRenderer(url); 27792 #endif // defined(OS_ANDROID) 27793 27794+#if defined(OS_OHOS) 27795+ auto ohos_media_player_factory = 27796+ std::make_unique<OHOSMediaPlayerRendererClientFactory>( 27797+ CreateMojoRendererFactory()); 27798+ factory_selector->AddFactory(FactoryType::kOHOSMediaPlayer, 27799+ std::move(ohos_media_player_factory)); 27800+#endif 27801+ 27802 #if defined(OS_ANDROID) 27803 DCHECK(interface_broker_); 27804 27805diff --git a/content/renderer/media/media_interface_factory.cc b/content/renderer/media/media_interface_factory.cc 27806index 6991ed927c..83062de1c0 100644 27807--- a/content/renderer/media/media_interface_factory.cc 27808+++ b/content/renderer/media/media_interface_factory.cc 27809@@ -95,7 +95,7 @@ void MediaInterfaceFactory::CreateCastRenderer( 27810 } 27811 #endif 27812 27813-#if defined(OS_ANDROID) 27814+#if defined(OS_ANDROID) || defined(OS_OHOS) 27815 void MediaInterfaceFactory::CreateMediaPlayerRenderer( 27816 mojo::PendingRemote<media::mojom::MediaPlayerRendererClientExtension> 27817 client_extension_remote, 27818@@ -117,7 +117,9 @@ void MediaInterfaceFactory::CreateMediaPlayerRenderer( 27819 std::move(client_extension_remote), std::move(receiver), 27820 std::move(renderer_extension_receiver)); 27821 } 27822+#endif // defined(OS_ANDROID) || defined(OS_OHOS) 27823 27824+#if defined(OS_ANDROID) 27825 void MediaInterfaceFactory::CreateFlingingRenderer( 27826 const std::string& presentation_id, 27827 mojo::PendingRemote<media::mojom::FlingingRendererClientExtension> 27828diff --git a/content/renderer/media/media_interface_factory.h b/content/renderer/media/media_interface_factory.h 27829index 53b425ddc7..179c3791c2 100644 27830--- a/content/renderer/media/media_interface_factory.h 27831+++ b/content/renderer/media/media_interface_factory.h 27832@@ -62,13 +62,15 @@ class CONTENT_EXPORT MediaInterfaceFactory final 27833 mojo::PendingRemote<media::mojom::FlingingRendererClientExtension> 27834 client_extension, 27835 mojo::PendingReceiver<media::mojom::Renderer> receiver) final; 27836+#endif // defined(OS_ANDROID) 27837+#if defined(OS_ANDROID) || defined(OS_OHOS) 27838 void CreateMediaPlayerRenderer( 27839 mojo::PendingRemote<media::mojom::MediaPlayerRendererClientExtension> 27840 client_extension_remote, 27841 mojo::PendingReceiver<media::mojom::Renderer> receiver, 27842 mojo::PendingReceiver<media::mojom::MediaPlayerRendererExtension> 27843 renderer_extension_receiver) final; 27844-#endif // defined(OS_ANDROID) 27845+#endif // defined(OS_ANDROID) || defined(OS_OHOS) 27846 #if defined(OS_WIN) 27847 void CreateMediaFoundationRenderer( 27848 mojo::PendingReceiver<media::mojom::Renderer> receiver, 27849diff --git a/content/renderer/media/ohos/ohos_media_player_renderer_client.cc b/content/renderer/media/ohos/ohos_media_player_renderer_client.cc 27850new file mode 100644 27851index 0000000000..4f2b9c1043 27852--- /dev/null 27853+++ b/content/renderer/media/ohos/ohos_media_player_renderer_client.cc 27854@@ -0,0 +1,141 @@ 27855+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 27856+// Use of this source code is governed by a BSD-style license that can be 27857+// found in the LICENSE file. 27858+ 27859+#include "content/renderer/media/ohos/ohos_media_player_renderer_client.h" 27860+ 27861+#include <sys/mman.h> 27862+#include <sys/stat.h> 27863+#include <utility> 27864+ 27865+#include "base/logging.h" 27866+#include "media/base/video_frame.h" 27867+ 27868+namespace content { 27869+ 27870+OHOSMediaPlayerRendererClient::OHOSMediaPlayerRendererClient( 27871+ mojo::PendingRemote<RendererExtention> renderer_extension_remote, 27872+ mojo::PendingReceiver<ClientExtention> client_extension_receiver, 27873+ scoped_refptr<base::SingleThreadTaskRunner> media_task_runner, 27874+ std::unique_ptr<media::MojoRenderer> mojo_renderer, 27875+ media::VideoRendererSink* sink) 27876+ : MojoRendererWrapper(std::move(mojo_renderer)), 27877+ client_(nullptr), 27878+ sink_(sink), 27879+ media_task_runner_(std::move(media_task_runner)), 27880+ delayed_bind_client_extension_receiver_( 27881+ std::move(client_extension_receiver)), 27882+ delayed_bind_renderer_extention_remote_( 27883+ std::move(renderer_extension_remote)) {} 27884+ 27885+OHOSMediaPlayerRendererClient::~OHOSMediaPlayerRendererClient() { 27886+ while (!cached_buffers_.empty()) { 27887+ CachedBuffer &temp_buffer = cached_buffers_.front(); 27888+ munmap(temp_buffer.mapped_, temp_buffer.buffer_size_); 27889+ close(temp_buffer.fd_); 27890+ cached_buffers_.pop_front(); 27891+ } 27892+} 27893+ 27894+void OHOSMediaPlayerRendererClient::Initialize( 27895+ media::MediaResource* media_resource, 27896+ media::RendererClient* client, 27897+ media::PipelineStatusCallback init_cb) { 27898+ DCHECK(media_task_runner_->BelongsToCurrentThread()); 27899+ DCHECK(!init_cb_); 27900+ 27901+ // Consume and bind the delayed PendingRemote and PendingReceiver now that we 27902+ // are on |media_task_runner_|. 27903+ renderer_extension_remote_.Bind( 27904+ std::move(delayed_bind_renderer_extention_remote_), media_task_runner_); 27905+ client_extension_receiver_.Bind( 27906+ std::move(delayed_bind_client_extension_receiver_), media_task_runner_); 27907+ 27908+ media_resource_ = media_resource; 27909+ client_ = client; 27910+ init_cb_ = std::move(init_cb); 27911+ MojoRendererWrapper::Initialize( 27912+ media_resource, client_, 27913+ base::BindOnce( 27914+ &OHOSMediaPlayerRendererClient::OnRemoteRendererInitialized, 27915+ weak_factory_.GetWeakPtr())); 27916+ sink_->SetFinishPaintCallback( 27917+ base::BindRepeating(&OHOSMediaPlayerRendererClient::OnFinishPaintCallback, 27918+ weak_factory_.GetWeakPtr())); 27919+} 27920+ 27921+void OHOSMediaPlayerRendererClient::OnFinishPaintCallback() { 27922+ if (!media_task_runner_->BelongsToCurrentThread()) { 27923+ media_task_runner_->PostTask( 27924+ FROM_HERE, 27925+ base::BindOnce(&OHOSMediaPlayerRendererClient::OnFinishPaintCallback, 27926+ base::Unretained(this))); 27927+ return; 27928+ } 27929+ if (cached_buffers_.size() > 1) { 27930+ CachedBuffer &temp_buffer = cached_buffers_.front(); 27931+ munmap(temp_buffer.mapped_, temp_buffer.buffer_size_); 27932+ close(temp_buffer.fd_); 27933+ renderer_extension_remote_->FinishPaint(temp_buffer.fd_browser_); 27934+ cached_buffers_.pop_front(); 27935+ } 27936+} 27937+ 27938+void OHOSMediaPlayerRendererClient::OnRemoteRendererInitialized( 27939+ media::PipelineStatus status) { 27940+ DCHECK(media_task_runner_->BelongsToCurrentThread()); 27941+ DCHECK(!init_cb_.is_null()); 27942+ 27943+ if (status == media::PIPELINE_OK) { 27944+ // Signal that we're using MediaPlayer so that we can properly differentiate 27945+ // within our metrics. 27946+ media::PipelineStatistics stats; 27947+ stats.video_decoder_info = {true, false, 27948+ media::VideoDecoderType::kMediaCodec}; 27949+ stats.audio_decoder_info = {true, false, 27950+ media::AudioDecoderType::kMediaCodec}; 27951+ client_->OnStatisticsUpdate(stats); 27952+ } 27953+ std::move(init_cb_).Run(status); 27954+} 27955+ 27956+void OHOSMediaPlayerRendererClient::OnVideoSizeChange(const gfx::Size& size) { 27957+ client_->OnVideoNaturalSizeChange(size); 27958+} 27959+ 27960+void OHOSMediaPlayerRendererClient::OnDurationChange(base::TimeDelta duration) { 27961+ DCHECK(media_task_runner_->BelongsToCurrentThread()); 27962+ media_resource_->ForwardDurationChangeToDemuxerHost(duration); 27963+} 27964+ 27965+void OHOSMediaPlayerRendererClient::OnFrameUpdate( 27966+ media::mojom::OhosSurfaceBufferHandlePtr ohos_surface_buffer_handle) { 27967+ if (!media_task_runner_->BelongsToCurrentThread()) { 27968+ media_task_runner_->PostTask( 27969+ FROM_HERE, base::BindOnce(&OHOSMediaPlayerRendererClient::OnFrameUpdate, 27970+ base::Unretained(this), 27971+ std::move(ohos_surface_buffer_handle))); 27972+ return; 27973+ } 27974+ auto fd = ohos_surface_buffer_handle->buffer_fd.TakeFD().release(); 27975+ uint32_t buffer_size = ohos_surface_buffer_handle->buffer_size; 27976+ int fd_browser = ohos_surface_buffer_handle->fd_browser; 27977+ int32_t width = ohos_surface_buffer_handle->width; 27978+ int32_t height = ohos_surface_buffer_handle->height; 27979+ 27980+ uint8_t* mapped = 27981+ (uint8_t*)mmap(NULL, buffer_size, PROT_READ, MAP_SHARED, fd, 0); 27982+ const base::TimeDelta kZero; 27983+ 27984+ media::VideoPixelFormat format = media::VideoPixelFormat::PIXEL_FORMAT_ABGR; 27985+ gfx::Size size = gfx::Size(width, height); 27986+ scoped_refptr<media::VideoFrame> frame = media::VideoFrame::WrapExternalData( 27987+ format, size, gfx::Rect(size), size, mapped, buffer_size, kZero); 27988+ 27989+ auto unique_frame = media::VideoFrame::WrapVideoFrame( 27990+ frame, frame->format(), frame->visible_rect(), frame->natural_size()); 27991+ sink_->PaintSingleFrame(std::move(unique_frame)); 27992+ cached_buffers_.push_back(CachedBuffer{fd_browser, fd, mapped, buffer_size}); 27993+} 27994+ 27995+} // namespace content 27996\ No newline at end of file 27997diff --git a/content/renderer/media/ohos/ohos_media_player_renderer_client.h b/content/renderer/media/ohos/ohos_media_player_renderer_client.h 27998new file mode 100644 27999index 0000000000..8f1f6cf0da 28000--- /dev/null 28001+++ b/content/renderer/media/ohos/ohos_media_player_renderer_client.h 28002@@ -0,0 +1,102 @@ 28003+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 28004+// Use of this source code is governed by a BSD-style license that can be 28005+// found in the LICENSE file. 28006+ 28007+#ifndef CONTENT_RENDERER_MEDIA_OHOS_MEDIA_PLAYER_RENDERER_CLIENT_H_ 28008+#define CONTENT_RENDERER_MEDIA_OHOS_MEDIA_PLAYER_RENDERER_CLIENT_H_ 28009+ 28010+#include <memory> 28011+ 28012+#include "base/callback.h" 28013+#include "base/macros.h" 28014+#include "base/memory/weak_ptr.h" 28015+#include "base/single_thread_task_runner.h" 28016+#include "content/common/content_export.h" 28017+#include "media/base/media_resource.h" 28018+#include "media/base/renderer.h" 28019+#include "media/base/renderer_client.h" 28020+#include "media/base/video_renderer_sink.h" 28021+#include "media/mojo/clients/mojo_renderer.h" 28022+#include "media/mojo/clients/mojo_renderer_wrapper.h" 28023+#include "media/mojo/mojom/renderer_extensions.mojom.h" 28024+#include "mojo/public/cpp/bindings/pending_receiver.h" 28025+#include "mojo/public/cpp/bindings/pending_remote.h" 28026+#include "mojo/public/cpp/bindings/receiver.h" 28027+#include "mojo/public/cpp/bindings/remote.h" 28028+ 28029+namespace content { 28030+ 28031+struct CachedBuffer { 28032+ int fd_browser_; 28033+ int fd_; 28034+ uint8_t* mapped_; 28035+ uint32_t buffer_size_; 28036+}; 28037+ 28038+class OHOSMediaPlayerRendererClient 28039+ : public media::mojom::MediaPlayerRendererClientExtension, 28040+ public media::MojoRendererWrapper { 28041+ public: 28042+ using RendererExtention = media::mojom::MediaPlayerRendererExtension; 28043+ using ClientExtention = media::mojom::MediaPlayerRendererClientExtension; 28044+ OHOSMediaPlayerRendererClient( 28045+ mojo::PendingRemote<RendererExtention> renderer_extension_remote, 28046+ mojo::PendingReceiver<ClientExtention> client_extension_receiver, 28047+ scoped_refptr<base::SingleThreadTaskRunner> media_task_runner, 28048+ std::unique_ptr<media::MojoRenderer> mojo_renderer, 28049+ media::VideoRendererSink* sink); 28050+ ~OHOSMediaPlayerRendererClient() override; 28051+ 28052+ // Renderer implementation. 28053+ void Initialize(media::MediaResource* media_resource, 28054+ media::RendererClient* client, 28055+ media::PipelineStatusCallback init_cb) override; 28056+ 28057+ // media::mojom::MediaPlayerRendererClientExtension implementation 28058+ void OnDurationChange(base::TimeDelta duration) override; 28059+ void OnVideoSizeChange(const gfx::Size& size) override; 28060+ void OnFrameUpdate(media::mojom::OhosSurfaceBufferHandlePtr 28061+ ohos_surface_buffer_handle) override; 28062+ 28063+ private: 28064+ void OnRemoteRendererInitialized(media::PipelineStatus status); 28065+ void OnFinishPaintCallback(); 28066+ 28067+ media::MediaResource* media_resource_; 28068+ 28069+ std::deque<CachedBuffer> cached_buffers_; 28070+ 28071+ media::RendererClient* client_; 28072+ 28073+ media::VideoRendererSink* sink_; 28074+ 28075+ scoped_refptr<base::SingleThreadTaskRunner> media_task_runner_; 28076+ 28077+ media::PipelineStatusCallback init_cb_; 28078+ 28079+ // This class is constructed on the main task runner, and used on 28080+ // |media_task_runner_|. These member are used to delay calls to Bind() for 28081+ // |renderer_extension_ptr_| and |client_extension_binding_|, until we are on 28082+ // |media_task_runner_|. 28083+ // Both are set in the constructor, and consumed in Initialize(). 28084+ mojo::PendingReceiver<ClientExtention> 28085+ delayed_bind_client_extension_receiver_; 28086+ mojo::PendingRemote<RendererExtention> 28087+ delayed_bind_renderer_extention_remote_; 28088+ 28089+ // Used to call methods on the MediaPlayerRenderer in the browser process. 28090+ mojo::Remote<RendererExtention> renderer_extension_remote_; 28091+ 28092+ // Used to receive events from MediaPlayerRenderer in the browser process. 28093+ mojo::Receiver<MediaPlayerRendererClientExtension> client_extension_receiver_{ 28094+ this}; 28095+ 28096+ // NOTE: Weak pointers must be invalidated before all other member variables. 28097+ base::WeakPtrFactory<OHOSMediaPlayerRendererClient> weak_factory_{this}; 28098+ 28099+ DISALLOW_COPY_AND_ASSIGN(OHOSMediaPlayerRendererClient); 28100+}; 28101+ 28102+} // namespace content 28103+ 28104+#endif // CONTENT_RENDERER_MEDIA_OHOS_MEDIA_PLAYER_RENDERER_CLIENT_H_ 28105diff --git a/content/renderer/media/ohos/ohos_media_player_renderer_client_factory.cc b/content/renderer/media/ohos/ohos_media_player_renderer_client_factory.cc 28106new file mode 100644 28107index 0000000000..876b3c61b0 28108--- /dev/null 28109+++ b/content/renderer/media/ohos/ohos_media_player_renderer_client_factory.cc 28110@@ -0,0 +1,55 @@ 28111+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 28112+// Use of this source code is governed by a BSD-style license that can be 28113+// found in the LICENSE file. 28114+ 28115+#include "content/renderer/media/ohos/ohos_media_player_renderer_client_factory.h" 28116+ 28117+#include "content/renderer/media/ohos/ohos_media_player_renderer_client.h" 28118+#include "media/mojo/clients/mojo_renderer.h" 28119+#include "media/mojo/clients/mojo_renderer_factory.h" 28120+#include "media/mojo/mojom/renderer_extensions.mojom.h" 28121+ 28122+namespace content { 28123+ 28124+OHOSMediaPlayerRendererClientFactory::OHOSMediaPlayerRendererClientFactory( 28125+ std::unique_ptr<media::MojoRendererFactory> mojo_renderer_factory) 28126+ : mojo_renderer_factory_(std::move(mojo_renderer_factory)) {} 28127+ 28128+OHOSMediaPlayerRendererClientFactory::~OHOSMediaPlayerRendererClientFactory() {} 28129+ 28130+std::unique_ptr<media::Renderer> 28131+OHOSMediaPlayerRendererClientFactory::CreateRenderer( 28132+ const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner, 28133+ const scoped_refptr<base::TaskRunner>& worker_task_runner, 28134+ media::AudioRendererSink* audio_renderer_sink, 28135+ media::VideoRendererSink* video_renderer_sink, 28136+ media::RequestOverlayInfoCB request_overlay_info_cb, 28137+ const gfx::ColorSpace& target_color_space) { 28138+ mojo::PendingRemote<media::mojom::MediaPlayerRendererExtension> 28139+ renderer_extension_remote; 28140+ auto renderer_extension_receiver = 28141+ renderer_extension_remote.InitWithNewPipeAndPassReceiver(); 28142+ 28143+ mojo::PendingRemote<media::mojom::MediaPlayerRendererClientExtension> 28144+ client_extension_remote; 28145+ auto client_extension_receiver = 28146+ client_extension_remote.InitWithNewPipeAndPassReceiver(); 28147+ 28148+ std::unique_ptr<media::MojoRenderer> mojo_renderer = 28149+ mojo_renderer_factory_->CreateMediaPlayerRenderer( 28150+ std::move(renderer_extension_receiver), 28151+ std::move(client_extension_remote), media_task_runner, 28152+ video_renderer_sink); 28153+ 28154+ return std::make_unique<OHOSMediaPlayerRendererClient>( 28155+ std::move(renderer_extension_remote), 28156+ std::move(client_extension_receiver), media_task_runner, 28157+ std::move(mojo_renderer), video_renderer_sink); 28158+} 28159+ 28160+media::MediaResource::Type 28161+OHOSMediaPlayerRendererClientFactory::GetRequiredMediaResourceType() { 28162+ return media::MediaResource::Type::URL; 28163+} 28164+ 28165+} // namespace content 28166diff --git a/content/renderer/media/ohos/ohos_media_player_renderer_client_factory.h b/content/renderer/media/ohos/ohos_media_player_renderer_client_factory.h 28167new file mode 100644 28168index 0000000000..c0fc62d6b9 28169--- /dev/null 28170+++ b/content/renderer/media/ohos/ohos_media_player_renderer_client_factory.h 28171@@ -0,0 +1,45 @@ 28172+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 28173+// Use of this source code is governed by a BSD-style license that can be 28174+// found in the LICENSE file. 28175+ 28176+#ifndef CONTENT_RENDERER_MEDIA_OHOS_MEDIA_PLAYER_RENDERER_CLIENT_FACTORY_H_ 28177+#define CONTENT_RENDERER_MEDIA_OHOS_MEDIA_PLAYER_RENDERER_CLIENT_FACTORY_H_ 28178+ 28179+#include <memory> 28180+ 28181+#include "base/callback.h" 28182+#include "base/macros.h" 28183+#include "base/single_thread_task_runner.h" 28184+#include "content/common/content_export.h" 28185+#include "media/base/renderer_factory.h" 28186+#include "media/mojo/clients/mojo_renderer_factory.h" 28187+ 28188+namespace content { 28189+ 28190+// The default class for creating a MediaPlayerRendererClient 28191+// and its associated MediaPlayerRenderer. 28192+class CONTENT_EXPORT OHOSMediaPlayerRendererClientFactory 28193+ : public media::RendererFactory { 28194+ public: 28195+ OHOSMediaPlayerRendererClientFactory( 28196+ std::unique_ptr<media::MojoRendererFactory> mojo_renderer_factory); 28197+ ~OHOSMediaPlayerRendererClientFactory() override; 28198+ 28199+ std::unique_ptr<media::Renderer> CreateRenderer( 28200+ const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner, 28201+ const scoped_refptr<base::TaskRunner>& worker_task_runner, 28202+ media::AudioRendererSink* audio_renderer_sink, 28203+ media::VideoRendererSink* video_renderer_sink, 28204+ media::RequestOverlayInfoCB request_surface_cb, 28205+ const gfx::ColorSpace& target_color_space) override; 28206+ 28207+ // The MediaPlayerRenderer uses a Type::URL. 28208+ media::MediaResource::Type GetRequiredMediaResourceType() override; 28209+ 28210+ private: 28211+ std::unique_ptr<media::MojoRendererFactory> mojo_renderer_factory_; 28212+}; 28213+ 28214+} // namespace content 28215+ 28216+#endif // CONTENT_RENDERER_MEDIA_OHOS_MEDIA_PLAYER_RENDERER_CLIENT_FACTORY_H_ 28217diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc 28218index e2e39cc41a..3c9ab9200a 100644 28219--- a/content/renderer/render_frame_impl.cc 28220+++ b/content/renderer/render_frame_impl.cc 28221@@ -243,6 +243,10 @@ 28222 #include "content/renderer/java/gin_java_bridge_dispatcher.h" 28223 #endif 28224 28225+#if defined(OS_OHOS) 28226+#include "cef/libcef/renderer/javascript/oh_gin_javascript_bridge_dispatcher.h" 28227+#endif 28228+ 28229 using base::Time; 28230 using base::TimeDelta; 28231 using blink::ContextMenuData; 28232@@ -2029,6 +2033,10 @@ RenderFrameImpl::RenderFrameImpl(CreateParams params) 28233 #if defined(OS_ANDROID) 28234 new GinJavaBridgeDispatcher(this); 28235 #endif 28236+ 28237+#if defined(OS_OHOS) 28238+ new NWEB::OhGinJavascriptBridgeDispatcher(this); 28239+#endif 28240 } 28241 28242 mojom::FrameHost* RenderFrameImpl::GetFrameHost() { 28243diff --git a/gpu/config/gpu_control_list.cc b/gpu/config/gpu_control_list.cc 28244index 9db98fb1e0..9685aad3a0 100644 28245--- a/gpu/config/gpu_control_list.cc 28246+++ b/gpu/config/gpu_control_list.cc 28247@@ -788,6 +788,8 @@ GpuControlList::OsType GpuControlList::GetOsType() { 28248 return kOsLinux; 28249 #elif defined(OS_MAC) 28250 return kOsMacosx; 28251+#elif defined(OS_OHOS) 28252+ return kOsOHOS; 28253 #else 28254 return kOsAny; 28255 #endif 28256diff --git a/gpu/config/gpu_control_list.h b/gpu/config/gpu_control_list.h 28257index 8a27b1c2bc..8ca7f70d96 100644 28258--- a/gpu/config/gpu_control_list.h 28259+++ b/gpu/config/gpu_control_list.h 28260@@ -31,6 +31,7 @@ class GPU_EXPORT GpuControlList { 28261 kOsChromeOS, 28262 kOsAndroid, 28263 kOsFuchsia, 28264+ kOsOHOS, 28265 kOsAny 28266 }; 28267 28268diff --git a/ipc/ipc_message_start.h b/ipc/ipc_message_start.h 28269index e9414b1807..a929a919d3 100644 28270--- a/ipc/ipc_message_start.h 28271+++ b/ipc/ipc_message_start.h 28272@@ -24,6 +24,7 @@ enum IPCMessageStart { 28273 NaClHostMsgStart, 28274 EncryptedMediaMsgStart, 28275 GinJavaBridgeMsgStart, 28276+ OhGinJavascriptBridgeMsgStart, 28277 ChromeUtilityPrintingMsgStart, 28278 ExtensionsGuestViewMsgStart, 28279 GuestViewMsgStart, 28280diff --git a/media/base/null_video_sink.cc b/media/base/null_video_sink.cc 28281index 3e23b2e8dc..197bdc447e 100644 28282--- a/media/base/null_video_sink.cc 28283+++ b/media/base/null_video_sink.cc 28284@@ -100,4 +100,8 @@ void NullVideoSink::PaintSingleFrame(scoped_refptr<VideoFrame> frame, 28285 new_frame_cb_.Run(std::move(frame)); 28286 } 28287 28288+#if defined(OS_OHOS) 28289+void NullVideoSink::SetFinishPaintCallback(base::RepeatingClosure callback) {} 28290+#endif 28291+ 28292 } // namespace media 28293diff --git a/media/base/null_video_sink.h b/media/base/null_video_sink.h 28294index 988799c488..4dc2fb8532 100644 28295--- a/media/base/null_video_sink.h 28296+++ b/media/base/null_video_sink.h 28297@@ -37,6 +37,9 @@ class MEDIA_EXPORT NullVideoSink : public VideoRendererSink { 28298 void Stop() override; 28299 void PaintSingleFrame(scoped_refptr<VideoFrame> frame, 28300 bool repaint_duplicate_frame) override; 28301+#if defined(OS_OHOS) 28302+ void SetFinishPaintCallback(base::RepeatingClosure callback) override; 28303+#endif 28304 28305 void set_tick_clock_for_testing(const base::TickClock* tick_clock) { 28306 tick_clock_ = tick_clock; 28307diff --git a/media/base/ohos/BUILD.gn b/media/base/ohos/BUILD.gn 28308new file mode 100644 28309index 0000000000..96b060fe0a 28310--- /dev/null 28311+++ b/media/base/ohos/BUILD.gn 28312@@ -0,0 +1,33 @@ 28313+# Copyright 2022 The Huawei Authors. All rights reserved. 28314+# Use of this source code is governed by a BSD-style license that can be 28315+# found in the LICENSE file. 28316+ 28317+if (is_ohos) { 28318+ import("//build/config/ohos/config.gni") 28319+ source_set("ohos") { 28320+ visibility = [ 28321+ "//media", 28322+ "//media/filters", 28323+ ] 28324+ 28325+ sources = [ 28326+ "ohos_media_player_bridge.cc", 28327+ "ohos_media_player_bridge.h", 28328+ "ohos_media_player_callback.cc", 28329+ "ohos_media_player_callback.h", 28330+ "ohos_media_player_listener.cc", 28331+ "ohos_media_player_listener.h", 28332+ ] 28333+ configs += [ "//media:subcomponent_config" ] 28334+ deps = [ 28335+ "//media/base", 28336+ "//url", 28337+ ] 28338+ libs = [ 28339+ "surface.z", 28340+ "media_client.z", 28341+ ] 28342+ include_dirs = ohos_src_includes 28343+ lib_dirs = ohos_libs_dir 28344+ } 28345+} 28346\ No newline at end of file 28347diff --git a/media/base/ohos/ohos_media_player_bridge.cc b/media/base/ohos/ohos_media_player_bridge.cc 28348new file mode 100644 28349index 0000000000..882a855a4c 28350--- /dev/null 28351+++ b/media/base/ohos/ohos_media_player_bridge.cc 28352@@ -0,0 +1,214 @@ 28353+// Copyright 2022 The Huawei Authors. All rights reserved. 28354+// Use of this source code is governed by a BSD-style license that can be 28355+// found in the LICENSE file. 28356+ 28357+#include "media/base/ohos/ohos_media_player_bridge.h" 28358+ 28359+#include <display_type.h> 28360+#include <sys/stat.h> 28361+#include "base/logging.h" 28362+#include "base/threading/thread_task_runner_handle.h" 28363+ 28364+namespace media { 28365+ 28366+OHOSMediaPlayerBridge::OHOSMediaPlayerBridge( 28367+ const GURL& url, 28368+ const GURL& site_for_cookies, 28369+ const url::Origin& top_frame_origin, 28370+ const std::string& user_agent, 28371+ bool hide_url_log, 28372+ Client* client, 28373+ bool allow_credentials, 28374+ bool is_hls) 28375+ : client_(client), url_(url) {} 28376+ 28377+OHOSMediaPlayerBridge::~OHOSMediaPlayerBridge() { 28378+ cached_buffers_.clear(); 28379+} 28380+ 28381+int32_t OHOSMediaPlayerBridge::Initialize() { 28382+ if (url_.SchemeIsBlob()) { 28383+ NOTREACHED(); 28384+ return -1; 28385+ } 28386+ task_runner_ = base::ThreadTaskRunnerHandle::Get(); 28387+ player_ = OHOS::Media::PlayerFactory::CreatePlayer(); 28388+ std::shared_ptr<OHOSMediaPlayerCallback> media_player_callback = 28389+ std::make_shared<OHOSMediaPlayerCallback>(task_runner_, 28390+ weak_factory_.GetWeakPtr()); 28391+ int32_t ret = player_->SetPlayerCallback(media_player_callback); 28392+ if (ret != 0) { 28393+ LOG(ERROR) << "SetPlayerCallback error::ret=" << ret; 28394+ return ret; 28395+ } 28396+ if (url_.SchemeIsFile()) { 28397+ ret = SetFdSource(url_.GetContent()); 28398+ } else { 28399+ ret = player_->SetSource(url_.spec()); 28400+ } 28401+ if (ret != 0) { 28402+ LOG(ERROR) << "SetSource error::ret=" << ret; 28403+ return ret; 28404+ } 28405+ consumer_surface_ = OHOS::Surface::CreateSurfaceAsConsumer(); 28406+ listener_ = new OHOSMediaPlayerListener( 28407+ task_runner_, weak_factory_.GetWeakPtr(), consumer_surface_); 28408+ consumer_surface_->RegisterConsumerListener(listener_); 28409+ consumer_surface_->SetUserData(surfaceFormat, 28410+ std::to_string(PIXEL_FMT_RGBA_8888)); 28411+ consumer_surface_->SetQueueSize(3); 28412+ ret = player_->SetVideoSurface(consumer_surface_); 28413+ if (ret != 0) { 28414+ LOG(ERROR) << "SetVideoSurface error::ret=" << ret; 28415+ return ret; 28416+ } 28417+ ret = player_->Prepare(); 28418+ if (ret != 0) { 28419+ LOG(ERROR) << "Prepare error::ret=" << ret << " url=" << url_.spec(); 28420+ return ret; 28421+ } 28422+ return ret; 28423+} 28424+ 28425+void OHOSMediaPlayerBridge::Start() { 28426+ if (player_ && player_state_ != OHOS::Media::PLAYER_STARTED) { 28427+ int32_t ret = player_->Play(); 28428+ if (ret != 0) { 28429+ LOG(ERROR) << "Play error::ret=" << ret; 28430+ } 28431+ } 28432+} 28433+ 28434+void OHOSMediaPlayerBridge::Pause() { 28435+ if (player_ && player_state_ == OHOS::Media::PLAYER_STARTED) { 28436+ int32_t ret = player_->Pause(); 28437+ if (ret != 0) { 28438+ LOG(ERROR) << "Pause error::ret=" << ret; 28439+ } 28440+ } 28441+} 28442+ 28443+void OHOSMediaPlayerBridge::SeekTo(base::TimeDelta time) { 28444+ if (player_) { 28445+ seeking_ = true; 28446+ pending_seek_ = time; 28447+ int32_t ret = player_->Seek(time.InMilliseconds(), 28448+ OHOS::Media::PlayerSeekMode::SEEK_CLOSEST); 28449+ if (ret != 0) { 28450+ LOG(ERROR) << "Seek error::ret=" << ret; 28451+ } 28452+ } 28453+} 28454+ 28455+void OHOSMediaPlayerBridge::SetVolume(float volume) { 28456+ if (player_) { 28457+ int32_t ret = player_->SetVolume(volume, volume); 28458+ if (ret != 0) { 28459+ LOG(ERROR) << "SetVolume error::ret=" << ret; 28460+ } 28461+ } 28462+} 28463+ 28464+base::TimeDelta OHOSMediaPlayerBridge::GetDuration() { 28465+ if (player_) { 28466+ int32_t time = -1; 28467+ (void)player_->GetDuration(time); 28468+ return base::TimeDelta::FromMilliseconds(time); 28469+ } 28470+ return base::TimeDelta(); 28471+} 28472+ 28473+base::TimeDelta OHOSMediaPlayerBridge::GetMediaTime() { 28474+ if (player_) { 28475+ if (seeking_) { 28476+ return pending_seek_; 28477+ } else { 28478+ int32_t time = -1; 28479+ (void)player_->GetCurrentTime(time); 28480+ return base::TimeDelta::FromMilliseconds(time); 28481+ } 28482+ } 28483+ return base::TimeDelta::FromMilliseconds(0); 28484+} 28485+ 28486+void OHOSMediaPlayerBridge::FinishPaint(int fd) { 28487+ if (!task_runner_->BelongsToCurrentThread()) { 28488+ task_runner_->PostTask(FROM_HERE, 28489+ base::BindOnce(&OHOSMediaPlayerBridge::FinishPaint, 28490+ weak_factory_.GetWeakPtr(), fd)); 28491+ return; 28492+ } 28493+ 28494+ if (cached_buffers_.front()->GetBufferHandle()->reserve[0] != fd) { 28495+ LOG(ERROR) << "match fd error render fd=" << fd << " browser fd=" 28496+ << cached_buffers_.front()->GetBufferHandle()->reserve[0]; 28497+ } 28498+ OHOS::SurfaceError ret = 28499+ consumer_surface_->ReleaseBuffer(cached_buffers_.front(), -1); 28500+ if (ret != OHOS::SURFACE_ERROR_OK) { 28501+ LOG(ERROR) << "release buffer fail, ret=" << ret; 28502+ } 28503+ cached_buffers_.pop_front(); 28504+} 28505+ 28506+void OHOSMediaPlayerBridge::SetPlaybackSpeed( 28507+ OHOS::Media::PlaybackRateMode mode) { 28508+ if (player_) { 28509+ int32_t ret = player_->SetPlaybackSpeed(mode); 28510+ if (ret != 0) { 28511+ LOG(ERROR) << "SetPlaybackSpeed error::ret=" << ret; 28512+ } 28513+ } 28514+} 28515+ 28516+void OHOSMediaPlayerBridge::OnEnd() { 28517+ client_->OnPlaybackComplete(); 28518+} 28519+ 28520+void OHOSMediaPlayerBridge::OnError(int32_t error_code) { 28521+ client_->OnError(error_code); 28522+} 28523+ 28524+void OHOSMediaPlayerBridge::OnSeekDone() { 28525+ seeking_ = false; 28526+} 28527+ 28528+void OHOSMediaPlayerBridge::OnPlayerStateUpdate( 28529+ OHOS::Media::PlayerStates player_state) { 28530+ player_state_ = player_state; 28531+} 28532+ 28533+void OHOSMediaPlayerBridge::OnBufferAvailable( 28534+ OHOS::sptr<OHOS::SurfaceBuffer> buffer) { 28535+ if (!task_runner_->BelongsToCurrentThread()) { 28536+ task_runner_->PostTask( 28537+ FROM_HERE, 28538+ base::BindOnce(&OHOSMediaPlayerBridge::OnBufferAvailable, 28539+ weak_factory_.GetWeakPtr(), std::move(buffer))); 28540+ return; 28541+ } 28542+ client_->OnFrameAvailable(buffer->GetBufferHandle()->reserve[0], 28543+ buffer->GetSize(), buffer->GetWidth(), 28544+ buffer->GetHeight()); 28545+ cached_buffers_.push_back(buffer); 28546+} 28547+ 28548+int32_t OHOSMediaPlayerBridge::SetFdSource(const std::string& path) { 28549+ int32_t fd = open(path.c_str(), O_RDONLY); 28550+ if (fd < 0) { 28551+ LOG(ERROR) << "SetFdSource error:Open file failed"; 28552+ return -1; 28553+ } 28554+ struct stat64 buffer; 28555+ if (fstat64(fd, &buffer) != 0) { 28556+ LOG(ERROR) << "SetFdSource error:Get file state failed"; 28557+ (void)close(fd); 28558+ return -1; 28559+ } 28560+ int64_t length = static_cast<int64_t>(buffer.st_size); 28561+ int32_t ret = player_->SetSource(fd, 0, length); 28562+ (void)close(fd); 28563+ return ret; 28564+} 28565+ 28566+} // namespace media 28567diff --git a/media/base/ohos/ohos_media_player_bridge.h b/media/base/ohos/ohos_media_player_bridge.h 28568new file mode 100644 28569index 0000000000..2446a5dec1 28570--- /dev/null 28571+++ b/media/base/ohos/ohos_media_player_bridge.h 28572@@ -0,0 +1,95 @@ 28573+// Copyright 2022 The Huawei Authors. All rights reserved. 28574+// Use of this source code is governed by a BSD-style license that can be 28575+// found in the LICENSE file. 28576+ 28577+#ifndef MEDIA_BASE_OHOS_MEDIA_PLAYER_BRIDGE_H_ 28578+#define MEDIA_BASE_OHOS_MEDIA_PLAYER_BRIDGE_H_ 28579+ 28580+#include <player.h> 28581+#include <surface.h> 28582+ 28583+#include "base/memory/weak_ptr.h" 28584+#include "media/base/media_export.h" 28585+#include "media/base/ohos/ohos_media_player_callback.h" 28586+#include "media/base/ohos/ohos_media_player_listener.h" 28587+#include "url/gurl.h" 28588+#include "url/origin.h" 28589+ 28590+namespace media { 28591+class MEDIA_EXPORT OHOSMediaPlayerBridge { 28592+ public: 28593+ class Client { 28594+ public: 28595+ virtual void OnFrameAvailable(int fd, 28596+ uint32_t size, 28597+ int32_t width, 28598+ int32_t height) = 0; 28599+ 28600+ // Called when media duration is first detected or changes. 28601+ virtual void OnMediaDurationChanged(base::TimeDelta duration) = 0; 28602+ 28603+ // Called when playback completed. 28604+ virtual void OnPlaybackComplete() = 0; 28605+ 28606+ // Called when error happens. 28607+ virtual void OnError(int error) = 0; 28608+ 28609+ // Called when video size has changed. 28610+ virtual void OnVideoSizeChanged(int width, int height) = 0; 28611+ }; 28612+ 28613+ enum MediaErrorType { 28614+ MEDIA_ERROR_FORMAT, 28615+ MEDIA_ERROR_DECODE, 28616+ MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK, 28617+ MEDIA_ERROR_INVALID_CODE, 28618+ MEDIA_ERROR_SERVER_DIED, 28619+ }; 28620+ 28621+ OHOSMediaPlayerBridge(const GURL& url, 28622+ const GURL& site_for_cookies, 28623+ const url::Origin& top_frame_origin, 28624+ const std::string& user_agent, 28625+ bool hide_url_log, 28626+ Client* client, 28627+ bool allow_credentials, 28628+ bool is_hls); 28629+ virtual ~OHOSMediaPlayerBridge(); 28630+ 28631+ int32_t Initialize(); 28632+ void Start(); 28633+ void Pause(); 28634+ void SeekTo(base::TimeDelta time); 28635+ base::TimeDelta GetDuration(); 28636+ void SetVolume(float volume); 28637+ base::TimeDelta GetMediaTime(); 28638+ void FinishPaint(int fd); 28639+ void SetPlaybackSpeed(OHOS::Media::PlaybackRateMode mode); 28640+ 28641+ void OnEnd(); 28642+ void OnError(int32_t errorCode); 28643+ void OnBufferAvailable(OHOS::sptr<OHOS::SurfaceBuffer> buffer); 28644+ void OnSeekDone(); 28645+ void OnPlayerStateUpdate(OHOS::Media::PlayerStates player_state); 28646+ 28647+ private: 28648+ 28649+ int32_t SetFdSource(const std::string& path); 28650+ 28651+ const std::string surfaceFormat = "SURFACE_FORMAT"; 28652+ std::shared_ptr<OHOS::Media::Player> player_ = nullptr; 28653+ std::deque<OHOS::sptr<OHOS::SurfaceBuffer>> cached_buffers_; 28654+ OHOS::sptr<OHOS::Surface> consumer_surface_ = nullptr; 28655+ OHOS::sptr<OHOS::IBufferConsumerListener> listener_; 28656+ scoped_refptr<base::SingleThreadTaskRunner> task_runner_; 28657+ Client* client_; 28658+ GURL url_; 28659+ bool seeking_ = false; 28660+ base::TimeDelta pending_seek_; 28661+ OHOS::Media::PlayerStates player_state_; 28662+ base::WeakPtrFactory<OHOSMediaPlayerBridge> weak_factory_{this}; 28663+ DISALLOW_COPY_AND_ASSIGN(OHOSMediaPlayerBridge); 28664+}; 28665+} // namespace media 28666+ 28667+#endif // MEDIA_BASE_OHOS_MEDIA_PLAYER_BRIDGE_H_ 28668diff --git a/media/base/ohos/ohos_media_player_callback.cc b/media/base/ohos/ohos_media_player_callback.cc 28669new file mode 100644 28670index 0000000000..36c9ab8c1f 28671--- /dev/null 28672+++ b/media/base/ohos/ohos_media_player_callback.cc 28673@@ -0,0 +1,100 @@ 28674+// Copyright 2022 The Huawei Authors. All rights reserved. 28675+// Use of this source code is governed by a BSD-style license that can be 28676+// found in the LICENSE file. 28677+ 28678+#include "media/base/ohos/ohos_media_player_callback.h" 28679+ 28680+namespace media { 28681+ 28682+OHOSMediaPlayerCallback::OHOSMediaPlayerCallback( 28683+ const scoped_refptr<base::SingleThreadTaskRunner>& task_runner, 28684+ base::WeakPtr<OHOSMediaPlayerBridge> media_player) 28685+ : task_runner_(task_runner), media_player_(media_player) { 28686+ DCHECK(task_runner_.get()); 28687+ DCHECK(media_player_); 28688+} 28689+ 28690+OHOSMediaPlayerCallback::~OHOSMediaPlayerCallback() {} 28691+ 28692+void OHOSMediaPlayerCallback::OnError(OHOS::Media::PlayerErrorType errorType, 28693+ int32_t errorCode) { 28694+ LOG(ERROR) << "media player error code=" << errorCode; 28695+ int media_error_type = 28696+ OHOSMediaPlayerBridge::MediaErrorType::MEDIA_ERROR_INVALID_CODE; 28697+ if (IsUnsupportType(errorCode)) { 28698+ media_error_type = 28699+ OHOSMediaPlayerBridge::MediaErrorType::MEDIA_ERROR_FORMAT; 28700+ } else if (IsFatalError(errorCode)) { 28701+ media_error_type = 28702+ OHOSMediaPlayerBridge::MediaErrorType::MEDIA_ERROR_DECODE; 28703+ } 28704+ task_runner_->PostTask( 28705+ FROM_HERE, base::BindOnce(&OHOSMediaPlayerBridge::OnError, media_player_, 28706+ media_error_type)); 28707+} 28708+ 28709+void OHOSMediaPlayerCallback::OnInfo(OHOS::Media::PlayerOnInfoType type, 28710+ int32_t extra, 28711+ const OHOS::Media::Format& infoBody) { 28712+ (void)infoBody; 28713+ switch (type) { 28714+ case OHOS::Media::INFO_TYPE_SEEKDONE: 28715+ task_runner_->PostTask( 28716+ FROM_HERE, 28717+ base::BindOnce(&OHOSMediaPlayerBridge::OnSeekDone, media_player_)); 28718+ break; 28719+ case OHOS::Media::INFO_TYPE_EOS: 28720+ task_runner_->PostTask( 28721+ FROM_HERE, 28722+ base::BindOnce(&OHOSMediaPlayerBridge::OnEnd, media_player_)); 28723+ break; 28724+ case OHOS::Media::INFO_TYPE_STATE_CHANGE: 28725+ task_runner_->PostTask( 28726+ FROM_HERE, 28727+ base::BindOnce(&OHOSMediaPlayerBridge::OnPlayerStateUpdate, 28728+ media_player_, 28729+ static_cast<OHOS::Media::PlayerStates>(extra))); 28730+ break; 28731+ case OHOS::Media::INFO_TYPE_POSITION_UPDATE: 28732+ break; 28733+ case OHOS::Media::INFO_TYPE_MESSAGE: 28734+ break; 28735+ default: 28736+ break; 28737+ } 28738+} 28739+ 28740+bool OHOSMediaPlayerCallback::IsUnsupportType(int32_t errorCode) { 28741+ switch (errorCode) { 28742+ case OHOS::Media::MSERR_UNSUPPORT: 28743+ case OHOS::Media::MSERR_UNSUPPORT_AUD_SRC_TYPE: 28744+ case OHOS::Media::MSERR_UNSUPPORT_AUD_CHANNEL_NUM: 28745+ case OHOS::Media::MSERR_UNSUPPORT_AUD_ENC_TYPE: 28746+ case OHOS::Media::MSERR_UNSUPPORT_AUD_PARAMS: 28747+ case OHOS::Media::MSERR_UNSUPPORT_VID_SRC_TYPE: 28748+ case OHOS::Media::MSERR_UNSUPPORT_VID_ENC_TYPE: 28749+ case OHOS::Media::MSERR_UNSUPPORT_VID_PARAMS: 28750+ case OHOS::Media::MSERR_UNSUPPORT_CONTAINER_TYPE: 28751+ case OHOS::Media::MSERR_UNSUPPORT_PROTOCOL_TYPE: 28752+ case OHOS::Media::MSERR_UNSUPPORT_VID_DEC_TYPE: 28753+ case OHOS::Media::MSERR_UNSUPPORT_AUD_DEC_TYPE: 28754+ return true; 28755+ } 28756+ return false; 28757+} 28758+bool OHOSMediaPlayerCallback::IsFatalError(int32_t errorCode) { 28759+ switch (errorCode) { 28760+ case OHOS::Media::MSERR_NO_MEMORY: 28761+ case OHOS::Media::MSERR_SERVICE_DIED: 28762+ case OHOS::Media::MSERR_CREATE_PLAYER_ENGINE_FAILED: 28763+ case OHOS::Media::MSERR_CREATE_AVMETADATAHELPER_ENGINE_FAILED: 28764+ case OHOS::Media::MSERR_AUD_DEC_FAILED: 28765+ case OHOS::Media::MSERR_VID_DEC_FAILED: 28766+ case OHOS::Media::MSERR_OPEN_FILE_FAILED: 28767+ case OHOS::Media::MSERR_FILE_ACCESS_FAILED: 28768+ return true; 28769+ } 28770+ return false; 28771+} 28772+ 28773+} // namespace media 28774diff --git a/media/base/ohos/ohos_media_player_callback.h b/media/base/ohos/ohos_media_player_callback.h 28775new file mode 100644 28776index 0000000000..b7837c39b0 28777--- /dev/null 28778+++ b/media/base/ohos/ohos_media_player_callback.h 28779@@ -0,0 +1,45 @@ 28780+// Copyright 2022 The Huawei Authors. All rights reserved. 28781+// Use of this source code is governed by a BSD-style license that can be 28782+// found in the LICENSE file. 28783+ 28784+#ifndef MEDIA_BASE_OHOS_MEDIA_PLAYER_CALLBACK_H_ 28785+#define MEDIA_BASE_OHOS_MEDIA_PLAYER_CALLBACK_H_ 28786+ 28787+#include <media_errors.h> 28788+#include "base/logging.h" 28789+#include "base/single_thread_task_runner.h" 28790+#include "media/base/ohos/ohos_media_player_bridge.h" 28791+ 28792+namespace base { 28793+class SingleThreadTaskRunner; 28794+} 28795+ 28796+namespace media { 28797+ 28798+class OHOSMediaPlayerBridge; 28799+ 28800+class OHOSMediaPlayerCallback : public OHOS::Media::PlayerCallback { 28801+ public: 28802+ OHOSMediaPlayerCallback( 28803+ const scoped_refptr<base::SingleThreadTaskRunner>& task_runner, 28804+ base::WeakPtr<OHOSMediaPlayerBridge> media_player); 28805+ 28806+ virtual ~OHOSMediaPlayerCallback(); 28807+ 28808+ void OnError(OHOS::Media::PlayerErrorType errorType, 28809+ int32_t errorCode) override; 28810+ void OnInfo(OHOS::Media::PlayerOnInfoType type, 28811+ int32_t extra, 28812+ const OHOS::Media::Format& infoBody = {}) override; 28813+ bool IsUnsupportType(int32_t errorCode); 28814+ bool IsFatalError(int32_t errorCode); 28815+ 28816+ private: 28817+ scoped_refptr<base::SingleThreadTaskRunner> task_runner_; 28818+ base::WeakPtr<OHOSMediaPlayerBridge> media_player_; 28819+ DISALLOW_COPY_AND_ASSIGN(OHOSMediaPlayerCallback); 28820+}; 28821+ 28822+} // namespace media 28823+ 28824+#endif // MEDIA_BASE_OHOS_MEDIA_PLAYER_CALLBACK_H_ 28825diff --git a/media/base/ohos/ohos_media_player_listener.cc b/media/base/ohos/ohos_media_player_listener.cc 28826new file mode 100644 28827index 0000000000..bb08070c17 28828--- /dev/null 28829+++ b/media/base/ohos/ohos_media_player_listener.cc 28830@@ -0,0 +1,40 @@ 28831+// Copyright 2022 The Huawei Authors. All rights reserved. 28832+// Use of this source code is governed by a BSD-style license that can be 28833+// found in the LICENSE file. 28834+ 28835+#include "media/base/ohos/ohos_media_player_listener.h" 28836+ 28837+namespace media { 28838+ 28839+OHOSMediaPlayerListener::OHOSMediaPlayerListener( 28840+ const scoped_refptr<base::SingleThreadTaskRunner>& task_runner, 28841+ base::WeakPtr<OHOSMediaPlayerBridge> media_player, 28842+ OHOS::sptr<OHOS::Surface> impl) 28843+ : task_runner_(task_runner), media_player_(media_player), surface_(impl) { 28844+ DCHECK(task_runner_.get()); 28845+ DCHECK(media_player_); 28846+} 28847+ 28848+OHOSMediaPlayerListener::~OHOSMediaPlayerListener() {} 28849+ 28850+void OHOSMediaPlayerListener::OnBufferAvailable() { 28851+ OHOS::sptr<OHOS::SurfaceBuffer> buffer; 28852+ int32_t fence; 28853+ OHOS::SurfaceError ret; 28854+ auto surface_temp = surface_.promote(); 28855+ if (surface_temp == nullptr) { 28856+ LOG(ERROR) << "surface is null"; 28857+ return; 28858+ } 28859+ 28860+ ret = surface_temp->AcquireBuffer(buffer, fence, timestamp, damage); 28861+ if (ret != OHOS::SURFACE_ERROR_OK) { 28862+ LOG(ERROR) << "acquire buffer fail, ret=" << ret; 28863+ return; 28864+ } 28865+ task_runner_->PostTask( 28866+ FROM_HERE, base::BindOnce(&OHOSMediaPlayerBridge::OnBufferAvailable, 28867+ media_player_, buffer)); 28868+} 28869+ 28870+} // namespace media 28871diff --git a/media/base/ohos/ohos_media_player_listener.h b/media/base/ohos/ohos_media_player_listener.h 28872new file mode 100644 28873index 0000000000..f2c3b70a27 28874--- /dev/null 28875+++ b/media/base/ohos/ohos_media_player_listener.h 28876@@ -0,0 +1,42 @@ 28877+// Copyright 2022 The Huawei Authors. All rights reserved. 28878+// Use of this source code is governed by a BSD-style license that can be 28879+// found in the LICENSE file. 28880+ 28881+#ifndef MEDIA_BASE_OHOS_MEDIA_PLAYER_LISTENER_H_ 28882+#define MEDIA_BASE_OHOS_MEDIA_PLAYER_LISTENER_H_ 28883+ 28884+#include <surface.h> 28885+#include "base/logging.h" 28886+#include "base/single_thread_task_runner.h" 28887+#include "media/base/ohos/ohos_media_player_bridge.h" 28888+ 28889+namespace base { 28890+class SingleThreadTaskRunner; 28891+} 28892+ 28893+namespace media { 28894+ 28895+class OHOSMediaPlayerBridge; 28896+ 28897+class OHOSMediaPlayerListener : public OHOS::IBufferConsumerListener { 28898+ public: 28899+ OHOSMediaPlayerListener( 28900+ const scoped_refptr<base::SingleThreadTaskRunner>& task_runner, 28901+ base::WeakPtr<OHOSMediaPlayerBridge> media_player, 28902+ OHOS::sptr<OHOS::Surface> impl); 28903+ 28904+ virtual ~OHOSMediaPlayerListener(); 28905+ void OnBufferAvailable() override; 28906+ 28907+ private: 28908+ scoped_refptr<base::SingleThreadTaskRunner> task_runner_; 28909+ base::WeakPtr<OHOSMediaPlayerBridge> media_player_; 28910+ OHOS::wptr<OHOS::Surface> surface_; 28911+ int64_t timestamp; 28912+ OHOS::Rect damage; 28913+ DISALLOW_COPY_AND_ASSIGN(OHOSMediaPlayerListener); 28914+}; 28915+ 28916+} // namespace media 28917+ 28918+#endif // MEDIA_BASE_OHOS_MEDIA_PLAYER_LISTENER_H_ 28919diff --git a/media/base/renderer_factory_selector.h b/media/base/renderer_factory_selector.h 28920index c291fb35d2..8a19d8ca35 100644 28921--- a/media/base/renderer_factory_selector.h 28922+++ b/media/base/renderer_factory_selector.h 28923@@ -47,7 +47,12 @@ enum class RendererFactoryType { 28924 kMediaFoundation = 6, // MediaFoundationRendererClientFactory 28925 kFuchsia = 7, // FuchsiaRendererFactory 28926 kRemoting = 8, // RemotingRendererFactory 28927+#if defined(OS_OHOS) 28928+ kOHOSMediaPlayer = 9, // OHOSMediaPlayerRendererFactory 28929+ kMaxValue = kOHOSMediaPlayer, 28930+#else 28931 kMaxValue = kRemoting, 28932+#endif 28933 }; 28934 28935 class MEDIA_EXPORT RendererFactorySelector { 28936diff --git a/media/base/video_renderer_sink.h b/media/base/video_renderer_sink.h 28937index b7b034cdd0..82b45f062b 100644 28938--- a/media/base/video_renderer_sink.h 28939+++ b/media/base/video_renderer_sink.h 28940@@ -70,6 +70,10 @@ class MEDIA_EXPORT VideoRendererSink { 28941 virtual void PaintSingleFrame(scoped_refptr<VideoFrame> frame, 28942 bool repaint_duplicate_frame = false) = 0; 28943 28944+#if defined(OS_OHOS) 28945+ virtual void SetFinishPaintCallback(base::RepeatingClosure callback) = 0; 28946+#endif 28947+ 28948 virtual ~VideoRendererSink() {} 28949 }; 28950 28951diff --git a/media/blink/video_frame_compositor.cc b/media/blink/video_frame_compositor.cc 28952index 216883fe46..e0f171bf2b 100644 28953--- a/media/blink/video_frame_compositor.cc 28954+++ b/media/blink/video_frame_compositor.cc 28955@@ -242,9 +242,20 @@ void VideoFrameCompositor::PaintSingleFrame(scoped_refptr<VideoFrame> frame, 28956 repaint_duplicate_frame) && 28957 IsClientSinkAvailable()) { 28958 client_->DidReceiveFrame(); 28959+#if defined(OS_OHOS) 28960+ if (finish_paint_cb_) { 28961+ finish_paint_cb_.Run(); 28962+ } 28963+#endif 28964 } 28965 } 28966 28967+#if defined(OS_OHOS) 28968+void VideoFrameCompositor::SetFinishPaintCallback(FinishPaintCallback callback) { 28969+ finish_paint_cb_ = std::move(callback); 28970+} 28971+#endif 28972+ 28973 void VideoFrameCompositor::UpdateCurrentFrameIfStale(UpdateType type) { 28974 TRACE_EVENT0("media", "VideoFrameCompositor::UpdateCurrentFrameIfStale"); 28975 DCHECK(task_runner_->BelongsToCurrentThread()); 28976diff --git a/media/blink/video_frame_compositor.h b/media/blink/video_frame_compositor.h 28977index 8ee417924f..11cb4e90a9 100644 28978--- a/media/blink/video_frame_compositor.h 28979+++ b/media/blink/video_frame_compositor.h 28980@@ -69,6 +69,10 @@ class MEDIA_BLINK_EXPORT VideoFrameCompositor : public VideoRendererSink, 28981 28982 using OnNewFramePresentedCB = base::OnceClosure; 28983 28984+#if defined(OS_OHOS) 28985+ using FinishPaintCallback = base::RepeatingClosure; 28986+#endif 28987+ 28988 enum UpdateType { 28989 kNormal, 28990 kBypassClient, // Disregards whether |client| is driving frame updates, and 28991@@ -119,6 +123,10 @@ class MEDIA_BLINK_EXPORT VideoFrameCompositor : public VideoRendererSink, 28992 void PaintSingleFrame(scoped_refptr<VideoFrame> frame, 28993 bool repaint_duplicate_frame = false) override; 28994 28995+#if defined(OS_OHOS) 28996+ void SetFinishPaintCallback(FinishPaintCallback callback) override; 28997+#endif 28998+ 28999 // If |client_| is not set, |callback_| is set, and |is_background_rendering_| 29000 // is true, it requests a new frame from |callback_|. Uses the elapsed time 29001 // between calls to this function as the render interval, defaulting to 16.6ms 29002@@ -255,6 +263,9 @@ class MEDIA_BLINK_EXPORT VideoFrameCompositor : public VideoRendererSink, 29003 29004 base::TimeTicks last_background_render_; 29005 OnNewProcessedFrameCB new_processed_frame_cb_; 29006+#if defined(OS_OHOS) 29007+ FinishPaintCallback finish_paint_cb_; 29008+#endif 29009 cc::UpdateSubmissionStateCB update_submission_state_callback_; 29010 29011 // Callback used to satisfy video.rVFC requests. 29012diff --git a/media/blink/webmediaplayer_impl.cc b/media/blink/webmediaplayer_impl.cc 29013index 7e0e4ef53c..fe0a375373 100644 29014--- a/media/blink/webmediaplayer_impl.cc 29015+++ b/media/blink/webmediaplayer_impl.cc 29016@@ -732,7 +732,7 @@ void WebMediaPlayerImpl::DoLoad(LoadType load_type, 29017 learning::FeatureDictionary dict; 29018 will_play_helper_.BeginObservation(dict); 29019 29020-#if defined(OS_ANDROID) 29021+#if defined(OS_ANDROID) || defined(OS_OHOS) 29022 // Only allow credentials if the crossorigin attribute is unspecified 29023 // (kCorsModeUnspecified) or "use-credentials" (kCorsModeUseCredentials). 29024 // This value is only used by the MediaPlayerRenderer. 29025@@ -2748,6 +2748,12 @@ std::unique_ptr<Renderer> WebMediaPlayerImpl::CreateRenderer( 29026 } 29027 29028 void WebMediaPlayerImpl::StartPipeline() { 29029+#if defined(OS_OHOS) 29030+ if (load_type_ == kLoadTypeURL) { 29031+ renderer_factory_selector_->SetBaseFactoryType( 29032+ RendererFactoryType::kOHOSMediaPlayer); 29033+ } 29034+#endif 29035 DCHECK(main_task_runner_->BelongsToCurrentThread()); 29036 29037 Demuxer::EncryptedMediaInitDataCB encrypted_media_init_data_cb = 29038@@ -2760,9 +2766,12 @@ void WebMediaPlayerImpl::StartPipeline() { 29039 base::Unretained(compositor_.get()), 29040 BindToCurrentLoop(base::BindOnce( 29041 &WebMediaPlayerImpl::OnFirstFrame, weak_this_)))); 29042- 29043+#if defined(OS_ANDROID) || defined(OS_OHOS) 29044 #if defined(OS_ANDROID) 29045 if (demuxer_found_hls_ || 29046+#else 29047+ if ( 29048+#endif 29049 renderer_factory_selector_->GetCurrentFactory() 29050 ->GetRequiredMediaResourceType() == MediaResource::Type::URL) { 29051 // MediaPlayerRendererClientFactory is the only factory that a uses 29052@@ -2782,7 +2791,7 @@ void WebMediaPlayerImpl::StartPipeline() { 29053 this, false, false); 29054 return; 29055 } 29056-#endif // defined(OS_ANDROID) 29057+#endif // defined(OS_ANDROID) || defined(OS_OHOS) 29058 29059 // Figure out which demuxer to use. 29060 if (demuxer_override_) { 29061diff --git a/media/blink/webmediaplayer_impl.h b/media/blink/webmediaplayer_impl.h 29062index 541a7dd70d..cdcde027a0 100644 29063--- a/media/blink/webmediaplayer_impl.h 29064+++ b/media/blink/webmediaplayer_impl.h 29065@@ -844,7 +844,7 @@ class MEDIA_BLINK_EXPORT WebMediaPlayerImpl 29066 // MediaResource::Type::URL for now. 29067 bool using_media_player_renderer_ = false; 29068 29069-#if defined(OS_ANDROID) 29070+#if defined(OS_ANDROID) || defined(OS_OHOS) 29071 // Set during the initial DoLoad() call. Used to determine whether to allow 29072 // credentials or not for MediaPlayerRenderer. 29073 bool allow_media_player_renderer_credentials_ = false; 29074diff --git a/media/media_options.gni b/media/media_options.gni 29075index b3e22d553b..40c6e09c5a 100644 29076--- a/media/media_options.gni 29077+++ b/media/media_options.gni 29078@@ -30,6 +30,12 @@ media_subcomponent_deps = [ 29079 "//media/video", 29080 ] 29081 29082+if (is_ohos) { 29083+ media_subcomponent_deps += [ 29084+ "//media/base/ohos", 29085+ ] 29086+} 29087+ 29088 if (is_fuchsia) { 29089 media_subcomponent_deps += [ 29090 "//media/fuchsia/cdm", 29091diff --git a/media/mojo/clients/mojo_renderer_factory.cc b/media/mojo/clients/mojo_renderer_factory.cc 29092index 3b317f7978..da7ef88cfa 100644 29093--- a/media/mojo/clients/mojo_renderer_factory.cc 29094+++ b/media/mojo/clients/mojo_renderer_factory.cc 29095@@ -100,7 +100,9 @@ std::unique_ptr<MojoRenderer> MojoRendererFactory::CreateFlingingRenderer( 29096 video_renderer_sink, 29097 std::move(renderer_remote)); 29098 } 29099+#endif // defined(OS_ANDROID) 29100 29101+#if defined(OS_ANDROID) || defined(OS_OHOS) 29102 std::unique_ptr<MojoRenderer> MojoRendererFactory::CreateMediaPlayerRenderer( 29103 mojo::PendingReceiver<mojom::MediaPlayerRendererExtension> 29104 renderer_extension_receiver, 29105@@ -120,6 +122,6 @@ std::unique_ptr<MojoRenderer> MojoRendererFactory::CreateMediaPlayerRenderer( 29106 video_renderer_sink, 29107 std::move(renderer_remote)); 29108 } 29109-#endif // defined(OS_ANDROID) 29110+#endif // defined(OS_ANDROID) || defined(OS_OHOS) 29111 29112 } // namespace media 29113diff --git a/media/mojo/clients/mojo_renderer_factory.h b/media/mojo/clients/mojo_renderer_factory.h 29114index bab4060fa2..51d585b05d 100644 29115--- a/media/mojo/clients/mojo_renderer_factory.h 29116+++ b/media/mojo/clients/mojo_renderer_factory.h 29117@@ -65,7 +65,9 @@ class MojoRendererFactory final : public RendererFactory { 29118 client_extenion_ptr, 29119 const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner, 29120 VideoRendererSink* video_renderer_sink); 29121+#endif // defined (OS_ANDROID) 29122 29123+#if defined(OS_ANDROID) || defined(OS_OHOS) 29124 std::unique_ptr<MojoRenderer> CreateMediaPlayerRenderer( 29125 mojo::PendingReceiver<mojom::MediaPlayerRendererExtension> 29126 renderer_extension_receiver, 29127@@ -73,7 +75,7 @@ class MojoRendererFactory final : public RendererFactory { 29128 client_extension_remote, 29129 const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner, 29130 VideoRendererSink* video_renderer_sink); 29131-#endif // defined (OS_ANDROID) 29132+#endif // defined(OS_ANDROID) || defined(OS_OHOS) 29133 29134 private: 29135 // InterfaceFactory or InterfaceProvider used to create or connect to remote 29136diff --git a/media/mojo/mojom/BUILD.gn b/media/mojo/mojom/BUILD.gn 29137index def4002603..436a73a2a3 100644 29138--- a/media/mojo/mojom/BUILD.gn 29139+++ b/media/mojo/mojom/BUILD.gn 29140@@ -8,6 +8,10 @@ import("//mojo/public/tools/bindings/mojom.gni") 29141 mojom("mojom") { 29142 generate_java = true 29143 29144+ if (is_android || is_ohos) { 29145+ enabled_features = [ "is_android_or_ohos" ] 29146+ } 29147+ 29148 # TODO(crbug.com/676224): Conditionally add source files in this list when we 29149 # support EnabledIf attribute in mojom files. 29150 sources = [ 29151diff --git a/media/mojo/mojom/interface_factory.mojom b/media/mojo/mojom/interface_factory.mojom 29152index cf43b8cd01..8222459bb7 100644 29153--- a/media/mojo/mojom/interface_factory.mojom 29154+++ b/media/mojo/mojom/interface_factory.mojom 29155@@ -35,7 +35,7 @@ interface InterfaceFactory { 29156 CreateCastRenderer(mojo_base.mojom.UnguessableToken overlay_plane_id, 29157 pending_receiver<Renderer> renderer); 29158 29159- [EnableIf=is_android] 29160+ [EnableIf=is_android_or_ohos] 29161 // Creates a MediaPlayerRenderer (MediaPlayerRendererClientFactory). 29162 // - |renderer_extension| is bound in MediaPlayerRenderer, and receives calls 29163 // from MediaPlayerRendererClient. 29164diff --git a/media/mojo/mojom/renderer_extensions.mojom b/media/mojo/mojom/renderer_extensions.mojom 29165index bd245a4113..8d8e58cda5 100644 29166--- a/media/mojo/mojom/renderer_extensions.mojom 29167+++ b/media/mojo/mojom/renderer_extensions.mojom 29168@@ -9,6 +9,15 @@ import "mojo/public/mojom/base/time.mojom"; 29169 import "mojo/public/mojom/base/unguessable_token.mojom"; 29170 import "ui/gfx/geometry/mojom/geometry.mojom"; 29171 29172+[EnableIf=is_ohos] 29173+struct OhosSurfaceBufferHandle { 29174+ uint32 buffer_size; 29175+ int32 fd_browser; 29176+ int32 width; 29177+ int32 height; 29178+ handle<platform> buffer_fd; 29179+}; 29180+ 29181 // Extension of the mojo::RendererClient communication layer for HLS and Android 29182 // software rendering fallback paths. 29183 // This allows the Browser side to call 29184@@ -20,6 +29,8 @@ interface MediaPlayerRendererClientExtension { 29185 // metadata changes. 29186 OnVideoSizeChange(gfx.mojom.Size size); 29187 OnDurationChange(mojo_base.mojom.TimeDelta duration); 29188+ [EnableIf=is_ohos] 29189+ OnFrameUpdate(OhosSurfaceBufferHandle ohosSurfaceBufferHandle); 29190 }; 29191 29192 // Extension of the mojo::RendererClient communication layer for HLS and Android 29193@@ -34,6 +45,9 @@ interface MediaPlayerRendererExtension { 29194 // StreamTexture's set-up. 29195 InitiateScopedSurfaceRequest() 29196 => (mojo_base.mojom.UnguessableToken request_token); 29197+ 29198+ [EnableIf=is_ohos] 29199+ FinishPaint(int32 fd); 29200 }; 29201 29202 // Extension of the mojo::RendererClient communication layer for media flinging, 29203diff --git a/media/mojo/services/interface_factory_impl.cc b/media/mojo/services/interface_factory_impl.cc 29204index 7fa9868bef..c4f401a140 100644 29205--- a/media/mojo/services/interface_factory_impl.cc 29206+++ b/media/mojo/services/interface_factory_impl.cc 29207@@ -119,7 +119,7 @@ void InterfaceFactoryImpl::CreateCastRenderer( 29208 } 29209 #endif 29210 29211-#if defined(OS_ANDROID) 29212+#if defined(OS_ANDROID) || defined(OS_OHOS) 29213 void InterfaceFactoryImpl::CreateMediaPlayerRenderer( 29214 mojo::PendingRemote<mojom::MediaPlayerRendererClientExtension> 29215 client_extension_ptr, 29216@@ -128,7 +128,9 @@ void InterfaceFactoryImpl::CreateMediaPlayerRenderer( 29217 renderer_extension_receiver) { 29218 NOTREACHED(); 29219 } 29220+#endif //defined(OS_ANDROID) || defined(OS_OHOS) 29221 29222+#if defined(OS_ANDROID) 29223 void InterfaceFactoryImpl::CreateFlingingRenderer( 29224 const std::string& audio_device_id, 29225 mojo::PendingRemote<mojom::FlingingRendererClientExtension> 29226diff --git a/media/mojo/services/interface_factory_impl.h b/media/mojo/services/interface_factory_impl.h 29227index 8c98cc1e98..6fe4015aa9 100644 29228--- a/media/mojo/services/interface_factory_impl.h 29229+++ b/media/mojo/services/interface_factory_impl.h 29230@@ -56,13 +56,15 @@ class InterfaceFactoryImpl final 29231 const base::UnguessableToken& overlay_plane_id, 29232 mojo::PendingReceiver<mojom::Renderer> receiver) final; 29233 #endif 29234-#if defined(OS_ANDROID) 29235+#if defined(OS_ANDROID) || defined(OS_OHOS) 29236 void CreateMediaPlayerRenderer( 29237 mojo::PendingRemote<mojom::MediaPlayerRendererClientExtension> 29238 client_extension_remote, 29239 mojo::PendingReceiver<mojom::Renderer> receiver, 29240 mojo::PendingReceiver<mojom::MediaPlayerRendererExtension> 29241 renderer_extension_receiver) final; 29242+#endif // defined(OS_ANDROID) || defined(OS_OHOS) 29243+#if defined(OS_ANDROID) 29244 void CreateFlingingRenderer( 29245 const std::string& presentation_id, 29246 mojo::PendingRemote<mojom::FlingingRendererClientExtension> 29247diff --git a/net/cert/cert_verify_proc_ohos.cc b/net/cert/cert_verify_proc_ohos.cc 29248index 08010f9f4d..b36b8d9022 100644 29249--- a/net/cert/cert_verify_proc_ohos.cc 29250+++ b/net/cert/cert_verify_proc_ohos.cc 29251@@ -1,4 +1,4 @@ 29252-// Copyright (c) 2022 The Chromium Authors. All rights reserved. 29253+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 29254 // Use of this source code is governed by a BSD-style license that can be 29255 // found in the LICENSE file. 29256 29257diff --git a/net/cert/cert_verify_proc_ohos.h b/net/cert/cert_verify_proc_ohos.h 29258index 05fb1b6dfe..4680f9d2a3 100644 29259--- a/net/cert/cert_verify_proc_ohos.h 29260+++ b/net/cert/cert_verify_proc_ohos.h 29261@@ -1,4 +1,4 @@ 29262-// Copyright (c) 2022 The Chromium Authors. All rights reserved. 29263+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 29264 // Use of this source code is governed by a BSD-style license that can be 29265 // found in the LICENSE file. 29266 29267diff --git a/ohos_nweb/BUILD.gn b/ohos_nweb/BUILD.gn 29268new file mode 100644 29269index 0000000000..c87c2a462f 29270--- /dev/null 29271+++ b/ohos_nweb/BUILD.gn 29272@@ -0,0 +1,190 @@ 29273+# Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 29274+# Use of this source code is governed by a BSD-style license that can be 29275+# found in the LICENSE file. 29276+ 29277+import("//build/buildflag_header.gni") 29278+import("//build/config/features.gni") 29279+import("//tools/grit/grit_rule.gni") 29280+import("//tools/grit/repack.gni") 29281+import("//build/config/ohos/config.gni") 29282+ 29283+component("nweb_hilog") { 29284+ sources = [ 29285+ "src/nweb_hilog.h", 29286+ ] 29287+ 29288+ libs = [ 29289+ "hilog", 29290+ ] 29291+ 29292+ include_dirs = ohos_src_includes 29293+ lib_dirs = ohos_libs_dir 29294+} 29295+ 29296+################################################# 29297+ 29298+config("cef_nweb_config") { 29299+ include_dirs = [ 29300+ "include", 29301+ "src", 29302+ "src/cef_delegate", 29303+ "//cef", 29304+ "//cef/include", 29305+ "//cef/libcef/browser/net_service", 29306+ ] 29307+ include_dirs += ohos_src_includes 29308+ 29309+ lib_dirs = ohos_libs_dir 29310+ libs = [ 29311+ "inputmethod_client.z", 29312+ "ipc_core.z", 29313+ "inputmethod_ability.z", 29314+ ] 29315+ 29316+ defines = [ 29317+ "USING_CHROMIUM_INCLUDES", 29318+ ] 29319+} 29320+ 29321+component("cef_nweb") { 29322+ configs += [ 29323+ ":cef_nweb_config", 29324+ ] 29325+ 29326+ sources = [ 29327+ "src/cef_delegate/nweb_application.h", 29328+ "src/cef_delegate/nweb_application.cc", 29329+ "src/cef_delegate/nweb_handler_delegate.h", 29330+ "src/cef_delegate/nweb_handler_delegate.cc", 29331+ "src/cef_delegate/nweb_delegate.cc", 29332+ "src/cef_delegate/nweb_delegate.h", 29333+ "src/cef_delegate/nweb_render_handler.h", 29334+ "src/cef_delegate/nweb_render_handler.cc", 29335+ "src/cef_delegate/nweb_event_handler.h", 29336+ "src/cef_delegate/nweb_event_handler.cc", 29337+ "src/cef_delegate/nweb_js_dialog_result_impl.cc", 29338+ "src/cef_delegate/nweb_js_dialog_result_impl.h", 29339+ "src/cef_delegate/nweb_geolocation_callback.h", 29340+ "src/cef_delegate/nweb_geolocation_callback.cc", 29341+ "src/cef_delegate/nweb_preference_delegate.h", 29342+ "src/cef_delegate/nweb_preference_delegate.cc", 29343+ "src/cef_delegate/nweb_cookie_manager_delegate.cc", 29344+ "src/cef_delegate/nweb_cookie_manager_delegate.h", 29345+ "src/cef_delegate/nweb_resource_handler.cc", 29346+ "src/cef_delegate/nweb_resource_handler.h", 29347+ "src/cef_delegate/nweb_inputmethod_client.h", 29348+ "src/cef_delegate/nweb_access_request_delegate.cc", 29349+ "src/cef_delegate/nweb_access_request_delegate.h", 29350+ ] 29351+ 29352+ deps = [ 29353+ "//base:base", 29354+ "//cef:libweb_engine", 29355+ "//cef:libcef_dll_wrapper", 29356+ ] 29357+} 29358+ 29359+################################################# 29360+ 29361+config("nweb_config") { 29362+ defines = [ 29363+ "OHOS_NWEB", 29364+ "OS_OHOS", 29365+ "USE_CEF", 29366+ ] 29367+ 29368+ include_dirs = [ 29369+ "include", 29370+ "src", 29371+ ] 29372+ 29373+ include_dirs += ohos_src_includes 29374+} 29375+ 29376+component("nweb_sources") { 29377+ configs += [ 29378+ ":nweb_config", 29379+ ":cef_nweb_config", 29380+ ] 29381+ 29382+ sources = [ 29383+ "include/nweb_access_request.h", 29384+ "include/nweb_console_log.h", 29385+ "include/nweb_cookie_manager.h", 29386+ "include/nweb_geolocation_callback_interface.h", 29387+ "include/nweb_js_dialog_result.h", 29388+ "include/nweb_value_callback.h", 29389+ "include/nweb_preference_delegate.h", 29390+ "include/nweb_handler.h", 29391+ "include/nweb.h", 29392+ "include/nweb_javascript_result_callback.h", 29393+ "include/nweb_value.h", 29394+ "src/nweb_cookie_manager_delegate_interface.h", 29395+ "src/nweb_cookie_manager_impl.cc", 29396+ "src/nweb_cookie_manager_impl.h", 29397+ "src/nweb_delegate_interface.h", 29398+ "src/nweb_delegate_adapter.h", 29399+ "src/nweb_delegate_adapter.cc", 29400+ "src/nweb_hilog.h", 29401+ "src/nweb_impl.cc", 29402+ "src/nweb_impl.h", 29403+ "src/nweb_input_handler.cc", 29404+ "src/nweb_input_handler.h", 29405+ "src/nweb_output_handler.cc", 29406+ "src/nweb_output_handler.h", 29407+ "src/nweb_url_resource_request_impl.h", 29408+ "src/nweb_url_resource_request_impl.cc", 29409+ "src/nweb_url_resource_error_impl.hh", 29410+ "src/nweb_inputmethod_handler.cc", 29411+ "src/nweb_inputmethod_handler.h", 29412+ ] 29413+ 29414+ deps = [ 29415+ ":nweb_hilog", 29416+ ":cef_nweb", 29417+ ] 29418+} 29419+ 29420+shared_library("libnweb_adapter") { 29421+ deps = [ 29422+ ":nweb_sources", 29423+ ] 29424+} 29425+ 29426+static_library("libohosnweb_static") { 29427+ deps = [ 29428+ ":nweb_sources", 29429+ ] 29430+} 29431+ 29432+################################################# 29433+ 29434+config("ohosnweb_core_config") { 29435+ defines = [ 29436+ "OHOS_NWEB", 29437+ "OS_OHOS", 29438+ ] 29439+ 29440+ include_dirs = [ 29441+ "//cef", 29442+ "//cef/include", 29443+ ] 29444+ 29445+ include_dirs += ohos_src_includes 29446+} 29447+ 29448+executable("web_render") { 29449+ configs += [ 29450+ ":ohosnweb_core_config", 29451+ ] 29452+ 29453+ sources = [ 29454+ "src/ohos_nweb_main.cc", 29455+ ] 29456+ 29457+ deps = [ 29458+ ":nweb_hilog", 29459+ "//cef:libweb_engine", 29460+ "//cef:libcef_dll_wrapper", 29461+ ] 29462+} 29463\ No newline at end of file 29464diff --git a/ohos_nweb/README.md b/ohos_nweb/README.md 29465new file mode 100644 29466index 0000000000..2b17ab6e29 29467--- /dev/null 29468+++ b/ohos_nweb/README.md 29469@@ -0,0 +1,30 @@ 29470+# 目录内容 29471+ 29472+该目录为OHOS系统提供对底层web内核的一层封装。各子目录内容为: 29473+ 29474+- `include`:提供暴露给OHOS的接口和相关定义。OHOS侧可通过这些方法加载和使用web内核 29475+- `src`:对web内核的封装实现,其中各子目录中的内容表示对不同web内核的封装,其它部分为一些通用逻辑的实现 29476+ - `cef_delegate`: 对cef接口的封装 29477+ 29478+# 编译 29479+ 29480+使用nweb根目录下build.sh脚本即可使用默认参数进行编译,并输出到默认的`out/Default`路径下。也可以自定义编译: 29481+ 29482+```bash 29483+gn args <output_path> # 自定义编译参数和输出路径 29484+autoninja -C <output_path> libweb_engine libnweb_adapter web_renderer 29485+``` 29486+ 29487+nweb侧将编译得到: 29488+ 29489+ - `libweb_engine.so`,包含整个chromium内核和cef框架实现 29490+ - `libnweb_adapter.so`,包含OHOS与web内核的对接框架在内核侧的实现 29491+ - `web_renderer`二进制,用于起render子进程和网络子进程 29492+ 29493+上述三个文件均位于`<output_path>`路径下 29494+ 29495+此外,如果通过web_all_build.xml拉取代码,可使用nweb根目录上一级的build.sh脚本进行完整构建,其中会先将nweb侧的库编译出来,并自动将OHOS侧编译所需要的库拷贝到指定位置。 29496+ 29497+# 单板运行 29498+ 29499+参考OHOS侧README说明 29500\ No newline at end of file 29501diff --git a/ohos_nweb/include/nweb.h b/ohos_nweb/include/nweb.h 29502new file mode 100755 29503index 0000000000..707d3a6fd8 29504--- /dev/null 29505+++ b/ohos_nweb/include/nweb.h 29506@@ -0,0 +1,295 @@ 29507+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 29508+// Use of this source code is governed by a BSD-style license that can be 29509+// found in the LICENSE file. 29510+ 29511+#ifndef NWEB_H 29512+#define NWEB_H 29513+ 29514+#include <list> 29515+#include <map> 29516+#include <memory> 29517+#include <string> 29518+#include "nweb_export.h" 29519+ 29520+#include "nweb_download_callback.h" 29521+#include "nweb_javascript_result_callback.h" 29522+#include "nweb_preference.h" 29523+#include "nweb_value_callback.h" 29524+#include "nweb_hit_testresult.h" 29525+ 29526+namespace OHOS::NWeb { 29527+class NWebHandler; 29528+ 29529+struct OHOS_NWEB_EXPORT NWebInitArgs { 29530+ std::string dump_path = ""; 29531+ bool frame_info_dump = false; 29532+ std::list<std::string> web_engine_args_to_add; 29533+ std::list<std::string> web_engine_args_to_delete; 29534+ bool multi_renderer_process = false; 29535+}; 29536+ 29537+struct OHOS_NWEB_EXPORT NWebCreateInfo { 29538+ /* size info */ 29539+ uint32_t width = 0; 29540+ uint32_t height = 0; 29541+ 29542+ /* output frame cb */ 29543+ std::function<bool(const char*, uint32_t, uint32_t)> output_render_frame = 29544+ nullptr; 29545+ 29546+ /* init args */ 29547+ NWebInitArgs init_args; 29548+}; 29549+ 29550+class OHOS_NWEB_EXPORT NWeb : public std::enable_shared_from_this<NWeb> { 29551+ public: 29552+ NWeb() = default; 29553+ virtual ~NWeb() = default; 29554+ 29555+ virtual void Resize(uint32_t width, uint32_t height) = 0; 29556+ 29557+ /* lifecycle interface */ 29558+ virtual void OnPause() const = 0; 29559+ virtual void OnContinue() const = 0; 29560+ virtual void OnDestroy() = 0; 29561+ 29562+ /* event interface */ 29563+ virtual void OnTouchPress(int32_t id, double x, double y) = 0; 29564+ virtual void OnTouchRelease(int32_t id, double x = 0, double y = 0) = 0; 29565+ virtual void OnTouchMove(int32_t id, double x, double y) = 0; 29566+ virtual void OnTouchCancel() = 0; 29567+ virtual void OnNavigateBack() = 0; 29568+ 29569+ /** 29570+ * Loads the given URL. 29571+ * 29572+ * @param url String: the URL of the resource to load This value cannot be 29573+ * null. 29574+ * 29575+ * @return title string for the current page. 29576+ */ 29577+ virtual void Load(const std::string& url) const = 0; 29578+ /** 29579+ * Gets whether this NWeb has a back history item. 29580+ * 29581+ * @return true if this NWeb has a back history item 29582+ */ 29583+ virtual bool IsNavigatebackwardAllowed() const = 0; 29584+ /** 29585+ * Gets whether this NWeb has a forward history item. 29586+ * 29587+ * @return true if this NWeb has a forward history item 29588+ */ 29589+ virtual bool IsNavigateForwardAllowed() const = 0; 29590+ /** 29591+ * Gets whether this NWeb has a back or forward history item for number of 29592+ * steps. 29593+ * 29594+ * @param numSteps int: the negative or positive number of steps to move the 29595+ * history 29596+ * @return true if this NWeb has a forward history item 29597+ */ 29598+ virtual bool CanNavigateBackOrForward(int numSteps) const = 0; 29599+ /** 29600+ * Goes back in the history of this NWeb. 29601+ * 29602+ */ 29603+ virtual void NavigateBack() const = 0; 29604+ /** 29605+ * Goes forward in the history of this NWeb. 29606+ * 29607+ */ 29608+ virtual void NavigateForward() const = 0; 29609+ /** 29610+ * Reloads the current URL. 29611+ * 29612+ */ 29613+ virtual void Reload() const = 0; 29614+ /** 29615+ * Performs a zoom operation in this NWeb. 29616+ * 29617+ * @param zoomFactor float: the zoom factor to apply. The zoom factor will be 29618+ * clamped to the NWeb's zoom limits. This value must be in the range 0.01 29619+ * to 100.0 inclusive. 29620+ * 29621+ */ 29622+ virtual void Zoom(float zoomFactor) const = 0; 29623+ 29624+ /** 29625+ * Stops the current load. 29626+ * 29627+ * @param code string: javascript code 29628+ */ 29629+ virtual void Stop() const = 0; 29630+ /** 29631+ * ExecuteJavaScript 29632+ * 29633+ */ 29634+ virtual void ExecuteJavaScript(const std::string& code) const = 0; 29635+ /** 29636+ * ExecuteJavaScript plus 29637+ * 29638+ * @param code string: javascript code 29639+ * 29640+ * @param callback NWebValueCallback: javascript running result 29641+ * 29642+ */ 29643+ virtual void ExecuteJavaScript( 29644+ const std::string& code, 29645+ std::shared_ptr<NWebValueCallback<std::string>> callback) const = 0; 29646+ /** 29647+ * Gets the NWebPreference object used to control the settings for this 29648+ * NWeb. 29649+ * 29650+ * @return a NWebPreference object that can be used to control this NWeb's 29651+ * settings This value cannot be null. 29652+ */ 29653+ virtual const std::shared_ptr<NWebPreference> GetPreference() const = 0; 29654+ /** 29655+ * Gets the last hit test result. 29656+ * 29657+ * @return the last HitTestResult 29658+ */ 29659+ virtual const HitTestResult GetHitTestResult() const = 0; 29660+ 29661+ /** 29662+ * Sets the background color for this view. 29663+ * 29664+ * @param color int: the color of the background 29665+ * 29666+ */ 29667+ virtual void PutBackgroundColor(int color) const = 0; 29668+ /** 29669+ * Sets the NWebDownloadCallback that will receive download event. 29670+ * This will replace the current handler. 29671+ * 29672+ * @param downloadListener NWebDownloadCallback: 29673+ * 29674+ */ 29675+ virtual void PutDownloadCallback( 29676+ std::shared_ptr<NWebDownloadCallback> downloadListener) = 0; 29677+ /** 29678+ * Sets the NWebHandler that will receive various notifications and 29679+ * requests. This will replace the current handler. 29680+ * 29681+ * @param client NWebHandler: an implementation of NWebHandler This value 29682+ * cannot be null. 29683+ * 29684+ */ 29685+ virtual void SetNWebHandler(std::shared_ptr<NWebHandler> handler) = 0; 29686+ /** 29687+ * Gets the NWebHandler. 29688+ * 29689+ * @return Gets the NWebHandler. 29690+ */ 29691+ virtual const std::shared_ptr<NWebHandler> GetNWebHandler() const = 0; 29692+ /** 29693+ * Gets the title for the current page. 29694+ * 29695+ * @return title string for the current page. 29696+ */ 29697+ virtual std::string Title() = 0; 29698+ /** 29699+ * Gets the progress for the current page. 29700+ * 29701+ * @return progress for the current page. 29702+ */ 29703+ virtual int PageLoadProgress() = 0; 29704+ 29705+ /** 29706+ * Gets the height of the HTML content. 29707+ * 29708+ * @return the height of the HTML content. 29709+ */ 29710+ virtual int ContentHeight() = 0; 29711+ 29712+ /** 29713+ * Gets the current scale of this NWeb. 29714+ * 29715+ * @return the current scale 29716+ */ 29717+ virtual float Scale() = 0; 29718+ 29719+ /** 29720+ * Loads the given URL with additional HTTP headers, specified as a map 29721+ * from name to value. Note that if this map contains any of the headers that 29722+ * are set by default by this NWeb, such as those controlling caching, 29723+ * accept types or the User-Agent, their values may be overridden by this 29724+ * NWeb's defaults. 29725+ * 29726+ * @param url String: the URL of the resource to load This value cannot be 29727+ * null. 29728+ * 29729+ * @param additionalHttpHeaders additionalHttpHeaders 29730+ */ 29731+ virtual void Load( 29732+ std::string& url, 29733+ std::map<std::string, std::string> additionalHttpHeaders) = 0; 29734+ 29735+ /** 29736+ * Loads the given data into this NWeb, using baseUrl as the base URL for 29737+ * the content. The base URL is used both to resolve relative URLs and when 29738+ * applying JavaScript's same origin policy. The historyUrl is used for the 29739+ * history entry. 29740+ * 29741+ * @param baseUrl String: the URL to use as the page's base URL. If null 29742+ * defaults to 'about:blank'. This value may be null. 29743+ * @param data String: the URL to use as the page's base URL. If null defaults 29744+ * to 'about:blank'. This value may be null. 29745+ * @param mimeType String: the MIME type of the data, e.g. 'text/html'. This 29746+ * value may be null. 29747+ * @param encoding String: the encoding of the data This value may be null. 29748+ * @param historyUrl String: the URL to use as the history entry. If null 29749+ * defaults to 'about:blank'. If non-null, this must be a valid URL. This 29750+ * value may be null. 29751+ */ 29752+ virtual void LoadWithDataAndBaseUrl(const std::string& baseUrl, 29753+ const std::string& data, 29754+ const std::string& mimeType, 29755+ const std::string& encoding, 29756+ const std::string& historyUrl) = 0; 29757+ 29758+ /** 29759+ * Loads the given data into this NWeb. 29760+ * 29761+ * @param data String: the URL to use as the page's base URL. If null defaults 29762+ * to 'about:blank'. This value may be null. 29763+ * @param mimeType String: the MIME type of the data, e.g. 'text/html'. This 29764+ * value may be null. 29765+ * @param encoding String: the encoding of the data This value may be null. 29766+ */ 29767+ virtual void LoadWithData(const std::string& data, 29768+ const std::string& mimeType, 29769+ const std::string& encoding) = 0; 29770+ 29771+ /** 29772+ * RegisterArkJSfunction 29773+ * 29774+ * @param object_name String: objector name 29775+ * @param method_list vector<String>: vector list ,method list 29776+ */ 29777+ virtual void RegisterArkJSfunction( 29778+ const std::string& object_name, 29779+ const std::vector<std::string>& method_list) = 0; 29780+ 29781+ /** 29782+ * UnregisterArkJSfunction 29783+ * 29784+ * @param object_name String: objector name 29785+ * @param method_list vector<String>: vector list ,method list 29786+ */ 29787+ virtual void UnregisterArkJSfunction( 29788+ const std::string& object_name, 29789+ const std::vector<std::string>& method_list) = 0; 29790+ 29791+ /** 29792+ * SetNWebJavaScriptResultCallBack 29793+ * 29794+ * @param callback NWebJavaScriptResultCallBack: callback client 29795+ */ 29796+ virtual void SetNWebJavaScriptResultCallBack( 29797+ std::shared_ptr<NWebJavaScriptResultCallBack> callback) = 0; 29798+}; 29799+} // namespace OHOS::NWeb 29800+ 29801+#endif 29802diff --git a/ohos_nweb/include/nweb_access_request.h b/ohos_nweb/include/nweb_access_request.h 29803new file mode 100644 29804index 0000000000..853c91ec86 29805--- /dev/null 29806+++ b/ohos_nweb/include/nweb_access_request.h 29807@@ -0,0 +1,58 @@ 29808+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 29809+// Use of this source code is governed by a BSD-style license that can be 29810+// found in the LICENSE file. 29811+ 29812+#ifndef NWEB_ACCESS_REQUEST_H 29813+#define NWEB_ACCESS_REQUEST_H 29814+ 29815+#include <string> 29816+ 29817+#include "nweb_export.h" 29818+ 29819+namespace OHOS::NWeb { 29820+class OHOS_NWEB_EXPORT NWebAccessRequest { 29821+ public: 29822+ NWebAccessRequest() = default; 29823+ 29824+ virtual ~NWebAccessRequest() = default; 29825+ 29826+ enum Resources { 29827+ GEOLOCATION = 1 << 0, 29828+ VIDEO_CAPTURE = 1 << 1, 29829+ AUDIO_CAPTURE = 1 << 2, 29830+ PROTECTED_MEDIA_ID = 1 << 3, 29831+ MIDI_SYSEX = 1 << 4, 29832+ }; 29833+ 29834+ /** 29835+ * Get the origin of the web page which is trying to access the resource. 29836+ * 29837+ * @return the origin of the web page which is trying to access the resource. 29838+ */ 29839+ virtual std::string Origin() = 0; 29840+ 29841+ /** 29842+ * Get the resource id the web page is trying to access. 29843+ * 29844+ * @return the resource id the web page is trying to access. 29845+ */ 29846+ virtual int ResourceAcessId() = 0; 29847+ 29848+ /** 29849+ * Agree the origin to access the given resources. 29850+ * The granted access is only valid for this WebView. 29851+ * 29852+ * @param resourceId id of the resource agreed to be accessed by origin. It 29853+ * must be equal to requested resource id returned by {@link 29854+ * #GetResourceAcessId()}. 29855+ */ 29856+ virtual void Agree(int resourceId) = 0; 29857+ 29858+ /** 29859+ * Refuse the request. 29860+ */ 29861+ virtual void Refuse() = 0; 29862+}; 29863+} // namespace OHOS::NWeb 29864+ 29865+#endif // NWEB_ACCESS_REQUEST_H 29866\ No newline at end of file 29867diff --git a/ohos_nweb/include/nweb_console_log.h b/ohos_nweb/include/nweb_console_log.h 29868new file mode 100644 29869index 0000000000..2089061420 29870--- /dev/null 29871+++ b/ohos_nweb/include/nweb_console_log.h 29872@@ -0,0 +1,79 @@ 29873+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 29874+// Use of this source code is governed by a BSD-style license that can be 29875+// found in the LICENSE file. 29876+ 29877+#ifndef NWEB_CONSOLE_LOG_H 29878+#define NWEB_CONSOLE_LOG_H 29879+ 29880+#include <memory> 29881+#include <string> 29882+ 29883+#include "nweb_export.h" 29884+ 29885+namespace OHOS::NWeb { 29886+class OHOS_NWEB_EXPORT NWebConsoleLog { 29887+public: 29888+ enum NWebConsoleLogLevel { 29889+ DEBUG = 1, 29890+ INFO, 29891+ WARNING, 29892+ ERROR, 29893+ UNKNOWN 29894+ }; 29895+ 29896+ NWebConsoleLog(int line_number, 29897+ std::string message, 29898+ NWebConsoleLogLevel log_level, 29899+ std::string sourceId) 29900+ : line_number_(line_number), 29901+ log_(message), 29902+ log_level_(log_level), 29903+ sourceId_(sourceId) {} 29904+ 29905+ ~NWebConsoleLog() = default; 29906+ 29907+ /** 29908+ * @brief Get console log line number 29909+ * 29910+ * @retval line number 29911+ */ 29912+ int LineNumer() const { 29913+ return line_number_; 29914+ } 29915+ 29916+ /** 29917+ * @brief Get console log message 29918+ * 29919+ * @retval message 29920+ */ 29921+ const std::string& Log() const { 29922+ return log_; 29923+ } 29924+ 29925+ /** 29926+ * @brief Get console log message level 29927+ * 29928+ * @retval message level 29929+ */ 29930+ NWebConsoleLogLevel LogLevel() const { 29931+ return log_level_; 29932+ } 29933+ 29934+ /** 29935+ * @brief Get console log source id 29936+ * 29937+ * @retval source id 29938+ */ 29939+ const std::string& SourceId() const { 29940+ return sourceId_; 29941+ } 29942+ 29943+private: 29944+ int line_number_; 29945+ std::string log_; 29946+ NWebConsoleLogLevel log_level_; 29947+ std::string sourceId_; 29948+}; 29949+} 29950+ 29951+#endif 29952\ No newline at end of file 29953diff --git a/ohos_nweb/include/nweb_cookie_manager.h b/ohos_nweb/include/nweb_cookie_manager.h 29954new file mode 100644 29955index 0000000000..11800d8579 29956--- /dev/null 29957+++ b/ohos_nweb/include/nweb_cookie_manager.h 29958@@ -0,0 +1,108 @@ 29959+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 29960+// Use of this source code is governed by a BSD-style license that can be 29961+// found in the LICENSE file. 29962+ 29963+#ifndef NWEB_COOKIE_MANAGER_H 29964+#define NWEB_COOKIE_MANAGER_H 29965+ 29966+#include <memory> 29967+#include <string> 29968+ 29969+#include "nweb_export.h" 29970+#include "nweb_value_callback.h" 29971+ 29972+namespace OHOS::NWeb { 29973+class OHOS_NWEB_EXPORT NWebCookieManager { 29974+public: 29975+ NWebCookieManager() = default; 29976+ 29977+ virtual ~NWebCookieManager() = default; 29978+ 29979+ /** 29980+ * @brief Gets the singleton NWebCookieManager instance. 29981+ * 29982+ * @return the singleton NWebCookieManager instance. 29983+ */ 29984+ static NWebCookieManager* GetInstance(); 29985+ 29986+ /** 29987+ * @brief Get whether the instance can send and accept cookies. 29988+ * 29989+ * @return true if the instance send and accept cookies. 29990+ */ 29991+ virtual bool IsAcceptCookieAllowed() const = 0; 29992+ 29993+ /** 29994+ * @brief Sets whether the instance should send and accept cookies. 29995+ * By default this is set to true and the nweb accepts cookies. 29996+ * 29997+ * @param accept whether the instance should send and accept cookies. 29998+ */ 29999+ virtual void PutAcceptCookieEnabled(bool accept) = 0; 30000+ 30001+ /** 30002+ * @brief Get whether instances can send and accept cookies for file scheme URLs. 30003+ * 30004+ * @return true if instances send and accept cookies for file scheme URLs. 30005+ */ 30006+ virtual bool IsFileURLSchemeCookiesAllowed() const = 0; 30007+ 30008+ /** 30009+ * @brief Sets whether the instance should send and accept cookies for file scheme URLs. 30010+ * 30011+ * @param allow whether the instance should send and accept cookies for file scheme URLs. 30012+ */ 30013+ virtual void PutAcceptFileURLSchemeCookiesEnabled(bool allow) = 0; 30014+ 30015+ /** 30016+ * @brief Gets all the cookies for the given URL. 30017+ * 30018+ * @param url the URL for which the cookies are requested. 30019+ * @param callback a callback which is executed when the cookies have been gotten. 30020+ */ 30021+ virtual void ReturnCookie(const std::string &url, 30022+ std::shared_ptr<NWebValueCallback<std::string>> callback) = 0; 30023+ 30024+ /** 30025+ * @brief GSets a single cookie (key-value pair) for the given URL. 30026+ * 30027+ * @param url the URL for which the cookie is to be set. 30028+ * @param value the cookie as a string, using the format of the 'Set-Cookie' HTTP response header. 30029+ * @param callback a callback to be executed when the cookie has been set. 30030+ */ 30031+ virtual void SetCookie(const std::string &url, 30032+ const std::string &value, 30033+ std::shared_ptr<NWebValueCallback<bool>> callback) = 0; 30034+ 30035+ /** 30036+ * @brief Gets whether there are stored cookies. 30037+ * 30038+ * @param callback a callback to be executed when the cookie has checked. 30039+ */ 30040+ virtual void ExistCookies(std::shared_ptr<NWebValueCallback<bool>> callback) = 0; 30041+ 30042+ /** 30043+ * @brief Ensures all cookies currently accessible through the ReturnCookie API are written to 30044+ * persistent storage. 30045+ * 30046+ * @param callback a callback to be executed when cookies has Stored. 30047+ */ 30048+ virtual void Store(std::shared_ptr<NWebValueCallback<bool>> callback) = 0; 30049+ 30050+ /** 30051+ * @brief Removes all session cookies, which are cookies without an expiration date. 30052+ * 30053+ * @param callback a callback to be executed when all session cookies has removed. 30054+ */ 30055+ virtual void DeleteSessionCookies(std::shared_ptr<NWebValueCallback<bool>> callback) = 0; 30056+ 30057+ /** 30058+ * @brief Removes all cookies. 30059+ * 30060+ * @param callback a callback to be executed when all cookies has removed. 30061+ */ 30062+ virtual void DeleteCookieEntirely(std::shared_ptr<NWebValueCallback<bool>> callback) = 0; 30063+}; 30064+} 30065+ 30066+#endif // NWebCookieManager 30067\ No newline at end of file 30068diff --git a/ohos_nweb/include/nweb_download_callback.h b/ohos_nweb/include/nweb_download_callback.h 30069new file mode 100644 30070index 0000000000..5ce16d93b4 30071--- /dev/null 30072+++ b/ohos_nweb/include/nweb_download_callback.h 30073@@ -0,0 +1,35 @@ 30074+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 30075+// Use of this source code is governed by a BSD-style license that can be 30076+// found in the LICENSE file. 30077+ 30078+#ifndef NWEB_DOWNLOAD_CALLBACK_H 30079+#define NWEB_DOWNLOAD_CALLBACK_H 30080+ 30081+#include <string> 30082+ 30083+#include "nweb_export.h" 30084+ 30085+namespace OHOS::NWeb { 30086+class OHOS_NWEB_EXPORT NWebDownloadCallback { 30087+public: 30088+ NWebDownloadCallback() = default; 30089+ 30090+ virtual ~NWebDownloadCallback() = default; 30091+ /** 30092+ * @brief Notify the host application that a file should be downloaded 30093+ * 30094+ * @param url The full url to the content that should be downloaded. 30095+ * @param userAgent The user agent to be used for the download. 30096+ * @param contentDisposition Content-disposition http header, if present. 30097+ * @param mimetype The mimetype of the content reported by the server. 30098+ * @param contentLength The file size reported by the server. 30099+ */ 30100+ virtual void OnDownloadStart(const std::string& url, 30101+ const std::string& userAgent, 30102+ const std::string& contentDisposition, 30103+ const std::string& mimetype, 30104+ long contentLength) = 0; 30105+}; 30106+} // namespace OHOS::NWeb 30107+ 30108+#endif // NWEB_DOWNLOAD_CALLBACK_H 30109\ No newline at end of file 30110diff --git a/ohos_nweb/include/nweb_export.h b/ohos_nweb/include/nweb_export.h 30111new file mode 100644 30112index 0000000000..e4ebd385d7 30113--- /dev/null 30114+++ b/ohos_nweb/include/nweb_export.h 30115@@ -0,0 +1,18 @@ 30116+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 30117+// Use of this source code is governed by a BSD-style license that can be 30118+// found in the LICENSE file. 30119+ 30120+#ifndef OHOS_NWEB_EXPORT_H 30121+#define OHOS_NWEB_EXPORT_H 30122+ 30123+#if defined(OHOS_NWEB) 30124+ 30125+#define OHOS_NWEB_EXPORT __attribute__((visibility("default"))) 30126+ 30127+#else 30128+ 30129+#define OHOS_NWEB_EXPORT 30130+ 30131+#endif 30132+ 30133+#endif // OHOS_NWEB_EXPORT_H 30134diff --git a/ohos_nweb/include/nweb_geolocation_callback_interface.h b/ohos_nweb/include/nweb_geolocation_callback_interface.h 30135new file mode 100644 30136index 0000000000..4a95f8e8db 30137--- /dev/null 30138+++ b/ohos_nweb/include/nweb_geolocation_callback_interface.h 30139@@ -0,0 +1,32 @@ 30140+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 30141+// Use of this source code is governed by a BSD-style license that can be 30142+// found in the LICENSE file. 30143+ 30144+#ifndef NWEB_GEOLOCATION_CALLBACK_INTERFACE_H 30145+#define NWEB_GEOLOCATION_CALLBACK_INTERFACE_H 30146+ 30147+#include <string> 30148+ 30149+#include "nweb_export.h" 30150+ 30151+namespace OHOS::NWeb { 30152+class OHOS_NWEB_EXPORT NWebGeolocationCallbackInterface { 30153+ public: 30154+ NWebGeolocationCallbackInterface() = default; 30155+ 30156+ virtual ~NWebGeolocationCallbackInterface() = default; 30157+ /** 30158+ * @brief Report the geolocation permission status from usrs. 30159+ * 30160+ * @param origin The origin that ask for the geolocation permission. 30161+ * @param allow The geolocation permission status. 30162+ * @param retain Whether to allow the geolocation permission status to be 30163+ * saved to the system. 30164+ */ 30165+ virtual void GeolocationCallbackInvoke(const std::string& origin, 30166+ bool allow, 30167+ bool retain) = 0; 30168+}; 30169+} // namespace OHOS::NWeb 30170+ 30171+#endif // NWEB_GEOLOCATION_CALLBACK_INTERFACE_H 30172diff --git a/ohos_nweb/include/nweb_handler.h b/ohos_nweb/include/nweb_handler.h 30173new file mode 100644 30174index 0000000000..af68a9a3d1 30175--- /dev/null 30176+++ b/ohos_nweb/include/nweb_handler.h 30177@@ -0,0 +1,311 @@ 30178+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 30179+// Use of this source code is governed by a BSD-style license that can be 30180+// found in the LICENSE file. 30181+ 30182+#ifndef NWEB_HANDLER_H 30183+#define NWEB_HANDLER_H 30184+ 30185+#include <memory> 30186+#include <mutex> 30187+#include <string> 30188+#include <vector> 30189+ 30190+#include "nweb_access_request.h" 30191+#include "nweb.h" 30192+#include "nweb_console_log.h" 30193+#include "nweb_geolocation_callback_interface.h" 30194+#include "nweb_js_dialog_result.h" 30195+#include "nweb_url_resource_error.h" 30196+#include "nweb_url_resource_request.h" 30197+#include "nweb_url_resource_response.h" 30198+ 30199+namespace OHOS::NWeb { 30200+/** 30201+ * @brief Describes how pixel bits encoder color data. 30202+ */ 30203+enum class ImageColorType { 30204+ // Unknown color type. 30205+ COLOR_TYPE_UNKNOWN = -1, 30206+ 30207+ // RGBA with 8 bits per pixel (32bits total). 30208+ COLOR_TYPE_RGBA_8888 = 0, 30209+ 30210+ // BGRA with 8 bits per pixel (32bits total). 30211+ COLOR_TYPE_BGRA_8888 = 1, 30212+}; 30213+ 30214+/** 30215+ * @brief Describes how to interpret the alpha value of a pixel. 30216+ */ 30217+enum class ImageAlphaType { 30218+ // Unknown alpha type. 30219+ ALPHA_TYPE_UNKNOWN = -1, 30220+ 30221+ // No transparency. The alpha component is ignored. 30222+ ALPHA_TYPE_OPAQUE = 0, 30223+ 30224+ // Transparency with pre-multiplied alpha component. 30225+ ALPHA_TYPE_PREMULTIPLIED = 1, 30226+ 30227+ // Transparency with post-multiplied alpha component. 30228+ ALPHA_TYPE_POSTMULTIPLIED = 2, 30229+}; 30230+ 30231+class OHOS_NWEB_EXPORT NWebHandler { 30232+ public: 30233+ NWebHandler() = default; 30234+ 30235+ virtual ~NWebHandler() = default; 30236+ 30237+ virtual void SetNWeb(std::shared_ptr<NWeb> nweb) {} 30238+ 30239+ virtual void OnProxyDied() {} 30240+ 30241+ virtual void OnRouterPush(const std::string& param) {} 30242+ 30243+ virtual void OnMessage(const std::string& param) {} 30244+ 30245+ /** 30246+ * @brief Notify the SDK that a web site has finished loading. This method is 30247+ * called only for main frame. 30248+ * 30249+ * @param httpStatusCode The status code for the http request. 30250+ * @param url The url of the web site. 30251+ */ 30252+ virtual void OnPageLoadEnd(int httpStatusCode, const std::string& url) {} 30253+ 30254+ /** 30255+ * @brief Notify the SDK that a web site has started loading. This method is 30256+ * called once for each main frame load. 30257+ * 30258+ * @param url The url to be loaded. 30259+ */ 30260+ virtual void OnPageLoadBegin(const std::string& url) {} 30261+ 30262+ /** 30263+ * @brief Report a load error to the SDK. 30264+ * 30265+ * @param errorCode The error code. 30266+ * @param description The error description. 30267+ * @param failingUrl The failed url. 30268+ */ 30269+ virtual void OnPageLoadError(int errorCode, 30270+ const std::string& description, 30271+ const std::string& failingUrl) {} 30272+ 30273+ /** 30274+ * @brief Give the SDK a chance to decide wheather to continue loading the 30275+ * url. 30276+ * 30277+ * @param url The url to be loaded. 30278+ * @return true to cancel the loading, false to continue the loading. 30279+ */ 30280+ virtual bool OnHandleInterceptUrlLoading(const std::string& url) { 30281+ return false; 30282+ } 30283+ 30284+ /** 30285+ * @brief Notify the SDK that the nweb will load the resource specified by 30286+ * the given url. 30287+ * 30288+ * @param url The url of the resource. 30289+ */ 30290+ virtual void OnResource(const std::string& url) {} 30291+ 30292+ /** 30293+ * @brief Notify the SDK of the changed document title. 30294+ * 30295+ * @param title The document title. 30296+ */ 30297+ virtual void OnPageTitle(const std::string& title) {} 30298+ 30299+ /** 30300+ * @brief Notify the SDK the current progress of loading a web site. 30301+ * 30302+ * @param newProgress Loading progress, an integer between 0 and 100. 30303+ */ 30304+ virtual void OnLoadingProgress(int newProgress) {} 30305+ 30306+ /** 30307+ * @brief Request display and focus for a new nweb. 30308+ * 30309+ */ 30310+ virtual void OnFocus() {} 30311+ 30312+ /** 30313+ * @brief Obtains a list of all visited history items, used for link coloring 30314+ * 30315+ * @retval visited history 30316+ */ 30317+ virtual const std::vector<std::string> VisitedUrlHistory() { 30318+ return std::vector<std::string>(); 30319+ } 30320+ 30321+ /** 30322+ * @brief Notify the host application of a resource request and allow the 30323+ * application to return the data. 30324+ * 30325+ * @param request the resource response's MIME type, for example { 30326+ * "text/html"}. 30327+ * 30328+ * @retval if NWebUrlResourceResponse is null ,No interception. 30329+ */ 30330+ virtual std::shared_ptr<NWebUrlResourceResponse> OnHandleInterceptRequest( 30331+ std::shared_ptr<NWebUrlResourceRequest> request) { 30332+ return nullptr; 30333+ } 30334+ 30335+ /** 30336+ * @brief Report web resource loading error to the SDK. These errors usually 30337+ * indicate inability to connect to the server. 30338+ * 30339+ * @param request The request information. 30340+ * @param error The error information. 30341+ */ 30342+ virtual void OnResourceLoadError( 30343+ std::shared_ptr<NWebUrlResourceRequest> request, 30344+ std::shared_ptr<NWebUrlResourceError> error) {} 30345+ 30346+ /** 30347+ * @brief Notify the SDK that an HTTP error has been received from the server 30348+ * while loading a resource. 30349+ * 30350+ * @param request The request information. 30351+ * @param errorResponse The error occurred. 30352+ */ 30353+ virtual void OnHttpError( 30354+ std::shared_ptr<NWebUrlResourceRequest> request, 30355+ std::shared_ptr<NWebUrlResourceResponse> errorResponse) {} 30356+ 30357+ /** 30358+ * @brief Notify the SDK of a new favicon for the current web site. 30359+ * 30360+ * @param data The raw image data for the icon. 30361+ * @param width The width of the icon in pixel. 30362+ * @param height The height of the icon in pixel. 30363+ * @param color_type The color data encoding type. 30364+ * @param alpha_type The alpha value of any pixel. 30365+ */ 30366+ virtual void OnPageIcon(const void* data, 30367+ size_t width, 30368+ size_t height, 30369+ ImageColorType color_type, 30370+ ImageAlphaType alpha_type) {} 30371+ 30372+ /** 30373+ * @brief Notify the SDK of the url for an touch icon. 30374+ * 30375+ * @param icon_url The icon url. 30376+ * @param precomposed The touch icon type. 30377+ */ 30378+ virtual void OnDesktopIconUrl(const std::string& icon_url, bool precomposed) { 30379+ } 30380+ 30381+ /** 30382+ * @brief Report a JavaScript console message to the host application. 30383+ * 30384+ * @param message Details of the console message. 30385+ * @return Return true to stop the message from being output to the console. 30386+ */ 30387+ virtual bool OnConsoleLog(const NWebConsoleLog& message) { return false; } 30388+ 30389+ /** 30390+ * @brief Show prompt to ask for the geolocation permission. 30391+ * 30392+ * @param origin String: the origin of the resource to get geolocation 30393+ * @param callback GeolocationCallbackInterface: callback to report 30394+ * geolocation 30395+ */ 30396+ virtual void OnGeolocationShow(const std::string& origin, 30397+ NWebGeolocationCallbackInterface* callback) {} 30398+ 30399+ /** 30400+ * @brief Notify the host application that the web page wants to display a 30401+ * JavaScript alert() dialog. 30402+ * 30403+ * @param url String: The url of the page requesting the dialog. 30404+ * @param message String: The message of the dialog. 30405+ * @param result std::shared_ptr<NWebJSDialogResult>: A NWebJSDialogResult to 30406+ * confirm that the user closed the window. 30407+ * @return To show a custom dialog, the app should return true. 30408+ */ 30409+ virtual bool OnAlertDialogByJS(const std::string& url, 30410+ const std::string& message, 30411+ std::shared_ptr<NWebJSDialogResult> result) { 30412+ return false; 30413+ } 30414+ 30415+ /** 30416+ * @brief Notify the host application that the web page wants to handle 30417+ * JavaScript onbeforeunload. 30418+ * 30419+ * @param url String: The url of the page requesting. 30420+ * @param message String: The message of the dialog. 30421+ * @param result std::shared_ptr<NWebJSDialogResult>: A NWebJSDialogResult to 30422+ * confirm that the user closed the window. 30423+ * @return To show a custom dialog, the app should return true. 30424+ */ 30425+ virtual bool OnBeforeUnloadByJS(const std::string& url, 30426+ const std::string& message, 30427+ std::shared_ptr<NWebJSDialogResult> result) { 30428+ return false; 30429+ } 30430+ 30431+ /** 30432+ * @brief Notify the host application that the web page wants to display a 30433+ * JavaScript prompt() dialog. 30434+ * 30435+ * @param url String: The url of the page requesting the dialog. 30436+ * @param message String: The message of the dialog. 30437+ * @param defaultValue String: The default value of the input message. 30438+ * @param result std::shared_ptr<NWebJSDialogResult>: A NWebJSDialogResult to 30439+ * confirm that the user closed the window. 30440+ * @return To show a custom dialog, the app should return true. 30441+ */ 30442+ virtual bool OnPromptDialogByJs(const std::string& url, 30443+ const std::string& message, 30444+ const std::string& defaultValue, 30445+ std::shared_ptr<NWebJSDialogResult> result) { 30446+ return false; 30447+ } 30448+ 30449+ /** 30450+ * @brief Notify the host application that the web page wants to display a 30451+ * JavaScript Confirm() dialog. 30452+ * 30453+ * @param url String: The url of the page requesting the dialog. 30454+ * @param message String: The message of the dialog. 30455+ * @param result std::shared_ptr<NWebJSDialogResult>: A NWebJSDialogResult to 30456+ * confirm that the user closed the window. 30457+ * @return To show a custom dialog, the app should return true. 30458+ */ 30459+ virtual bool OnConfirmDialogByJS(const std::string& url, 30460+ const std::string& message, 30461+ std::shared_ptr<NWebJSDialogResult> result) { 30462+ return false; 30463+ } 30464+ 30465+ /** 30466+ * @brief Hide prompt to ask for the geolocation permission. 30467+ */ 30468+ virtual void OnGeolocationHide() {} 30469+ 30470+ /** 30471+ * @brief 30472+ * 30473+ * @param request String: 30474+ */ 30475+ virtual void OnPermissionRequest( 30476+ std::shared_ptr<NWebAccessRequest> request) {} 30477+ 30478+ /** 30479+ * @brief 30480+ * 30481+ * @param request String: 30482+ */ 30483+ virtual void OnPermissionRequestCanceled( 30484+ std::shared_ptr<NWebAccessRequest> request) {} 30485+}; 30486+} // namespace OHOS::NWeb 30487+ 30488+#endif // NWEB_HANDLER_H 30489diff --git a/ohos_nweb/include/nweb_hit_testresult.h b/ohos_nweb/include/nweb_hit_testresult.h 30490new file mode 100755 30491index 0000000000..4eb0d0915b 30492--- /dev/null 30493+++ b/ohos_nweb/include/nweb_hit_testresult.h 30494@@ -0,0 +1,82 @@ 30495+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 30496+// Use of this source code is governed by a BSD-style license that can be 30497+// found in the LICENSE file. 30498+ 30499+#ifndef WEB_HIT_TESTRESULT_H 30500+#define WEB_HIT_TESTRESULT_H 30501+ 30502+#include <string> 30503+ 30504+#include "nweb_export.h" 30505+ 30506+namespace OHOS::NWeb { 30507+class OHOS_NWEB_EXPORT HitTestResult { 30508+public: 30509+ HitTestResult() { 30510+ type_ = UNKNOWN_TYPE; 30511+ } 30512+ virtual ~HitTestResult() = default; 30513+ /** 30514+ * Default HitTestResult, where the target is unknown. 30515+ */ 30516+ static const int UNKNOWN_TYPE = 0; 30517+ /** 30518+ * This type is no longer used. 30519+ */ 30520+ static const int ANCHOR_TYPE = 1; 30521+ /** 30522+ * HitTestResult for hitting a phone number. 30523+ */ 30524+ static const int PHONE_TYPE = 2; 30525+ /** 30526+ * HitTestResult for hitting a map address. 30527+ */ 30528+ static const int GEO_TYPE = 3; 30529+ /** 30530+ * HitTestResult for hitting an email address. 30531+ */ 30532+ static const int EMAIL_TYPE = 4; 30533+ /** 30534+ * HitTestResult for hitting an HTML::img tag. 30535+ */ 30536+ static const int IMAGE_TYPE = 5; 30537+ /** 30538+ * This type is no longer used. 30539+ */ 30540+ static const int IMAGE_ANCHOR_TYPE = 6; 30541+ /** 30542+ * HitTestResult for hitting a HTML::a tag with src=http. 30543+ */ 30544+ static const int SRC_ANCHOR_TYPE = 7; 30545+ /** 30546+ * HitTestResult for hitting a HTML::a tag with src=http + HTML::img. 30547+ */ 30548+ static const int SRC_IMAGE_ANCHOR_TYPE = 8; 30549+ /** 30550+ * HitTestResult for hitting an edit text area. 30551+ */ 30552+ static const int EDIT_TEXT_TYPE = 9; 30553+ 30554+ void SetType(int type) { 30555+ type_ = type; 30556+ } 30557+ 30558+ void SetExtra(std::string extra) { 30559+ extra_ = extra; 30560+ } 30561+ 30562+ int GetType() { 30563+ return type_; 30564+ } 30565+ 30566+ std::string GetExtra() { 30567+ return extra_; 30568+ } 30569+private: 30570+ int type_; 30571+ std::string extra_; 30572+ 30573+}; 30574+} 30575+ 30576+#endif // WEB_HIT_TESTRESULT_H 30577diff --git a/ohos_nweb/include/nweb_javascript_result_callback.h b/ohos_nweb/include/nweb_javascript_result_callback.h 30578new file mode 100644 30579index 0000000000..2faeb6495d 30580--- /dev/null 30581+++ b/ohos_nweb/include/nweb_javascript_result_callback.h 30582@@ -0,0 +1,26 @@ 30583+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 30584+// Use of this source code is governed by a BSD-style license that can be 30585+// found in the LICENSE file. 30586+ 30587+#ifndef NWEB_JAVASCRIPT_RESULT_CALLBACK_H 30588+#define NWEB_JAVASCRIPT_RESULT_CALLBACK_H 30589+ 30590+#include <string> 30591+#include <vector> 30592+#include "nweb_export.h" 30593+#include "nweb_value.h" 30594+ 30595+namespace OHOS::NWeb { 30596+ class OHOS_NWEB_EXPORT NWebJavaScriptResultCallBack { 30597+ public: 30598+ NWebJavaScriptResultCallBack() = default; 30599+ 30600+ virtual ~NWebJavaScriptResultCallBack() = default; 30601+ 30602+ virtual std::shared_ptr<NWebValue> GetJavaScriptResult( 30603+ std::vector<std::shared_ptr<NWebValue>> args, 30604+ const std::string &method, 30605+ const std::string &object_name) = 0; 30606+ }; 30607+} 30608+#endif 30609\ No newline at end of file 30610diff --git a/ohos_nweb/include/nweb_js_dialog_result.h b/ohos_nweb/include/nweb_js_dialog_result.h 30611new file mode 100644 30612index 0000000000..13b0fe51f0 30613--- /dev/null 30614+++ b/ohos_nweb/include/nweb_js_dialog_result.h 30615@@ -0,0 +1,35 @@ 30616+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 30617+// Use of this source code is governed by a BSD-style license that can be 30618+// found in the LICENSE file. 30619+ 30620+#ifndef NWEB_JS_DISLOG_RESULT_H 30621+#define NWEB_JS_DISLOG_RESULT_H 30622+ 30623+#include <string> 30624+#include "nweb_export.h" 30625+ 30626+namespace OHOS::NWeb { 30627+class OHOS_NWEB_EXPORT NWebJSDialogResult { 30628+public: 30629+ virtual ~NWebJSDialogResult() = default; 30630+ 30631+ /** 30632+ * @brief Handle a confirmation response from the user. 30633+ */ 30634+ virtual void Confirm() = 0; 30635+ 30636+ /** 30637+ * @brief Handle a confirmation response from the user with input message. 30638+ * 30639+ * @param message confirm message. 30640+ */ 30641+ virtual void Confirm(const std::string &message) = 0; 30642+ 30643+ /** 30644+ * @brief Handle the result if the user cancelled the dialog. 30645+ */ 30646+ virtual void Cancel() = 0; 30647+}; 30648+} 30649+ 30650+#endif 30651\ No newline at end of file 30652diff --git a/ohos_nweb/include/nweb_preference.h b/ohos_nweb/include/nweb_preference.h 30653new file mode 100644 30654index 0000000000..ca85253000 30655--- /dev/null 30656+++ b/ohos_nweb/include/nweb_preference.h 30657@@ -0,0 +1,80 @@ 30658+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 30659+// Use of this source code is governed by a BSD-style license that can be 30660+// found in the LICENSE file. 30661+ 30662+#ifndef NWEB_PREFERENCE_H 30663+#define NWEB_PREFERENCE_H 30664+ 30665+#include <string> 30666+#include "nweb_export.h" 30667+ 30668+namespace OHOS::NWeb { 30669+class OHOS_NWEB_EXPORT NWebPreference { 30670+ public: 30671+ NWebPreference() = default; 30672+ virtual ~NWebPreference() = default; 30673+ 30674+ enum AccessMode { ALWAYS_ALLOW = 0, NEVER_ALLOW = 1, COMPATIBILITY_MODE = 2 }; 30675+ 30676+ /* synchronous set web settings and web preferences */ 30677+ virtual void PutEnableContentAccess(bool flag) = 0; 30678+ virtual void PutEnableRawFileAccess(bool flag) = 0; 30679+ virtual void PutEnableRawFileAccessFromFileURLs(bool flag) = 0; 30680+ virtual void PutEnableUniversalAccessFromFileURLs(bool flag) = 0; 30681+ virtual void PutLoadImageFromNetworkDisabled(bool flag) = 0; 30682+ virtual void PutCursiveFontFamilyName(std::string font) = 0; 30683+ virtual void PutDatabaseAllowed(bool flag) = 0; 30684+ virtual void PutDefaultFixedFontSize(int size) = 0; 30685+ virtual void PutDefaultFontSize(int size) = 0; 30686+ virtual void PutDefaultTextEncodingFormat(std::string encoding) = 0; 30687+ virtual void PutDomStorageEnabled(bool flag) = 0; 30688+ virtual void PutFantasyFontFamilyName(std::string font) = 0; 30689+ virtual void PutFixedFontFamilyName(std::string font) = 0; 30690+ virtual void PutDarkModeEnabled(int forceDark) = 0; 30691+ virtual void PutIsCreateWindowsByJavaScriptAllowed(bool flag) = 0; 30692+ virtual void PutJavaScriptEnabled(bool flag) = 0; 30693+ virtual void PutImageLoadingAllowed(bool flag) = 0; 30694+ virtual void PutFontSizeLowerLimit(int size) = 0; 30695+ virtual void PutLogicalFontSizeLowerLimit(int size) = 0; 30696+ virtual void PutSansSerifFontFamilyName(std::string font) = 0; 30697+ virtual void PutSerifFontFamilyName(std::string font) = 0; 30698+ virtual void PutStandardFontFamilyName(std::string font) = 0; 30699+ virtual void PutUserAgent(std::string ua) = 0; 30700+ virtual void PutZoomingForTextFactor(int textZoom) = 0; 30701+ virtual void PutGeolocationAllowed(bool flag) = 0; 30702+ virtual void PutAccessModeForSecureOriginLoadFromInsecure( 30703+ AccessMode mode) = 0; 30704+ virtual void PutZoomingFunctionEnabled(bool flag) = 0; 30705+ 30706+ /* get methods*/ 30707+ virtual bool EnableContentAccess() = 0; 30708+ virtual bool EnableRawFileAccess() = 0; 30709+ virtual bool EnableRawFileAccessFromFileURLs() = 0; 30710+ virtual bool EnableUniversalAccessFromFileURLs() = 0; 30711+ virtual bool IsLoadImageFromNetworkDisabled() = 0; 30712+ virtual std::string CursiveFontFamilyName() = 0; 30713+ virtual bool IsDataBaseEnabled() = 0; 30714+ virtual int DefaultFixedFontSize() = 0; 30715+ virtual int DefaultFontSize() = 0; 30716+ virtual std::string DefaultTextEncodingFormat() = 0; 30717+ virtual std::string DefaultUserAgent() = 0; 30718+ virtual bool IsDomStorageEnabled() = 0; 30719+ virtual std::string FantasyFontFamilyName() = 0; 30720+ virtual std::string FixedFontFamilyName() = 0; 30721+ virtual int DarkModeEnabled() = 0; 30722+ virtual bool IsCreateWindowsByJavaScriptAllowed() = 0; 30723+ virtual bool IsJavaScriptAllowed() = 0; 30724+ virtual bool IsImageLoadingAllowed() = 0; 30725+ virtual int FontSizeLowerLimit() = 0; 30726+ virtual int LogicalFontSizeLowerLimit() = 0; 30727+ virtual std::string SansSerifFontFamilyName() = 0; 30728+ virtual std::string SerifFontFamilyName() = 0; 30729+ virtual std::string StandardFontFamilyName() = 0; 30730+ virtual std::string UserAgent() = 0; 30731+ virtual int ZoomingForTextFactor() = 0; 30732+ virtual bool GeolocationAllowed() = 0; 30733+ virtual int AccessModeForSecureOriginLoadFromInsecure() = 0; 30734+ virtual bool ZoomingfunctionEnabled() = 0; 30735+}; 30736+} // namespace OHOS::NWeb 30737+#endif // NWEB_PREFERENCE_H 30738diff --git a/ohos_nweb/include/nweb_url_resource_error.h b/ohos_nweb/include/nweb_url_resource_error.h 30739new file mode 100644 30740index 0000000000..b24b7fbd90 30741--- /dev/null 30742+++ b/ohos_nweb/include/nweb_url_resource_error.h 30743@@ -0,0 +1,36 @@ 30744+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 30745+// Use of this source code is governed by a BSD-style license that can be 30746+// found in the LICENSE file. 30747+ 30748+#ifndef NWEB_URL_RESOURCE_ERROR_H 30749+#define NWEB_URL_RESOURCE_ERROR_H 30750+ 30751+#include <string> 30752+ 30753+#include "nweb_export.h" 30754+namespace OHOS::NWeb { 30755+class OHOS_NWEB_EXPORT NWebUrlResourceError { 30756+public: 30757+ NWebUrlResourceError() = default; 30758+ 30759+ virtual ~NWebUrlResourceError() = default; 30760+ 30761+ /** 30762+ * @brief Gets the error description. 30763+ * 30764+ * @brief Gets the ErrorInfo. 30765+ * 30766+ * @return The description of the error. 30767+ */ 30768+ virtual const std::string &ErrorInfo() const = 0; 30769+ 30770+ /** 30771+ * @brief Get the Error Code. 30772+ * 30773+ * @return The error code. 30774+ */ 30775+ virtual int ErrorCode() const = 0; 30776+}; 30777+} 30778+ 30779+#endif // NWEB_URL_RESOURCE_ERROR_H 30780\ No newline at end of file 30781diff --git a/ohos_nweb/include/nweb_url_resource_request.h b/ohos_nweb/include/nweb_url_resource_request.h 30782new file mode 100644 30783index 0000000000..48e91d03ec 30784--- /dev/null 30785+++ b/ohos_nweb/include/nweb_url_resource_request.h 30786@@ -0,0 +1,64 @@ 30787+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 30788+// Use of this source code is governed by a BSD-style license that can be 30789+// found in the LICENSE file. 30790+#ifndef NWEB_URL_RESOURCE_REQUEST_H 30791+#define NWEB_URL_RESOURCE_REQUEST_H 30792+#include <map> 30793+#include <string> 30794+ 30795+#include "nweb_export.h" 30796+ 30797+namespace OHOS::NWeb { 30798+class OHOS_NWEB_EXPORT NWebUrlResourceRequest { 30799+public: 30800+ NWebUrlResourceRequest() = default; 30801+ 30802+ virtual ~NWebUrlResourceRequest() = default; 30803+ 30804+ /** 30805+ * @brief Gets the method associated with the request, for example "GET". 30806+ * 30807+ * @retval method the method associated with the request. 30808+ */ 30809+ virtual const std::string &Method() = 0; 30810+ 30811+ /** 30812+ * @brief Gets the headers associated with the request. 30813+ * 30814+ * @retval the headers associated with the request. 30815+ */ 30816+ virtual const std::map<std::string, std::string> &RequestHeaders() = 0; 30817+ 30818+ /** 30819+ * @brief Gets the URL for which the resource request was made. 30820+ * 30821+ * @retval URL url string 30822+ */ 30823+ virtual const std::string &Url() = 0; 30824+ 30825+ /** 30826+ * @brief Gets whether a gesture (such as a click) was associated with the 30827+ * request. 30828+ * 30829+ * @retval gesture 30830+ */ 30831+ virtual bool FromGesture() = 0; 30832+ 30833+ /** 30834+ * @brief Gets whether the request was made in order to fetch the main frame's 30835+ * document. 30836+ * 30837+ * @retval Is main frame 30838+ */ 30839+ virtual bool IsAboutMainFrame() = 0; 30840+ 30841+ /** 30842+ * @brief Gets whether the request was a result of a server-side redirect. 30843+ * 30844+ * @retval is redirect 30845+ */ 30846+ virtual bool IsRequestRedirect() = 0; 30847+}; 30848+} 30849+ 30850+#endif 30851\ No newline at end of file 30852diff --git a/ohos_nweb/include/nweb_url_resource_response.h b/ohos_nweb/include/nweb_url_resource_response.h 30853new file mode 100644 30854index 0000000000..0efc5cd930 30855--- /dev/null 30856+++ b/ohos_nweb/include/nweb_url_resource_response.h 30857@@ -0,0 +1,174 @@ 30858+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 30859+// Use of this source code is governed by a BSD-style license that can be 30860+// found in the LICENSE file. 30861+ 30862+#ifndef NWEB_URL_RESOURCE_RESPONSE_H 30863+#define NWEB_URL_RESOURCE_RESPONSE_H 30864+ 30865+#include <map> 30866+#include <string> 30867+ 30868+namespace OHOS::NWeb { 30869+class NWebUrlResourceResponse { 30870+public: 30871+ /** 30872+ * @brief Constructs a resource response with the given parameters. 30873+ * 30874+ * @param mime_type the resource response's MIME type, for example { 30875+ * "text/html"}. 30876+ * @param encoding the resource response's character encoding, for example 30877+ * {"utf-8"}. 30878+ * @param status_code the status code needs to be in the ranges [100, 299], 30879+ * [400, 599]. Causing a redirect by specifying a 3xx code is not supported. 30880+ * @param reason_phrase the phrase describing the status code, for example 30881+ * "OK". Must be non-empty. 30882+ * @param request_headers the resource response's headers represented as a 30883+ * mapping of header name -> header value. 30884+ * @param input_stream the input stream that provides the resource response's 30885+ * data. 30886+ */ 30887+ NWebUrlResourceResponse(const std::string& mime_type, 30888+ const std::string& encoding, 30889+ const int status_code, 30890+ const std::string& reason_phrase, 30891+ const std::map<std::string, std::string>& request_headers, 30892+ std::string& input_stream) 30893+ : mime_type_(mime_type), 30894+ encoding_(encoding), 30895+ status_code_(status_code), 30896+ reason_phrase_(reason_phrase), 30897+ request_headers_(request_headers), 30898+ input_stream_(input_stream) {} 30899+ 30900+ NWebUrlResourceResponse(const std::string& mime_type, 30901+ const std::string& encoding, 30902+ std::string& input_stream) 30903+ : mime_type_(mime_type), 30904+ encoding_(encoding), 30905+ input_stream_(input_stream) {} 30906+ 30907+ ~NWebUrlResourceResponse() = default; 30908+ 30909+ /** 30910+ * @brief get input stream 30911+ * 30912+ * @retval inputstream string 30913+ */ 30914+ const std::string& ResponseData() 30915+ { 30916+ return input_stream_; 30917+ } 30918+ 30919+ /** 30920+ * @brief set input stream 30921+ * 30922+ * @param input_stream set inputstream for example: fread(buf, 1, sizeof(buf), 30923+ * file) 30924+ */ 30925+ void PutResponseData(std::string& input_stream) 30926+ { 30927+ input_stream_ = input_stream; 30928+ } 30929+ 30930+ /** 30931+ * @brief Constructs a resource response with the given parameters. 30932+ * 30933+ * @param encoding encoding { "utf-8" } 30934+ */ 30935+ void PutResponseEncoding(const std::string& encoding) 30936+ { 30937+ encoding_ = encoding; 30938+ } 30939+ 30940+ /** 30941+ * @brief get encoding 30942+ * 30943+ * @retval encoding the resource response's encoding 30944+ */ 30945+ std::string ResponseEncoding() 30946+ { 30947+ return encoding_; 30948+ } 30949+ 30950+ /** 30951+ * @brief Constructs a resource response with the given parameters. 30952+ * 30953+ * @param mime_type mime_type{ "text/html" } 30954+ */ 30955+ void PutResponseMimeType(const std::string& mime_type) 30956+ { 30957+ mime_type_ = mime_type; 30958+ } 30959+ 30960+ /** 30961+ * @brief get mimetype 30962+ * 30963+ * @retval mimetype The resource response's MIME type 30964+ */ 30965+ std::string ResponseMimeType() 30966+ { 30967+ return mime_type_; 30968+ } 30969+ 30970+ /** 30971+ * @brief Set ResponseHeaders 30972+ * 30973+ * @param request_headers request header 30974+ */ 30975+ void PutResponseHeaders(const std::map<std::string, std::string>& request_headers) 30976+ { 30977+ request_headers_ = request_headers; 30978+ } 30979+ 30980+ /** 30981+ * @brief Get ResponseHeaders 30982+ * 30983+ * @retval request headers 30984+ */ 30985+ const std::map<std::string, std::string>& ResponseHeaders() 30986+ { 30987+ return request_headers_; 30988+ } 30989+ 30990+ /** 30991+ * @brief Set StatusCode And ReasonPhrase 30992+ * 30993+ * @param status_code status code 30994+ * @param reasonphrase reason phrase 30995+ */ 30996+ void PutResponseStateAndStatuscode(int status_code, 30997+ std::string reason_phrase) 30998+ { 30999+ status_code_ = status_code; 31000+ reason_phrase_ = reason_phrase; 31001+ } 31002+ 31003+ /** 31004+ * @brief get status code 31005+ * 31006+ * @retval status code 31007+ */ 31008+ int ResponseStatusCode() 31009+ { 31010+ return status_code_; 31011+ } 31012+ 31013+ /** 31014+ * @brief Get ReasonPhrase 31015+ * 31016+ * @retval errorcode reason 31017+ */ 31018+ std::string ResponseStatus() 31019+ { 31020+ return reason_phrase_; 31021+ } 31022+private: 31023+ std::string mime_type_; 31024+ std::string encoding_; 31025+ int status_code_ = 200; 31026+ std::string reason_phrase_; 31027+ std::map<std::string, std::string> request_headers_; 31028+ std::string& input_stream_; 31029+}; 31030+} 31031+#endif 31032\ No newline at end of file 31033diff --git a/ohos_nweb/include/nweb_value.h b/ohos_nweb/include/nweb_value.h 31034new file mode 100644 31035index 0000000000..ee4c745e3c 31036--- /dev/null 31037+++ b/ohos_nweb/include/nweb_value.h 31038@@ -0,0 +1,70 @@ 31039+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 31040+// Use of this source code is governed by a BSD-style license that can be 31041+// found in the LICENSE file. 31042+ 31043+#ifndef NWEB_VALUE_H_ 31044+#define NWEB_VALUE_H_ 31045+ 31046+#include <iostream> 31047+#include <string> 31048+#include "nweb_export.h" 31049+ 31050+namespace OHOS::NWeb { 31051+ union data_union { 31052+ int n; 31053+ double f; 31054+ bool b; 31055+ }; 31056+ 31057+ class OHOS_NWEB_EXPORT NWebValue { 31058+ public: 31059+ enum class Type : unsigned char { 31060+ NONE = 0, 31061+ BOOLEAN, 31062+ INTEGER, 31063+ DOUBLE, 31064+ STRING, 31065+ BINARY, 31066+ DICTIONARY, 31067+ LIST 31068+ }; 31069+ 31070+ NWebValue(Type type) : type_(type) {} 31071+ 31072+ ~NWebValue() = default; 31073+ 31074+ bool GetBoolean() { return data_.b; } 31075+ 31076+ void SetBoolean(bool b) { data_.b = b; } 31077+ 31078+ void SetString(std::string str) { str_ = str; } 31079+ 31080+ std::string GetString() { return str_; } 31081+ 31082+ void SetDouble(double dou) { data_.f = dou; } 31083+ 31084+ double GetDouble() { return data_.f; } 31085+ 31086+ void SetInt(int num) { data_.n = num; } 31087+ 31088+ int GetInt() { return data_.n; } 31089+ 31090+ void SetJsonString(std::string json_string) { str_json_ = json_string; } 31091+ 31092+ std::string GetJsonString() { return str_json_; } 31093+ 31094+ Type GetType() { return type_; } 31095+ 31096+ void SetType(Type type) { type_ = type; } 31097+ 31098+ int error_ = 0; 31099+ 31100+ private: 31101+ Type type_ = Type::NONE; 31102+ data_union data_; 31103+ std::string str_; 31104+ std::string str_json_; 31105+ }; 31106+} 31107+ 31108+#endif // NWEB_VALUE_H_ 31109diff --git a/ohos_nweb/include/nweb_value_callback.h b/ohos_nweb/include/nweb_value_callback.h 31110new file mode 100644 31111index 0000000000..aeba1f792a 31112--- /dev/null 31113+++ b/ohos_nweb/include/nweb_value_callback.h 31114@@ -0,0 +1,22 @@ 31115+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 31116+// Use of this source code is governed by a BSD-style license that can be 31117+// found in the LICENSE file. 31118+ 31119+#ifndef VALUE_CALLBACK_H 31120+#define VALUE_CALLBACK_H 31121+ 31122+#include "nweb_export.h" 31123+ 31124+namespace OHOS::NWeb { 31125+template <typename T> 31126+class OHOS_NWEB_EXPORT NWebValueCallback { 31127+public: 31128+ NWebValueCallback() = default; 31129+ 31130+ virtual ~NWebValueCallback() = default; 31131+ 31132+ virtual void OnReceiveValue(T value) = 0; 31133+}; 31134+} 31135+ 31136+#endif // NWebValueCallback 31137\ No newline at end of file 31138diff --git a/ohos_nweb/src/cef_delegate/nweb_access_request_delegate.cc b/ohos_nweb/src/cef_delegate/nweb_access_request_delegate.cc 31139new file mode 100644 31140index 0000000000..304addd1ad 31141--- /dev/null 31142+++ b/ohos_nweb/src/cef_delegate/nweb_access_request_delegate.cc 31143@@ -0,0 +1,42 @@ 31144+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 31145+// Use of this source code is governed by a BSD-style license that can be 31146+// found in the LICENSE file. 31147+ 31148+#include "ohos_nweb/src/cef_delegate/nweb_access_request_delegate.h" 31149+#include "base/logging.h" 31150+#include "cef/include/cef_permission_request.h" 31151+ 31152+namespace OHOS::NWeb { 31153+NWebAccessRequestDelegate::NWebAccessRequestDelegate(CefRefPtr<CefAccessRequest> request) 31154+ : request_(request) {} 31155+ 31156+std::string NWebAccessRequestDelegate::Origin() { 31157+ if (request_ != nullptr) { 31158+ return request_->Origin(); 31159+ } 31160+ return nullptr; 31161+} 31162+ 31163+int NWebAccessRequestDelegate::ResourceAcessId() { 31164+ if (request_ != nullptr) { 31165+ return request_->ResourceAcessId(); 31166+ } 31167+ return -1; 31168+} 31169+ 31170+void NWebAccessRequestDelegate::Agree(int resourceId) { 31171+ if (request_ != nullptr) { 31172+ if (resourceId == ResourceAcessId()) { 31173+ request_->ReportRequestResult(true); 31174+ } else { 31175+ request_->ReportRequestResult(false); 31176+ } 31177+ } 31178+} 31179+ 31180+void NWebAccessRequestDelegate::Refuse() { 31181+ if (request_ != nullptr) { 31182+ request_->ReportRequestResult(false); 31183+ } 31184+} 31185+} // namespace OHOS::NWeb 31186diff --git a/ohos_nweb/src/cef_delegate/nweb_access_request_delegate.h b/ohos_nweb/src/cef_delegate/nweb_access_request_delegate.h 31187new file mode 100644 31188index 0000000000..24cc0ff87c 31189--- /dev/null 31190+++ b/ohos_nweb/src/cef_delegate/nweb_access_request_delegate.h 31191@@ -0,0 +1,30 @@ 31192+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 31193+// Use of this source code is governed by a BSD-style license that can be 31194+// found in the LICENSE file. 31195+ 31196+#ifndef NWEB_ACCESS_REQUEST_DELEGATE_H 31197+#define NWEB_ACCESS_REQUEST_DELEGATE_H 31198+ 31199+#include "cef/include/cef_browser.h" 31200+#include "ohos_nweb/include/nweb_access_request.h" 31201+ 31202+namespace OHOS::NWeb { 31203+class NWebAccessRequestDelegate : public NWebAccessRequest { 31204+ public: 31205+ explicit NWebAccessRequestDelegate(CefRefPtr<CefAccessRequest> request); 31206+ ~NWebAccessRequestDelegate() = default; 31207+ 31208+ std::string Origin() override; 31209+ 31210+ int ResourceAcessId() override; 31211+ 31212+ void Agree(int resourceId) override; 31213+ 31214+ void Refuse() override; 31215+ 31216+ private: 31217+ CefRefPtr<CefAccessRequest> request_ = nullptr; 31218+}; 31219+} // namespace OHOS::NWeb 31220+ 31221+#endif // NWEB_ACCESS_REQUEST_DELEGATE_H 31222diff --git a/ohos_nweb/src/cef_delegate/nweb_application.cc b/ohos_nweb/src/cef_delegate/nweb_application.cc 31223new file mode 100644 31224index 0000000000..7bbfd31f93 31225--- /dev/null 31226+++ b/ohos_nweb/src/cef_delegate/nweb_application.cc 31227@@ -0,0 +1,93 @@ 31228+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 31229+// Use of this source code is governed by a BSD-style license that can be 31230+// found in the LICENSE file. 31231+ 31232+#include "nweb_application.h" 31233+ 31234+#include <cstdlib> 31235+#include <thread> 31236+#include "cef/include/wrapper/cef_helpers.h" 31237+#include "nweb_handler_delegate.h" 31238+ 31239+namespace OHOS::NWeb { 31240+NWebApplication::NWebApplication( 31241+ std::shared_ptr<NWebPreferenceDelegate> preference_delegate, 31242+ std::string url, 31243+ CefRefPtr<NWebHandlerDelegate> handler_delegate) 31244+ : preference_delegate_(preference_delegate), 31245+ url_(url), 31246+ handler_delegate_(handler_delegate) {} 31247+ 31248+NWebApplication::~NWebApplication() {} 31249+ 31250+std::string NWebApplication::GetURL() { 31251+ return url_; 31252+} 31253+ 31254+/* CefApp methods begin */ 31255+CefRefPtr<CefBrowserProcessHandler> 31256+NWebApplication::GetBrowserProcessHandler() { 31257+ return this; 31258+} 31259+ 31260+CefRefPtr<CefRenderProcessHandler> NWebApplication::GetRenderProcessHandler() { 31261+ return this; 31262+} 31263+/* CefApp methods end */ 31264+ 31265+/* CefBrowserProcessHandler methods begin */ 31266+void NWebApplication::OnContextInitialized() { 31267+ LOG(INFO) << "NWebApplication::OnContextInitialized"; 31268+ CEF_REQUIRE_UI_THREAD(); 31269+ CreateBrowser(); 31270+} 31271+/* CefBrowserProcessHandler methods end */ 31272+ 31273+/* CefRenderProcessHandler methods begin */ 31274+void NWebApplication::OnWebKitInitialized() { 31275+ LOG(INFO) << "OnWebKitInitialized"; 31276+} 31277+/* CefRenderProcessHandler methods begin */ 31278+ 31279+CefRefPtr<CefClient> NWebApplication::GetDefaultClient() { 31280+ // Called when a new browser window is created via the Chrome runtime UI 31281+ return handler_delegate_; 31282+} 31283+ 31284+void NWebApplication::PopulateCreateSettings( 31285+ CefRefPtr<CefCommandLine> command_line, 31286+ CefBrowserSettings& browser_settings) { 31287+ if (command_line->HasSwitch(switches::kOffScreenFrameRate)) { 31288+ browser_settings.windowless_frame_rate = 31289+ atoi(command_line->GetSwitchValue(switches::kOffScreenFrameRate) 31290+ .ToString() 31291+ .c_str()); 31292+ } 31293+} 31294+ 31295+void NWebApplication::CreateBrowser() { 31296+ CefRefPtr<CefCommandLine> command_line = 31297+ CefCommandLine::GetGlobalCommandLine(); 31298+ 31299+ // Specify CEF browser settings here. 31300+ CefBrowserSettings browser_settings; 31301+ PopulateCreateSettings(command_line, browser_settings); 31302+ browser_settings.background_color = 0xffffffff; 31303+ preference_delegate_->ComputeBrowserSettings(browser_settings); 31304+ 31305+ std::string url; 31306+ url = command_line->GetSwitchValue(switches::kUrl); 31307+ if (url.empty()) { 31308+ url = GetURL(); 31309+ } 31310+ 31311+ // Information used when creating the native window. 31312+ CefWindowInfo window_info; 31313+ CefWindowHandle handle = kNullWindowHandle; 31314+ window_info.SetAsWindowless(handle); 31315+ 31316+ // Create the first browser window. 31317+ CefBrowserHost::CreateBrowser(window_info, handler_delegate_, url, 31318+ browser_settings, nullptr, nullptr); 31319+} 31320+} // namespace OHOS::NWeb 31321\ No newline at end of file 31322diff --git a/ohos_nweb/src/cef_delegate/nweb_application.h b/ohos_nweb/src/cef_delegate/nweb_application.h 31323new file mode 100644 31324index 0000000000..247e813cd4 31325--- /dev/null 31326+++ b/ohos_nweb/src/cef_delegate/nweb_application.h 31327@@ -0,0 +1,56 @@ 31328+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 31329+// Use of this source code is governed by a BSD-style license that can be 31330+// found in the LICENSE file. 31331+ 31332+#ifndef NWEB_APPLICATION_H 31333+#define NWEB_APPLICATION_H 31334+ 31335+#include <string> 31336+#include "cef/include/cef_app.h" 31337+#include "nweb_handler_delegate.h" 31338+#include "nweb_preference_delegate.h" 31339+ 31340+namespace OHOS::NWeb { 31341+namespace switches { 31342+const char kUrl[] = "url"; 31343+const char kOffScreenFrameRate[] = "off-screen-frame-rate"; 31344+} // namespace switches 31345+ 31346+class NWebApplication : public CefApp, 31347+ public CefBrowserProcessHandler, 31348+ public CefRenderProcessHandler { 31349+ public: 31350+ NWebApplication(std::shared_ptr<NWebPreferenceDelegate> preference_delegate, 31351+ std::string url, 31352+ CefRefPtr<NWebHandlerDelegate> handler_delegate); 31353+ ~NWebApplication(); 31354+ 31355+ /* CefApp methods begine */ 31356+ CefRefPtr<CefBrowserProcessHandler> GetBrowserProcessHandler() override; 31357+ CefRefPtr<CefRenderProcessHandler> GetRenderProcessHandler() override; 31358+ /* CefApp methods end */ 31359+ 31360+ /* CefBrowserProcessHandler methods begin */ 31361+ void OnContextInitialized() override; 31362+ CefRefPtr<CefClient> GetDefaultClient() override; 31363+ std::string GetURL(); 31364+ /* CefBrowserProcessHandler methods end */ 31365+ 31366+ /* CefRenderProcessHandler methods begin */ 31367+ void OnWebKitInitialized() override; 31368+ /* CefRenderProcessHandler methods begin */ 31369+ 31370+ void CreateBrowser(); 31371+ 31372+ private: 31373+ void PopulateCreateSettings(CefRefPtr<CefCommandLine> command_line, 31374+ CefBrowserSettings& browser_settings); 31375+ 31376+ std::shared_ptr<NWebPreferenceDelegate> preference_delegate_ = nullptr; 31377+ std::string url_; 31378+ CefRefPtr<NWebHandlerDelegate> handler_delegate_{nullptr}; 31379+ // Include the default reference counting implementation. 31380+ IMPLEMENT_REFCOUNTING(NWebApplication); 31381+}; // NWebApplication 31382+} // namespace OHOS::NWeb 31383+#endif // NWebApplication 31384diff --git a/ohos_nweb/src/cef_delegate/nweb_cookie_manager_delegate.cc b/ohos_nweb/src/cef_delegate/nweb_cookie_manager_delegate.cc 31385new file mode 100644 31386index 0000000000..0b0bb59284 31387--- /dev/null 31388+++ b/ohos_nweb/src/cef_delegate/nweb_cookie_manager_delegate.cc 31389@@ -0,0 +1,320 @@ 31390+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 31391+// Use of this source code is governed by a BSD-style license that can be 31392+// found in the LICENSE file. 31393+ 31394+#include "nweb_cookie_manager_delegate.h" 31395+#include <memory> 31396+#include <thread> 31397+#include <vector> 31398+#include "base/logging.h" 31399+#include "base/synchronization/waitable_event.h" 31400+#include "base/time/time.h" 31401+#include "cef/include/cef_waitable_event.h" 31402+#include "cef/libcef/common/net_service/net_service_util.h" 31403+#include "cef/libcef/common/time_util.h" 31404+#include "net/cookies/canonical_cookie.h" 31405+#include "url/gurl.h" 31406+ 31407+using namespace OHOS::NWeb; 31408+using base::WaitableEvent; 31409+ 31410+namespace { 31411+class CookieCompletionCallback : public CefCompletionCallback { 31412+ public: 31413+ explicit CookieCompletionCallback( 31414+ std::shared_ptr<WaitableEvent> event, 31415+ std::shared_ptr<NWebValueCallback<bool>> callback) 31416+ : event_(event), callback_(callback) {} 31417+ void OnComplete() override { 31418+ if (event_ != nullptr) { 31419+ event_->Signal(); 31420+ } 31421+ if (callback_ != nullptr) { 31422+ callback_->OnReceiveValue(true); 31423+ } 31424+ } 31425+ 31426+ private: 31427+ std::shared_ptr<WaitableEvent> event_; 31428+ std::shared_ptr<NWebValueCallback<bool>> callback_; 31429+ IMPLEMENT_REFCOUNTING(CookieCompletionCallback); 31430+ DISALLOW_COPY_AND_ASSIGN(CookieCompletionCallback); 31431+}; 31432+ 31433+class CookieSetCallback : public CefSetCookieCallback { 31434+ public: 31435+ explicit CookieSetCallback(std::shared_ptr<WaitableEvent> event, 31436+ std::shared_ptr<NWebValueCallback<bool>> callback) 31437+ : event_(event), callback_(callback), set_success_(false) {} 31438+ void OnComplete(bool success) override { 31439+ set_success_ = success; 31440+ if (event_ != nullptr) { 31441+ event_->Signal(); 31442+ } 31443+ if (callback_ != nullptr) { 31444+ callback_->OnReceiveValue(set_success_); 31445+ } 31446+ } 31447+ 31448+ bool IsSetSuccess() const { return set_success_; } 31449+ 31450+ private: 31451+ std::shared_ptr<WaitableEvent> event_; 31452+ std::shared_ptr<NWebValueCallback<bool>> callback_; 31453+ bool set_success_; 31454+ 31455+ IMPLEMENT_REFCOUNTING(CookieSetCallback); 31456+ DISALLOW_COPY_AND_ASSIGN(CookieSetCallback); 31457+}; 31458+ 31459+class HasCookieVisitor : public CefCookieVisitor { 31460+ public: 31461+ HasCookieVisitor() = delete; 31462+ explicit HasCookieVisitor(std::shared_ptr<NWebValueCallback<bool>> callback) 31463+ : callback_(callback) {} 31464+ ~HasCookieVisitor() = default; 31465+ 31466+ bool Visit(const CefCookie& cookie, 31467+ int count, 31468+ int total, 31469+ bool& deleteCookie) override { 31470+ if (total == 0) { 31471+ if (callback_ != nullptr) { 31472+ callback_->OnReceiveValue(false); 31473+ } 31474+ } 31475+ return true; 31476+ } 31477+ 31478+ void SetCookieLine(const CefString& cookieLine) override { 31479+ if (callback_ != nullptr) { 31480+ callback_->OnReceiveValue(true); 31481+ } 31482+ } 31483+ 31484+ private: 31485+ std::shared_ptr<NWebValueCallback<bool>> callback_; 31486+ IMPLEMENT_REFCOUNTING(HasCookieVisitor); 31487+}; 31488+ 31489+class ReturnCookieVisitor : public CefCookieVisitor { 31490+ public: 31491+ ReturnCookieVisitor() = delete; 31492+ explicit ReturnCookieVisitor( 31493+ std::shared_ptr<NWebValueCallback<std::string>> callback) 31494+ : cookie_line_(std::string()), 31495+ cookies_(std::vector<CefCookie>()), 31496+ callback_(callback) {} 31497+ ~ReturnCookieVisitor() = default; 31498+ 31499+ bool Visit(const CefCookie& cookie, 31500+ int count, 31501+ int total, 31502+ bool& deleteCookie) override { 31503+ if (total == 0) { 31504+ if (callback_ != nullptr) { 31505+ callback_->OnReceiveValue(cookie_line_); 31506+ } 31507+ return true; 31508+ } 31509+ deleteCookie = !cookie.has_expires ? delete_session_ : false; 31510+ cookies_.push_back(cookie); 31511+ return true; 31512+ } 31513+ 31514+ void SetCookieLine(const CefString& cookieLine) override { 31515+ cookie_line_ = cookieLine.ToString(); 31516+ 31517+ if (callback_ != nullptr) { 31518+ callback_->OnReceiveValue(cookie_line_); 31519+ } 31520+ } 31521+ 31522+ std::vector<CefCookie>& GetVisitorCookies() { return cookies_; } 31523+ 31524+ std::string ReturnCookieLine() const { return cookie_line_; } 31525+ 31526+ private: 31527+ bool delete_session_; 31528+ std::string cookie_line_; 31529+ std::vector<CefCookie> cookies_; 31530+ std::shared_ptr<NWebValueCallback<std::string>> callback_; 31531+ IMPLEMENT_REFCOUNTING(ReturnCookieVisitor); 31532+}; 31533+ 31534+class CookieDeleteCallback : public CefDeleteCookiesCallback { 31535+ public: 31536+ CookieDeleteCallback() = delete; 31537+ CookieDeleteCallback(std::shared_ptr<WaitableEvent> event, 31538+ std::shared_ptr<NWebValueCallback<bool>> callback) 31539+ : event_(event), callback_(callback), num_deleted_(0) {} 31540+ explicit CookieDeleteCallback( 31541+ std::shared_ptr<NWebValueCallback<bool>> callback) 31542+ : event_(nullptr), callback_(callback), num_deleted_(0) {} 31543+ explicit CookieDeleteCallback(std::shared_ptr<WaitableEvent> event) 31544+ : event_(event), callback_(nullptr), num_deleted_(0) {} 31545+ 31546+ void OnComplete(int num_deleted) override { 31547+ num_deleted_ = num_deleted; 31548+ if (callback_ != nullptr) { 31549+ if (num_deleted_ > 0) { 31550+ callback_->OnReceiveValue(true); 31551+ } else { 31552+ callback_->OnReceiveValue(false); 31553+ } 31554+ } 31555+ if (event_ != nullptr) { 31556+ event_->Signal(); 31557+ } 31558+ } 31559+ 31560+ int GetNumDeleted() const { return num_deleted_; } 31561+ 31562+ private: 31563+ std::shared_ptr<WaitableEvent> event_; 31564+ std::shared_ptr<NWebValueCallback<bool>> callback_; 31565+ int num_deleted_; 31566+ 31567+ IMPLEMENT_REFCOUNTING(CookieDeleteCallback); 31568+ DISALLOW_COPY_AND_ASSIGN(CookieDeleteCallback); 31569+}; 31570+} // namespace 31571+ 31572+namespace OHOS::NWeb { 31573+NWebCookieManagerDelegate::NWebCookieManagerDelegate() {} 31574+ 31575+CefRefPtr<CefCookieManager> 31576+NWebCookieManagerDelegate::GetGlobalCookieManager() { 31577+ if (!cookie_manager_) { 31578+ cookie_manager_ = CefCookieManager::GetGlobalManager(nullptr); 31579+ } 31580+ return cookie_manager_; 31581+} 31582+ 31583+bool NWebCookieManagerDelegate::IsAcceptCookieAllowed() { 31584+ CefRefPtr<CefCookieManager> cookie_manager = GetGlobalCookieManager(); 31585+ if (cookie_manager == nullptr) { 31586+ return false; 31587+ } 31588+ return cookie_manager->IsAcceptCookieAllowed(); 31589+} 31590+ 31591+void NWebCookieManagerDelegate::PutAcceptCookieEnabled(bool accept) { 31592+ CefRefPtr<CefCookieManager> cookie_manager = GetGlobalCookieManager(); 31593+ if (cookie_manager == nullptr) { 31594+ return; 31595+ } 31596+ cookie_manager->PutAcceptCookieEnabled(accept); 31597+} 31598+ 31599+bool NWebCookieManagerDelegate::IsFileURLSchemeCookiesAllowed() { 31600+ CefRefPtr<CefCookieManager> cookie_manager = GetGlobalCookieManager(); 31601+ if (cookie_manager == nullptr) { 31602+ return false; 31603+ } 31604+ return cookie_manager->IsFileURLSchemeCookiesAllowed(); 31605+} 31606+ 31607+void NWebCookieManagerDelegate::PutAcceptFileURLSchemeCookiesEnabled( 31608+ bool allow) { 31609+ CefRefPtr<CefCookieManager> cookie_manager = GetGlobalCookieManager(); 31610+ if (cookie_manager == nullptr) { 31611+ return; 31612+ } 31613+ cookie_manager->PutAcceptFileURLSchemeCookiesEnabled(allow); 31614+} 31615+ 31616+void NWebCookieManagerDelegate::ReturnCookie( 31617+ const std::string& url, 31618+ std::shared_ptr<NWebValueCallback<std::string>> callback) { 31619+ CefRefPtr<CefCookieManager> cookie_manager = GetGlobalCookieManager(); 31620+ if (cookie_manager == nullptr) { 31621+ LOG(ERROR) << "GetGlobalCookieManager failed"; 31622+ return; 31623+ } 31624+ CefRefPtr<ReturnCookieVisitor> visitor = new ReturnCookieVisitor(callback); 31625+ if (!cookie_manager->VisitUrlCookies(CefString(url), false, visitor)) { 31626+ LOG(ERROR) << "VisitUrlCookies failed"; 31627+ return; 31628+ } 31629+} 31630+ 31631+void NWebCookieManagerDelegate::SetCookie( 31632+ const std::string& url, 31633+ const std::string& value, 31634+ std::shared_ptr<NWebValueCallback<bool>> callback) { 31635+ CefRefPtr<CefCookieManager> cookie_manager = GetGlobalCookieManager(); 31636+ if (cookie_manager == nullptr) { 31637+ LOG(ERROR) << "GetGlobalCookieManager failed"; 31638+ return; 31639+ } 31640+ CefCookie cef_cookie; 31641+ if (!CefCookieManager::CreateCefCookie(CefString(url), CefString(value), 31642+ cef_cookie)) { 31643+ LOG(ERROR) << "CreateCefCookie failed"; 31644+ return; 31645+ } 31646+ if (!cookie_manager->SetCookie(CefString(url), cef_cookie, 31647+ new CookieSetCallback(nullptr, callback))) { 31648+ LOG(ERROR) << "SetCookie error"; 31649+ return; 31650+ } 31651+} 31652+ 31653+void NWebCookieManagerDelegate::ExistCookies( 31654+ std::shared_ptr<NWebValueCallback<bool>> callback) { 31655+ CefRefPtr<CefCookieManager> cookie_manager = GetGlobalCookieManager(); 31656+ if (cookie_manager == nullptr) { 31657+ return; 31658+ } 31659+ CefRefPtr<HasCookieVisitor> visitor = new HasCookieVisitor(callback); 31660+ if (!cookie_manager->VisitAllCookies(visitor)) { 31661+ LOG(INFO) << "VisitAllCookies failed"; 31662+ return; 31663+ } 31664+} 31665+ 31666+void NWebCookieManagerDelegate::Store( 31667+ std::shared_ptr<NWebValueCallback<bool>> callback) { 31668+ CefRefPtr<CefCookieManager> cookie_manager = GetGlobalCookieManager(); 31669+ if (cookie_manager == nullptr) { 31670+ return; 31671+ } 31672+ CefRefPtr<CefCompletionCallback> complete = 31673+ new CookieCompletionCallback(nullptr, callback); 31674+ if (!cookie_manager->FlushStore(complete)) { 31675+ LOG(ERROR) << "Store Failed"; 31676+ callback->OnReceiveValue(false); 31677+ } 31678+} 31679+ 31680+void NWebCookieManagerDelegate::DeleteSessionCookies( 31681+ std::shared_ptr<NWebValueCallback<bool>> callback) { 31682+ CefRefPtr<CefCookieManager> cookie_manager = GetGlobalCookieManager(); 31683+ if (cookie_manager == nullptr) { 31684+ return; 31685+ } 31686+ CefRefPtr<CefDeleteCookiesCallback> delete_callback = 31687+ new CookieDeleteCallback(callback); 31688+ if (!cookie_manager->DeleteCookies(CefString(std::string()), 31689+ CefString(std::string()), true, 31690+ delete_callback)) { 31691+ LOG(ERROR) << "DeleteCookieEntirely Failed"; 31692+ } 31693+} 31694+ 31695+void NWebCookieManagerDelegate::DeleteCookieEntirely( 31696+ std::shared_ptr<NWebValueCallback<bool>> callback) { 31697+ CefRefPtr<CefCookieManager> cookie_manager = GetGlobalCookieManager(); 31698+ if (cookie_manager == nullptr) { 31699+ return; 31700+ } 31701+ CefRefPtr<CefDeleteCookiesCallback> delete_callback = 31702+ new CookieDeleteCallback(callback); 31703+ if (!cookie_manager->DeleteCookies(CefString(std::string()), 31704+ CefString(std::string()), false, 31705+ delete_callback)) { 31706+ LOG(ERROR) << "DeleteCookieEntirely Failed"; 31707+ } 31708+} 31709+} // namespace OHOS::NWeb 31710\ No newline at end of file 31711diff --git a/ohos_nweb/src/cef_delegate/nweb_cookie_manager_delegate.h b/ohos_nweb/src/cef_delegate/nweb_cookie_manager_delegate.h 31712new file mode 100644 31713index 0000000000..cb4c60b625 31714--- /dev/null 31715+++ b/ohos_nweb/src/cef_delegate/nweb_cookie_manager_delegate.h 31716@@ -0,0 +1,41 @@ 31717+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 31718+// Use of this source code is governed by a BSD-style license that can be 31719+// found in the LICENSE file. 31720+ 31721+#ifndef NWEB_COOKIE_MANAGER_DELEGATE_H 31722+#define NWEB_COOKIE_MANAGER_DELEGATE_H 31723+ 31724+#include "cef/include/cef_base.h" 31725+#include "cef/include/cef_cookie.h" 31726+#include "nweb_cookie_manager_delegate_interface.h" 31727+#include "nweb_value_callback.h" 31728+ 31729+namespace OHOS::NWeb { 31730+class NWebCookieManagerDelegate : public NWebCookieManagerDelegateInterface { 31731+ public: 31732+ NWebCookieManagerDelegate(); 31733+ ~NWebCookieManagerDelegate() = default; 31734+ 31735+ bool IsAcceptCookieAllowed() override; 31736+ void PutAcceptCookieEnabled(bool accept) override; 31737+ bool IsFileURLSchemeCookiesAllowed() override; 31738+ void PutAcceptFileURLSchemeCookiesEnabled(bool allow) override; 31739+ void ReturnCookie( 31740+ const std::string& url, 31741+ std::shared_ptr<NWebValueCallback<std::string>> callback) override; 31742+ void SetCookie(const std::string& url, 31743+ const std::string& value, 31744+ std::shared_ptr<NWebValueCallback<bool>> callback) override; 31745+ void ExistCookies(std::shared_ptr<NWebValueCallback<bool>> callback) override; 31746+ void Store(std::shared_ptr<NWebValueCallback<bool>> callback) override; 31747+ void DeleteSessionCookies( 31748+ std::shared_ptr<NWebValueCallback<bool>> callback) override; 31749+ void DeleteCookieEntirely( 31750+ std::shared_ptr<NWebValueCallback<bool>> callback) override; 31751+ 31752+ private: 31753+ CefRefPtr<CefCookieManager> GetGlobalCookieManager(); 31754+ CefRefPtr<CefCookieManager> cookie_manager_ = nullptr; 31755+}; 31756+} // namespace OHOS::NWeb 31757+#endif 31758\ No newline at end of file 31759diff --git a/ohos_nweb/src/cef_delegate/nweb_delegate.cc b/ohos_nweb/src/cef_delegate/nweb_delegate.cc 31760new file mode 100755 31761index 0000000000..16a7c15f74 31762--- /dev/null 31763+++ b/ohos_nweb/src/cef_delegate/nweb_delegate.cc 31764@@ -0,0 +1,459 @@ 31765+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 31766+// Use of this source code is governed by a BSD-style license that can be 31767+// found in the LICENSE file. 31768+ 31769+#include "nweb_delegate.h" 31770+ 31771+#include <thread> 31772+#include "nweb_application.h" 31773+#include "nweb_handler_delegate.h" 31774+#include "nweb_render_handler.h" 31775+ 31776+#include "cef/include/base/cef_logging.h" 31777+#include "cef/include/cef_app.h" 31778+#include "nweb_preference_delegate.h" 31779+ 31780+namespace OHOS::NWeb { 31781+class JavaScriptResultCallbackImpl : public CefJavaScriptResultCallback { 31782+ public: 31783+ JavaScriptResultCallbackImpl( 31784+ std::shared_ptr<NWebValueCallback<std::string>> callback) 31785+ : callback_(callback){}; 31786+ void OnJavaScriptExeResult(const CefString& result) override { 31787+ if (callback_ != nullptr) { 31788+ callback_->OnReceiveValue(result.ToString()); 31789+ } 31790+ } 31791+ 31792+ private: 31793+ std::shared_ptr<NWebValueCallback<std::string>> callback_; 31794+ 31795+ IMPLEMENT_REFCOUNTING(JavaScriptResultCallbackImpl); 31796+ DISALLOW_COPY_AND_ASSIGN(JavaScriptResultCallbackImpl); 31797+}; 31798+ 31799+NWebDelegate::NWebDelegate(int argc, const char* argv[]) 31800+ : argc_(argc), argv_(argv) {} 31801+ 31802+bool NWebDelegate::Init() { 31803+ preference_delegate_ = std::make_shared<NWebPreferenceDelegate>(); 31804+ 31805+ render_handler_ = NWebRenderHandler::Create(); 31806+ if (render_handler_ == nullptr) { 31807+ return false; 31808+ } 31809+ 31810+ event_handler_ = NWebEventHandler::Create(); 31811+ if (event_handler_ == nullptr) { 31812+ return false; 31813+ } 31814+ 31815+ std::string url_for_init = ""; 31816+ InitializeCef(url_for_init); 31817+ 31818+ return true; 31819+} 31820+ 31821+void NWebDelegate::OnDestroy(bool is_close_all) { 31822+ if (handler_delegate_ != nullptr) { 31823+ handler_delegate_->OnDestroy(); 31824+ } 31825+ if (preference_delegate_ != nullptr) { 31826+ preference_delegate_->OnDestroy(); 31827+ } 31828+ if (is_close_all) { 31829+ LOG(INFO) << "ready to shutdown"; 31830+ CefShutdown(); 31831+ } 31832+} 31833+ 31834+void NWebDelegate::RegisterDownLoadListener( 31835+ std::shared_ptr<NWebDownloadCallback> download_listener) { 31836+ if (handler_delegate_ == nullptr) { 31837+ LOG(ERROR) 31838+ << "fail to register download listener, NWEB handler is nullptr"; 31839+ return; 31840+ } 31841+ handler_delegate_->RegisterDownLoadListener(download_listener); 31842+} 31843+ 31844+void NWebDelegate::RegisterNWebHandler(std::shared_ptr<NWebHandler> handler) { 31845+ if (handler_delegate_ == nullptr) { 31846+ LOG(ERROR) 31847+ << "fail to register nweb handler, nweb handler delegate is nullptr"; 31848+ return; 31849+ } 31850+ handler_delegate_->RegisterNWebHandler(handler); 31851+} 31852+ 31853+void NWebDelegate::SetInputMethodClient( 31854+ CefRefPtr<NWebInputMethodClient> client) { 31855+ if (render_handler_ == nullptr) { 31856+ LOG(ERROR) 31857+ << "fail to register inputmethod client, render handler is nullptr"; 31858+ return; 31859+ } 31860+ render_handler_->SetInputMethodClient(client); 31861+} 31862+ 31863+void NWebDelegate::RegisterRenderCb( 31864+ std::function<void(const char*)> render_update_cb) { 31865+ if (render_handler_ != nullptr) { 31866+ render_handler_->RegisterRenderCb(render_update_cb); 31867+ } 31868+} 31869+ 31870+void NWebDelegate::Resize(uint32_t width, uint32_t height) { 31871+ if (render_handler_ != nullptr) { 31872+ render_handler_->Resize(width, height); 31873+ } 31874+} 31875+ 31876+void NWebDelegate::OnTouchPress(int32_t id, double x, double y) { 31877+ if (event_handler_ != nullptr) { 31878+ event_handler_->OnTouchPress(id, x, y); 31879+ } 31880+} 31881+ 31882+void NWebDelegate::OnTouchRelease(int32_t id, double x, double y) { 31883+ if (event_handler_ != nullptr) { 31884+ event_handler_->OnTouchRelease(id, x, y); 31885+ } 31886+} 31887+ 31888+void NWebDelegate::OnTouchMove(int32_t id, double x, double y) { 31889+ if (event_handler_ != nullptr) { 31890+ event_handler_->OnTouchMove(id, x, y); 31891+ } 31892+} 31893+ 31894+void NWebDelegate::OnTouchCancel() { 31895+ if (event_handler_ != nullptr) { 31896+ event_handler_->OnTouchCancel(); 31897+ } 31898+} 31899+ 31900+std::shared_ptr<NWebPreference> NWebDelegate::GetPreference() const { 31901+ return preference_delegate_; 31902+} 31903+ 31904+void NWebDelegate::Load(const std::string& url) { 31905+ LOG(INFO) << "NWebDelegate::Load url=" << url; 31906+ auto browser = GetBrowser(); 31907+ if (browser != nullptr) { 31908+ browser->GetMainFrame()->LoadURL(CefString(url)); 31909+ } 31910+ RequestVisitedHistory(); 31911+} 31912+ 31913+bool NWebDelegate::IsNavigatebackwardAllowed() const { 31914+ LOG(INFO) << "NWebDelegate::IsNavigatebackwardAllowed"; 31915+ if (GetBrowser().get()) { 31916+ return GetBrowser()->CanGoBack(); 31917+ } 31918+ return false; 31919+} 31920+ 31921+bool NWebDelegate::IsNavigateForwardAllowed() const { 31922+ LOG(INFO) << "NWebDelegate::IsNavigateForwardAllowed"; 31923+ if (GetBrowser().get()) { 31924+ return GetBrowser()->CanGoForward(); 31925+ } 31926+ return false; 31927+} 31928+ 31929+bool NWebDelegate::CanNavigateBackOrForward(int num_steps) const { 31930+ LOG(INFO) << "NWebDelegate::CanNavigateBackOrForward"; 31931+ if (GetBrowser().get()) { 31932+ return GetBrowser()->CanGoBackOrForward(num_steps); 31933+ } 31934+ return false; 31935+} 31936+ 31937+void NWebDelegate::NavigateBack() const { 31938+ LOG(INFO) << "NWebDelegate::NavigateBack"; 31939+ if (GetBrowser().get()) { 31940+ GetBrowser()->GoBack(); 31941+ } 31942+} 31943+ 31944+void NWebDelegate::NavigateForward() const { 31945+ LOG(INFO) << "NWebDelegate::NavigateForward"; 31946+ if (GetBrowser().get()) { 31947+ GetBrowser()->GoForward(); 31948+ } 31949+} 31950+ 31951+void NWebDelegate::Reload() const { 31952+ LOG(INFO) << "NWebDelegate::Reload"; 31953+ if (GetBrowser().get()) { 31954+ GetBrowser()->Reload(); 31955+ } 31956+} 31957+ 31958+void NWebDelegate::Zoom(float zoomFactor) const { 31959+ LOG(INFO) << "NWebDelegate::Zoom"; 31960+ if (GetBrowser().get()) { 31961+ double curFactor = GetBrowser()->GetHost()->GetZoomLevel(); 31962+ GetBrowser()->GetHost()->SetZoomLevel(zoomFactor + curFactor); 31963+ } 31964+} 31965+ 31966+void NWebDelegate::Stop() const { 31967+ LOG(INFO) << "NWebDelegate::Stop"; 31968+ if (GetBrowser().get()) { 31969+ GetBrowser()->StopLoad(); 31970+ } 31971+} 31972+ 31973+void NWebDelegate::ExecuteJavaScript(const std::string& code) const { 31974+ LOG(INFO) << "NWebDelegate::ExecuteJavaScript"; 31975+ if (GetBrowser().get()) { 31976+ GetBrowser()->GetMainFrame()->ExecuteJavaScript( 31977+ code, GetBrowser()->GetMainFrame()->GetURL(), 0); 31978+ } 31979+} 31980+ 31981+void NWebDelegate::ExecuteJavaScript( 31982+ const std::string& code, 31983+ std::shared_ptr<NWebValueCallback<std::string>> callback) const { 31984+ LOG(INFO) << "NWebDelegate::ExecuteJavaScript with callback"; 31985+ 31986+ if (GetBrowser().get()) { 31987+ CefRefPtr<JavaScriptResultCallbackImpl> JsResultCb = 31988+ new JavaScriptResultCallbackImpl(callback); 31989+ GetBrowser()->GetHost()->ExecuteJavaScript(code, JsResultCb); 31990+ } 31991+} 31992+ 31993+void NWebDelegate::PutBackgroundColor(int color) const { 31994+ LOG(INFO) << "NWebDelegate::PutBackgroundColor"; 31995+ if (GetBrowser().get()) { 31996+ GetBrowser()->GetHost()->SetBackgroundColor(color); 31997+ } 31998+} 31999+ 32000+void NWebDelegate::OnPause() { 32001+ LOG(INFO) << "NWebDelegate::OnPause"; 32002+ if (!GetBrowser().get()) { 32003+ return; 32004+ } 32005+ 32006+ // Remove focus from the browser. 32007+ GetBrowser()->GetHost()->SendFocusEvent(false); 32008+ 32009+ if (!hidden_) { 32010+ // Set the browser as hidden. 32011+ GetBrowser()->GetHost()->WasHidden(true); 32012+ hidden_ = true; 32013+ } 32014+} 32015+ 32016+void NWebDelegate::OnContinue() { 32017+ LOG(INFO) << "NWebDelegate::OnContinue"; 32018+ if (!GetBrowser().get()) { 32019+ return; 32020+ } 32021+ 32022+ if (hidden_) { 32023+ // Set the browser as visible. 32024+ GetBrowser()->GetHost()->WasHidden(false); 32025+ hidden_ = false; 32026+ } 32027+ 32028+ // Give focus to the browser. 32029+ GetBrowser()->GetHost()->SendFocusEvent(true); 32030+} 32031+ 32032+void NWebDelegate::InitializeCef(std::string url) { 32033+ handler_delegate_ = NWebHandlerDelegate::Create( 32034+ preference_delegate_, render_handler_, event_handler_); 32035+ nweb_app_ = 32036+ new NWebApplication(preference_delegate_, url, handler_delegate_); 32037+ 32038+ CefMainArgs mainargs(argc_, const_cast<char**>(argv_)); 32039+ int exitcode = CefExecuteProcess(mainargs, nweb_app_, NULL); 32040+ if (exitcode >= 0) { 32041+ LOG(INFO) << "CefExecuteProcess returned : " << exitcode; 32042+ return; 32043+ } 32044+ 32045+ CefSettings settings; 32046+ settings.windowless_rendering_enabled = true; 32047+ settings.log_severity = LOGSEVERITY_INFO; 32048+ settings.multi_threaded_message_loop = false; 32049+ 32050+ settings.persist_session_cookies = true; 32051+ 32052+#if !defined(CEF_USE_SANDBOX) 32053+ settings.no_sandbox = true; 32054+#endif 32055+ 32056+ static bool is_initialized = false; 32057+ static std::mutex init_mtx; 32058+ std::unique_lock<std::mutex> lk(init_mtx); 32059+ if (is_initialized) { 32060+ return nweb_app_->CreateBrowser(); 32061+ } 32062+ 32063+ if (!CefInitialize(mainargs, settings, nweb_app_, NULL)) { 32064+ LOG(ERROR) << "CefInitialize failed"; 32065+ } else { 32066+ is_initialized = true; 32067+ } 32068+} 32069+ 32070+void NWebDelegate::RunMessageLoop() { 32071+ // Run the CEF message loop. 32072+ // This will block until CefQuitMessageLoop() is called. 32073+ CefRunMessageLoop(); 32074+} 32075+ 32076+std::string NWebDelegate::Title() { 32077+ if (!GetBrowser().get()) { 32078+ return ""; 32079+ } 32080+ return GetBrowser()->GetHost()->Title(); 32081+} 32082+ 32083+HitTestResult NWebDelegate::GetHitTestResult() const { 32084+ HitTestResult data; 32085+ if (!GetBrowser().get()) { 32086+ return data; 32087+ } 32088+ int type; 32089+ CefString extra_data; 32090+ GetBrowser()->GetHost()->GetHitData(type, extra_data); 32091+ data.SetType(type); 32092+ data.SetExtra(extra_data.ToString()); 32093+ return data; 32094+} 32095+ 32096+int NWebDelegate::PageLoadProgress() { 32097+ if (!GetBrowser().get()) { 32098+ return 0; 32099+ } 32100+ return GetBrowser()->GetHost()->PageLoadProgress(); 32101+} 32102+ 32103+float NWebDelegate::Scale() { 32104+ if (!GetBrowser().get()) { 32105+ return 0; 32106+ } 32107+ return GetBrowser()->GetHost()->Scale(); 32108+} 32109+ 32110+void NWebDelegate::Load( 32111+ std::string& url, 32112+ std::map<std::string, std::string> additionalHttpHeaders) { 32113+ std::map<std::string, std::string>::iterator iter; 32114+ std::string extra = ""; 32115+ for (iter = additionalHttpHeaders.begin(); 32116+ iter != additionalHttpHeaders.end(); iter++) { 32117+ const std::string& key = iter->first; 32118+ const std::string& value = iter->second; 32119+ if (!key.empty()) { 32120+ // Delimit with "\r\n". 32121+ if (!value.empty()) 32122+ extra += "\r\n"; 32123+ extra += std::string(key) + ": " + std::string(value); 32124+ } 32125+ } 32126+ auto browser = GetBrowser(); 32127+ if (browser != nullptr) { 32128+ browser->GetMainFrame()->LoadHeaderUrl(CefString(url), CefString(extra)); 32129+ } 32130+ RequestVisitedHistory(); 32131+} 32132+ 32133+void NWebDelegate::LoadWithDataAndBaseUrl(const std::string& baseUrl, 32134+ const std::string& data, 32135+ const std::string& mimeType, 32136+ const std::string& encoding, 32137+ const std::string& historyUrl) { 32138+ LOG(INFO) << "NWebDelegate::LoadWithDataAndBaseUrl"; 32139+ if (!GetBrowser().get()) { 32140+ return; 32141+ } 32142+ GetBrowser()->GetHost()->LoadWithDataAndBaseUrl(baseUrl, data, mimeType, 32143+ encoding, historyUrl); 32144+ RequestVisitedHistory(); 32145+} 32146+ 32147+void NWebDelegate::LoadWithData(const std::string& data, 32148+ const std::string& mimeType, 32149+ const std::string& encoding) { 32150+ LOG(INFO) << "NWebDelegate::LoadWithData"; 32151+ if (!GetBrowser().get()) { 32152+ return; 32153+ } 32154+ GetBrowser()->GetHost()->LoadWithData(data, mimeType, encoding); 32155+ RequestVisitedHistory(); 32156+} 32157+ 32158+const CefRefPtr<CefBrowser> NWebDelegate::GetBrowser() const { 32159+ if (handler_delegate_) { 32160+ return handler_delegate_->GetBrowser(); 32161+ } 32162+ return nullptr; 32163+} 32164+ 32165+bool NWebDelegate::IsReady() { 32166+ return GetBrowser() != nullptr; 32167+} 32168+ 32169+void NWebDelegate::RequestVisitedHistory() { 32170+ if (!GetBrowser().get()) { 32171+ return; 32172+ } 32173+ if (!has_requested_visited_history) { 32174+ has_requested_visited_history = true; 32175+ if (handler_delegate_) { 32176+ std::vector<std::string> outUrls = handler_delegate_->GetVisitedHistory(); 32177+ std::vector<CefString> urls = std::vector<CefString>(); 32178+ for (auto url : outUrls) { 32179+ urls.push_back(url); 32180+ } 32181+ GetBrowser()->GetHost()->AddVisitedLinks(urls); 32182+ } 32183+ } 32184+} 32185+ 32186+int NWebDelegate::ContentHeight() { 32187+ if (render_handler_ != nullptr) { 32188+ return render_handler_->ContentHeight(); 32189+ } 32190+ return 0; 32191+} 32192+ 32193+void NWebDelegate::RegisterArkJSfunction( 32194+ const std::string& object_name, 32195+ const std::vector<std::string>& method_list) const { 32196+ LOG(INFO) << "RegisterArkJSfunction name : " << object_name.c_str(); 32197+ std::vector<CefString> method_vector; 32198+ for (std::string method : method_list) { 32199+ method_vector.push_back(method); 32200+ } 32201+ GetBrowser()->GetHost()->RegisterArkJSfunction(object_name, method_vector); 32202+} 32203+ 32204+void NWebDelegate::UnregisterArkJSfunction( 32205+ const std::string& object_name, 32206+ const std::vector<std::string>& method_list) const { 32207+ LOG(INFO) << "UnregisterArkJSfunction name : " << object_name.c_str(); 32208+ std::vector<CefString> method_vector; 32209+ for (std::string method : method_list) { 32210+ method_vector.push_back(method); 32211+ } 32212+ GetBrowser()->GetHost()->UnregisterArkJSfunction(object_name, method_vector); 32213+} 32214+ 32215+void NWebDelegate::RegisterNWebJavaScriptCallBack( 32216+ std::shared_ptr<NWebJavaScriptResultCallBack> callback) { 32217+ if (handler_delegate_ == nullptr) { 32218+ LOG(ERROR) << "fail to register NWEB client, NWEB handler is nullptr"; 32219+ return; 32220+ } 32221+ handler_delegate_->RegisterNWebJavaScriptCallBack(callback); 32222+} 32223+} // namespace OHOS::NWEB 32224\ No newline at end of file 32225diff --git a/ohos_nweb/src/cef_delegate/nweb_delegate.h b/ohos_nweb/src/cef_delegate/nweb_delegate.h 32226new file mode 100755 32227index 0000000000..935ca4ef7f 32228--- /dev/null 32229+++ b/ohos_nweb/src/cef_delegate/nweb_delegate.h 32230@@ -0,0 +1,109 @@ 32231+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 32232+// Use of this source code is governed by a BSD-style license that can be 32233+// found in the LICENSE file. 32234+ 32235+#ifndef NWEB_DELEGATE_H 32236+#define NWEB_DELEGATE_H 32237+ 32238+#include <condition_variable> 32239+#include <string> 32240+#include "cef/include/cef_command_line.h" 32241+#include "nweb_application.h" 32242+#include "nweb_delegate_interface.h" 32243+#include "nweb_event_handler.h" 32244+#include "nweb_handler_delegate.h" 32245+#include "nweb_inputmethod_client.h" 32246+#include "nweb_render_handler.h" 32247+ 32248+namespace OHOS::NWeb { 32249+class NWebDelegate : public NWebDelegateInterface, 32250+ public virtual CefRefCount { 32251+ public: 32252+ NWebDelegate(int argc, const char* argv[]); 32253+ ~NWebDelegate() = default; 32254+ bool Init(); 32255+ 32256+ bool IsReady() override; 32257+ void OnDestroy(bool is_close_all) override; 32258+ 32259+ void RegisterDownLoadListener( 32260+ std::shared_ptr<NWebDownloadCallback> downloadListener) override; 32261+ void RegisterNWebHandler(std::shared_ptr<NWebHandler> handler) override; 32262+ void RegisterRenderCb( 32263+ std::function<void(const char*)> render_update_cb) override; 32264+ 32265+ void SetInputMethodClient( 32266+ CefRefPtr<NWebInputMethodClient> client) override; 32267+ 32268+ void Resize(uint32_t width, uint32_t height) override; 32269+ void OnTouchPress(int32_t id, double x, double y) override; 32270+ void OnTouchRelease(int32_t id, double x, double y) override; 32271+ void OnTouchMove(int32_t id, double x, double y) override; 32272+ void OnTouchCancel() override; 32273+ 32274+ void Load(const std::string& url) override; 32275+ bool IsNavigatebackwardAllowed() const override; 32276+ bool IsNavigateForwardAllowed() const override; 32277+ bool CanNavigateBackOrForward(int num_steps) const override; 32278+ void NavigateBack() const override; 32279+ void NavigateForward() const override; 32280+ void Reload() const override; 32281+ void Zoom(float zoomFactor) const override; 32282+ void Stop() const override; 32283+ void ExecuteJavaScript(const std::string& code) const override; 32284+ void ExecuteJavaScript( 32285+ const std::string& code, 32286+ std::shared_ptr<NWebValueCallback<std::string>> callback) const override; 32287+ void PutBackgroundColor(int color) const override; 32288+ void OnPause() override; 32289+ void OnContinue() override; 32290+ std::shared_ptr<NWebPreference> GetPreference() const override; 32291+ std::string Title() override; 32292+ HitTestResult GetHitTestResult() const override; 32293+ int PageLoadProgress() override; 32294+ float Scale() override; 32295+ void Load(std::string& url, 32296+ std::map<std::string, std::string> additionalHttpHeaders) override; 32297+ void LoadWithDataAndBaseUrl(const std::string& baseUrl, 32298+ const std::string& data, 32299+ const std::string& mimeType, 32300+ const std::string& encoding, 32301+ const std::string& historyUrl) override; 32302+ void LoadWithData(const std::string& data, 32303+ const std::string& mimeType, 32304+ const std::string& encoding) override; 32305+ int ContentHeight() override; 32306+ void RegisterArkJSfunction( 32307+ const std::string& object_name, 32308+ const std::vector<std::string>& method_list) const override; 32309+ 32310+ void UnregisterArkJSfunction( 32311+ const std::string& object_name, 32312+ const std::vector<std::string>& method_list) const override; 32313+ 32314+ void RegisterNWebJavaScriptCallBack( 32315+ std::shared_ptr<NWebJavaScriptResultCallBack> callback) override; 32316+ 32317+ public: 32318+ int argc_; 32319+ const char** argv_; 32320+ 32321+ private: 32322+ void RunMessageLoop(); 32323+ void InitializeCef(std::string url); 32324+ const CefRefPtr<CefBrowser> GetBrowser() const; 32325+ void RequestVisitedHistory(); 32326+ 32327+ private: 32328+ bool has_requested_visited_history = false; 32329+ CefRefPtr<NWebApplication> nweb_app_ = nullptr; 32330+ CefRefPtr<NWebHandlerDelegate> handler_delegate_ = nullptr; 32331+ CefRefPtr<NWebRenderHandler> render_handler_ = nullptr; 32332+ std::shared_ptr<NWebEventHandler> event_handler_ = nullptr; 32333+ std::shared_ptr<NWebPreferenceDelegate> preference_delegate_ = nullptr; 32334+ 32335+ // Members only accessed on the main thread. 32336+ bool hidden_ = false; 32337+}; 32338+} // namespace OHOS::NWeb 32339+#endif 32340diff --git a/ohos_nweb/src/cef_delegate/nweb_event_handler.cc b/ohos_nweb/src/cef_delegate/nweb_event_handler.cc 32341new file mode 100644 32342index 0000000000..e737f46e20 32343--- /dev/null 32344+++ b/ohos_nweb/src/cef_delegate/nweb_event_handler.cc 32345@@ -0,0 +1,74 @@ 32346+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 32347+// Use of this source code is governed by a BSD-style license that can be 32348+// found in the LICENSE file. 32349+ 32350+#include "nweb_event_handler.h" 32351+ 32352+#include "cef/include/base/cef_logging.h" 32353+#include "cef/include/base/cef_macros.h" 32354+#include "cef/include/internal/cef_types.h" 32355+#include "cef/include/internal/cef_types_wrappers.h" 32356+ 32357+namespace OHOS::NWeb { 32358+// static 32359+std::shared_ptr<NWebEventHandler> NWebEventHandler::Create() { 32360+ auto event_handler = std::make_shared<NWebEventHandler>(); 32361+ if (event_handler == nullptr) { 32362+ LOG(ERROR) << "fail to create NWebEventHandler instance"; 32363+ return nullptr; 32364+ } 32365+ return event_handler; 32366+} 32367+ 32368+void NWebEventHandler::OnDestroy() { 32369+ browser_ = nullptr; 32370+} 32371+ 32372+void NWebEventHandler::SetBrowser(CefRefPtr<CefBrowser> browser) { 32373+ browser_ = browser; 32374+} 32375+ 32376+void NWebEventHandler::OnTouchPress(int32_t id, double x, double y) { 32377+ CefTouchEvent touch_pressed; 32378+ touch_pressed.type = CEF_TET_PRESSED; 32379+ touch_pressed.id = id; 32380+ touch_pressed.x = x; 32381+ touch_pressed.y = y; 32382+ touch_pressed.modifiers = EVENTFLAG_LEFT_MOUSE_BUTTON; 32383+ if (browser_ && browser_->GetHost()) { 32384+ browser_->GetHost()->SendTouchEvent(touch_pressed); 32385+ } 32386+} 32387+ 32388+void NWebEventHandler::OnTouchMove(int32_t id, double x, double y) { 32389+ CefTouchEvent touch_move; 32390+ touch_move.type = CEF_TET_MOVED; 32391+ touch_move.id = id; 32392+ touch_move.x = x; 32393+ touch_move.y = y; 32394+ touch_move.modifiers = EVENTFLAG_LEFT_MOUSE_BUTTON; 32395+ if (browser_ && browser_->GetHost()) { 32396+ browser_->GetHost()->SendTouchEvent(touch_move); 32397+ } 32398+} 32399+ 32400+void NWebEventHandler::OnTouchRelease(int32_t id, double x, double y) { 32401+ CefTouchEvent touch_end; 32402+ touch_end.type = CEF_TET_RELEASED; 32403+ touch_end.id = id; 32404+ touch_end.x = x; 32405+ touch_end.y = y; 32406+ touch_end.modifiers = EVENTFLAG_LEFT_MOUSE_BUTTON; 32407+ if (browser_ && browser_->GetHost()) { 32408+ browser_->GetHost()->SendTouchEvent(touch_end); 32409+ } 32410+} 32411+ 32412+void NWebEventHandler::OnTouchCancel() { 32413+ CefTouchEvent touch_cancelled; 32414+ touch_cancelled.type = CEF_TET_CANCELLED; 32415+ if (browser_ && browser_->GetHost()) { 32416+ browser_->GetHost()->SendTouchEvent(touch_cancelled); 32417+ } 32418+} 32419+} // namespace OHOS::NWeb 32420diff --git a/ohos_nweb/src/cef_delegate/nweb_event_handler.h b/ohos_nweb/src/cef_delegate/nweb_event_handler.h 32421new file mode 100644 32422index 0000000000..4cc8b0c0d9 32423--- /dev/null 32424+++ b/ohos_nweb/src/cef_delegate/nweb_event_handler.h 32425@@ -0,0 +1,32 @@ 32426+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 32427+// Use of this source code is governed by a BSD-style license that can be 32428+// found in the LICENSE file. 32429+ 32430+#ifndef NWEB_EVENT_HANDLER_H 32431+#define NWEB_EVENT_HANDLER_H 32432+ 32433+#include "cef/include/cef_client.h" 32434+ 32435+namespace OHOS::NWeb { 32436+class NWebEventHandler { 32437+ public: 32438+ static std::shared_ptr<NWebEventHandler> Create(); 32439+ 32440+ NWebEventHandler() = default; 32441+ ~NWebEventHandler() = default; 32442+ void OnDestroy(); 32443+ 32444+ void SetBrowser(CefRefPtr<CefBrowser> browser); 32445+ 32446+ void OnTouchPress(int32_t id, double x, double y); 32447+ void OnTouchMove(int32_t id, double x, double y); 32448+ void OnTouchRelease(int32_t id, double x, double y); 32449+ void OnTouchCancel(); 32450+ void OnKeyBack(); 32451+ 32452+ private: 32453+ CefRefPtr<CefBrowser> browser_ = nullptr; 32454+}; 32455+} // namespace OHOS::NWeb 32456+ 32457+#endif // NWEB_EVENT_HANDLER_H 32458diff --git a/ohos_nweb/src/cef_delegate/nweb_geolocation_callback.cc b/ohos_nweb/src/cef_delegate/nweb_geolocation_callback.cc 32459new file mode 100644 32460index 0000000000..893b92a9bb 32461--- /dev/null 32462+++ b/ohos_nweb/src/cef_delegate/nweb_geolocation_callback.cc 32463@@ -0,0 +1,26 @@ 32464+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 32465+// Use of this source code is governed by a BSD-style license that can be 32466+// found in the LICENSE file. 32467+ 32468+#include "ohos_nweb/src/cef_delegate/nweb_geolocation_callback.h" 32469+#include "base/logging.h" 32470+ 32471+namespace OHOS::NWeb { 32472+NWebGeolocationCallback::NWebGeolocationCallback(CefRefPtr<CefBrowser> browser) 32473+ : browser_(browser) {} 32474+ 32475+void NWebGeolocationCallback::GeolocationCallbackInvoke( 32476+ const std::string& origin, 32477+ bool allow, 32478+ bool retain) { 32479+ if (retain) { 32480+ if (allow) { 32481+ browser_->GetGeolocationPermissions()->Enabled(origin); 32482+ } else { 32483+ browser_->GetGeolocationPermissions()->Disabled(origin); 32484+ } 32485+ } 32486+ browser_->GetPermissionRequestDelegate()->NotifyGeolocationPermission(allow, 32487+ origin); 32488+} 32489+} // namespace OHOS::NWeb 32490\ No newline at end of file 32491diff --git a/ohos_nweb/src/cef_delegate/nweb_geolocation_callback.h b/ohos_nweb/src/cef_delegate/nweb_geolocation_callback.h 32492new file mode 100644 32493index 0000000000..7240ebdf2e 32494--- /dev/null 32495+++ b/ohos_nweb/src/cef_delegate/nweb_geolocation_callback.h 32496@@ -0,0 +1,26 @@ 32497+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 32498+// Use of this source code is governed by a BSD-style license that can be 32499+// found in the LICENSE file. 32500+ 32501+#ifndef NWEB_GEOLOCATION_CALLBACK_H 32502+#define NWEB_GEOLOCATION_CALLBACK_H 32503+ 32504+#include "cef/include/cef_browser.h" 32505+#include "ohos_nweb/include/nweb_geolocation_callback_interface.h" 32506+ 32507+namespace OHOS::NWeb { 32508+class NWebGeolocationCallback : public NWebGeolocationCallbackInterface { 32509+ public: 32510+ explicit NWebGeolocationCallback(CefRefPtr<CefBrowser> browser); 32511+ ~NWebGeolocationCallback() = default; 32512+ 32513+ void GeolocationCallbackInvoke(const std::string& origin, 32514+ bool allow, 32515+ bool retain) override; 32516+ 32517+ private: 32518+ CefRefPtr<CefBrowser> browser_ = nullptr; 32519+}; 32520+} // namespace OHOS::NWeb 32521+ 32522+#endif // NWEB_GEOLOCATION_CALLBACK_H 32523diff --git a/ohos_nweb/src/cef_delegate/nweb_handler_delegate.cc b/ohos_nweb/src/cef_delegate/nweb_handler_delegate.cc 32524new file mode 100755 32525index 0000000000..6c3bef39d1 32526--- /dev/null 32527+++ b/ohos_nweb/src/cef_delegate/nweb_handler_delegate.cc 32528@@ -0,0 +1,809 @@ 32529+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 32530+// Use of this source code is governed by a BSD-style license that can be 32531+// found in the LICENSE file. 32532+ 32533+#include "nweb_handler_delegate.h" 32534+ 32535+#include <thread> 32536+ 32537+#include "base/bind.h" 32538+#include "base/callback.h" 32539+#include "cef/include/cef_app.h" 32540+#include "cef/include/cef_parser.h" 32541+#include "cef/include/wrapper/cef_closure_task.h" 32542+#include "cef/include/wrapper/cef_helpers.h" 32543+#include "nweb_access_request_delegate.h" 32544+#include "nweb_geolocation_callback.h" 32545+#include "nweb_js_dialog_result_impl.h" 32546+#include "nweb_resource_handler.h" 32547+#include "nweb_url_resource_error_impl.h" 32548+#include "nweb_url_resource_request_impl.h" 32549+#include "nweb_url_resource_response.h" 32550+ 32551+namespace OHOS::NWeb { 32552+namespace { 32553+ImageColorType TransformColorType(cef_color_type_t color_type) { 32554+ switch (color_type) { 32555+ case CEF_COLOR_TYPE_RGBA_8888: 32556+ return ImageColorType::COLOR_TYPE_RGBA_8888; 32557+ case CEF_COLOR_TYPE_BGRA_8888: 32558+ return ImageColorType::COLOR_TYPE_BGRA_8888; 32559+ default: 32560+ return ImageColorType::COLOR_TYPE_UNKNOWN; 32561+ } 32562+} 32563+ 32564+ImageAlphaType TransformAlphaType(cef_alpha_type_t alpha_type) { 32565+ switch (alpha_type) { 32566+ case CEF_ALPHA_TYPE_OPAQUE: 32567+ return ImageAlphaType::ALPHA_TYPE_OPAQUE; 32568+ case CEF_ALPHA_TYPE_PREMULTIPLIED: 32569+ return ImageAlphaType::ALPHA_TYPE_PREMULTIPLIED; 32570+ case CEF_ALPHA_TYPE_POSTMULTIPLIED: 32571+ return ImageAlphaType::ALPHA_TYPE_POSTMULTIPLIED; 32572+ default: 32573+ return ImageAlphaType::ALPHA_TYPE_UNKNOWN; 32574+ } 32575+} 32576+ 32577+void ConvertMapToHeaderMap(const CefRequest::HeaderMap& headers, 32578+ std::map<std::string, std::string>& map) { 32579+ for (auto iter = headers.begin(); iter != headers.end(); ++iter) { 32580+ map.emplace(iter->first.ToString(), iter->second.ToString()); 32581+ } 32582+} 32583+ 32584+NWebConsoleLog::NWebConsoleLogLevel ConvertConsoleMessageLevel( 32585+ cef_log_severity_t message_level) { 32586+ switch (message_level) { 32587+ case LOGSEVERITY_DEBUG: 32588+ return NWebConsoleLog::NWebConsoleLogLevel::DEBUG; 32589+ case LOGSEVERITY_INFO: 32590+ return NWebConsoleLog::NWebConsoleLogLevel::INFO; 32591+ case LOGSEVERITY_WARNING: 32592+ return NWebConsoleLog::NWebConsoleLogLevel::WARNING; 32593+ case LOGSEVERITY_ERROR: 32594+ return NWebConsoleLog::NWebConsoleLogLevel::ERROR; 32595+ default: 32596+ return NWebConsoleLog::NWebConsoleLogLevel::UNKNOWN; 32597+ } 32598+} 32599+} // namespace 32600+ 32601+// static 32602+CefRefPtr<NWebHandlerDelegate> NWebHandlerDelegate::Create( 32603+ std::shared_ptr<NWebPreferenceDelegate> preference_delegate, 32604+ CefRefPtr<NWebRenderHandler> render_handler, 32605+ std::shared_ptr<NWebEventHandler> event_handler) { 32606+ CefRefPtr<NWebHandlerDelegate> handler_delegate = new NWebHandlerDelegate( 32607+ preference_delegate, render_handler, event_handler); 32608+ if (handler_delegate == nullptr) { 32609+ LOG(ERROR) << "fail to create NWebHandlerDelegate instance"; 32610+ return nullptr; 32611+ } 32612+ return handler_delegate; 32613+} 32614+ 32615+NWebHandlerDelegate::NWebHandlerDelegate( 32616+ std::shared_ptr<NWebPreferenceDelegate> preference_delegate, 32617+ CefRefPtr<NWebRenderHandler> render_handler, 32618+ std::shared_ptr<NWebEventHandler> event_handler) 32619+ : preference_delegate_(preference_delegate), 32620+ render_handler_(render_handler), 32621+ event_handler_(event_handler) {} 32622+ 32623+void NWebHandlerDelegate::OnDestroy() { 32624+ if (main_browser_) { 32625+ main_browser_->GetHost()->CloseBrowser(true); 32626+ main_browser_ = nullptr; 32627+ } 32628+ if (event_handler_) { 32629+ event_handler_->OnDestroy(); 32630+ } 32631+} 32632+ 32633+void NWebHandlerDelegate::RegisterDownLoadListener( 32634+ std::shared_ptr<NWebDownloadCallback> download_listener) { 32635+ download_listener_ = download_listener; 32636+} 32637+ 32638+void NWebHandlerDelegate::RegisterNWebHandler( 32639+ std::shared_ptr<NWebHandler> handler) { 32640+ LOG(INFO) << "RegisterNWebHandler"; 32641+ nweb_handler_ = handler; 32642+} 32643+ 32644+void NWebHandlerDelegate::RegisterNWebJavaScriptCallBack( 32645+ std::shared_ptr<NWebJavaScriptResultCallBack> callback) { 32646+ nweb_javascript_callback_ = callback; 32647+} 32648+ 32649+const CefRefPtr<CefBrowser> NWebHandlerDelegate::GetBrowser() { 32650+ return main_browser_; 32651+} 32652+ 32653+bool NWebHandlerDelegate::IsClosing() const { 32654+ return is_closing_; 32655+} 32656+ 32657+void NWebHandlerDelegate::CloseAllBrowsers(bool force_close) { 32658+ LOG(INFO) << "NWebHandlerDelegate::CloseAllBrowsers"; 32659+ if (!CefCurrentlyOn(TID_UI)) { 32660+ // Execute on the UI thread. 32661+ CefPostTask(TID_UI, base::Bind(&NWebHandlerDelegate::CloseAllBrowsers, this, 32662+ force_close)); 32663+ return; 32664+ } 32665+ 32666+ if (browser_list_.empty()) { 32667+ return; 32668+ } 32669+ 32670+ BrowserList::const_iterator it = browser_list_.begin(); 32671+ for (; it != browser_list_.end(); ++it) { 32672+ (*it)->GetHost()->CloseBrowser(force_close); 32673+ } 32674+} 32675+ 32676+/* CefClient methods begin */ 32677+CefRefPtr<CefDownloadHandler> NWebHandlerDelegate::GetDownloadHandler() { 32678+ return this; 32679+} 32680+ 32681+CefRefPtr<CefLifeSpanHandler> NWebHandlerDelegate::GetLifeSpanHandler() { 32682+ return this; 32683+} 32684+ 32685+CefRefPtr<CefLoadHandler> NWebHandlerDelegate::GetLoadHandler() { 32686+ return this; 32687+} 32688+ 32689+CefRefPtr<CefRenderHandler> NWebHandlerDelegate::GetRenderHandler() { 32690+ return render_handler_; 32691+} 32692+ 32693+CefRefPtr<CefRequestHandler> NWebHandlerDelegate::GetRequestHandler() { 32694+ return this; 32695+} 32696+ 32697+CefRefPtr<CefDisplayHandler> NWebHandlerDelegate::GetDisplayHandler() { 32698+ return this; 32699+} 32700+ 32701+CefRefPtr<CefFocusHandler> NWebHandlerDelegate::GetFocusHandler() { 32702+ return this; 32703+} 32704+ 32705+CefRefPtr<CefPermissionRequest> NWebHandlerDelegate::GetPermissionRequest() { 32706+ return this; 32707+} 32708+ 32709+CefRefPtr<CefJSDialogHandler> NWebHandlerDelegate::GetJSDialogHandler() { 32710+ return this; 32711+} 32712+ 32713+bool NWebHandlerDelegate::OnProcessMessageReceived( 32714+ CefRefPtr<CefBrowser> browser, 32715+ CefRefPtr<CefFrame> frame, 32716+ CefProcessId source_process, 32717+ CefRefPtr<CefProcessMessage> message) { 32718+ const std::string& messageName = message->GetName(); 32719+ 32720+ if (messageName == "router.push") { 32721+ CefRefPtr<CefListValue> pushMsgArgs = message->GetArgumentList(); 32722+ CefString url = pushMsgArgs->GetString(0); 32723+ nweb_handler_->OnRouterPush(url.ToString()); 32724+ return true; 32725+ } 32726+ 32727+ if (messageName == "web.postmessage") { 32728+ CefRefPtr<CefListValue> postMsgArgs = message->GetArgumentList(); 32729+ CefString postMsg = postMsgArgs->GetString(0); 32730+ nweb_handler_->OnMessage(postMsg.ToString()); 32731+ return true; 32732+ } 32733+ 32734+ return false; 32735+} 32736+/* CefClient methods end */ 32737+ 32738+/* CefLifeSpanHandler methods begin */ 32739+void NWebHandlerDelegate::OnAfterCreated(CefRefPtr<CefBrowser> browser) { 32740+ LOG(INFO) << "NWebHandlerDelegate::OnAfterCreated"; 32741+ CEF_REQUIRE_UI_THREAD(); 32742+ 32743+ if (!main_browser_) { 32744+ main_browser_ = browser; 32745+ event_handler_->SetBrowser(browser); 32746+ } else if (browser->IsPopup()) { 32747+ // Add to the list of existing browsers. 32748+ browser_list_.push_back(browser); 32749+ } 32750+ 32751+ if (preference_delegate_.get()) { 32752+ preference_delegate_->SetBrowser(main_browser_); 32753+ } else { 32754+ LOG(ERROR) << "Failed to set browser to settings delegate"; 32755+ } 32756+} 32757+ 32758+bool NWebHandlerDelegate::DoClose(CefRefPtr<CefBrowser> browser) { 32759+ LOG(INFO) << "NWebHandlerDelegate::DoClose"; 32760+ CEF_REQUIRE_UI_THREAD(); 32761+ 32762+ // Closing the main window requires special handling. See the DoClose() 32763+ // documentation in the CEF header for a detailed destription of this 32764+ // process. 32765+ if (browser_list_.size() == 1) { 32766+ // Set a flag to indicate that the window close should be allowed. 32767+ is_closing_ = true; 32768+ } 32769+ 32770+ // Allow the close. For windowed browsers this will result in the OS close 32771+ // event being sent. 32772+ return false; 32773+} 32774+ 32775+void NWebHandlerDelegate::OnBeforeClose(CefRefPtr<CefBrowser> browser) { 32776+ LOG(INFO) << "NWebHandlerDelegate::OnBeforeClose"; 32777+ CEF_REQUIRE_UI_THREAD(); 32778+ 32779+ // Remove from the list of existing browsers. 32780+ BrowserList::iterator bit = browser_list_.begin(); 32781+ for (; bit != browser_list_.end(); ++bit) { 32782+ if ((*bit)->IsSame(browser)) { 32783+ browser_list_.erase(bit); 32784+ break; 32785+ } 32786+ } 32787+} 32788+ 32789+bool NWebHandlerDelegate::OnBeforePopup( 32790+ CefRefPtr<CefBrowser> browser, 32791+ CefRefPtr<CefFrame> frame, 32792+ const CefString& target_url, 32793+ const CefString& target_frame_name, 32794+ CefLifeSpanHandler::WindowOpenDisposition target_disposition, 32795+ bool user_gesture, 32796+ const CefPopupFeatures& popup_features, 32797+ CefWindowInfo& window_info, 32798+ CefRefPtr<CefClient>& client, 32799+ CefBrowserSettings& settings, 32800+ CefRefPtr<CefDictionaryValue>& extra_info, 32801+ bool* no_javascript_access) { 32802+ LOG(INFO) << "NWebHandlerDelegate::OnBeforePopup"; 32803+ CEF_REQUIRE_UI_THREAD(); 32804+ 32805+ if (main_browser_) { 32806+ preference_delegate_->WebPreferencesChanged(); 32807+ main_browser_->GetMainFrame()->LoadURL(target_url); 32808+ } 32809+ 32810+ return true; 32811+} 32812+ 32813+/* CefLifeSpanHandler methods end */ 32814+ 32815+/* CefLoadHandler methods begin */ 32816+void NWebHandlerDelegate::OnLoadingStateChange(CefRefPtr<CefBrowser> browser, 32817+ bool is_loading, 32818+ bool can_go_back, 32819+ bool can_go_forward) {} 32820+ 32821+void NWebHandlerDelegate::OnLoadStart(CefRefPtr<CefBrowser> browser, 32822+ CefRefPtr<CefFrame> frame, 32823+ TransitionType transition_type) { 32824+ LOG(INFO) << "NWebHandlerDelegate::OnLoadStart"; 32825+ 32826+ if (nweb_handler_ != nullptr) { 32827+ nweb_handler_->OnPageLoadBegin(frame->GetURL().ToString()); 32828+ } 32829+} 32830+ 32831+void NWebHandlerDelegate::OnLoadEnd(CefRefPtr<CefBrowser> browser, 32832+ CefRefPtr<CefFrame> frame, 32833+ int http_status_code) { 32834+ LOG(INFO) << "NWebHandlerDelegate::OnLoadEnd"; 32835+ if (frame == nullptr || !frame->IsMain()) { 32836+ return; 32837+ } 32838+ LOG(INFO) << "NWebHandlerDelegate:: Mainframe OnLoadEnd"; 32839+ if (nweb_handler_ != nullptr) { 32840+ nweb_handler_->OnPageLoadEnd(http_status_code, frame->GetURL().ToString()); 32841+ } 32842+} 32843+ 32844+// Returns a data: URI with the specified contents. 32845+std::string GetDataURI(const std::string& data, const std::string& mime_type) { 32846+ return "data:" + mime_type + ";base64," + 32847+ CefURIEncode(CefBase64Encode(data.data(), data.size()), false) 32848+ .ToString(); 32849+} 32850+ 32851+void NWebHandlerDelegate::OnLoadError(CefRefPtr<CefBrowser> browser, 32852+ CefRefPtr<CefFrame> frame, 32853+ ErrorCode error_code, 32854+ const CefString& error_text, 32855+ const CefString& failed_url) { 32856+ LOG(INFO) << "NWebHandlerDelegate::OnLoadError"; 32857+ CEF_REQUIRE_UI_THREAD(); 32858+ 32859+ // Don't display an error for downloaded files. 32860+ if (error_code == ERR_ABORTED) 32861+ return; 32862+ 32863+ if (nweb_handler_ != nullptr) { 32864+ nweb_handler_->OnPageLoadError(error_code, error_text.ToString(), 32865+ failed_url.ToString()); 32866+ } else { 32867+ // Display a load error message using a data: URI. 32868+ std::stringstream ss; 32869+ ss << "<html><body bgcolor=\"white\">" 32870+ "<h2>Failed to load URL " 32871+ << std::string(failed_url) << " with error " << std::string(error_text) 32872+ << " (" << error_code << ").</h2></body></html>"; 32873+ 32874+ frame->LoadURL(GetDataURI(ss.str(), "text/html")); 32875+ } 32876+} 32877+ 32878+void NWebHandlerDelegate::OnLoadErrorWithRequest(CefRefPtr<CefRequest> request, 32879+ bool is_main_frame, 32880+ bool has_user_gesture, 32881+ int error_code, 32882+ const CefString& error_text) { 32883+ CefRequest::HeaderMap cef_request_headers; 32884+ request->GetHeaderMap(cef_request_headers); 32885+ std::map<std::string, std::string> request_headers; 32886+ ConvertMapToHeaderMap(cef_request_headers, request_headers); 32887+ std::shared_ptr<NWebUrlResourceRequest> web_request = 32888+ std::make_shared<NWebUrlResourceRequestImpl>( 32889+ request->GetMethod().ToString(), request_headers, 32890+ request->GetURL().ToString(), has_user_gesture, is_main_frame); 32891+ std::shared_ptr<NWebUrlResourceError> error = 32892+ std::make_shared<UrlResourceErrorImpl>(error_code, error_text.ToString()); 32893+ if (nweb_handler_ != nullptr) { 32894+ nweb_handler_->OnResourceLoadError(web_request, error); 32895+ } 32896+} 32897+ 32898+void NWebHandlerDelegate::OnHttpError(CefRefPtr<CefRequest> request, 32899+ bool is_main_frame, 32900+ bool has_user_gesture, 32901+ CefRefPtr<CefResponse> response) { 32902+ if (nweb_handler_ != nullptr) { 32903+ CefRequest::HeaderMap cef_request_headers; 32904+ request->GetHeaderMap(cef_request_headers); 32905+ std::map<std::string, std::string> request_headers; 32906+ ConvertMapToHeaderMap(cef_request_headers, request_headers); 32907+ std::shared_ptr<NWebUrlResourceRequest> web_request = 32908+ std::make_shared<NWebUrlResourceRequestImpl>( 32909+ request->GetMethod().ToString(), request_headers, 32910+ request->GetURL().ToString(), has_user_gesture, is_main_frame); 32911+ std::string data; 32912+ std::shared_ptr<NWebUrlResourceResponse> web_response = 32913+ std::make_shared<NWebUrlResourceResponse>( 32914+ response->GetMimeType(), response->GetCharset(), 32915+ response->GetStatus(), response->GetStatusText(), request_headers, 32916+ data); 32917+ nweb_handler_->OnHttpError(web_request, web_response); 32918+ } 32919+} 32920+ 32921+/* CefLoadHandler methods end */ 32922+ 32923+/* CefRequestHandler methods begin */ 32924+bool NWebHandlerDelegate::OnBeforeBrowse(CefRefPtr<CefBrowser> browser, 32925+ CefRefPtr<CefFrame> frame, 32926+ CefRefPtr<CefRequest> request, 32927+ bool user_gesture, 32928+ bool is_redirect) { 32929+ LOG(INFO) << "NWebHandlerDelegate::OnBeforeBrowse"; 32930+ (void)(browser); 32931+ (void)(request); 32932+ (void)(user_gesture); 32933+ (void)(is_redirect); 32934+ 32935+ if (nweb_handler_ != nullptr) { 32936+ return nweb_handler_->OnHandleInterceptUrlLoading( 32937+ frame->GetURL().ToString()); 32938+ } 32939+ return false; 32940+} 32941+ 32942+bool NWebHandlerDelegate::OnCertificateError( 32943+ CefRefPtr<CefBrowser> browser, 32944+ cef_errorcode_t cert_error, 32945+ const CefString& request_url, 32946+ CefRefPtr<CefSSLInfo> ssl_info, 32947+ CefRefPtr<CefRequestCallback> callback) { 32948+ LOG(INFO) << "NWebHandlerDelegate::OnCertificateError"; 32949+ return false; 32950+} 32951+ 32952+CefRefPtr<CefResourceRequestHandler> 32953+NWebHandlerDelegate::GetResourceRequestHandler( 32954+ CefRefPtr<CefBrowser> browser, 32955+ CefRefPtr<CefFrame> frame, 32956+ CefRefPtr<CefRequest> request, 32957+ bool is_navigation, 32958+ bool is_download, 32959+ const CefString& request_initiator, 32960+ bool& disable_default_handling) { 32961+ return this; 32962+} 32963+ 32964+/* CefRequestHandler methods end */ 32965+ 32966+/* CefDownloadHandler methods begin */ 32967+void NWebHandlerDelegate::OnBeforeDownload( 32968+ CefRefPtr<CefBrowser> browser, 32969+ CefRefPtr<CefDownloadItem> download_item, 32970+ const CefString& suggested_name, 32971+ CefRefPtr<CefBeforeDownloadCallback> callback) { 32972+ (void)suggested_name; 32973+ LOG(INFO) << "NWebHandlerDelegate::OnBeforeDownload"; 32974+ if (download_item->IsValid() == false) { 32975+ LOG(ERROR) << "NWebHandlerDelegate::OnBeforeDownload error, not invalid"; 32976+ return; 32977+ } 32978+ if (download_item->IsCanceled() == true) { 32979+ LOG(ERROR) 32980+ << "NWebHandlerDelegate::OnBeforeDownload error, download cancel"; 32981+ return; 32982+ } 32983+ callback->Continue("", false); 32984+ LOG(INFO) << "NWebHandlerDelegate::OnBeforeDownload continue..."; 32985+ if (download_listener_ != nullptr) { 32986+ download_listener_->OnDownloadStart( 32987+ download_item->GetURL().ToString(), 32988+ browser->GetHost()->DefaultUserAgent(), 32989+ download_item->GetContentDisposition().ToString(), 32990+ download_item->GetMimeType().ToString(), 32991+ download_item->GetTotalBytes()); 32992+ } 32993+} 32994+/* CefDownloadHandler methods end */ 32995+ 32996+/* CefResourceRequestHandler method begin */ 32997+CefResourceRequestHandler::ReturnValue 32998+NWebHandlerDelegate::OnBeforeResourceLoad( 32999+ CefRefPtr<CefBrowser> browser, 33000+ CefRefPtr<CefFrame> frame, 33001+ CefRefPtr<CefRequest> request, 33002+ CefRefPtr<CefRequestCallback> callback) { 33003+ if (nweb_handler_ != nullptr) { 33004+ nweb_handler_->OnResource(request->GetURL().ToString()); 33005+ } 33006+ return RV_CONTINUE; 33007+} 33008+ 33009+CefRefPtr<CefResourceHandler> NWebHandlerDelegate::GetResourceHandler( 33010+ CefRefPtr<CefBrowser> browser, 33011+ CefRefPtr<CefFrame> frame, 33012+ CefRefPtr<CefRequest> request) { 33013+ LOG(INFO) << "NWebHandlerDelegate::GetResourceHandler"; 33014+ if (!request) { 33015+ LOG(ERROR) << "NWebHandlerDelegate::GetResourceHandler request is null"; 33016+ return nullptr; 33017+ } 33018+ 33019+ CefRequest::HeaderMap cef_request_headers; 33020+ request->GetHeaderMap(cef_request_headers); 33021+ std::map<std::string, std::string> request_headers; 33022+ ConvertMapToHeaderMap(cef_request_headers, request_headers); 33023+ std::shared_ptr<NWebUrlResourceRequest> NWeb_request = 33024+ std::make_shared<NWebUrlResourceRequestImpl>( 33025+ request->GetMethod().ToString(), request_headers, 33026+ request->GetURL().ToString(), false, frame->IsMain()); 33027+ std::shared_ptr<NWebUrlResourceResponse> response; 33028+ if (nweb_handler_ != nullptr) { 33029+ response = nweb_handler_->OnHandleInterceptRequest(NWeb_request); 33030+ } 33031+ if (response) { 33032+ std::string str = ""; 33033+ return new NWebResourceHandler(response, str); 33034+ } else { 33035+ return nullptr; 33036+ } 33037+} 33038+/* CefResourceRequestHandler method end */ 33039+ 33040+/* CefDisplayHandler method begin */ 33041+void NWebHandlerDelegate::OnTitleChange(CefRefPtr<CefBrowser> browser, 33042+ const CefString& title) { 33043+ if (nweb_handler_ != nullptr) { 33044+ nweb_handler_->OnPageTitle(title.ToString()); 33045+ } 33046+ return; 33047+} 33048+ 33049+void NWebHandlerDelegate::OnLoadingProgressChange(CefRefPtr<CefBrowser> browser, 33050+ double progress) { 33051+ if (nweb_handler_ != nullptr) { 33052+ constexpr int MAX_LOADING_PROGRESS = 100; 33053+ int new_progress = static_cast<int>(progress * MAX_LOADING_PROGRESS); 33054+ nweb_handler_->OnLoadingProgress(new_progress); 33055+ } 33056+ return; 33057+} 33058+ 33059+void NWebHandlerDelegate::OnReceivedIcon(const void* data, 33060+ size_t width, 33061+ size_t height, 33062+ cef_color_type_t color_type, 33063+ cef_alpha_type_t alpha_type) { 33064+ if (!data) { 33065+ LOG(ERROR) << "onReceivedIcon get error"; 33066+ return; 33067+ } 33068+ if (nweb_handler_ != nullptr) { 33069+ nweb_handler_->OnPageIcon(data, width, height, 33070+ TransformColorType(color_type), 33071+ TransformAlphaType(alpha_type)); 33072+ } 33073+} 33074+ 33075+void NWebHandlerDelegate::OnReceivedTouchIconUrl(CefRefPtr<CefBrowser> browser, 33076+ const CefString& icon_url, 33077+ bool precomposed) { 33078+ if (nweb_handler_ != nullptr) { 33079+ nweb_handler_->OnDesktopIconUrl(icon_url.ToString(), precomposed); 33080+ } 33081+ return; 33082+} 33083+ 33084+bool NWebHandlerDelegate::OnConsoleMessage(CefRefPtr<CefBrowser> browser, 33085+ cef_log_severity_t level, 33086+ const CefString& message, 33087+ const CefString& source, 33088+ int line) { 33089+ if (nweb_handler_ != nullptr) { 33090+ NWebConsoleLog::NWebConsoleLogLevel message_level = 33091+ ConvertConsoleMessageLevel(level); 33092+ NWebConsoleLog console_message(line, message.ToString(), message_level, 33093+ source.ToString()); 33094+ return nweb_handler_->OnConsoleLog(console_message); 33095+ } 33096+ return false; 33097+} 33098+/* CefDisplayHandler method end */ 33099+ 33100+/* CefFocusHandler method begin */ 33101+bool NWebHandlerDelegate::OnSetFocus(CefRefPtr<CefBrowser> browser, 33102+ FocusSource source) { 33103+ if (nweb_handler_ != nullptr) { 33104+ nweb_handler_->OnFocus(); 33105+ } 33106+ return false; 33107+} 33108+/* CefFocusHandler method end */ 33109+ 33110+/* CefPermissionRequest method begin */ 33111+void NWebHandlerDelegate::OnGeolocationShow(const CefString& origin) { 33112+ if (nweb_handler_ != nullptr) { 33113+ NWebGeolocationCallback* callback = 33114+ new NWebGeolocationCallback(main_browser_); 33115+ nweb_handler_->OnGeolocationShow(origin, callback); 33116+ delete callback; 33117+ } 33118+ return; 33119+} 33120+ 33121+void NWebHandlerDelegate::OnGeolocationHide() { 33122+ if (nweb_handler_ != nullptr) { 33123+ nweb_handler_->OnGeolocationHide(); 33124+ } 33125+ return; 33126+} 33127+ 33128+void NWebHandlerDelegate::OnPermissionRequest( 33129+ CefRefPtr<CefAccessRequest> request) { 33130+ if (nweb_handler_ != nullptr) { 33131+ std::shared_ptr<NWebAccessRequest> access_request = 33132+ std::make_shared<NWebAccessRequestDelegate>(request); 33133+ nweb_handler_->OnPermissionRequest(access_request); 33134+ } 33135+ return; 33136+} 33137+ 33138+void NWebHandlerDelegate::OnPermissionRequestCanceled( 33139+ CefRefPtr<CefAccessRequest> request) { 33140+ if (nweb_handler_ != nullptr) { 33141+ std::shared_ptr<NWebAccessRequest> access_request = 33142+ std::make_shared<NWebAccessRequestDelegate>(request); 33143+ nweb_handler_->OnPermissionRequestCanceled(access_request); 33144+ } 33145+ return; 33146+} 33147+/* CefPermissionRequest method begin */ 33148+ 33149+/* CefJSDialogHandler method begin */ 33150+bool NWebHandlerDelegate::OnJSDialog(CefRefPtr<CefBrowser> browser, 33151+ const CefString& origin_url, 33152+ JSDialogType dialog_type, 33153+ const CefString& message_text, 33154+ const CefString& default_prompt_text, 33155+ CefRefPtr<CefJSDialogCallback> callback, 33156+ bool& suppress_message) { 33157+ if (nweb_handler_ == nullptr) { 33158+ return false; 33159+ } 33160+ suppress_message = false; 33161+ std::shared_ptr<NWebJSDialogResult> js_result = 33162+ std::make_shared<NWebJSDialogResultImpl>(callback); 33163+ switch (dialog_type) { 33164+ case JSDIALOGTYPE_ALERT: 33165+ return nweb_handler_->OnAlertDialogByJS(origin_url, message_text, 33166+ js_result); 33167+ case JSDIALOGTYPE_CONFIRM: 33168+ return nweb_handler_->OnConfirmDialogByJS(origin_url, message_text, 33169+ js_result); 33170+ case JSDIALOGTYPE_PROMPT: 33171+ return nweb_handler_->OnPromptDialogByJs(origin_url, message_text, 33172+ default_prompt_text, js_result); 33173+ default: 33174+ break; 33175+ } 33176+ return false; 33177+}; 33178+ 33179+bool NWebHandlerDelegate::OnBeforeUnloadDialog( 33180+ CefRefPtr<CefBrowser> browser, 33181+ const CefString& message_text, 33182+ bool is_reload, 33183+ CefRefPtr<CefJSDialogCallback> callback) { 33184+ if (nweb_handler_ == nullptr) { 33185+ return false; 33186+ } 33187+ std::shared_ptr<NWebJSDialogResult> js_result = 33188+ std::make_shared<NWebJSDialogResultImpl>(callback); 33189+ return nweb_handler_->OnBeforeUnloadByJS(std::string(), message_text, 33190+ js_result); 33191+} 33192+ 33193+/* CefJSDialogHandler method end */ 33194+ 33195+const std::vector<std::string> NWebHandlerDelegate::GetVisitedHistory() { 33196+ if (nweb_handler_ != nullptr) { 33197+ return nweb_handler_->VisitedUrlHistory(); 33198+ } 33199+ return std::vector<std::string>(); 33200+} 33201+ 33202+void AddNWebValueCef(std::vector<std::shared_ptr<NWebValue>>& vector, 33203+ NWebValue::Type type, 33204+ CefRefPtr<CefValue> argument) { 33205+ std::shared_ptr<NWebValue> value = std::make_shared<NWebValue>(type); 33206+ switch (type) { 33207+ case NWebValue::Type::INTEGER: 33208+ value->SetInt(argument->GetInt()); 33209+ vector.push_back(value); 33210+ break; 33211+ case NWebValue::Type::DOUBLE: { 33212+ value->SetDouble(argument->GetDouble()); 33213+ vector.push_back(value); 33214+ break; 33215+ } 33216+ case NWebValue::Type::BOOLEAN: 33217+ value->SetBoolean(argument->GetBool()); 33218+ vector.push_back(value); 33219+ break; 33220+ case NWebValue::Type::STRING: 33221+ value->SetString(argument->GetString().ToString()); 33222+ vector.push_back(value); 33223+ break; 33224+ default: 33225+ LOG(INFO) << "AddNWebValueCef: not support value"; 33226+ break; 33227+ } 33228+} 33229+ 33230+std::vector<std::shared_ptr<NWebValue>> ParseCefValueTONWebValue( 33231+ CefRefPtr<CefListValue> args, 33232+ int size) { 33233+ std::vector<std::shared_ptr<NWebValue>> value_vector; 33234+ for (int i = 0; i < size; i++) { 33235+ CefRefPtr<CefValue> argument = args->GetValue(i); 33236+ switch (argument->GetType()) { 33237+ case CefValueType::VTYPE_INT: 33238+ AddNWebValueCef(value_vector, NWebValue::Type::INTEGER, argument); 33239+ break; 33240+ case CefValueType::VTYPE_DOUBLE: { 33241+ AddNWebValueCef(value_vector, NWebValue::Type::DOUBLE, argument); 33242+ break; 33243+ } 33244+ case CefValueType::VTYPE_BOOL: 33245+ AddNWebValueCef(value_vector, NWebValue::Type::BOOLEAN, argument); 33246+ break; 33247+ case CefValueType::VTYPE_STRING: 33248+ AddNWebValueCef(value_vector, NWebValue::Type::STRING, argument); 33249+ break; 33250+ case CefValueType::VTYPE_INVALID: 33251+ break; 33252+ default: 33253+ LOG(INFO) << "ParseCefValueTONWebValue: not support value"; 33254+ break; 33255+ } 33256+ } 33257+ return value_vector; 33258+} 33259+ 33260+CefValueType TranslateCefType(NWebValue::Type type) { 33261+ switch (type) { 33262+ case NWebValue::Type::INTEGER: 33263+ return CefValueType::VTYPE_INT; 33264+ break; 33265+ case NWebValue::Type::DOUBLE: { 33266+ return CefValueType::VTYPE_DOUBLE; 33267+ break; 33268+ } 33269+ case NWebValue::Type::BOOLEAN: 33270+ return CefValueType::VTYPE_BOOL; 33271+ break; 33272+ case NWebValue::Type::STRING: 33273+ return CefValueType::VTYPE_STRING; 33274+ break; 33275+ case NWebValue::Type::DICTIONARY: 33276+ return CefValueType::VTYPE_DICTIONARY; 33277+ break; 33278+ case NWebValue::Type::LIST: 33279+ return CefValueType::VTYPE_LIST; 33280+ break; 33281+ case NWebValue::Type::NONE: 33282+ return CefValueType::VTYPE_INVALID; 33283+ break; 33284+ case NWebValue::Type::BINARY: 33285+ return CefValueType::VTYPE_BINARY; 33286+ break; 33287+ } 33288+} 33289+ 33290+CefRefPtr<CefListValue> ParseNWebValueToValue(std::shared_ptr<NWebValue> value, 33291+ CefRefPtr<CefListValue> result) { 33292+ NWebValue::Type type = value->GetType(); 33293+ switch (type) { 33294+ case NWebValue::Type::INTEGER: 33295+ result->SetInt(0, value->GetInt()); 33296+ break; 33297+ case NWebValue::Type::DOUBLE: { 33298+ result->SetDouble(0, value->GetDouble()); 33299+ break; 33300+ } 33301+ case NWebValue::Type::BOOLEAN: 33302+ result->SetBool(0, value->GetBoolean()); 33303+ break; 33304+ case NWebValue::Type::STRING: 33305+ result->SetString(0, value->GetString()); 33306+ break; 33307+ case NWebValue::Type::NONE: 33308+ break; 33309+ default: 33310+ LOG(INFO) << "ParseNWebValueToValue: not support value type"; 33311+ break; 33312+ } 33313+ return result; 33314+} 33315+ 33316+int NWebHandlerDelegate::NotifyJavaScriptResult( 33317+ CefRefPtr<CefListValue> args, 33318+ const CefString& method, 33319+ const CefString& object_name, 33320+ CefRefPtr<CefListValue> result) { 33321+ if (args.get() == nullptr || result.get() == nullptr) { 33322+ return 0; 33323+ } 33324+ std::vector<std::shared_ptr<NWebValue>> value_vector = 33325+ ParseCefValueTONWebValue(args, args->GetSize()); 33326+ if (!nweb_javascript_callback_) { 33327+ return 1; 33328+ } 33329+ 33330+ std::shared_ptr<NWebValue> ark_result = 33331+ nweb_javascript_callback_->GetJavaScriptResult(value_vector, method, 33332+ object_name); 33333+ 33334+ ParseNWebValueToValue(ark_result, result); 33335+ return ark_result->error_; 33336+} 33337+} // namespace OHOS::NWeb 33338diff --git a/ohos_nweb/src/cef_delegate/nweb_handler_delegate.h b/ohos_nweb/src/cef_delegate/nweb_handler_delegate.h 33339new file mode 100755 33340index 0000000000..2d92d17575 33341--- /dev/null 33342+++ b/ohos_nweb/src/cef_delegate/nweb_handler_delegate.h 33343@@ -0,0 +1,251 @@ 33344+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 33345+// Use of this source code is governed by a BSD-style license that can be 33346+// found in the LICENSE file. 33347+ 33348+#ifndef NWEB_HANDLER_DELEGATE_H 33349+#define NWEB_HANDLER_DELEGATE_H 33350+ 33351+#include "cef/include/base/cef_lock.h" 33352+#include "cef/include/cef_client.h" 33353+#include "cef/include/cef_jsdialog_handler.h" 33354+#include "cef/include/cef_permission_request.h" 33355+#include "nweb_event_handler.h" 33356+#include "nweb_handler.h" 33357+#include "nweb_preference_delegate.h" 33358+#include "nweb_render_handler.h" 33359+ 33360+#include <condition_variable> 33361+#include <functional> 33362+#include <list> 33363+#include <mutex> 33364+#include <string> 33365+#include "nweb_download_callback.h" 33366+#include "nweb_javascript_result_callback.h" 33367+#include "nweb_value.h" 33368+ 33369+namespace OHOS::NWeb { 33370+class NWebHandler; 33371+ 33372+class NWebHandlerDelegate : public CefClient, 33373+ public CefLifeSpanHandler, 33374+ public CefLoadHandler, 33375+ public CefRequestHandler, 33376+ public CefResourceRequestHandler, 33377+ public CefDisplayHandler, 33378+ public CefDownloadHandler, 33379+ public CefFocusHandler, 33380+ public CefPermissionRequest, 33381+ public CefJSDialogHandler { 33382+ public: 33383+ static CefRefPtr<NWebHandlerDelegate> Create( 33384+ std::shared_ptr<NWebPreferenceDelegate> preference_delegate, 33385+ CefRefPtr<NWebRenderHandler> render_handler, 33386+ std::shared_ptr<NWebEventHandler> event_handler); 33387+ 33388+ NWebHandlerDelegate( 33389+ std::shared_ptr<NWebPreferenceDelegate> preference_delegate, 33390+ CefRefPtr<NWebRenderHandler> render_handler, 33391+ std::shared_ptr<NWebEventHandler> event_handler); 33392+ ~NWebHandlerDelegate() = default; 33393+ 33394+ void OnDestroy(); 33395+ 33396+ void RegisterDownLoadListener( 33397+ std::shared_ptr<NWebDownloadCallback> download_listener); 33398+ void RegisterNWebHandler(std::shared_ptr<NWebHandler> handler); 33399+ void RegisterNWebJavaScriptCallBack( 33400+ std::shared_ptr<NWebJavaScriptResultCallBack> callback); 33401+ 33402+ // Request that all existing browser windows close. 33403+ void CloseAllBrowsers(bool force_close); 33404+ bool IsClosing() const; 33405+ const CefRefPtr<CefBrowser> GetBrowser(); 33406+ 33407+ /* CefClient methods begin */ 33408+ CefRefPtr<CefDownloadHandler> GetDownloadHandler() override; 33409+ CefRefPtr<CefLifeSpanHandler> GetLifeSpanHandler() override; 33410+ CefRefPtr<CefLoadHandler> GetLoadHandler() override; 33411+ CefRefPtr<CefRenderHandler> GetRenderHandler() override; 33412+ CefRefPtr<CefRequestHandler> GetRequestHandler() override; 33413+ CefRefPtr<CefDisplayHandler> GetDisplayHandler() override; 33414+ CefRefPtr<CefFocusHandler> GetFocusHandler() override; 33415+ CefRefPtr<CefPermissionRequest> GetPermissionRequest() override; 33416+ CefRefPtr<CefJSDialogHandler> GetJSDialogHandler() override; 33417+ virtual bool OnProcessMessageReceived( 33418+ CefRefPtr<CefBrowser> browser, 33419+ CefRefPtr<CefFrame> frame, 33420+ CefProcessId source_process, 33421+ CefRefPtr<CefProcessMessage> message) override; 33422+ int NotifyJavaScriptResult(CefRefPtr<CefListValue> args, 33423+ const CefString& method, 33424+ const CefString& object_name, 33425+ CefRefPtr<CefListValue> result) override; 33426+ /* CefClient methods end */ 33427+ 33428+ /* CefLifeSpanHandler methods begin */ 33429+ void OnAfterCreated(CefRefPtr<CefBrowser> browser) override; 33430+ bool DoClose(CefRefPtr<CefBrowser> browser) override; 33431+ void OnBeforeClose(CefRefPtr<CefBrowser> browser) override; 33432+ bool OnBeforePopup( 33433+ CefRefPtr<CefBrowser> browser, 33434+ CefRefPtr<CefFrame> frame, 33435+ const CefString& target_url, 33436+ const CefString& target_frame_name, 33437+ CefLifeSpanHandler::WindowOpenDisposition target_disposition, 33438+ bool user_gesture, 33439+ const CefPopupFeatures& popup_features, 33440+ CefWindowInfo& window_info, 33441+ CefRefPtr<CefClient>& client, 33442+ CefBrowserSettings& settings, 33443+ CefRefPtr<CefDictionaryValue>& extra_info, 33444+ bool* no_javascript_access) override; 33445+ /* CefLifeSpanHandler methods end */ 33446+ 33447+ /* CefLoadHandler methods begin */ 33448+ void OnLoadingStateChange(CefRefPtr<CefBrowser> browser, 33449+ bool is_loading, 33450+ bool can_go_back, 33451+ bool can_go_forward) override; 33452+ 33453+ void OnLoadStart(CefRefPtr<CefBrowser> browser, 33454+ CefRefPtr<CefFrame> frame, 33455+ TransitionType transition_type) override; 33456+ 33457+ void OnLoadEnd(CefRefPtr<CefBrowser> browser, 33458+ CefRefPtr<CefFrame> frame, 33459+ int http_status_code) override; 33460+ 33461+ void OnLoadError(CefRefPtr<CefBrowser> browser, 33462+ CefRefPtr<CefFrame> frame, 33463+ ErrorCode error_code, 33464+ const CefString& error_text, 33465+ const CefString& failed_url) override; 33466+ 33467+ void OnLoadErrorWithRequest(CefRefPtr<CefRequest> request, 33468+ bool is_main_frame, 33469+ bool has_user_gesture, 33470+ int error_code, 33471+ const CefString& error_text) override; 33472+ 33473+ void OnHttpError(CefRefPtr<CefRequest> request, 33474+ bool is_main_frame, 33475+ bool has_user_gesture, 33476+ CefRefPtr<CefResponse> response) override; 33477+ /* CefLoadHandler methods end */ 33478+ 33479+ /* CefRequestHandler methods begin */ 33480+ bool OnBeforeBrowse(CefRefPtr<CefBrowser> browser, 33481+ CefRefPtr<CefFrame> frame, 33482+ CefRefPtr<CefRequest> request, 33483+ bool user_gesture, 33484+ bool is_redirect) override; 33485+ bool OnCertificateError(CefRefPtr<CefBrowser> browser, 33486+ cef_errorcode_t cert_error, 33487+ const CefString& request_url, 33488+ CefRefPtr<CefSSLInfo> ssl_info, 33489+ CefRefPtr<CefRequestCallback> callback) override; 33490+ CefRefPtr<CefResourceRequestHandler> GetResourceRequestHandler( 33491+ CefRefPtr<CefBrowser> browser, 33492+ CefRefPtr<CefFrame> frame, 33493+ CefRefPtr<CefRequest> request, 33494+ bool is_navigation, 33495+ bool is_download, 33496+ const CefString& request_initiator, 33497+ bool& disable_default_handling) override; 33498+ /* CefRequestHandler methods end */ 33499+ 33500+ /* CefDownloadHandler methods begin */ 33501+ void OnBeforeDownload(CefRefPtr<CefBrowser> browser, 33502+ CefRefPtr<CefDownloadItem> download_item, 33503+ const CefString& suggested_name, 33504+ CefRefPtr<CefBeforeDownloadCallback> callback) override; 33505+ /* CefDownloadHandler methods end */ 33506+ 33507+ /* CefResourceRequestHandler method begin */ 33508+ ReturnValue OnBeforeResourceLoad( 33509+ CefRefPtr<CefBrowser> browser, 33510+ CefRefPtr<CefFrame> frame, 33511+ CefRefPtr<CefRequest> request, 33512+ CefRefPtr<CefRequestCallback> callback) override; 33513+ 33514+ CefRefPtr<CefResourceHandler> GetResourceHandler( 33515+ CefRefPtr<CefBrowser> browser, 33516+ CefRefPtr<CefFrame> frame, 33517+ CefRefPtr<CefRequest> request) override; 33518+ /* CefResourceRequestHandler method end */ 33519+ 33520+ /* CefDisplayHandler method begin */ 33521+ void OnTitleChange(CefRefPtr<CefBrowser> browser, 33522+ const CefString& title) override; 33523+ void OnLoadingProgressChange(CefRefPtr<CefBrowser> browser, 33524+ double progress) override; 33525+ void OnReceivedIcon(const void* data, 33526+ size_t width, 33527+ size_t height, 33528+ cef_color_type_t color_type, 33529+ cef_alpha_type_t alpha_type) override; 33530+ void OnReceivedTouchIconUrl(CefRefPtr<CefBrowser> browser, 33531+ const CefString& icon_url, 33532+ bool precomposed) override; 33533+ bool OnConsoleMessage(CefRefPtr<CefBrowser> browser, 33534+ cef_log_severity_t level, 33535+ const CefString& message, 33536+ const CefString& source, 33537+ int line) override; 33538+ /* CefDisplayHandler method end */ 33539+ 33540+ /* CefFocusHandler method begin */ 33541+ bool OnSetFocus(CefRefPtr<CefBrowser> browser, FocusSource source) override; 33542+ /* CefFocusHandler method end */ 33543+ 33544+ /* CefPermissionRequest method begin */ 33545+ void OnGeolocationShow(const CefString& origin) override; 33546+ 33547+ void OnGeolocationHide() override; 33548+ 33549+ void OnPermissionRequest(CefRefPtr<CefAccessRequest> request) override; 33550+ void OnPermissionRequestCanceled( 33551+ CefRefPtr<CefAccessRequest> request) override; 33552+ /* CefPermissionRequest method end */ 33553+ 33554+ /* CefJSDialogHandler method begin */ 33555+ bool OnJSDialog(CefRefPtr<CefBrowser> browser, 33556+ const CefString& origin_url, 33557+ JSDialogType dialog_type, 33558+ const CefString& message_text, 33559+ const CefString& default_prompt_text, 33560+ CefRefPtr<CefJSDialogCallback> callback, 33561+ bool& suppress_message) override; 33562+ 33563+ bool OnBeforeUnloadDialog(CefRefPtr<CefBrowser> browser, 33564+ const CefString& message_text, 33565+ bool is_reload, 33566+ CefRefPtr<CefJSDialogCallback> callback) override; 33567+ /* CefJSDialogHandler method end */ 33568+ 33569+ const std::vector<std::string> GetVisitedHistory(); 33570+ 33571+ private: 33572+ // List of existing browser windows. Only accessed on the CEF UI thread. 33573+ typedef std::list<CefRefPtr<CefBrowser>> BrowserList; 33574+ BrowserList browser_list_; 33575+ 33576+ CefRefPtr<CefBrowser> main_browser_ = nullptr; 33577+ bool is_closing_ = false; 33578+ 33579+ std::shared_ptr<NWebPreferenceDelegate> preference_delegate_ = nullptr; 33580+ CefRefPtr<NWebRenderHandler> render_handler_ = nullptr; 33581+ 33582+ std::shared_ptr<NWebEventHandler> event_handler_ = nullptr; 33583+ 33584+ // Include the default reference counting implementation. 33585+ IMPLEMENT_REFCOUNTING(NWebHandlerDelegate); 33586+ 33587+ std::shared_ptr<NWebDownloadCallback> download_listener_ = nullptr; 33588+ std::shared_ptr<NWebHandler> nweb_handler_ = nullptr; 33589+ std::shared_ptr<NWebJavaScriptResultCallBack> nweb_javascript_callback_ = 33590+ nullptr; 33591+}; 33592+} // namespace OHOS::NWeb 33593+ 33594+#endif 33595diff --git a/ohos_nweb/src/cef_delegate/nweb_inputmethod_client.h b/ohos_nweb/src/cef_delegate/nweb_inputmethod_client.h 33596new file mode 100644 33597index 0000000000..73cebd5e2b 33598--- /dev/null 33599+++ b/ohos_nweb/src/cef_delegate/nweb_inputmethod_client.h 33600@@ -0,0 +1,24 @@ 33601+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 33602+// Use of this source code is governed by a BSD-style license that can be 33603+// found in the LICENSE file. 33604+ 33605+#ifndef OHOS_NWEB_SRC_CEF_DELEGATE_NWEB_INPUTMETHOD_CLIENT_H_ 33606+#define OHOS_NWEB_SRC_CEF_DELEGATE_NWEB_INPUTMETHOD_CLIENT_H_ 33607+ 33608+#include "include/cef_base.h" 33609+#include "include/cef_browser.h" 33610+ 33611+namespace OHOS::NWeb { 33612+class NWebInputMethodClient: public virtual CefBaseRefCounted { 33613+ public: 33614+ virtual ~NWebInputMethodClient() = default; 33615+ virtual void Attach(CefRefPtr<CefBrowser> browser) = 0; 33616+ virtual void ShowTextInput() = 0; 33617+ virtual void HideTextInput() = 0; 33618+ virtual void OnTextSelectionChanged(CefRefPtr<CefBrowser> browser, 33619+ const CefString& selected_text, 33620+ const CefRange& selected_range) = 0; 33621+}; 33622+} 33623+ 33624+#endif // OHOS_NWEB_SRC_CEF_DELEGATE_NWEB_INPUTMETHOD_CLIENT_H_ 33625\ No newline at end of file 33626diff --git a/ohos_nweb/src/cef_delegate/nweb_js_dialog_result_impl.cc b/ohos_nweb/src/cef_delegate/nweb_js_dialog_result_impl.cc 33627new file mode 100644 33628index 0000000000..23287ae9ac 33629--- /dev/null 33630+++ b/ohos_nweb/src/cef_delegate/nweb_js_dialog_result_impl.cc 33631@@ -0,0 +1,31 @@ 33632+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 33633+// Use of this source code is governed by a BSD-style license that can be 33634+// found in the LICENSE file. 33635+ 33636+#include "nweb_js_dialog_result_impl.h" 33637+ 33638+using namespace OHOS::NWeb; 33639+ 33640+NWebJSDialogResultImpl::NWebJSDialogResultImpl(CefRefPtr<CefJSDialogCallback> callback) 33641+ : callback_(callback), has_put_(false) {} 33642+ 33643+void NWebJSDialogResultImpl::Confirm() { 33644+ if (callback_ != nullptr && !has_put_) { 33645+ callback_->Continue(true, CefString(std::string())); 33646+ has_put_ = true; 33647+ } 33648+} 33649+ 33650+void NWebJSDialogResultImpl::Confirm(const std::string &message) { 33651+ if (callback_ != nullptr && !has_put_) { 33652+ callback_->Continue(true, CefString(message)); 33653+ has_put_ = true; 33654+ } 33655+} 33656+ 33657+void NWebJSDialogResultImpl::Cancel() { 33658+ if (callback_ != nullptr && !has_put_) { 33659+ callback_->Continue(false, CefString(std::string())); 33660+ has_put_ = true; 33661+ } 33662+} 33663\ No newline at end of file 33664diff --git a/ohos_nweb/src/cef_delegate/nweb_js_dialog_result_impl.h b/ohos_nweb/src/cef_delegate/nweb_js_dialog_result_impl.h 33665new file mode 100644 33666index 0000000000..0ad0d03214 33667--- /dev/null 33668+++ b/ohos_nweb/src/cef_delegate/nweb_js_dialog_result_impl.h 33669@@ -0,0 +1,26 @@ 33670+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 33671+// Use of this source code is governed by a BSD-style license that can be 33672+// found in the LICENSE file. 33673+ 33674+#ifndef NWEB_JS_DIALOG_RESULT_IMPL_H 33675+#define NWEB_JS_DIALOG_RESULT_IMPL_H 33676+ 33677+#include "nweb_js_dialog_result.h" 33678+#include "cef/include/cef_jsdialog_handler.h" 33679+ 33680+namespace OHOS::NWeb { 33681+class NWebJSDialogResultImpl : public NWebJSDialogResult { 33682+ public: 33683+ NWebJSDialogResultImpl() = default; 33684+ explicit NWebJSDialogResultImpl(CefRefPtr<CefJSDialogCallback> callback); 33685+ ~NWebJSDialogResultImpl() = default; 33686+ void Confirm() override; 33687+ void Confirm(const std::string &message) override; 33688+ void Cancel() override; 33689+ private: 33690+ CefRefPtr<CefJSDialogCallback> callback_; 33691+ bool has_put_ = false; 33692+}; 33693+} 33694+ 33695+#endif 33696\ No newline at end of file 33697diff --git a/ohos_nweb/src/cef_delegate/nweb_preference_delegate.cc b/ohos_nweb/src/cef_delegate/nweb_preference_delegate.cc 33698new file mode 100644 33699index 0000000000..a97e0c4952 33700--- /dev/null 33701+++ b/ohos_nweb/src/cef_delegate/nweb_preference_delegate.cc 33702@@ -0,0 +1,392 @@ 33703+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 33704+// Use of this source code is governed by a BSD-style license that can be 33705+// found in the LICENSE file. 33706+ 33707+#include "ohos_nweb/src/cef_delegate/nweb_preference_delegate.h" 33708+#include "base/logging.h" 33709+#include "cef/include/internal/cef_string.h" 33710+#include "cef/include/internal/cef_string_types.h" 33711+#include "cef/include/internal/cef_string_wrappers.h" 33712+#include "cef/include/internal/cef_types.h" 33713+#include "cef/include/internal/cef_types_wrappers.h" 33714+#include "cef/libcef/browser/net_service/net_helpers.h" 33715+ 33716+#include "base/feature_list.h" 33717+ 33718+namespace OHOS::NWeb { 33719+NWebPreferenceDelegate::NWebPreferenceDelegate() {} 33720+ 33721+NWebPreferenceDelegate::~NWebPreferenceDelegate() {} 33722+ 33723+void NWebPreferenceDelegate::OnDestroy() { 33724+ browser_ = nullptr; 33725+} 33726+ 33727+void NWebPreferenceDelegate::SetBrowser(CefRefPtr<CefBrowser> browser) { 33728+ this->browser_ = browser; 33729+} 33730+ 33731+void NWebPreferenceDelegate::WebPreferencesChanged() { 33732+ if (!browser_) { 33733+ LOG(ERROR) << "update web preferences failed, browser is null"; 33734+ return; 33735+ } 33736+ 33737+ CefBrowserSettings browser_settings; 33738+ ComputeBrowserSettings(browser_settings); 33739+ browser_->GetHost()->SetWebPreferences(browser_settings); 33740+} 33741+ 33742+void NWebPreferenceDelegate::ComputeBrowserSettings( 33743+ CefBrowserSettings& browser_settings) { 33744+ CefString str = CefString(StandardFontFamilyName()); 33745+ cef_string_set(str.c_str(), str.length(), 33746+ &(browser_settings.standard_font_family), true); 33747+ 33748+ str = CefString(FixedFontFamilyName()); 33749+ cef_string_set(str.c_str(), str.length(), 33750+ &(browser_settings.fixed_font_family), true); 33751+ 33752+ str = CefString(SerifFontFamilyName()); 33753+ cef_string_set(str.c_str(), str.length(), 33754+ &(browser_settings.serif_font_family), true); 33755+ 33756+ str = CefString(SansSerifFontFamilyName()); 33757+ cef_string_set(str.c_str(), str.length(), 33758+ &(browser_settings.sans_serif_font_family), true); 33759+ 33760+ str = CefString(CursiveFontFamilyName()); 33761+ cef_string_set(str.c_str(), str.length(), 33762+ &(browser_settings.cursive_font_family), true); 33763+ 33764+ str = CefString(FantasyFontFamilyName()); 33765+ cef_string_set(str.c_str(), str.length(), 33766+ &(browser_settings.fantasy_font_family), true); 33767+ 33768+ browser_settings.default_font_size = DefaultFontSize(); 33769+ browser_settings.default_fixed_font_size = DefaultFixedFontSize(); 33770+ browser_settings.minimum_font_size = FontSizeLowerLimit(); 33771+ browser_settings.minimum_logical_font_size = LogicalFontSizeLowerLimit(); 33772+ 33773+ str = CefString(DefaultTextEncodingFormat()); 33774+ cef_string_set(str.c_str(), str.length(), 33775+ &(browser_settings.default_encoding), true); 33776+ 33777+ browser_settings.javascript = 33778+ IsJavaScriptAllowed() ? STATE_ENABLED : STATE_DISABLED; 33779+ browser_settings.loads_images_automatically = 33780+ IsImageLoadingAllowed() ? STATE_ENABLED : STATE_DISABLED; 33781+ browser_settings.image_loading = 33782+ !IsLoadImageFromNetworkDisabled() ? STATE_ENABLED : STATE_DISABLED; 33783+ 33784+ browser_settings.local_storage = 33785+ IsDomStorageEnabled() ? STATE_ENABLED : STATE_DISABLED; 33786+ browser_settings.databases = 33787+ IsDataBaseEnabled() ? STATE_ENABLED : STATE_DISABLED; 33788+ browser_settings.universal_access_from_file_urls = 33789+ EnableUniversalAccessFromFileURLs() ? STATE_ENABLED : STATE_DISABLED; 33790+ browser_settings.file_access_from_file_urls = 33791+ EnableRawFileAccessFromFileURLs() ? STATE_ENABLED : STATE_DISABLED; 33792+ browser_settings.force_dark_mode_enabled = 33793+ DarkModeEnabled() ? STATE_ENABLED : STATE_DISABLED; 33794+ browser_settings.javascript_can_open_windows_automatically = 33795+ IsCreateWindowsByJavaScriptAllowed(); 33796+ browser_settings.text_size_percent = ZoomingForTextFactor(); 33797+ browser_settings.mixed_content_mode = AccessModeForSecureOriginLoadFromInsecure(); 33798+ browser_settings.allow_running_insecure_content = 33799+ RunningInsecureContentAllowed() ? STATE_ENABLED : STATE_DISABLED; 33800+ browser_settings.strict_mixed_content_checking = 33801+ UseStricMixedContentCheckingAllowed() ? STATE_ENABLED : STATE_DISABLED; 33802+ browser_settings.allow_mixed_content_upgrades = 33803+ MixedContentAutoupgradesAllowed() ? STATE_ENABLED : STATE_DISABLED; 33804+ browser_settings.geolocation_enabled = GeolocationAllowed(); 33805+ browser_settings.supports_double_tap_zoom = ZoomingfunctionEnabled(); 33806+ browser_settings.supports_multi_touch_zoom = ZoomingfunctionEnabled(); 33807+} 33808+ 33809+void NWebPreferenceDelegate::SetBrowserSettingsToNetHelpers() { 33810+ net_service::NetHelpers::allow_file_access = EnableRawFileAccess(); 33811+ net_service::NetHelpers::allow_content_access = EnableContentAccess(); 33812+ return; 33813+} 33814+ 33815+void NWebPreferenceDelegate::PutEnableContentAccess(bool flag) { 33816+ content_access_ = flag; 33817+ SetBrowserSettingsToNetHelpers(); 33818+} 33819+ 33820+void NWebPreferenceDelegate::PutEnableRawFileAccess(bool flag) { 33821+ raw_file_access_ = flag; 33822+ SetBrowserSettingsToNetHelpers(); 33823+} 33824+ 33825+void NWebPreferenceDelegate::PutEnableRawFileAccessFromFileURLs(bool flag) { 33826+ raw_file_access_from_file_urls_ = flag; 33827+ WebPreferencesChanged(); 33828+} 33829+ 33830+void NWebPreferenceDelegate::PutEnableUniversalAccessFromFileURLs(bool flag) { 33831+ universal_access_from_file_urls_ = flag; 33832+ WebPreferencesChanged(); 33833+} 33834+ 33835+void NWebPreferenceDelegate::PutLoadImageFromNetworkDisabled(bool flag) { 33836+ images_enabled_ = !flag; 33837+ WebPreferencesChanged(); 33838+} 33839+ 33840+void NWebPreferenceDelegate::PutCursiveFontFamilyName(std::string font) { 33841+ cursive_font_family_name_ = font; 33842+ WebPreferencesChanged(); 33843+} 33844+void NWebPreferenceDelegate::PutDatabaseAllowed(bool flag) { 33845+ databases_enabled_ = flag; 33846+ WebPreferencesChanged(); 33847+} 33848+ 33849+void NWebPreferenceDelegate::PutDefaultFixedFontSize(int size) { 33850+ default_fixed_font_size_ = size; 33851+ WebPreferencesChanged(); 33852+} 33853+void NWebPreferenceDelegate::PutDefaultFontSize(int size) { 33854+ default_font_size_ = size; 33855+ WebPreferencesChanged(); 33856+} 33857+ 33858+void NWebPreferenceDelegate::PutDefaultTextEncodingFormat(std::string encoding) { 33859+ default_encoding_ = encoding; 33860+ WebPreferencesChanged(); 33861+} 33862+ 33863+void NWebPreferenceDelegate::PutDomStorageEnabled(bool flag) { 33864+ dom_storage_ = flag; 33865+ WebPreferencesChanged(); 33866+} 33867+ 33868+void NWebPreferenceDelegate::PutFantasyFontFamilyName(std::string font) { 33869+ fantasy_font_family_name_ = font; 33870+ WebPreferencesChanged(); 33871+} 33872+ 33873+void NWebPreferenceDelegate::PutFixedFontFamilyName(std::string font) { 33874+ fixed_font_family_name_ = font; 33875+ WebPreferencesChanged(); 33876+} 33877+ 33878+void NWebPreferenceDelegate::PutDarkModeEnabled(int forceDark) { 33879+ dark_mode_enabled_ = forceDark; 33880+ WebPreferencesChanged(); 33881+} 33882+ 33883+void NWebPreferenceDelegate::PutIsCreateWindowsByJavaScriptAllowed( 33884+ bool flag) { 33885+ create_windows_by_javascript_allowed_ = flag; 33886+ WebPreferencesChanged(); 33887+} 33888+ 33889+void NWebPreferenceDelegate::PutJavaScriptEnabled(bool flag) { 33890+ javascript_allowed_ = flag; 33891+ WebPreferencesChanged(); 33892+} 33893+ 33894+void NWebPreferenceDelegate::PutImageLoadingAllowed(bool flag) { 33895+ image_loading_allowed_ = flag; 33896+ WebPreferencesChanged(); 33897+} 33898+ 33899+void NWebPreferenceDelegate::PutFontSizeLowerLimit(int size) { 33900+ font_size_lower_limit_ = size; 33901+ WebPreferencesChanged(); 33902+} 33903+ 33904+void NWebPreferenceDelegate::PutLogicalFontSizeLowerLimit(int size) { 33905+ logical_font_size_lower_limit_ = size; 33906+ WebPreferencesChanged(); 33907+} 33908+ 33909+void NWebPreferenceDelegate::PutSansSerifFontFamilyName(std::string font) { 33910+ sans_serif_font_family_name_ = font; 33911+ WebPreferencesChanged(); 33912+} 33913+ 33914+void NWebPreferenceDelegate::PutSerifFontFamilyName(std::string font) { 33915+ serif_font_family_name_ = font; 33916+ WebPreferencesChanged(); 33917+} 33918+ 33919+void NWebPreferenceDelegate::PutStandardFontFamilyName(std::string font) { 33920+ standard_font_family_name_ = font; 33921+ WebPreferencesChanged(); 33922+} 33923+ 33924+void NWebPreferenceDelegate::PutUserAgent(std::string ua) { 33925+ std::string old_user_agent = user_agent_; 33926+ if (ua.empty() || ua.length() == 0) { 33927+ user_agent_ = DefaultUserAgent(); 33928+ } else { 33929+ user_agent_ = ua; 33930+ } 33931+ if (old_user_agent != user_agent_) { 33932+ browser_->GetHost()->PutUserAgent(ua); 33933+ } 33934+} 33935+ 33936+void NWebPreferenceDelegate::PutZoomingForTextFactor(int textZoom) { 33937+ if (zooming_for_text_factor_ != textZoom) { 33938+ zooming_for_text_factor_ = textZoom; 33939+ WebPreferencesChanged(); 33940+ } 33941+} 33942+ 33943+void NWebPreferenceDelegate::PutGeolocationAllowed(bool flag) { 33944+ geolocation_allowed_ = flag; 33945+ WebPreferencesChanged(); 33946+} 33947+ 33948+void NWebPreferenceDelegate::PutAccessModeForSecureOriginLoadFromInsecure(AccessMode mode) { 33949+ if (access_mode_ != mode) { 33950+ access_mode_ = mode; 33951+ WebPreferencesChanged(); 33952+ } 33953+} 33954+ 33955+void NWebPreferenceDelegate::PutZoomingFunctionEnabled(bool flag) { 33956+ if (zooming_function_enabled_ != flag) { 33957+ zooming_function_enabled_ = flag; 33958+ WebPreferencesChanged(); 33959+ } 33960+} 33961+ 33962+bool NWebPreferenceDelegate::EnableContentAccess() { 33963+ return content_access_; 33964+} 33965+bool NWebPreferenceDelegate::EnableRawFileAccess() { 33966+ return raw_file_access_; 33967+} 33968+ 33969+bool NWebPreferenceDelegate::EnableRawFileAccessFromFileURLs() { 33970+ return raw_file_access_from_file_urls_; 33971+} 33972+ 33973+bool NWebPreferenceDelegate::EnableUniversalAccessFromFileURLs() { 33974+ return universal_access_from_file_urls_; 33975+} 33976+ 33977+bool NWebPreferenceDelegate::IsLoadImageFromNetworkDisabled() { 33978+ return !images_enabled_; 33979+} 33980+ 33981+std::string NWebPreferenceDelegate::CursiveFontFamilyName() { 33982+ return cursive_font_family_name_; 33983+} 33984+ 33985+bool NWebPreferenceDelegate::IsDataBaseEnabled() { 33986+ return databases_enabled_; 33987+} 33988+ 33989+int NWebPreferenceDelegate::DefaultFixedFontSize() { 33990+ return default_fixed_font_size_; 33991+} 33992+ 33993+int NWebPreferenceDelegate::DefaultFontSize() { 33994+ return default_font_size_; 33995+} 33996+ 33997+std::string NWebPreferenceDelegate::DefaultTextEncodingFormat() { 33998+ return default_encoding_; 33999+} 34000+ 34001+std::string NWebPreferenceDelegate::DefaultUserAgent() { 34002+ std::string ua = browser_->GetHost()->DefaultUserAgent(); 34003+ return ua; 34004+} 34005+ 34006+bool NWebPreferenceDelegate::IsDomStorageEnabled() { 34007+ return dom_storage_; 34008+} 34009+ 34010+std::string NWebPreferenceDelegate::FantasyFontFamilyName() { 34011+ return fantasy_font_family_name_; 34012+} 34013+ 34014+std::string NWebPreferenceDelegate::FixedFontFamilyName() { 34015+ return fixed_font_family_name_; 34016+} 34017+ 34018+int NWebPreferenceDelegate::DarkModeEnabled() { 34019+ return dark_mode_enabled_; 34020+} 34021+ 34022+bool NWebPreferenceDelegate::IsCreateWindowsByJavaScriptAllowed() { 34023+ return create_windows_by_javascript_allowed_; 34024+} 34025+ 34026+bool NWebPreferenceDelegate::IsJavaScriptAllowed() { 34027+ return javascript_allowed_; 34028+} 34029+ 34030+bool NWebPreferenceDelegate::IsImageLoadingAllowed() { 34031+ return image_loading_allowed_; 34032+} 34033+ 34034+int NWebPreferenceDelegate::FontSizeLowerLimit() { 34035+ return font_size_lower_limit_; 34036+} 34037+ 34038+int NWebPreferenceDelegate::LogicalFontSizeLowerLimit() { 34039+ return logical_font_size_lower_limit_; 34040+} 34041+ 34042+std::string NWebPreferenceDelegate::SansSerifFontFamilyName() { 34043+ return sans_serif_font_family_name_; 34044+} 34045+ 34046+std::string NWebPreferenceDelegate::SerifFontFamilyName() { 34047+ return serif_font_family_name_; 34048+} 34049+ 34050+std::string NWebPreferenceDelegate::StandardFontFamilyName() { 34051+ return standard_font_family_name_; 34052+} 34053+ 34054+std::string NWebPreferenceDelegate::UserAgent() { 34055+ if (user_agent_.empty()) { 34056+ user_agent_ = DefaultUserAgent(); 34057+ } 34058+ return user_agent_; 34059+} 34060+ 34061+int NWebPreferenceDelegate::ZoomingForTextFactor() { 34062+ return zooming_for_text_factor_; 34063+} 34064+ 34065+bool NWebPreferenceDelegate::GeolocationAllowed() { 34066+ return geolocation_allowed_; 34067+} 34068+ 34069+int NWebPreferenceDelegate::AccessModeForSecureOriginLoadFromInsecure() { 34070+ return access_mode_; 34071+} 34072+ 34073+bool NWebPreferenceDelegate::RunningInsecureContentAllowed() { 34074+ return access_mode_ == ALWAYS_ALLOW; 34075+} 34076+ 34077+bool NWebPreferenceDelegate::UseStricMixedContentCheckingAllowed() { 34078+ return access_mode_ == NEVER_ALLOW; 34079+} 34080+ 34081+const base::Feature webview_mixed_content_autoupgrades{ 34082+ "WebViewMixedContentAutoupgrades", base::FEATURE_DISABLED_BY_DEFAULT}; 34083+ 34084+bool NWebPreferenceDelegate::MixedContentAutoupgradesAllowed() { 34085+ if (base::FeatureList::IsEnabled(webview_mixed_content_autoupgrades)) { 34086+ return access_mode_ == COMPATIBILITY_MODE; 34087+ } 34088+ return false; 34089+} 34090+ 34091+bool NWebPreferenceDelegate::ZoomingfunctionEnabled() { 34092+ return zooming_function_enabled_; 34093+} 34094+} 34095diff --git a/ohos_nweb/src/cef_delegate/nweb_preference_delegate.h b/ohos_nweb/src/cef_delegate/nweb_preference_delegate.h 34096new file mode 100644 34097index 0000000000..2d439ffc74 34098--- /dev/null 34099+++ b/ohos_nweb/src/cef_delegate/nweb_preference_delegate.h 34100@@ -0,0 +1,121 @@ 34101+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 34102+// Use of this source code is governed by a BSD-style license that can be 34103+// found in the LICENSE file. 34104+ 34105+#ifndef NWEB_PREFERENCE_DELEGATE_H 34106+#define NWEB_PREFERENCE_DELEGATE_H 34107+ 34108+#include "cef/include/cef_browser.h" 34109+#include "ohos_nweb/include/nweb_preference.h" 34110+ 34111+namespace OHOS::NWeb { 34112+class NWebPreferenceDelegate : public NWebPreference { 34113+ public: 34114+ NWebPreferenceDelegate(); 34115+ ~NWebPreferenceDelegate(); 34116+ void OnDestroy(); 34117+ void SetBrowser(CefRefPtr<CefBrowser> browser); 34118+ void WebPreferencesChanged(); 34119+ void ComputeBrowserSettings(CefBrowserSettings& browser_settings); 34120+ 34121+ void SetBrowserSettingsToNetHelpers(); 34122+ 34123+ /* set methods */ 34124+ void PutEnableContentAccess(bool flag) override; 34125+ void PutEnableRawFileAccess(bool flag) override; 34126+ void PutEnableRawFileAccessFromFileURLs(bool flag) override; 34127+ void PutEnableUniversalAccessFromFileURLs(bool flag) override; 34128+ void PutLoadImageFromNetworkDisabled(bool flag) override; 34129+ void PutCursiveFontFamilyName(std::string font) override; 34130+ void PutDatabaseAllowed(bool flag) override; 34131+ void PutDefaultFixedFontSize(int size) override; 34132+ void PutDefaultFontSize(int size) override; 34133+ void PutDefaultTextEncodingFormat(std::string encoding) override; 34134+ void PutDomStorageEnabled(bool flag) override; 34135+ void PutFantasyFontFamilyName(std::string font) override; 34136+ void PutFixedFontFamilyName(std::string font) override; 34137+ void PutDarkModeEnabled(int forceDark) override; 34138+ void PutIsCreateWindowsByJavaScriptAllowed(bool flag) override; 34139+ void PutJavaScriptEnabled(bool flag) override; 34140+ void PutImageLoadingAllowed(bool flag) override; 34141+ void PutFontSizeLowerLimit(int size) override; 34142+ void PutLogicalFontSizeLowerLimit(int size) override; 34143+ void PutSansSerifFontFamilyName(std::string font) override; 34144+ void PutSerifFontFamilyName(std::string font) override; 34145+ void PutStandardFontFamilyName(std::string font) override; 34146+ void PutUserAgent(std::string ua) override; 34147+ void PutZoomingForTextFactor(int textZoom) override; 34148+ void PutGeolocationAllowed(bool flag) override; 34149+ void PutAccessModeForSecureOriginLoadFromInsecure(AccessMode mode) override; 34150+ void PutZoomingFunctionEnabled(bool flag) override; 34151+ 34152+ /* get methods*/ 34153+ bool EnableContentAccess() override; 34154+ bool EnableRawFileAccess() override; 34155+ bool EnableRawFileAccessFromFileURLs() override; 34156+ bool EnableUniversalAccessFromFileURLs() override; 34157+ bool IsLoadImageFromNetworkDisabled() override; 34158+ std::string CursiveFontFamilyName() override; 34159+ bool IsDataBaseEnabled() override; 34160+ int DefaultFixedFontSize() override; 34161+ int DefaultFontSize() override; 34162+ std::string DefaultTextEncodingFormat() override; 34163+ std::string DefaultUserAgent() override; 34164+ bool IsDomStorageEnabled() override; 34165+ std::string FantasyFontFamilyName() override; 34166+ std::string FixedFontFamilyName() override; 34167+ int DarkModeEnabled() override; 34168+ bool IsCreateWindowsByJavaScriptAllowed() override; 34169+ bool IsJavaScriptAllowed() override; 34170+ bool IsImageLoadingAllowed() override; 34171+ int FontSizeLowerLimit() override; 34172+ int LogicalFontSizeLowerLimit() override; 34173+ std::string SansSerifFontFamilyName() override; 34174+ std::string SerifFontFamilyName() override; 34175+ std::string StandardFontFamilyName() override; 34176+ std::string UserAgent() override; 34177+ int ZoomingForTextFactor() override; 34178+ bool GeolocationAllowed() override; 34179+ int AccessModeForSecureOriginLoadFromInsecure() override; 34180+ bool ZoomingfunctionEnabled() override; 34181+ 34182+ bool RunningInsecureContentAllowed(); 34183+ bool UseStricMixedContentCheckingAllowed(); 34184+ bool MixedContentAutoupgradesAllowed(); 34185+ 34186+ private: 34187+ CefRefPtr<CefBrowser> browser_ = nullptr; 34188+ 34189+ /* Web preferences begin*/ 34190+ std::string standard_font_family_name_{"sans-serif"}; 34191+ std::string fixed_font_family_name_{"monospace"}; 34192+ std::string serif_font_family_name_{"serif"}; 34193+ std::string sans_serif_font_family_name_{"sans-serif"}; 34194+ std::string cursive_font_family_name_{"cursive"}; 34195+ std::string fantasy_font_family_name_{"fantasy"}; 34196+ int default_font_size_{16}; 34197+ int default_fixed_font_size_{13}; 34198+ int font_size_lower_limit_{8}; 34199+ int logical_font_size_lower_limit_{8}; 34200+ std::string default_encoding_{"UTF-8"}; 34201+ bool images_enabled_{true}; 34202+ bool javascript_allowed_{false}; 34203+ bool image_loading_allowed_{true}; 34204+ bool dom_storage_{false}; 34205+ bool databases_enabled_{false}; 34206+ bool content_access_{true}; 34207+ bool raw_file_access_{false}; 34208+ bool universal_access_from_file_urls_{false}; 34209+ bool raw_file_access_from_file_urls_{false}; 34210+ bool dark_mode_enabled_{false}; 34211+ /* Web preferences end*/ 34212+ bool create_windows_by_javascript_allowed_{false}; 34213+ std::string user_agent_{""}; 34214+ int zooming_for_text_factor_{100}; 34215+ bool geolocation_allowed_{true}; 34216+ int access_mode_{NEVER_ALLOW}; 34217+ bool zooming_function_enabled_{true}; 34218+}; 34219+} // namespace OHOS::NWeb 34220+ 34221+#endif 34222diff --git a/ohos_nweb/src/cef_delegate/nweb_render_handler.cc b/ohos_nweb/src/cef_delegate/nweb_render_handler.cc 34223new file mode 100644 34224index 0000000000..4b85ca9122 34225--- /dev/null 34226+++ b/ohos_nweb/src/cef_delegate/nweb_render_handler.cc 34227@@ -0,0 +1,100 @@ 34228+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 34229+// Use of this source code is governed by a BSD-style license that can be 34230+// found in the LICENSE file. 34231+ 34232+#include "nweb_render_handler.h" 34233+ 34234+#include <sys/time.h> 34235+#include <cerrno> 34236+#include <cstring> 34237+ 34238+#include "base/logging.h" 34239+ 34240+namespace OHOS::NWeb { 34241+// static 34242+CefRefPtr<NWebRenderHandler> NWebRenderHandler::Create() { 34243+ CefRefPtr<NWebRenderHandler> renderHandler(new NWebRenderHandler()); 34244+ if (renderHandler == nullptr) { 34245+ LOG(ERROR) << "fail to create NWebRenderHandler instance"; 34246+ return nullptr; 34247+ } 34248+ return renderHandler; 34249+} 34250+ 34251+void NWebRenderHandler::RegisterRenderCb( 34252+ std::function<void(const char*)> render_update_cb) { 34253+ render_update_cb_ = render_update_cb; 34254+} 34255+ 34256+void NWebRenderHandler::SetInputMethodClient( 34257+ CefRefPtr<NWebInputMethodClient> client) { 34258+ inputmethod_client_ = client; 34259+} 34260+ 34261+void NWebRenderHandler::Resize(uint32_t width, uint32_t height) { 34262+ width_ = width; 34263+ height_ = height; 34264+} 34265+ 34266+void NWebRenderHandler::GetViewRect(CefRefPtr<CefBrowser> browser, 34267+ CefRect& rect) { 34268+ rect.x = 0; 34269+ rect.y = 0; 34270+ rect.width = width_; 34271+ rect.height = height_; 34272+ return; 34273+} 34274+ 34275+void NWebRenderHandler::OnPaint(CefRefPtr<CefBrowser> browser, 34276+ PaintElementType type, 34277+ const RectList& dirty_rects, 34278+ const void* buffer, 34279+ int width, 34280+ int height) { 34281+ // run render callback to take buffer. 34282+ // note: buffer must be consumed asap with no lock protected 34283+ if (render_update_cb_ != nullptr) { 34284+ render_update_cb_(reinterpret_cast<const char*>(buffer)); 34285+ } 34286+} 34287+ 34288+void NWebRenderHandler::OnRootLayerChanged(CefRefPtr<CefBrowser> browser, 34289+ int height, 34290+ int width) { 34291+ content_height_ = height; 34292+ content_width_ = width; 34293+} 34294+ 34295+int NWebRenderHandler::ContentHeight() { 34296+ return content_height_; 34297+} 34298+ 34299+void NWebRenderHandler::OnImeCompositionRangeChanged( 34300+ CefRefPtr<CefBrowser> browser, 34301+ const CefRange& selected_range, 34302+ const RectList& character_bounds) { 34303+ LOG(INFO) << "NWebRenderHandler::OnImeCompositionRangeChanged"; 34304+} 34305+ 34306+void NWebRenderHandler::OnTextSelectionChanged(CefRefPtr<CefBrowser> browser, 34307+ const CefString& selected_text, 34308+ const CefRange& selected_range) { 34309+ if (inputmethod_client_) { 34310+ inputmethod_client_->OnTextSelectionChanged(browser, selected_text, 34311+ selected_range); 34312+ } 34313+} 34314+ 34315+void NWebRenderHandler::OnVirtualKeyboardRequested( 34316+ CefRefPtr<CefBrowser> browser, 34317+ TextInputMode input_mode) { 34318+ if (inputmethod_client_) { 34319+ if (input_mode != CEF_TEXT_INPUT_MODE_NONE) { 34320+ inputmethod_client_->Attach(browser); 34321+ inputmethod_client_->ShowTextInput(); 34322+ } else { 34323+ inputmethod_client_->HideTextInput(); 34324+ } 34325+ } 34326+} 34327+} // namespace OHOS::NWeb 34328diff --git a/ohos_nweb/src/cef_delegate/nweb_render_handler.h b/ohos_nweb/src/cef_delegate/nweb_render_handler.h 34329new file mode 100644 34330index 0000000000..5f4165d47f 34331--- /dev/null 34332+++ b/ohos_nweb/src/cef_delegate/nweb_render_handler.h 34333@@ -0,0 +1,64 @@ 34334+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 34335+// Use of this source code is governed by a BSD-style license that can be 34336+// found in the LICENSE file. 34337+ 34338+#ifndef NWEB_RENDER_HANDLER_H 34339+#define NWEB_RENDER_HANDLER_H 34340+ 34341+#include <functional> 34342+#include <memory> 34343+#include "cef/include/cef_render_handler.h" 34344+#include "nweb_inputmethod_client.h" 34345+ 34346+namespace OHOS::NWeb { 34347+class NWebRenderHandler : public CefRenderHandler { 34348+ public: 34349+ static CefRefPtr<NWebRenderHandler> Create(); 34350+ NWebRenderHandler() = default; 34351+ ~NWebRenderHandler() = default; 34352+ 34353+ void RegisterRenderCb(std::function<void(const char*)> render_update_cb); 34354+ void Resize(uint32_t width, uint32_t height); 34355+ int ContentHeight(); 34356+ void SetInputMethodClient(CefRefPtr<NWebInputMethodClient> client); 34357+ 34358+ /* CefRenderHandler method begin */ 34359+ virtual void GetViewRect(CefRefPtr<CefBrowser> browser, 34360+ CefRect& rect) override; 34361+ virtual void OnPaint(CefRefPtr<CefBrowser> browser, 34362+ PaintElementType type, 34363+ const RectList& dirty_rects, 34364+ const void* buffer, 34365+ int width, 34366+ int height) override; 34367+ void OnRootLayerChanged(CefRefPtr<CefBrowser> browser, 34368+ int height, 34369+ int width) override; 34370+ 34371+ virtual void OnImeCompositionRangeChanged( 34372+ CefRefPtr<CefBrowser> browser, 34373+ const CefRange& selected_range, 34374+ const RectList& character_bounds) override; 34375+ 34376+ virtual void OnTextSelectionChanged(CefRefPtr<CefBrowser> browser, 34377+ const CefString& selected_text, 34378+ const CefRange& selected_range) override; 34379+ 34380+ virtual void OnVirtualKeyboardRequested(CefRefPtr<CefBrowser> browser, 34381+ TextInputMode input_mode) override; 34382+ /* CefRenderHandler method end */ 34383+ 34384+ // Include the default reference counting implementation. 34385+ IMPLEMENT_REFCOUNTING(NWebRenderHandler); 34386+ 34387+ private: 34388+ std::function<void(const char*)> render_update_cb_ = nullptr; 34389+ CefRefPtr<NWebInputMethodClient> inputmethod_client_ = nullptr; 34390+ uint32_t width_ = 0; 34391+ uint32_t height_ = 0; 34392+ int content_height_ = 0; 34393+ int content_width_ = 0; 34394+}; 34395+} 34396+ 34397+#endif // NWEB_RENDER_HANDLER_H 34398diff --git a/ohos_nweb/src/cef_delegate/nweb_resource_handler.cc b/ohos_nweb/src/cef_delegate/nweb_resource_handler.cc 34399new file mode 100644 34400index 0000000000..3b465b8f85 34401--- /dev/null 34402+++ b/ohos_nweb/src/cef_delegate/nweb_resource_handler.cc 34403@@ -0,0 +1,83 @@ 34404+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 34405+// Use of this source code is governed by a BSD-style license that can be 34406+// found in the LICENSE file. 34407+ 34408+#include "nweb_resource_handler.h" 34409+#include "base/logging.h" 34410+ 34411+namespace OHOS::NWeb { 34412+void ConvertMapToHeaderMap( 34413+ CefRequest::HeaderMap& headers, 34414+ const std::map<std::string, std::string> response_map) { 34415+ for (auto iter = response_map.begin(); iter != response_map.end(); iter++) { 34416+ const std::string& key = iter->first; 34417+ const std::string& value = iter->second; 34418+ headers.emplace(key, value); 34419+ } 34420+} 34421+ 34422+NWebResourceHandler::NWebResourceHandler( 34423+ std::shared_ptr<NWebUrlResourceResponse> web_response, 34424+ std::string& str) 34425+ : data_(str) { 34426+ response_ = web_response; 34427+ offset_ = 0; 34428+} 34429+ 34430+/* CefResourceHandler method begin */ 34431+bool NWebResourceHandler::Open(CefRefPtr<CefRequest> request, 34432+ bool& handle_request, 34433+ CefRefPtr<CefCallback> callback) { 34434+ LOG(INFO) << "NWebResourceHandler::Open"; 34435+ handle_request = true; 34436+ 34437+ if (response_) { 34438+ data_ = response_->ResponseData(); 34439+ } 34440+ return true; 34441+} 34442+ 34443+bool NWebResourceHandler::Read(void* data_out, 34444+ int bytes_to_read, 34445+ int& bytes_read, 34446+ CefRefPtr<CefResourceReadCallback> callback) { 34447+ LOG(INFO) << "NWebResourceHandler::Read"; 34448+ bool has_data = false; 34449+ bytes_read = 0; 34450+ 34451+ if (offset_ < data_.length()) { 34452+ // Copy the next block of data into the buffer. 34453+ int transfer_size = 34454+ std::min(bytes_to_read, static_cast<int>(data_.length() - offset_)); 34455+ memcpy(data_out, data_.c_str() + offset_, transfer_size); 34456+ offset_ += transfer_size; 34457+ 34458+ bytes_read = transfer_size; 34459+ has_data = true; 34460+ } 34461+ 34462+ return has_data; 34463+} 34464+ 34465+void NWebResourceHandler::GetResponseHeaders(CefRefPtr<CefResponse> response, 34466+ int64& response_length, 34467+ CefString& redirectUrl) { 34468+ LOG(INFO) << "NWebResourceHandler::GetResponseHeaders"; 34469+ if (response_ && response) { 34470+ response->SetMimeType(response_->ResponseMimeType()); 34471+ response->SetStatus(response_->ResponseStatusCode()); 34472+ response->SetStatusText(response_->ResponseStatus()); 34473+ response->SetCharset(response_->ResponseEncoding()); 34474+ CefRequest::HeaderMap cef_request_headers; 34475+ std::map<std::string, std::string> request_headers = 34476+ response_->ResponseHeaders(); 34477+ ConvertMapToHeaderMap(cef_request_headers, request_headers); 34478+ response->SetHeaderMap(cef_request_headers); 34479+ } 34480+ 34481+ response_length = data_.length(); 34482+} 34483+ 34484+void NWebResourceHandler::Cancel() {} 34485+/* CefResourceHandler method end */ 34486+} // namespace OHOS::NWeb 34487diff --git a/ohos_nweb/src/cef_delegate/nweb_resource_handler.h b/ohos_nweb/src/cef_delegate/nweb_resource_handler.h 34488new file mode 100644 34489index 0000000000..fc23967df1 34490--- /dev/null 34491+++ b/ohos_nweb/src/cef_delegate/nweb_resource_handler.h 34492@@ -0,0 +1,48 @@ 34493+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 34494+// Use of this source code is governed by a BSD-style license that can be 34495+// found in the LICENSE file. 34496+ 34497+#ifndef NWEB_REOURCE_HANDLER_H 34498+#define NWEB_REOURCE_HANDLER_H 34499+ 34500+#include <condition_variable> 34501+#include <mutex> 34502+#include <string> 34503+#include <vector> 34504+#include "cef/include/cef_resource_handler.h" 34505+#include "nweb_url_resource_response.h" 34506+ 34507+namespace OHOS::NWeb { 34508+class NWebResourceHandler : public CefResourceHandler { 34509+ public: 34510+ NWebResourceHandler(std::shared_ptr<NWebUrlResourceResponse> web_response, std::string& str); 34511+ ~NWebResourceHandler() = default; 34512+ 34513+ /* CefResourceHandler method begin */ 34514+ bool Open(CefRefPtr<CefRequest> request, 34515+ bool& handle_request, 34516+ CefRefPtr<CefCallback> callback) override; 34517+ 34518+ bool Read(void* data_out, 34519+ int bytes_to_read, 34520+ int& bytes_read, 34521+ CefRefPtr<CefResourceReadCallback> callback) override; 34522+ 34523+ void GetResponseHeaders(CefRefPtr<CefResponse> response, 34524+ int64& response_length, 34525+ CefString& redirectUrl) override; 34526+ 34527+ void Cancel() override; 34528+ /* CefResourceHandler method end */ 34529+ 34530+ // Include the default reference counting implementation. 34531+ IMPLEMENT_REFCOUNTING(NWebResourceHandler); 34532+ 34533+ private: 34534+ std::string data_; 34535+ size_t offset_ = 0; 34536+ std::shared_ptr<NWebUrlResourceResponse> response_; 34537+}; 34538+} 34539+ 34540+#endif 34541diff --git a/ohos_nweb/src/nweb_cookie_manager_delegate_interface.h b/ohos_nweb/src/nweb_cookie_manager_delegate_interface.h 34542new file mode 100644 34543index 0000000000..564c57934e 34544--- /dev/null 34545+++ b/ohos_nweb/src/nweb_cookie_manager_delegate_interface.h 34546@@ -0,0 +1,35 @@ 34547+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 34548+// Use of this source code is governed by a BSD-style license that can be 34549+// found in the LICENSE file. 34550+ 34551+#ifndef NWEB_COOKIE_MANAGER_DELEGATE_INTERFACE_H 34552+#define NWEB_COOKIE_MANAGER_DELEGATE_INTERFACE_H 34553+ 34554+#include <memory> 34555+#include <string> 34556+#include "nweb_value_callback.h" 34557+ 34558+namespace OHOS::NWeb { 34559+class NWebCookieManagerDelegateInterface { 34560+ public: 34561+ virtual ~NWebCookieManagerDelegateInterface() = default; 34562+ virtual bool IsAcceptCookieAllowed() = 0; 34563+ virtual void PutAcceptCookieEnabled(bool accept) = 0; 34564+ virtual bool IsFileURLSchemeCookiesAllowed() = 0; 34565+ virtual void PutAcceptFileURLSchemeCookiesEnabled(bool allow) = 0; 34566+ virtual void ReturnCookie( 34567+ const std::string& url, 34568+ std::shared_ptr<NWebValueCallback<std::string>> callback) = 0; 34569+ virtual void SetCookie(const std::string& url, 34570+ const std::string& value, 34571+ std::shared_ptr<NWebValueCallback<bool>> callback) = 0; 34572+ virtual void ExistCookies( 34573+ std::shared_ptr<NWebValueCallback<bool>> callback) = 0; 34574+ virtual void Store(std::shared_ptr<NWebValueCallback<bool>> callback) = 0; 34575+ virtual void DeleteSessionCookies( 34576+ std::shared_ptr<NWebValueCallback<bool>> callback) = 0; 34577+ virtual void DeleteCookieEntirely( 34578+ std::shared_ptr<NWebValueCallback<bool>> callback) = 0; 34579+}; 34580+} // namespace OHOS::NWeb 34581+#endif 34582\ No newline at end of file 34583diff --git a/ohos_nweb/src/nweb_cookie_manager_impl.cc b/ohos_nweb/src/nweb_cookie_manager_impl.cc 34584new file mode 100644 34585index 0000000000..5d0659ed85 34586--- /dev/null 34587+++ b/ohos_nweb/src/nweb_cookie_manager_impl.cc 34588@@ -0,0 +1,93 @@ 34589+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 34590+// Use of this source code is governed by a BSD-style license that can be 34591+// found in the LICENSE file. 34592+ 34593+#include "nweb_cookie_manager_impl.h" 34594+#include "nweb_cookie_manager_delegate.h" 34595+#include "nweb_hilog.h" 34596+ 34597+using namespace OHOS::NWeb; 34598+ 34599+namespace OHOS::NWeb { 34600+NWebCookieManagerImpl::NWebCookieManagerImpl() { 34601+#if defined(USE_CEF) 34602+ delegate_ = std::make_shared<NWebCookieManagerDelegate>(); 34603+#endif 34604+} 34605+ 34606+bool NWebCookieManagerImpl::IsAcceptCookieAllowed() const { 34607+ if (delegate_ != nullptr) { 34608+ return delegate_->IsAcceptCookieAllowed(); 34609+ } 34610+ return false; 34611+} 34612+ 34613+void NWebCookieManagerImpl::PutAcceptCookieEnabled(bool accept) { 34614+ if (delegate_ != nullptr) { 34615+ delegate_->PutAcceptCookieEnabled(accept); 34616+ } 34617+} 34618+ 34619+bool NWebCookieManagerImpl::IsFileURLSchemeCookiesAllowed() const { 34620+ if (delegate_ != nullptr) { 34621+ return delegate_->IsFileURLSchemeCookiesAllowed(); 34622+ } 34623+ return false; 34624+} 34625+ 34626+void NWebCookieManagerImpl::PutAcceptFileURLSchemeCookiesEnabled(bool allow) { 34627+ if (delegate_ != nullptr) { 34628+ delegate_->PutAcceptFileURLSchemeCookiesEnabled(allow); 34629+ } 34630+} 34631+ 34632+void NWebCookieManagerImpl::SetCookie( 34633+ const std::string& url, 34634+ const std::string& value, 34635+ std::shared_ptr<NWebValueCallback<bool>> callback) { 34636+ if (delegate_ != nullptr) { 34637+ delegate_->SetCookie(url, value, callback); 34638+ } 34639+} 34640+ 34641+void NWebCookieManagerImpl::ReturnCookie( 34642+ const std::string& url, 34643+ std::shared_ptr<NWebValueCallback<std::string>> callback) { 34644+ if (delegate_ != nullptr) { 34645+ delegate_->ReturnCookie(url, callback); 34646+ } 34647+} 34648+ 34649+void NWebCookieManagerImpl::ExistCookies( 34650+ std::shared_ptr<NWebValueCallback<bool>> callback) { 34651+ if (delegate_ != nullptr) { 34652+ delegate_->ExistCookies(callback); 34653+ } 34654+} 34655+ 34656+void NWebCookieManagerImpl::Store( 34657+ std::shared_ptr<NWebValueCallback<bool>> callback) { 34658+ if (delegate_ != nullptr) { 34659+ delegate_->Store(callback); 34660+ } 34661+} 34662+ 34663+void NWebCookieManagerImpl::DeleteSessionCookies( 34664+ std::shared_ptr<NWebValueCallback<bool>> callback) { 34665+ if (delegate_ != nullptr) { 34666+ delegate_->DeleteSessionCookies(callback); 34667+ } 34668+} 34669+ 34670+void NWebCookieManagerImpl::DeleteCookieEntirely( 34671+ std::shared_ptr<NWebValueCallback<bool>> callback) { 34672+ if (delegate_ != nullptr) { 34673+ delegate_->DeleteCookieEntirely(callback); 34674+ } 34675+} 34676+ 34677+NWebCookieManager* NWebCookieManager::GetInstance() { 34678+ static NWebCookieManagerImpl instance; 34679+ return &instance; 34680+} 34681+} // namespace OHOS::NWeb 34682\ No newline at end of file 34683diff --git a/ohos_nweb/src/nweb_cookie_manager_impl.h b/ohos_nweb/src/nweb_cookie_manager_impl.h 34684new file mode 100644 34685index 0000000000..128ab637b7 34686--- /dev/null 34687+++ b/ohos_nweb/src/nweb_cookie_manager_impl.h 34688@@ -0,0 +1,39 @@ 34689+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 34690+// Use of this source code is governed by a BSD-style license that can be 34691+// found in the LICENSE file. 34692+ 34693+#ifndef NWEB_COOKIE_MANAGER_IMPL_H 34694+#define NWEB_COOKIE_MANAGER_IMPL_H 34695+ 34696+#include "nweb_cookie_manager.h" 34697+#include "nweb_cookie_manager_delegate_interface.h" 34698+ 34699+namespace OHOS::NWeb { 34700+class NWebCookieManagerImpl : public NWebCookieManager { 34701+ public: 34702+ NWebCookieManagerImpl(); 34703+ ~NWebCookieManagerImpl() = default; 34704+ 34705+ bool IsAcceptCookieAllowed() const override; 34706+ void PutAcceptCookieEnabled(bool accept) override; 34707+ bool IsFileURLSchemeCookiesAllowed() const override; 34708+ void PutAcceptFileURLSchemeCookiesEnabled(bool allow) override; 34709+ void ReturnCookie( 34710+ const std::string& url, 34711+ std::shared_ptr<NWebValueCallback<std::string>> callback) override; 34712+ void SetCookie(const std::string& url, 34713+ const std::string& value, 34714+ std::shared_ptr<NWebValueCallback<bool>> callback) override; 34715+ void ExistCookies(std::shared_ptr<NWebValueCallback<bool>> callback) override; 34716+ void Store(std::shared_ptr<NWebValueCallback<bool>> callback) override; 34717+ void DeleteSessionCookies( 34718+ std::shared_ptr<NWebValueCallback<bool>> callback) override; 34719+ void DeleteCookieEntirely( 34720+ std::shared_ptr<NWebValueCallback<bool>> callback) override; 34721+ 34722+ private: 34723+ std::shared_ptr<NWebCookieManagerDelegateInterface> delegate_ = nullptr; 34724+}; 34725+} // namespace OHOS::NWeb 34726+ 34727+#endif // NWEB_COOKIE_MANAGER_IMPL_H 34728\ No newline at end of file 34729diff --git a/ohos_nweb/src/nweb_delegate_adapter.cc b/ohos_nweb/src/nweb_delegate_adapter.cc 34730new file mode 100644 34731index 0000000000..f0f17c61c0 34732--- /dev/null 34733+++ b/ohos_nweb/src/nweb_delegate_adapter.cc 34734@@ -0,0 +1,31 @@ 34735+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 34736+// Use of this source code is governed by a BSD-style license that can be 34737+// found in the LICENSE file. 34738+ 34739+#include "nweb_delegate_adapter.h" 34740+ 34741+#include "nweb_hilog.h" 34742+ 34743+#if defined(USE_CEF) 34744+#include "cef_delegate/nweb_delegate.h" 34745+#endif 34746+namespace OHOS::NWeb { 34747+// static 34748+std::shared_ptr<NWebDelegateInterface> 34749+NWebDelegateAdapter::CreateNWebDelegate(int argc, const char* argv[]) { 34750+#if defined(USE_CEF) 34751+ std::shared_ptr<NWebDelegate> delegate = 34752+ std::make_shared<NWebDelegate>(argc, argv); 34753+ 34754+ if (delegate == nullptr || !delegate->Init()) { 34755+ WVLOG_I("FAIL to create nweb delegate instance"); 34756+ return nullptr; 34757+ } 34758+ 34759+ return delegate; 34760+#else 34761+ WVLOG_E("NO IMPLEMENTATION"); 34762+ return nullptr; 34763+#endif 34764+} 34765+} 34766diff --git a/ohos_nweb/src/nweb_delegate_adapter.h b/ohos_nweb/src/nweb_delegate_adapter.h 34767new file mode 100644 34768index 0000000000..1af15ad639 34769--- /dev/null 34770+++ b/ohos_nweb/src/nweb_delegate_adapter.h 34771@@ -0,0 +1,21 @@ 34772+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 34773+// Use of this source code is governed by a BSD-style license that can be 34774+// found in the LICENSE file. 34775+ 34776+#ifndef NWEB_DELEGATE_HELPER_H 34777+#define NWEB_DELEGATE_HELPER_H 34778+ 34779+#include <memory> 34780+#include "nweb_export.h" 34781+#include "nweb_delegate_interface.h" 34782+ 34783+namespace OHOS::NWeb { 34784+class OHOS_NWEB_EXPORT NWebDelegateAdapter { 34785+ public: 34786+ static std::shared_ptr<NWebDelegateInterface> CreateNWebDelegate( 34787+ int argc, 34788+ const char* argv[]); 34789+}; 34790+} 34791+ 34792+#endif // NWEB_DELEGATE_HELPER_H 34793diff --git a/ohos_nweb/src/nweb_delegate_interface.h b/ohos_nweb/src/nweb_delegate_interface.h 34794new file mode 100755 34795index 0000000000..179578beec 34796--- /dev/null 34797+++ b/ohos_nweb/src/nweb_delegate_interface.h 34798@@ -0,0 +1,80 @@ 34799+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 34800+// Use of this source code is governed by a BSD-style license that can be 34801+// found in the LICENSE file. 34802+ 34803+#ifndef NWEB_DELEGATE_INTERFACE_H 34804+#define NWEB_DELEGATE_INTERFACE_H 34805+ 34806+#include <functional> 34807+#include <string> 34808+#include "cef_delegate/nweb_inputmethod_client.h" 34809+#include "nweb_download_callback.h" 34810+#include "nweb_preference.h" 34811+#include "nweb_handler.h" 34812+namespace OHOS::NWeb { 34813+class NWebDelegateInterface { 34814+ public: 34815+ virtual ~NWebDelegateInterface() = default; 34816+ 34817+ virtual bool IsReady() = 0; 34818+ virtual void OnDestroy(bool is_close_all) = 0; 34819+ virtual void RegisterDownLoadListener( 34820+ std::shared_ptr<NWebDownloadCallback> downloadListener) = 0; 34821+ virtual void RegisterNWebHandler(std::shared_ptr<NWebHandler> handler) = 0; 34822+ virtual void RegisterRenderCb( 34823+ std::function<void(const char*)> render_update_cb) = 0; 34824+ virtual void SetInputMethodClient( 34825+ CefRefPtr<NWebInputMethodClient> client) = 0; 34826+ 34827+ /* event interface */ 34828+ virtual void Resize(uint32_t width, uint32_t height) = 0; 34829+ virtual void OnTouchPress(int32_t id, double x, double y) = 0; 34830+ virtual void OnTouchRelease(int32_t id, double x, double y) = 0; 34831+ virtual void OnTouchMove(int32_t id, double x, double y) = 0; 34832+ virtual void OnTouchCancel() = 0; 34833+ 34834+ virtual void Load(const std::string& url) = 0; 34835+ virtual bool IsNavigatebackwardAllowed() const = 0; 34836+ virtual bool IsNavigateForwardAllowed() const = 0; 34837+ virtual bool CanNavigateBackOrForward(int numSteps) const = 0; 34838+ virtual void NavigateBack() const = 0; 34839+ virtual void NavigateForward() const = 0; 34840+ virtual void Reload() const = 0; 34841+ virtual void Zoom(float zoomFactor) const = 0; 34842+ virtual void Stop() const = 0; 34843+ virtual void ExecuteJavaScript(const std::string& code) const = 0; 34844+ virtual void ExecuteJavaScript( 34845+ const std::string& code, 34846+ std::shared_ptr<NWebValueCallback<std::string>> callback) const = 0; 34847+ virtual void PutBackgroundColor(int color) const = 0; 34848+ virtual void OnPause() = 0; 34849+ virtual void OnContinue() = 0; 34850+ virtual std::shared_ptr<NWebPreference> GetPreference() const = 0; 34851+ virtual std::string Title() = 0; 34852+ virtual HitTestResult GetHitTestResult() const = 0; 34853+ virtual int PageLoadProgress() = 0; 34854+ virtual float Scale() = 0; 34855+ virtual void Load( 34856+ std::string& url, 34857+ std::map<std::string, std::string> additionalHttpHeaders) = 0; 34858+ virtual void LoadWithDataAndBaseUrl(const std::string& baseUrl, 34859+ const std::string& data, 34860+ const std::string& mimeType, 34861+ const std::string& encoding, 34862+ const std::string& historyUrl) = 0; 34863+ virtual void LoadWithData(const std::string& data, 34864+ const std::string& mimeType, 34865+ const std::string& encoding) = 0; 34866+ virtual int ContentHeight() = 0; 34867+ virtual void RegisterArkJSfunction( 34868+ const std::string& object_name, 34869+ const std::vector<std::string>& method_list) const = 0; 34870+ virtual void UnregisterArkJSfunction( 34871+ const std::string& object_name, 34872+ const std::vector<std::string>& method_list) const = 0; 34873+ virtual void RegisterNWebJavaScriptCallBack( 34874+ std::shared_ptr<NWebJavaScriptResultCallBack> callback) = 0; 34875+}; 34876+} // namespace OHOS::NWeb 34877+ 34878+#endif // nweb_delegate_INTERFACE_H 34879diff --git a/ohos_nweb/src/nweb_hilog.h b/ohos_nweb/src/nweb_hilog.h 34880new file mode 100644 34881index 0000000000..0e9518b413 34882--- /dev/null 34883+++ b/ohos_nweb/src/nweb_hilog.h 34884@@ -0,0 +1,42 @@ 34885+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 34886+// Use of this source code is governed by a BSD-style license that can be 34887+// found in the LICENSE file. 34888+ 34889+#ifndef NWEB_HILOG_H 34890+#define NWEB_HILOG_H 34891+ 34892+#if defined(OHOS_NWEB) 34893+#include "hilog/log.h" 34894+constexpr OHOS::HiviewDFX::HiLogLabel kLogLabel = {LOG_APP, 0, "NWEB"}; 34895+ 34896+#define FUNC_LINE_FMT " %{public}s<%{public}d>: " 34897+ 34898+#define WVLOG_D(fmt, ...) \ 34899+ OHOS::HiviewDFX::HiLog::Debug(kLogLabel, FUNC_LINE_FMT fmt, __FUNCTION__, \ 34900+ __LINE__, ##__VA_ARGS__) 34901+#define WVLOG_I(fmt, ...) \ 34902+ OHOS::HiviewDFX::HiLog::Info(kLogLabel, FUNC_LINE_FMT fmt, __FUNCTION__, \ 34903+ __LINE__, ##__VA_ARGS__) 34904+#define WVLOG_W(fmt, ...) \ 34905+ OHOS::HiviewDFX::HiLog::Warn(kLogLabel, FUNC_LINE_FMT fmt, __FUNCTION__, \ 34906+ __LINE__, ##__VA_ARGS__) 34907+#define WVLOG_E(fmt, ...) \ 34908+ OHOS::HiviewDFX::HiLog::Error(kLogLabel, FUNC_LINE_FMT fmt, __FUNCTION__, \ 34909+ __LINE__, ##__VA_ARGS__) 34910+#define WVLOG_F(fmt, ...) \ 34911+ OHOS::HiviewDFX::HiLog::Fatal(kLogLabel, FUNC_LINE_FMT fmt, __FUNCTION__, \ 34912+ __LINE__, ##__VA_ARGS__) 34913+ 34914+#else // not OHOS_NWEB 34915+ 34916+#define WVLOG(fmt, ...) 34917+ 34918+#define WVLOG_D(fmt, ...) WVLOG(fmt, ##__VA_ARGS__) 34919+#define WVLOG_I(fmt, ...) WVLOG(fmt, ##__VA_ARGS__) 34920+#define WVLOG_W(fmt, ...) WVLOG(fmt, ##__VA_ARGS__) 34921+#define WVLOG_E(fmt, ...) WVLOG(fmt, ##__VA_ARGS__) 34922+#define WVLOG_F(fmt, ...) WVLOG(fmt, ##__VA_ARGS__) 34923+ 34924+#endif // OHOS_NWEB 34925+ 34926+#endif // NWEB_HILOG_H 34927diff --git a/ohos_nweb/src/nweb_impl.cc b/ohos_nweb/src/nweb_impl.cc 34928new file mode 100755 34929index 0000000000..925a5561ef 34930--- /dev/null 34931+++ b/ohos_nweb/src/nweb_impl.cc 34932@@ -0,0 +1,426 @@ 34933+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 34934+// Use of this source code is governed by a BSD-style license that can be 34935+// found in the LICENSE file. 34936+ 34937+#include "nweb_impl.h" 34938+ 34939+#include <unistd.h> 34940+#include <cerrno> 34941+#include <iostream> 34942+#include <map> 34943+#include <string> 34944+#include <thread> 34945+#include "nweb_delegate_adapter.h" 34946+#include "nweb_export.h" 34947+#include "nweb_handler.h" 34948+#include "nweb_hilog.h" 34949+ 34950+namespace { 34951+uint32_t g_nweb_count = 0; 34952+const uint32_t kSurfaceMaxWidth = 7680; 34953+const uint32_t kSurfaceMaxHeight = 7680; 34954+} 34955+ 34956+using namespace OHOS::NWeb; 34957+extern "C" OHOS_NWEB_EXPORT NWeb* CreateNWeb( 34958+ const NWebCreateInfo& create_info) { 34959+ static uint32_t current_nweb_id = 0; 34960+ uint32_t nweb_id = ++current_nweb_id; 34961+ WVLOG_I("creating nweb %{public}u, size %{public}u*%{public}u", nweb_id, 34962+ create_info.width, create_info.height); 34963+ auto nweb = new NWebImpl(nweb_id); 34964+ if (nweb == nullptr) { 34965+ WVLOG_E("fail to create nweb instance"); 34966+ return nullptr; 34967+ } 34968+ 34969+ if (!nweb->Init(create_info)) { 34970+ WVLOG_E("fail to init nweb"); 34971+ return nullptr; 34972+ } 34973+ 34974+ ++g_nweb_count; 34975+ return nweb; 34976+} 34977+ 34978+namespace OHOS::NWeb { 34979+NWebImpl::NWebImpl(uint32_t id) : nweb_id_(id) {} 34980+ 34981+bool NWebImpl::Init(const NWebCreateInfo& create_info) { 34982+ output_handler_ = NWebOutputHandler::Create( 34983+ create_info.width, create_info.height, create_info.output_render_frame); 34984+ if (output_handler_ == nullptr) { 34985+ return false; 34986+ } 34987+ output_handler_->SetNWebId(nweb_id_); 34988+ 34989+ ProcessInitArgs(create_info.init_args); 34990+ 34991+ if (!InitWebEngine()) { 34992+ WVLOG_E("web engine init fail"); 34993+ return false; 34994+ } 34995+ 34996+ input_handler_ = NWebInputHandler::Create(nweb_delegate_); 34997+ if (input_handler_ == nullptr) { 34998+ return false; 34999+ } 35000+ 35001+ return true; 35002+} 35003+ 35004+void NWebImpl::OnDestroy() { 35005+ if (g_nweb_count == 0) { 35006+ return; 35007+ } 35008+ bool is_close_all = (--g_nweb_count) == 0 ? true : false; 35009+ if (nweb_delegate_ != nullptr) { 35010+ nweb_delegate_->OnDestroy(is_close_all); 35011+ nweb_delegate_ = nullptr; 35012+ } 35013+ if (input_handler_ != nullptr) { 35014+ input_handler_->OnDestroy(); 35015+ } 35016+} 35017+ 35018+void NWebImpl::ProcessInitArgs(const NWebInitArgs& init_args) { 35019+ if (!init_args.dump_path.empty() && output_handler_ != nullptr) { 35020+ output_handler_->SetDumpPath(init_args.dump_path); 35021+ } 35022+ if (init_args.frame_info_dump && output_handler_ != nullptr) { 35023+ output_handler_->SetFrameInfoDump(init_args.frame_info_dump); 35024+ } 35025+ 35026+ InitWebEngineArgs(init_args); 35027+} 35028+ 35029+bool NWebImpl::InitWebEngine() { 35030+ if (web_engine_args_.empty()) { 35031+ WVLOG_E("fail to init web engine args"); 35032+ return false; 35033+ } 35034+ 35035+ int argc = web_engine_args_.size(); 35036+ const char** argv = new const char*[argc]; 35037+ int i = 0; 35038+ for (auto it = web_engine_args_.begin(); i < argc; ++i, ++it) { 35039+ argv[i] = it->c_str(); 35040+ } 35041+ 35042+ nweb_delegate_ = NWebDelegateAdapter::CreateNWebDelegate(argc, argv); 35043+ if (nweb_delegate_ == nullptr) { 35044+ WVLOG_E("fail to create nweb delegate of web engine"); 35045+ return false; 35046+ } 35047+ 35048+ std::weak_ptr<NWebOutputHandler> output_handler_weak(output_handler_); 35049+ auto render_update_cb = [output_handler_weak](const char* buffer) -> void { 35050+ if (!output_handler_weak.expired()) { 35051+ output_handler_weak.lock()->OnRenderUpdate(buffer); 35052+ } 35053+ }; 35054+ 35055+ uint32_t width, height; 35056+ output_handler_->GetWindowInfo(width, height); 35057+ nweb_delegate_->Resize(width, height); 35058+ nweb_delegate_->RegisterRenderCb(render_update_cb); 35059+ 35060+ inputmethod_handler_ = new NWebInputMethodHandler(); 35061+ nweb_delegate_->SetInputMethodClient(inputmethod_handler_); 35062+ 35063+ delete[] argv; 35064+ return nweb_delegate_->IsReady(); 35065+} 35066+ 35067+void NWebImpl::InitWebEngineArgs(const NWebInitArgs& init_args) { 35068+ web_engine_args_.clear(); 35069+ web_engine_args_.emplace_back("/system/bin/web_render"); 35070+ web_engine_args_.emplace_back("--in-process-gpu"); 35071+ web_engine_args_.emplace_back("--disable-dev-shm-usage"); 35072+ web_engine_args_.emplace_back("--no-unsandboxed-zygote"); 35073+ web_engine_args_.emplace_back("--off-screen-frame-rate=60"); 35074+ web_engine_args_.emplace_back("--enable-features=UseOzonePlatform"); 35075+ web_engine_args_.emplace_back("-ozone-platform=headless"); 35076+ web_engine_args_.emplace_back("--no-sandbox"); 35077+ web_engine_args_.emplace_back("--ignore-certificate-errors"); 35078+ web_engine_args_.emplace_back("--use-mobile-user-agent"); 35079+ web_engine_args_.emplace_back( 35080+ "--browser-subprocess-path=/system/bin/web_render"); 35081+ web_engine_args_.emplace_back("--zygote-cmd-prefix=/system/bin/web_render"); 35082+ 35083+ for (auto arg : init_args.web_engine_args_to_delete) { 35084+ auto it = std::find(web_engine_args_.begin(), web_engine_args_.end(), arg); 35085+ if (it != web_engine_args_.end()) { 35086+ web_engine_args_.erase(it); 35087+ } 35088+ } 35089+ for (auto arg : init_args.web_engine_args_to_add) { 35090+ web_engine_args_.emplace_back(arg); 35091+ } 35092+ if (init_args.multi_renderer_process) { 35093+ web_engine_args_.emplace_back("--enable-multi-renderer-process"); 35094+ } 35095+} 35096+ 35097+void NWebImpl::PutDownloadCallback( 35098+ std::shared_ptr<NWebDownloadCallback> downloadListener) { 35099+ nweb_delegate_->RegisterDownLoadListener(downloadListener); 35100+} 35101+ 35102+void NWebImpl::SetNWebHandler(std::shared_ptr<NWebHandler> client) { 35103+ nweb_handle_ = client; 35104+ nweb_delegate_->RegisterNWebHandler(client); 35105+ client->SetNWeb(shared_from_this()); 35106+} 35107+ 35108+const std::shared_ptr<NWebHandler> NWebImpl::GetNWebHandler() const { 35109+ return nweb_handle_; 35110+} 35111+ 35112+void NWebImpl::Resize(uint32_t width, uint32_t height) { 35113+ if (input_handler_ == nullptr || output_handler_ == nullptr) { 35114+ return; 35115+ } 35116+ if (width > kSurfaceMaxWidth || height > kSurfaceMaxHeight) { 35117+ return; 35118+ } 35119+ nweb_delegate_->Resize(width, height); 35120+ output_handler_->Resize(width, height); 35121+} 35122+ 35123+void NWebImpl::OnTouchPress(int32_t id, double x, double y) { 35124+ if (input_handler_ == nullptr) { 35125+ return; 35126+ } 35127+ input_handler_->OnTouchPress(id, x, y); 35128+} 35129+ 35130+void NWebImpl::OnTouchRelease(int32_t id, double x, double y) { 35131+ if (input_handler_ == nullptr) { 35132+ return; 35133+ } 35134+ input_handler_->OnTouchRelease(id, x, y); 35135+} 35136+ 35137+void NWebImpl::OnTouchMove(int32_t id, double x, double y) { 35138+ if (input_handler_ == nullptr) { 35139+ return; 35140+ } 35141+ input_handler_->OnTouchMove(id, x, y); 35142+} 35143+ 35144+void NWebImpl::OnTouchCancel() { 35145+ if (input_handler_ == nullptr) { 35146+ return; 35147+ } 35148+ input_handler_->OnTouchCancel(); 35149+} 35150+ 35151+void NWebImpl::OnNavigateBack() { 35152+ if (input_handler_ == nullptr) { 35153+ return; 35154+ } 35155+ input_handler_->OnNavigateBack(); 35156+} 35157+ 35158+void NWebImpl::Load(const std::string& url) const { 35159+ if (nweb_delegate_ == nullptr || output_handler_ == nullptr) { 35160+ return; 35161+ } 35162+ 35163+ if (!output_handler_->IsSizeValid()) { 35164+ WVLOG_E("nweb size is invalid, stop Load"); 35165+ return; 35166+ } 35167+ 35168+ nweb_delegate_->Load(url); 35169+ output_handler_->StartRenderOutput(); 35170+} 35171+ 35172+bool NWebImpl::IsNavigatebackwardAllowed() const { 35173+ if (nweb_delegate_ == nullptr) { 35174+ return false; 35175+ } 35176+ return nweb_delegate_->IsNavigatebackwardAllowed(); 35177+} 35178+ 35179+bool NWebImpl::IsNavigateForwardAllowed() const { 35180+ if (nweb_delegate_ == nullptr) { 35181+ return false; 35182+ } 35183+ return nweb_delegate_->IsNavigateForwardAllowed(); 35184+} 35185+ 35186+bool NWebImpl::CanNavigateBackOrForward(int numSteps) const { 35187+ if (nweb_delegate_ == nullptr) { 35188+ return false; 35189+ } 35190+ return nweb_delegate_->CanNavigateBackOrForward(numSteps); 35191+} 35192+ 35193+void NWebImpl::NavigateBack() const { 35194+ if (nweb_delegate_ == nullptr) { 35195+ return; 35196+ } 35197+ nweb_delegate_->NavigateBack(); 35198+} 35199+ 35200+void NWebImpl::NavigateForward() const { 35201+ if (nweb_delegate_ == nullptr) { 35202+ return; 35203+ } 35204+ nweb_delegate_->NavigateForward(); 35205+} 35206+ 35207+void NWebImpl::Reload() const { 35208+ if (nweb_delegate_ == nullptr) { 35209+ return; 35210+ } 35211+ nweb_delegate_->Reload(); 35212+} 35213+ 35214+void NWebImpl::Zoom(float zoomFactor) const { 35215+ if (nweb_delegate_ == nullptr) { 35216+ return; 35217+ } 35218+ nweb_delegate_->Zoom(zoomFactor); 35219+} 35220+ 35221+void NWebImpl::Stop() const { 35222+ if (nweb_delegate_ == nullptr) { 35223+ return; 35224+ } 35225+ nweb_delegate_->Stop(); 35226+} 35227+ 35228+void NWebImpl::ExecuteJavaScript(const std::string& code) const { 35229+ if (nweb_delegate_ == nullptr) { 35230+ return; 35231+ } 35232+ nweb_delegate_->ExecuteJavaScript(code); 35233+} 35234+ 35235+void NWebImpl::PutBackgroundColor(int color) const { 35236+ if (nweb_delegate_ == nullptr) { 35237+ return; 35238+ } 35239+ nweb_delegate_->PutBackgroundColor(color); 35240+} 35241+ 35242+void NWebImpl::OnPause() const { 35243+ if (nweb_delegate_ == nullptr) { 35244+ return; 35245+ } 35246+ nweb_delegate_->OnPause(); 35247+} 35248+ 35249+void NWebImpl::OnContinue() const { 35250+ if (nweb_delegate_ == nullptr) { 35251+ return; 35252+ } 35253+ nweb_delegate_->OnContinue(); 35254+} 35255+ 35256+const std::shared_ptr<NWebPreference> NWebImpl::GetPreference() const { 35257+ if (nweb_delegate_ == nullptr) { 35258+ return nullptr; 35259+ } 35260+ return nweb_delegate_->GetPreference(); 35261+} 35262+ 35263+std::string NWebImpl::Title() { 35264+ if (nweb_delegate_ == nullptr) { 35265+ return ""; 35266+ } 35267+ return nweb_delegate_->Title(); 35268+} 35269+ 35270+const HitTestResult NWebImpl::GetHitTestResult() const { 35271+ return nweb_delegate_->GetHitTestResult(); 35272+} 35273+ 35274+int NWebImpl::PageLoadProgress() { 35275+ if (nweb_delegate_ == nullptr) { 35276+ return 0; 35277+ } 35278+ return nweb_delegate_->PageLoadProgress(); 35279+} 35280+ 35281+int NWebImpl::ContentHeight() { 35282+ if (nweb_delegate_ == nullptr) { 35283+ return 0; 35284+ } 35285+ return nweb_delegate_->ContentHeight(); 35286+} 35287+ 35288+float NWebImpl::Scale() { 35289+ if (nweb_delegate_ == nullptr) { 35290+ return 0; 35291+ } 35292+ return nweb_delegate_->Scale(); 35293+} 35294+ 35295+void NWebImpl::Load(std::string& url, 35296+ std::map<std::string, std::string> additionalHttpHeaders) { 35297+ if (nweb_delegate_ == nullptr) { 35298+ return; 35299+ } 35300+ return nweb_delegate_->Load(url, additionalHttpHeaders); 35301+} 35302+ 35303+void NWebImpl::LoadWithDataAndBaseUrl(const std::string& baseUrl, 35304+ const std::string& data, 35305+ const std::string& mimeType, 35306+ const std::string& encoding, 35307+ const std::string& historyUrl) { 35308+ if (nweb_delegate_ == nullptr) { 35309+ return; 35310+ } 35311+ return nweb_delegate_->LoadWithDataAndBaseUrl(baseUrl, data, mimeType, 35312+ encoding, historyUrl); 35313+} 35314+ 35315+void NWebImpl::LoadWithData(const std::string& data, 35316+ const std::string& mimeType, 35317+ const std::string& encoding) { 35318+ if (nweb_delegate_ == nullptr) { 35319+ return; 35320+ } 35321+ return nweb_delegate_->LoadWithData(data, mimeType, encoding); 35322+} 35323+ 35324+void NWebImpl::RegisterArkJSfunction( 35325+ const std::string& object_name, 35326+ const std::vector<std::string>& method_list) { 35327+ if (nweb_delegate_ == nullptr) { 35328+ return; 35329+ } 35330+ return nweb_delegate_->RegisterArkJSfunction(object_name, method_list); 35331+} 35332+ 35333+void NWebImpl::UnregisterArkJSfunction( 35334+ const std::string& object_name, 35335+ const std::vector<std::string>& method_list) { 35336+ if (nweb_delegate_ == nullptr) { 35337+ return; 35338+ } 35339+ return nweb_delegate_->UnregisterArkJSfunction(object_name, method_list); 35340+} 35341+ 35342+void NWebImpl::SetNWebJavaScriptResultCallBack( 35343+ std::shared_ptr<NWebJavaScriptResultCallBack> callback) { 35344+ if (nweb_delegate_ == nullptr) { 35345+ return; 35346+ } 35347+ nweb_delegate_->RegisterNWebJavaScriptCallBack(callback); 35348+} 35349+ 35350+void NWebImpl::ExecuteJavaScript( 35351+ const std::string& code, 35352+ std::shared_ptr<NWebValueCallback<std::string>> callback) const { 35353+ if (nweb_delegate_ == nullptr) { 35354+ return; 35355+ } 35356+ nweb_delegate_->ExecuteJavaScript(code, callback); 35357+} 35358+} // namespace OHOS::NWeb 35359diff --git a/ohos_nweb/src/nweb_impl.h b/ohos_nweb/src/nweb_impl.h 35360new file mode 100755 35361index 0000000000..559f8487f2 35362--- /dev/null 35363+++ b/ohos_nweb/src/nweb_impl.h 35364@@ -0,0 +1,99 @@ 35365+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 35366+// Use of this source code is governed by a BSD-style license that can be 35367+// found in the LICENSE file. 35368+ 35369+#ifndef NWEB_IMPL_H 35370+#define NWEB_IMPL_H 35371+ 35372+#include <condition_variable> 35373+#include <list> 35374+#include <memory> 35375+#include <mutex> 35376+#include <vector> 35377+#include "nweb_download_callback.h" 35378+#include "nweb.h" 35379+#include "nweb_input_handler.h" 35380+#include "nweb_inputmethod_handler.h" 35381+#include "nweb_output_handler.h" 35382+ 35383+namespace OHOS::NWeb { 35384+class NWebImpl : public NWeb { 35385+ public: 35386+ NWebImpl(uint32_t id); 35387+ ~NWebImpl() = default; 35388+ 35389+ bool Init(const NWebCreateInfo& create_info); 35390+ void OnDestroy() override; 35391+ 35392+ /* event interface */ 35393+ void Resize(uint32_t width, uint32_t height) override; 35394+ void OnTouchPress(int32_t id, double x, double y) override; 35395+ void OnTouchRelease(int32_t id, double x, double y) override; 35396+ void OnTouchMove(int32_t id, double x, double y) override; 35397+ void OnTouchCancel() override; 35398+ void OnNavigateBack() override; 35399+ 35400+ // public api 35401+ void Load(const std::string& url) const override; 35402+ bool IsNavigatebackwardAllowed() const override; 35403+ bool IsNavigateForwardAllowed() const override; 35404+ bool CanNavigateBackOrForward(int numSteps) const override; 35405+ void NavigateBack() const override; 35406+ void NavigateForward() const override; 35407+ void Reload() const override; 35408+ void Zoom(float zoomFactor) const override; 35409+ void Stop() const override; 35410+ void ExecuteJavaScript(const std::string& code) const override; 35411+ void ExecuteJavaScript( 35412+ const std::string& code, 35413+ std::shared_ptr<NWebValueCallback<std::string>> callback) const override; 35414+ void PutBackgroundColor(int color) const override; 35415+ void OnPause() const override; 35416+ void OnContinue() const override; 35417+ const std::shared_ptr<NWebPreference> GetPreference() const override; 35418+ void PutDownloadCallback( 35419+ std::shared_ptr<NWebDownloadCallback> downloadListener) override; 35420+ void SetNWebHandler(std::shared_ptr<NWebHandler> handler) override; 35421+ const std::shared_ptr<NWebHandler> GetNWebHandler() const override; 35422+ std::string Title() override; 35423+ const HitTestResult GetHitTestResult() const override; 35424+ int PageLoadProgress() override; 35425+ int ContentHeight() override; 35426+ float Scale() override; 35427+ void Load(std::string& url, 35428+ std::map<std::string, std::string> additionalHttpHeaders) override; 35429+ void LoadWithDataAndBaseUrl(const std::string& baseUrl, 35430+ const std::string& data, 35431+ const std::string& mimeType, 35432+ const std::string& encoding, 35433+ const std::string& historyUrl) override; 35434+ void LoadWithData(const std::string& data, 35435+ const std::string& mimeType, 35436+ const std::string& encoding) override; 35437+ void RegisterArkJSfunction( 35438+ const std::string& object_name, 35439+ const std::vector<std::string>& method_list) override; 35440+ void UnregisterArkJSfunction( 35441+ const std::string& object_name, 35442+ const std::vector<std::string>& method_list) override; 35443+ void SetNWebJavaScriptResultCallBack( 35444+ std::shared_ptr<NWebJavaScriptResultCallBack> callback) override; 35445+ 35446+ private: 35447+ void ProcessInitArgs(const NWebInitArgs& init_args); 35448+ void InitWebEngineArgs(const NWebInitArgs& init_args); 35449+ bool InitWebEngine(); 35450+ 35451+ private: 35452+ uint32_t nweb_id_ = 0; 35453+ std::shared_ptr<NWebHandler> nweb_handle_ = nullptr; 35454+ std::shared_ptr<NWebOutputHandler> output_handler_ = nullptr; 35455+ std::shared_ptr<NWebInputHandler> input_handler_ = nullptr; 35456+ CefRefPtr<NWebInputMethodHandler> inputmethod_handler_ = nullptr; 35457+ 35458+ std::shared_ptr<NWebDelegateInterface> nweb_delegate_ = nullptr; 35459+ std::list<std::string> web_engine_args_; 35460+}; 35461+} // namespace OHOS::NWeb 35462+ 35463+#endif // NWEB_IMPL_H 35464diff --git a/ohos_nweb/src/nweb_input_handler.cc b/ohos_nweb/src/nweb_input_handler.cc 35465new file mode 100644 35466index 0000000000..710cbc5df4 35467--- /dev/null 35468+++ b/ohos_nweb/src/nweb_input_handler.cc 35469@@ -0,0 +1,119 @@ 35470+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 35471+// Use of this source code is governed by a BSD-style license that can be 35472+// found in the LICENSE file. 35473+ 35474+#include "nweb_input_handler.h" 35475+#include "nweb_hilog.h" 35476+ 35477+namespace OHOS::NWeb { 35478+// static 35479+std::shared_ptr<NWebInputHandler> NWebInputHandler::Create( 35480+ std::shared_ptr<NWebDelegateInterface> nweb_delegate) { 35481+ auto input_handler = std::make_shared<NWebInputHandler>(nweb_delegate); 35482+ if (input_handler == nullptr) { 35483+ WVLOG_E("fail to create NWebOutputHandler instance"); 35484+ return nullptr; 35485+ } 35486+ input_handler->Init(); 35487+ return input_handler; 35488+} 35489+ 35490+NWebInputHandler::NWebInputHandler( 35491+ std::shared_ptr<NWebDelegateInterface> nweb_delegate) 35492+ : nweb_delegate_(nweb_delegate) {} 35493+ 35494+bool NWebInputHandler::Init() { 35495+ return true; 35496+} 35497+ 35498+void NWebInputHandler::OnDestroy() { 35499+ nweb_delegate_ = nullptr; 35500+} 35501+ 35502+void NWebInputHandler::OnTouchPress(int32_t id, double x, double y) { 35503+ if (nweb_delegate_ == nullptr) { 35504+ return; 35505+ } 35506+ nweb_delegate_->OnTouchPress(id, x, y); 35507+ 35508+ touch_press_id_map_[id] = true; 35509+ last_touch_start_x_ = x; 35510+ last_x_ = x; 35511+ last_y_ = y; 35512+} 35513+ 35514+void NWebInputHandler::OnTouchRelease(int32_t id, double x, double y) { 35515+ if (nweb_delegate_ == nullptr) { 35516+ return; 35517+ } 35518+ if (x == 0 && y == 0) { 35519+ x = last_x_; 35520+ y = last_y_; 35521+ } 35522+ nweb_delegate_->OnTouchRelease(id, x, y); 35523+ CheckSlideNavigation(last_touch_start_x_, x); 35524+ touch_press_id_map_.erase(id); 35525+} 35526+ 35527+void NWebInputHandler::OnTouchMove(int32_t id, double x, double y) { 35528+ if (nweb_delegate_ == nullptr) { 35529+ return; 35530+ } 35531+ 35532+ // For multi-finger touch-move event get from ArkUI, some fingers may start 35533+ // move without previous touch-press event, which may cause these fingers 35534+ // unrecognized by web_engine, and multi-finger gestures like pinch unsupport. 35535+ // For this reason, the first touch-move event would be treated as touch-press 35536+ // event. 35537+ if (touch_press_id_map_.find(id) == touch_press_id_map_.end() || 35538+ !touch_press_id_map_.at(id)) { 35539+ this->OnTouchPress(id, x, y); 35540+ } 35541+ 35542+ nweb_delegate_->OnTouchMove(id, x, y); 35543+ last_x_ = x; 35544+ last_y_ = y; 35545+} 35546+ 35547+void NWebInputHandler::OnTouchCancel() { 35548+ if (nweb_delegate_ == nullptr) { 35549+ return; 35550+ } 35551+ nweb_delegate_->OnTouchCancel(); 35552+} 35553+ 35554+void NWebInputHandler::OnNavigateBack() { 35555+ if (nweb_delegate_ == nullptr) { 35556+ return; 35557+ } 35558+ WVLOG_I("receive key navigate back"); 35559+ if (nweb_delegate_->IsNavigatebackwardAllowed()) { 35560+ WVLOG_I("do navigate back"); 35561+ nweb_delegate_->NavigateBack(); 35562+ } 35563+} 35564+ 35565+void NWebInputHandler::CheckSlideNavigation(int16_t start_x, int16_t end_x) { 35566+ if (nweb_delegate_ == nullptr) { 35567+ return; 35568+ } 35569+ 35570+ constexpr int16_t kTriggerDistance = 100; 35571+ constexpr int16_t kScreenWidth = 2560; 35572+ constexpr int16_t kEdgeWidth = 10; 35573+ if (start_x < kEdgeWidth && (end_x - start_x) > kTriggerDistance) { 35574+ WVLOG_I("receive slide navigate back"); 35575+ if (nweb_delegate_->IsNavigatebackwardAllowed()) { 35576+ WVLOG_I("do navigate back"); 35577+ nweb_delegate_->NavigateBack(); 35578+ } 35579+ } else if (start_x > (kScreenWidth - kEdgeWidth) && 35580+ (start_x - end_x) > kTriggerDistance) { 35581+ WVLOG_I("receive slide navigate forward"); 35582+ if (nweb_delegate_->IsNavigateForwardAllowed()) { 35583+ WVLOG_I("do navigate forward"); 35584+ nweb_delegate_->NavigateForward(); 35585+ } 35586+ } 35587+} 35588+} // namespace OHOS::NWeb 35589diff --git a/ohos_nweb/src/nweb_input_handler.h b/ohos_nweb/src/nweb_input_handler.h 35590new file mode 100644 35591index 0000000000..ee88ec0055 35592--- /dev/null 35593+++ b/ohos_nweb/src/nweb_input_handler.h 35594@@ -0,0 +1,44 @@ 35595+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 35596+// Use of this source code is governed by a BSD-style license that can be 35597+// found in the LICENSE file. 35598+ 35599+#ifndef NWEB_INPUT_HANDLER_H 35600+#define NWEB_INPUT_HANDLER_H 35601+ 35602+#include <memory> 35603+#include <unordered_map> 35604+#include "nweb_delegate_interface.h" 35605+ 35606+namespace OHOS::NWeb { 35607+class NWebInputHandler { 35608+ public: 35609+ static std::shared_ptr<NWebInputHandler> Create( 35610+ std::shared_ptr<NWebDelegateInterface> nweb_delegate); 35611+ 35612+ NWebInputHandler( 35613+ std::shared_ptr<NWebDelegateInterface> nweb_delegate); 35614+ ~NWebInputHandler() = default; 35615+ 35616+ bool Init(); 35617+ void OnDestroy(); 35618+ 35619+ /* event interface */ 35620+ void OnTouchPress(int32_t id, double x, double y); 35621+ void OnTouchRelease(int32_t id, double x, double y); 35622+ void OnTouchMove(int32_t id, double x, double y); 35623+ void OnTouchCancel(); 35624+ void OnNavigateBack(); 35625+ 35626+ private: 35627+ void CheckSlideNavigation(int16_t start_x, int16_t end_x); 35628+ 35629+ private: 35630+ std::shared_ptr<NWebDelegateInterface> nweb_delegate_; 35631+ int32_t last_touch_start_x_ = -1; 35632+ double last_x_ = -1; 35633+ double last_y_ = -1; 35634+ std::unordered_map<uint32_t, bool> touch_press_id_map_; 35635+}; 35636+} 35637+ 35638+#endif // NWEB_INPUT_HANDLER_H 35639diff --git a/ohos_nweb/src/nweb_inputmethod_handler.cc b/ohos_nweb/src/nweb_inputmethod_handler.cc 35640new file mode 100644 35641index 0000000000..0456edc290 35642--- /dev/null 35643+++ b/ohos_nweb/src/nweb_inputmethod_handler.cc 35644@@ -0,0 +1,214 @@ 35645+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 35646+// Use of this source code is governed by a BSD-style license that can be 35647+// found in the LICENSE file. 35648+ 35649+#include "nweb_inputmethod_handler.h" 35650+ 35651+#include <input_method_controller.h> 35652+#include <input_method_utils.h> 35653+ 35654+#include "base/bind.h" 35655+#include "base/callback.h" 35656+#include "base/callback_helpers.h" 35657+#include "base/logging.h" 35658+#include "cef/include/cef_task.h" 35659+#include "content/public/browser/browser_thread.h" 35660+#include "libcef/browser/thread_util.h" 35661+ 35662+namespace OHOS::NWeb { 35663+class OnTextChangedListenerImpl 35664+ : public OHOS::MiscServices::OnTextChangedListener { 35665+ public: 35666+ OnTextChangedListenerImpl(NWebInputMethodHandler* handler) 35667+ : handler_(handler) {} 35668+ 35669+ // All following listenser callbacks should invoke call on UI thread 35670+ void InsertText(const std::u16string& text) override { 35671+ handler_->InsertText(text); 35672+ } 35673+ 35674+ void DeleteForward(int32_t length) override { 35675+ handler_->DeleteForward(length); 35676+ } 35677+ 35678+ void DeleteBackward(int32_t length) override { 35679+ handler_->DeleteBackward(length); 35680+ } 35681+ 35682+ void SendKeyEventFromInputMethod( 35683+ const OHOS::MiscServices::KeyEvent& event) override { 35684+ LOG(INFO) << "NWebInputMethodHandler::DeleteBackward"; 35685+ } 35686+ 35687+ void SendKeyboardInfo(const OHOS::MiscServices::KeyboardInfo& info) override { 35688+ 35689+ } 35690+ 35691+ void SetKeyboardStatus(bool status) override { 35692+ handler_->SetIMEStatus(status); 35693+ } 35694+ 35695+ void MoveCursor(const OHOS::MiscServices::Direction direction) override { 35696+ LOG(INFO) << "NWebInputMethodHandler::MoveCursor "; 35697+ } 35698+ 35699+ private: 35700+ NWebInputMethodHandler* handler_; 35701+}; 35702+ 35703+// The object should be freed while keyboard hidden. 35704+OHOS::sptr<OHOS::MiscServices::OnTextChangedListener> g_listener = nullptr; 35705+ 35706+class InputMethodTask : public CefTask { 35707+ public: 35708+ explicit InputMethodTask(const base::Closure& closure) : closure_(closure) {} 35709+ 35710+ virtual void Execute() OVERRIDE { 35711+ closure_.Run(); 35712+ closure_.Reset(); 35713+ } 35714+ 35715+ private: 35716+ base::Closure closure_; 35717+ 35718+ IMPLEMENT_REFCOUNTING(InputMethodTask); 35719+ DISALLOW_COPY_AND_ASSIGN(InputMethodTask); 35720+}; 35721+ 35722+NWebInputMethodHandler::NWebInputMethodHandler() 35723+ : selected_from_(0), selected_to_(0) {} 35724+ 35725+NWebInputMethodHandler::~NWebInputMethodHandler() {} 35726+ 35727+void NWebInputMethodHandler::Attach(CefRefPtr<CefBrowser> browser) { 35728+ browser_ = browser; 35729+ if (ime_shown_) { 35730+ return; 35731+ } 35732+ 35733+ if (g_listener == nullptr) { 35734+ g_listener = new OnTextChangedListenerImpl(this); 35735+ } 35736+ OHOS::MiscServices::InputMethodController::GetInstance()->Attach(g_listener); 35737+} 35738+ 35739+void NWebInputMethodHandler::ShowTextInput() { 35740+ LOG(INFO) << "NWebInputMethodHandler::ShowTextInput"; 35741+} 35742+ 35743+void NWebInputMethodHandler::HideTextInput() { 35744+ LOG(INFO) << "NWebInputMethodHandler::HideTextInput " << ime_shown_; 35745+ OHOS::MiscServices::InputMethodController::GetInstance()->HideTextInput(); 35746+} 35747+ 35748+void NWebInputMethodHandler::OnTextSelectionChanged( 35749+ CefRefPtr<CefBrowser> browser, 35750+ const CefString& selected_text, 35751+ const CefRange& selected_range) { 35752+ selected_text_ = selected_text.ToString16(); 35753+ selected_from_ = selected_range.from; 35754+ selected_to_ = selected_range.to; 35755+ ime_text_composing_ = false; 35756+ composing_text_.clear(); 35757+} 35758+ 35759+void NWebInputMethodHandler::SetIMEStatus(bool status) { 35760+ if (browser_ != nullptr && browser_->GetHost() != nullptr) { 35761+ CefRefPtr<CefTask> insert_task = new InputMethodTask(base::Bind( 35762+ &NWebInputMethodHandler::SetIMEStatusOnUI, this, std::move(status))); 35763+ browser_->GetHost()->PostTaskToUIThread(insert_task); 35764+ } 35765+} 35766+ 35767+void NWebInputMethodHandler::InsertText(const std::u16string& text) { 35768+ if (browser_ != nullptr && browser_->GetHost() != nullptr) { 35769+ CefRefPtr<CefTask> insert_task = new InputMethodTask(base::Bind( 35770+ &NWebInputMethodHandler::InsertTextHandlerOnUI, this, std::move(text))); 35771+ browser_->GetHost()->PostTaskToUIThread(insert_task); 35772+ } 35773+} 35774+ 35775+void NWebInputMethodHandler::DeleteBackward(int32_t length) { 35776+ if (browser_ != nullptr && browser_->GetHost() != nullptr) { 35777+ CefRefPtr<CefTask> delete_task = new InputMethodTask(base::Bind( 35778+ &NWebInputMethodHandler::DeleteBackwardHandlerOnUI, this, length)); 35779+ browser_->GetHost()->PostTaskToUIThread(delete_task); 35780+ } 35781+} 35782+ 35783+void NWebInputMethodHandler::DeleteForward(int32_t length) { 35784+ if (browser_ != nullptr && browser_->GetHost() != nullptr) { 35785+ CefRefPtr<CefTask> delete_task = new InputMethodTask(base::Bind( 35786+ &NWebInputMethodHandler::DeleteForwardHandlerOnUI, this, length)); 35787+ browser_->GetHost()->PostTaskToUIThread(delete_task); 35788+ } 35789+} 35790+ 35791+void NWebInputMethodHandler::SetIMEStatusOnUI(bool status) { 35792+ if (!status && ime_text_composing_) { 35793+ browser_->GetHost()->ImeFinishComposingText(false); 35794+ ime_text_composing_ = false; 35795+ } 35796+ ime_shown_ = status; 35797+} 35798+ 35799+void NWebInputMethodHandler::InsertTextHandlerOnUI(const std::u16string& text) { 35800+ if (text.empty()) { 35801+ LOG(ERROR) << "insert text empty!"; 35802+ return; 35803+ } 35804+ 35805+ if (!ime_text_composing_) { 35806+ ime_text_composing_ = true; 35807+ composing_text_.clear(); 35808+ } 35809+ composing_text_.append(text); 35810+ 35811+ std::vector<CefCompositionUnderline> underlines; 35812+ CefRange new_range(0, static_cast<int>(composing_text_.length())); 35813+ cef_composition_underline_t line = {new_range, 0xFF000000, 0, false}; 35814+ underlines.push_back(line); 35815+ CefRange replacement_range(selected_from_, selected_to_); 35816+ CefRange selection_range(0, static_cast<int>(composing_text_.length())); 35817+ browser_->GetHost()->ImeSetComposition(CefString(composing_text_), underlines, 35818+ replacement_range, selection_range); 35819+} 35820+ 35821+void NWebInputMethodHandler::DeleteBackwardHandlerOnUI(int32_t length) { 35822+ LOG(INFO) << "DeleteBackwardHandlerOnUI unimplement" << length; 35823+} 35824+ 35825+void NWebInputMethodHandler::DeleteForwardHandlerOnUI(int32_t length) { 35826+ std::vector<CefCompositionUnderline> underlines; 35827+ if (ime_text_composing_) { 35828+ int text_length = static_cast<int>(composing_text_.length()); 35829+ int new_to = (text_length > length) ? (text_length - length) : 0; 35830+ if (new_to == 0) { 35831+ browser_->GetHost()->ImeFinishComposingText(false); 35832+ ime_text_composing_ = false; 35833+ } else { 35834+ composing_text_ = composing_text_.substr(0, new_to); 35835+ CefRange new_range(0, new_to); 35836+ cef_composition_underline_t line = {new_range, 0xFF000000, 0, false}; 35837+ underlines.push_back(line); 35838+ CefRange replacement_range(selected_from_, selected_to_); 35839+ CefRange selection_range(0, new_to); 35840+ browser_->GetHost()->ImeSetComposition( 35841+ composing_text_, underlines, replacement_range, selection_range); 35842+ } 35843+ } 35844+ 35845+ if (!ime_text_composing_) { 35846+ CefRange replace_range; 35847+ if (selected_from_ == selected_to_) { 35848+ replace_range.from = 35849+ (selected_from_ > length) ? (selected_from_ - length) : 0; 35850+ } else { 35851+ replace_range.from = selected_from_; 35852+ } 35853+ replace_range.to = selected_to_; 35854+ CefString result = CefString(""); 35855+ browser_->GetHost()->ImeCommitText(result, replace_range, 0); 35856+ } 35857+} 35858+} // namespace OHOS::NWeb 35859\ No newline at end of file 35860diff --git a/ohos_nweb/src/nweb_inputmethod_handler.h b/ohos_nweb/src/nweb_inputmethod_handler.h 35861new file mode 100644 35862index 0000000000..7fc624e2b3 35863--- /dev/null 35864+++ b/ohos_nweb/src/nweb_inputmethod_handler.h 35865@@ -0,0 +1,46 @@ 35866+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 35867+// Use of this source code is governed by a BSD-style license that can be 35868+// found in the LICENSE file. 35869+ 35870+#ifndef OHOS_NWEB_SRC_NWEB_INPUTMETHOD_HANDLER_H_ 35871+#define OHOS_NWEB_SRC_NWEB_INPUTMETHOD_HANDLER_H_ 35872+ 35873+#include "cef_delegate/nweb_inputmethod_client.h" 35874+ 35875+namespace OHOS::NWeb { 35876+class NWebInputMethodHandler : public NWebInputMethodClient { 35877+ public: 35878+ NWebInputMethodHandler(); 35879+ ~NWebInputMethodHandler(); 35880+ void Attach(CefRefPtr<CefBrowser> browser) override; 35881+ void ShowTextInput() override; 35882+ void HideTextInput() override; 35883+ void OnTextSelectionChanged(CefRefPtr<CefBrowser> browser, 35884+ const CefString& selected_text, 35885+ const CefRange& selected_range) override; 35886+ 35887+ void SetIMEStatus(bool status); 35888+ void InsertText(const std::u16string& text); 35889+ void DeleteBackward(int32_t length); 35890+ void DeleteForward(int32_t length); 35891+ 35892+ private: 35893+ void SetIMEStatusOnUI(bool status); 35894+ void InsertTextHandlerOnUI(const std::u16string& text); 35895+ void DeleteBackwardHandlerOnUI(int32_t length); 35896+ void DeleteForwardHandlerOnUI(int32_t length); 35897+ 35898+ CefRefPtr<CefBrowser> browser_; 35899+ bool ime_shown_ = false; 35900+ bool ime_text_composing_ = false; 35901+ std::u16string selected_text_; 35902+ std::u16string composing_text_; 35903+ int selected_from_; 35904+ int selected_to_; 35905+ 35906+ IMPLEMENT_REFCOUNTING(NWebInputMethodHandler); 35907+ DISALLOW_COPY_AND_ASSIGN(NWebInputMethodHandler); 35908+}; 35909+} // namespace OHOS::NWeb 35910+ 35911+#endif // OHOS_NWEB_SRC_NWEB_INPUTMETHOD_HANDLER_H_ 35912\ No newline at end of file 35913diff --git a/ohos_nweb/src/nweb_output_handler.cc b/ohos_nweb/src/nweb_output_handler.cc 35914new file mode 100644 35915index 0000000000..07ddbc0c87 35916--- /dev/null 35917+++ b/ohos_nweb/src/nweb_output_handler.cc 35918@@ -0,0 +1,296 @@ 35919+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 35920+// Use of this source code is governed by a BSD-style license that can be 35921+// found in the LICENSE file. 35922+ 35923+#include "nweb_output_handler.h" 35924+ 35925+#include <sys/time.h> 35926+#include <unistd.h> 35927+#include <cerrno> 35928+#include <cstdio> 35929+#include <cstring> 35930+#include <iomanip> 35931+#include <iostream> 35932+#include <thread> 35933+#include "nweb_hilog.h" 35934+ 35935+namespace OHOS::NWeb { 35936+namespace { 35937+#pragma pack(1) 35938+struct BmpFileHeader { 35939+ unsigned int bf_size; /* Size of file */ 35940+ unsigned short bf_reserved_1 = 0; /* Reserved */ 35941+ unsigned short bf_reserved_2 = 0; /* ... */ 35942+ unsigned int bf_offbits = 0x36; /* Offset to bitmap data */ 35943+}; 35944+ 35945+/**** BMP file info structure ****/ 35946+struct BmpInfoHeader { 35947+ unsigned int bi_size; /* Size of info header */ 35948+ int bi_width; /* Width of image */ 35949+ int bi_height; /* Height of image */ 35950+ unsigned short bi_planes = 1; /* Number of color planes */ 35951+ unsigned short bi_bit_count = 24; /* Number of bits per pixel */ 35952+ unsigned int bi_compression = 0; /* Type of compression to use */ 35953+ unsigned int bi_size_image = 0; /* Size of image data */ 35954+ int bi_x_pixels_per_meter = 5000; /* X pixels per meter */ 35955+ int bi_y_pixels_per_meter = 5000; /* Y pixels per meter */ 35956+ unsigned int bi_colors_used = 0; /* Number of colors used */ 35957+ unsigned int bi_colors_important = 0; /* Number of important colors */ 35958+}; 35959+ 35960+constexpr uint8_t kBitsPerPixel = 4; 35961+ 35962+static int64_t GetNowTime() { 35963+ struct timeval start = {}; 35964+ gettimeofday(&start, nullptr); 35965+ constexpr uint32_t kSecToUsec = 1000 * 1000; 35966+ return static_cast<int64_t>(start.tv_sec) * kSecToUsec + start.tv_usec; 35967+} 35968+} // namespace 35969+ 35970+// static 35971+std::shared_ptr<NWebOutputHandler> NWebOutputHandler::Create( 35972+ uint32_t width, 35973+ uint32_t height, 35974+ std::function<bool(const char*, uint32_t, uint32_t)> output_frame_cb) { 35975+ if (output_frame_cb == nullptr) { 35976+ WVLOG_E("NWeb user must provide valid outputFrame callback!"); 35977+ return nullptr; 35978+ } 35979+ 35980+ auto output_handler = std::make_shared<NWebOutputHandler>(output_frame_cb); 35981+ if (output_handler == nullptr) { 35982+ WVLOG_E("fail to create NWebOutputHandler instance"); 35983+ return nullptr; 35984+ } 35985+ 35986+ output_handler->Init(width, height); 35987+ 35988+ return output_handler; 35989+} 35990+ 35991+NWebOutputHandler::NWebOutputHandler( 35992+ std::function<bool(const char*, uint32_t, uint32_t)> output_frame_cb) 35993+ : output_frame_cb_(output_frame_cb) { 35994+ dump_buf_.reset(nullptr); 35995+} 35996+ 35997+void NWebOutputHandler::Init(uint32_t width, uint32_t height) { 35998+ Resize(width, height); 35999+} 36000+ 36001+void NWebOutputHandler::GetWindowInfo(uint32_t& width, uint32_t& height) { 36002+ width = width_; 36003+ height = height_; 36004+} 36005+ 36006+void NWebOutputHandler::Resize(uint32_t width, uint32_t height) { 36007+ if (width_ != width || height_ != height) { 36008+ WVLOG_I( 36009+ "NWeb size change from %{public}u*%{public}u to " 36010+ "%{public}u*%{public}u", 36011+ width_, height_, width, height); 36012+ width_ = width; 36013+ height_ = height; 36014+ frame_size_ = width_ * height_ * kBitsPerPixel; 36015+ if (!dump_path_.empty() || dump_buf_ == nullptr) { 36016+ dump_buf_.reset(new char[frame_size_]); 36017+ } 36018+ } 36019+} 36020+ 36021+void NWebOutputHandler::StartDumpToFile() { 36022+ std::weak_ptr<NWebOutputHandler> output_handler_weak(shared_from_this()); 36023+ std::thread dump_thread([output_handler_weak]() { 36024+ while (!output_handler_weak.expired() && 36025+ !output_handler_weak.lock()->dump_path_.empty()) { 36026+ auto outputHandler = output_handler_weak.lock(); 36027+ std::unique_lock<std::mutex> lk(outputHandler->dump_mtx_); 36028+ outputHandler->dump_cv_.wait(lk); 36029+ static BmpDumpHelper helper; 36030+ const std::string kFileName = "1.bmp"; 36031+ std::string full_name = outputHandler->dump_path_ + kFileName; 36032+ if (outputHandler->dump_buf_ == nullptr) { 36033+ continue; 36034+ } 36035+ helper.DumpToBmp(full_name, outputHandler->dump_buf_.get(), 36036+ outputHandler->width_, outputHandler->height_); 36037+ } 36038+ }); 36039+ dump_thread.detach(); 36040+} 36041+ 36042+void NWebOutputHandler::StartFrameStat() { 36043+ std::weak_ptr<NWebOutputHandler> output_handler_weak(shared_from_this()); 36044+ std::thread frame_stat_thread([output_handler_weak]() { 36045+ while (!output_handler_weak.expired() && 36046+ output_handler_weak.lock()->frame_info_dump_) { 36047+ { 36048+ auto output_handler = output_handler_weak.lock(); 36049+ std::unique_lock<std::mutex> lk(output_handler->frame_stat_mtx_); 36050+ if (output_handler->local_time_base_ != 36051+ output_handler->local_time_curr_) { 36052+ auto fps_cur = 1000.0 * 1000 * 36053+ (output_handler->local_render_count_ - 1) / 36054+ (output_handler->local_time_curr_ - 36055+ output_handler->local_time_base_); 36056+ WVLOG_W( 36057+ "NWeb %{public}u fps_cur=%{public}0.1f " 36058+ "frame_total_count=%{public}lld" 36059+ " frame_miss_count=%{public}lld", 36060+ output_handler->nweb_id_, fps_cur, 36061+ output_handler->render_count_, output_handler->frame_miss_count_); 36062+ std::cout << "NWeb " << output_handler->nweb_id_ 36063+ << " fps_cur=" << std::fixed << std::setprecision(1) 36064+ << fps_cur 36065+ << " frame_total_count=" << output_handler->render_count_ 36066+ << " frame_miss_count=" << output_handler->frame_miss_count_ 36067+ << std::endl; 36068+ } 36069+ output_handler->local_render_count_ = 0; 36070+ output_handler->local_time_base_ = 0; 36071+ output_handler->local_time_curr_ = 0; 36072+ } 36073+ // during sleep(), output_handler_weak should not be 36074+ // promote to shared_ptr, to avoid add refcount 36075+ constexpr int kOutoutFrameStatDur = 1; 36076+ sleep(kOutoutFrameStatDur); 36077+ } 36078+ }); 36079+ frame_stat_thread.detach(); 36080+} 36081+ 36082+void NWebOutputHandler::StartRenderOutput() { 36083+ if (!dump_path_.empty()) { 36084+ StartDumpToFile(); 36085+ } 36086+ if (frame_info_dump_) { 36087+ StartFrameStat(); 36088+ } 36089+} 36090+ 36091+void NWebOutputHandler::OnRenderUpdate(const char* buffer) { 36092+ if (output_frame_cb_ == nullptr) { 36093+ WVLOG_I("output render frame cb is not available"); 36094+ UpdateStat(false); 36095+ return; 36096+ } 36097+ 36098+ if (!output_frame_cb_(buffer, width_, height_)) { 36099+ WVLOG_W("render frame is not consumed"); 36100+ UpdateStat(false); 36101+ } else { 36102+ UpdateStat(true); 36103+ } 36104+ 36105+ if (!dump_path_.empty()) { 36106+ if (dump_buf_ != nullptr) { 36107+ std::unique_lock<std::mutex> lk(dump_mtx_); 36108+ memcpy(dump_buf_.get(), buffer, frame_size_); 36109+ dump_cv_.notify_one(); 36110+ } else { 36111+ WVLOG_E("fail to dump file. dump buffer is nullptr"); 36112+ } 36113+ } 36114+} 36115+ 36116+void NWebOutputHandler::UpdateStat(bool flag) { 36117+ if (!frame_info_dump_) { 36118+ return; 36119+ } 36120+ std::unique_lock<std::mutex> lk(frame_stat_mtx_); 36121+ local_time_curr_ = GetNowTime(); 36122+ if (local_time_base_ <= 0L) { 36123+ local_time_base_ = local_time_curr_; 36124+ } 36125+ render_count_++; 36126+ local_render_count_++; 36127+ if (!flag) { 36128+ frame_miss_count_++; 36129+ } 36130+} 36131+ 36132+void NWebOutputHandler::SetFrameInfoDump(bool flag) { 36133+ frame_info_dump_ = flag; 36134+} 36135+ 36136+void NWebOutputHandler::SetDumpPath(const std::string& path) { 36137+ dump_path_ = path; 36138+} 36139+ 36140+void NWebOutputHandler::BmpDumpHelper::DumpToBmp(const std::string& filename, 36141+ char* buf, 36142+ int width, 36143+ int height) { 36144+ RgbaToRgb(buf, width, height); 36145+ WriteToBmp(filename, buf, width, height); 36146+ WVLOG_I("save render frame to %{public}s", filename.c_str()); 36147+} 36148+ 36149+void NWebOutputHandler::BmpDumpHelper::RgbaToRgb(char* buf, 36150+ int width, 36151+ int height) { 36152+ char* p_rgba = buf; 36153+ char* p_rgb = buf; 36154+ uint64_t len = width * height * kBitsPerPixel; 36155+ for (uint64_t i = 0; i < len; i++, p_rgba++) { 36156+ if (i % 4 == 3) { 36157+ // check alpha value, if 0, set related color to white 36158+ if (buf[i] == 0) { 36159+ *(p_rgb - 3) = 255; 36160+ *(p_rgb - 2) = 255; 36161+ *(p_rgb - 1) = 255; 36162+ } 36163+ continue; 36164+ } 36165+ *p_rgb++ = *p_rgba; 36166+ if (i % 4 == 2) { 36167+ char tmp = *(p_rgb - 1); 36168+ *(p_rgb - 1) = *(p_rgb - 3); 36169+ *(p_rgb - 3) = tmp; 36170+ } 36171+ } 36172+} 36173+ 36174+void NWebOutputHandler::BmpDumpHelper::WriteToBmp( 36175+ const std::string& filename, 36176+ char* buf, 36177+ int width, 36178+ int height) { 36179+ BmpFileHeader bmp_file_header; 36180+ BmpInfoHeader bmp_info_header; 36181+ // Magic number for file. It does not fit in the header structure 36182+ // due to alignment requirements, so put it outside 36183+ unsigned short bmp_file_type = 0x4d42; 36184+ constexpr int kRgbBitsPerPixel = 3; 36185+ int rgb_buf_size = width * height * kRgbBitsPerPixel; 36186+ bmp_file_header.bf_size = 36187+ sizeof(BmpFileHeader) + sizeof(BmpInfoHeader) + rgb_buf_size; 36188+ bmp_info_header.bi_size = sizeof(BmpInfoHeader); 36189+ bmp_info_header.bi_width = width; 36190+ bmp_info_header.bi_height = -height; 36191+ 36192+ FILE* file = fopen(filename.c_str(), "wb"); 36193+ if (!file) { 36194+ WVLOG_E("FAIL to open %{public}s", filename.c_str()); 36195+ return; 36196+ } 36197+ 36198+ // Write headers 36199+ fwrite(&bmp_file_type, sizeof(bmp_file_type), 1, file); 36200+ fwrite(&bmp_file_header, sizeof(bmp_file_header), 1, file); 36201+ fwrite(&bmp_info_header, sizeof(bmp_info_header), 1, file); 36202+ fwrite(buf, rgb_buf_size, 1, file); 36203+ fclose(file); 36204+} 36205+ 36206+void NWebOutputHandler::SetNWebId(uint32_t id) { 36207+ nweb_id_ = id; 36208+} 36209+ 36210+bool NWebOutputHandler::IsSizeValid() 36211+{ 36212+ return (width_ > 0) && (height_ > 0); 36213+} 36214+} // namespace OHOS::NWeb 36215\ No newline at end of file 36216diff --git a/ohos_nweb/src/nweb_output_handler.h b/ohos_nweb/src/nweb_output_handler.h 36217new file mode 100644 36218index 0000000000..0954f3f7a5 36219--- /dev/null 36220+++ b/ohos_nweb/src/nweb_output_handler.h 36221@@ -0,0 +1,81 @@ 36222+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 36223+// Use of this source code is governed by a BSD-style license that can be 36224+// found in the LICENSE file. 36225+ 36226+#ifndef NWEB_OUTPUT_HANDLER_H 36227+#define NWEB_OUTPUT_HANDLER_H 36228+ 36229+#include <condition_variable> 36230+#include <functional> 36231+#include <memory> 36232+#include <mutex> 36233+ 36234+namespace OHOS::NWeb { 36235+class NWebOutputHandler 36236+ : public std::enable_shared_from_this<NWebOutputHandler> { 36237+ public: 36238+ static std::shared_ptr<NWebOutputHandler> Create( 36239+ uint32_t width, 36240+ uint32_t height, 36241+ std::function<bool(const char*, uint32_t, uint32_t)> output_frame_cb); 36242+ 36243+ NWebOutputHandler( 36244+ std::function<bool(const char*, uint32_t, uint32_t)> output_frame_cb); 36245+ ~NWebOutputHandler() = default; 36246+ 36247+ void Init(uint32_t width, uint32_t height); 36248+ void GetWindowInfo(uint32_t& width, uint32_t& height); 36249+ void Resize(uint32_t width, uint32_t height); 36250+ void OnRenderUpdate(const char* buffer); 36251+ void SetFrameInfoDump(bool flag); 36252+ void StartFrameStat(); 36253+ void SetDumpPath(const std::string& path); 36254+ void StartRenderOutput(); 36255+ void SetNWebId(uint32_t id); 36256+ bool IsSizeValid(); 36257+ 36258+ private: 36259+ class BmpDumpHelper { 36260+ public: 36261+ void DumpToBmp(const std::string& filename, 36262+ char* buf, 36263+ int width, 36264+ int height); 36265+ 36266+ private: 36267+ void RgbaToRgb(char* buf, int width, int height); 36268+ void WriteToBmp(const std::string& filename, 36269+ char* buf, 36270+ int width, 36271+ int height); 36272+ }; 36273+ 36274+ void StartDumpToFile(); 36275+ void UpdateStat(bool flag); 36276+ 36277+ private: 36278+ uint32_t width_ = 0; 36279+ uint32_t height_ = 0; 36280+ uint32_t frame_size_ = 0; 36281+ 36282+ std::function<bool(const char*, uint32_t, uint32_t)> output_frame_cb_; 36283+ 36284+ std::string dump_path_; 36285+ std::mutex dump_mtx_; 36286+ std::condition_variable dump_cv_; 36287+ std::unique_ptr<char> dump_buf_; 36288+ 36289+ /* stat info */ 36290+ bool frame_info_dump_ = false; 36291+ std::mutex frame_stat_mtx_; 36292+ int64_t render_count_ = 0L; 36293+ int64_t local_render_count_ = 0L; 36294+ int64_t local_time_base_ = 0L; 36295+ int64_t local_time_curr_ = 0L; 36296+ int64_t frame_miss_count_ = 0L; 36297+ 36298+ uint32_t nweb_id_ = 0; 36299+}; 36300+} // namespace OHOS::NWeb 36301+ 36302+#endif // NWEB_OUTPUT_HANDLER_H 36303diff --git a/ohos_nweb/src/nweb_url_resource_error_impl.h b/ohos_nweb/src/nweb_url_resource_error_impl.h 36304new file mode 100644 36305index 0000000000..d935afea26 36306--- /dev/null 36307+++ b/ohos_nweb/src/nweb_url_resource_error_impl.h 36308@@ -0,0 +1,25 @@ 36309+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 36310+// Use of this source code is governed by a BSD-style license that can be 36311+// found in the LICENSE file. 36312+ 36313+#ifndef NWEB_URL_RESOURCE_ERROR_IMPL 36314+#define NWEB_URL_RESOURCE_ERROR_IMPL 36315+ 36316+#include "nweb_url_resource_error.h" 36317+ 36318+namespace OHOS::NWeb { 36319+class UrlResourceErrorImpl : public NWebUrlResourceError { 36320+ public: 36321+ UrlResourceErrorImpl(int error_code, const std::string& error_info) 36322+ : error_code_(error_code), error_info_(error_info){}; 36323+ ~UrlResourceErrorImpl() = default; 36324+ 36325+ const std::string& ErrorInfo() const override { return error_info_; } 36326+ int ErrorCode() const override { return error_code_; } 36327+ 36328+ private: 36329+ int error_code_; 36330+ std::string error_info_; 36331+}; 36332+} // namespace OHOS::NWeb 36333+#endif // NWEB_URL_RESOURCE_ERROR_IMPL 36334\ No newline at end of file 36335diff --git a/ohos_nweb/src/nweb_url_resource_request_impl.cc b/ohos_nweb/src/nweb_url_resource_request_impl.cc 36336new file mode 100644 36337index 0000000000..45b819debd 36338--- /dev/null 36339+++ b/ohos_nweb/src/nweb_url_resource_request_impl.cc 36340@@ -0,0 +1,45 @@ 36341+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 36342+// Use of this source code is governed by a BSD-style license that can be 36343+// found in the LICENSE file. 36344+ 36345+#include "nweb_url_resource_request_impl.h" 36346+ 36347+namespace OHOS::NWeb { 36348+NWebUrlResourceRequestImpl::NWebUrlResourceRequestImpl( 36349+ const std::string& method, 36350+ const std::map<std::string, std::string>& request_headers, 36351+ const std::string& url, 36352+ bool has_gesture, 36353+ bool is_for_main_frame, 36354+ bool is_redirect) 36355+ : method_(method), 36356+ request_headers_(request_headers), 36357+ url_(url), 36358+ has_gesture_(has_gesture), 36359+ is_for_main_frame_(is_for_main_frame), 36360+ is_redirect_(is_redirect) {} 36361+ 36362+const std::string& NWebUrlResourceRequestImpl::Method() { 36363+ return method_; 36364+} 36365+ 36366+const std::map<std::string, std::string>& NWebUrlResourceRequestImpl::RequestHeaders() { 36367+ return request_headers_; 36368+} 36369+ 36370+const std::string& NWebUrlResourceRequestImpl::Url() { 36371+ return url_; 36372+} 36373+ 36374+bool NWebUrlResourceRequestImpl::FromGesture() { 36375+ return has_gesture_; 36376+} 36377+ 36378+bool NWebUrlResourceRequestImpl::IsAboutMainFrame() { 36379+ return is_for_main_frame_; 36380+} 36381+ 36382+bool NWebUrlResourceRequestImpl::IsRequestRedirect() { 36383+ return is_redirect_; 36384+} 36385+} 36386diff --git a/ohos_nweb/src/nweb_url_resource_request_impl.h b/ohos_nweb/src/nweb_url_resource_request_impl.h 36387new file mode 100644 36388index 0000000000..9387b49884 36389--- /dev/null 36390+++ b/ohos_nweb/src/nweb_url_resource_request_impl.h 36391@@ -0,0 +1,37 @@ 36392+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 36393+// Use of this source code is governed by a BSD-style license that can be 36394+// found in the LICENSE file. 36395+ 36396+#ifndef NWEB_URL_RESOURCE_REQUEAST_IMPL_H 36397+#define NWEB_URL_RESOURCE_REQUEAST_IMPL_H 36398+ 36399+#include "nweb_url_resource_request.h" 36400+ 36401+namespace OHOS::NWeb { 36402+class NWebUrlResourceRequestImpl : public NWebUrlResourceRequest { 36403+ public: 36404+ NWebUrlResourceRequestImpl(const std::string& method, 36405+ const std::map<std::string, std::string>& request_headers, 36406+ const std::string& url, 36407+ bool has_gesture, 36408+ bool is_for_main_frame, 36409+ bool is_redirect = false); 36410+ ~NWebUrlResourceRequestImpl() = default; 36411+ 36412+ const std::string& Method() override; 36413+ const std::map<std::string, std::string>& RequestHeaders() override; 36414+ const std::string& Url() override; 36415+ bool FromGesture() override; 36416+ bool IsAboutMainFrame() override; 36417+ bool IsRequestRedirect() override; 36418+ 36419+ private: 36420+ std::string method_; 36421+ std::map<std::string, std::string> request_headers_; 36422+ std::string url_; 36423+ bool has_gesture_; 36424+ bool is_for_main_frame_; 36425+ bool is_redirect_; 36426+}; 36427+} 36428+#endif // NWEB_URL_RESOURCE_REQUEAST_IMPL_H 36429\ No newline at end of file 36430diff --git a/ohos_nweb/src/ohos_nweb_main.cc b/ohos_nweb/src/ohos_nweb_main.cc 36431new file mode 100644 36432index 0000000000..defaae1499 36433--- /dev/null 36434+++ b/ohos_nweb/src/ohos_nweb_main.cc 36435@@ -0,0 +1,18 @@ 36436+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 36437+// Use of this source code is governed by a BSD-style license that can be 36438+// found in the LICENSE file. 36439+ 36440+#include <unistd.h> 36441+#include "include/cef_app.h" 36442+#include "nweb_hilog.h" 36443+ 36444+int main(int argc, const char* argv[]) { 36445+ WVLOG_I("nweb subprocess %{public}s begin, pid=%{public}d", argv[0], 36446+ getpid()); 36447+ 36448+ CefMainArgs main_args(argc, const_cast<char**>(argv)); 36449+ (void)CefExecuteProcess(main_args, NULL, NULL); 36450+ 36451+ WVLOG_I("nweb subprocess %{public}s end, pid=%{public}d", argv[0], 36452+ getpid()); 36453+} 36454\ No newline at end of file 36455diff --git a/services/device/geolocation/BUILD.gn b/services/device/geolocation/BUILD.gn 36456index f5d6495c48..27c8bcf097 100644 36457--- a/services/device/geolocation/BUILD.gn 36458+++ b/services/device/geolocation/BUILD.gn 36459@@ -64,6 +64,21 @@ source_set("geolocation") { 36460 "//services/network/public/cpp", 36461 ] 36462 36463+ if (is_ohos) { 36464+ sources += [ 36465+ "ohos/location_provider_ohos.cc", 36466+ "ohos/location_provider_ohos.h", 36467+ ] 36468+ import("//build/config/ohos/config.gni") 36469+ include_dirs = ohos_src_includes 36470+ lib_dirs = ohos_libs_dir 36471+ libs = [ 36472+ "locator_sdk.z", 36473+ "ipc_core.z", 36474+ "lbsservice_common.z", 36475+ ] 36476+ } 36477+ 36478 if (is_android) { 36479 sources += [ 36480 "location_api_adapter_android.cc", 36481diff --git a/services/device/geolocation/location_arbitrator.cc b/services/device/geolocation/location_arbitrator.cc 36482index 527cff5fbb..3932492409 100644 36483--- a/services/device/geolocation/location_arbitrator.cc 36484+++ b/services/device/geolocation/location_arbitrator.cc 36485@@ -1,4 +1,5 @@ 36486-// Copyright (c) 2012 The Chromium Authors. All rights reserved. 36487+// Copyright (c) 2022 Huawei Device Co., Ltd. 36488+// Copyright 2018 The Chromium Authors. All rights reserved. 36489 // Use of this source code is governed by a BSD-style license that can be 36490 // found in the LICENSE file. 36491 36492@@ -162,7 +163,7 @@ LocationArbitrator::NewNetworkLocationProvider( 36493 36494 std::unique_ptr<LocationProvider> 36495 LocationArbitrator::NewSystemLocationProvider() { 36496-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_FUCHSIA) || defined(OS_OHOS) 36497+#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_FUCHSIA) 36498 return nullptr; 36499 #else 36500 return device::NewSystemLocationProvider(); 36501diff --git a/services/device/geolocation/ohos/location_provider_ohos.cc b/services/device/geolocation/ohos/location_provider_ohos.cc 36502new file mode 100644 36503index 0000000000..c438909982 36504--- /dev/null 36505+++ b/services/device/geolocation/ohos/location_provider_ohos.cc 36506@@ -0,0 +1,168 @@ 36507+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 36508+// Use of this source code is governed by a BSD-style license that can be 36509+// found in the LICENSE file. 36510+ 36511+#include "services/device/geolocation/ohos/location_provider_ohos.h" 36512+ 36513+#include <memory> 36514+ 36515+#include <common_utils.h> 36516+#include <constant_definition.h> 36517+#include <system_ability_definition.h> 36518+ 36519+#include "base/bind.h" 36520+#include "base/memory/singleton.h" 36521+ 36522+namespace device { 36523+ 36524+// LocationProviderOhos 36525+LocationProviderOhos::LocationProviderOhos() { 36526+ locator_callback_ = this; 36527+} 36528+ 36529+LocationProviderOhos::~LocationProviderOhos() { 36530+ StopProvider(); 36531+ if (locator_ != nullptr) 36532+ locator_.reset(); 36533+} 36534+ 36535+void LocationProviderOhos::SetUpdateCallback( 36536+ const LocationProviderUpdateCallback& callback) { 36537+ callback_ = callback; 36538+} 36539+ 36540+void LocationProviderOhos::StartProvider(bool high_accuracy) { 36541+ StopProvider(); 36542+ RequestLocationUpdate(high_accuracy); 36543+} 36544+ 36545+void LocationProviderOhos::StopProvider() { 36546+ if (!is_running_) 36547+ return; 36548+ is_running_ = false; 36549+ locator_->StopLocating(locator_callback_); 36550+} 36551+ 36552+const mojom::Geoposition& LocationProviderOhos::GetPosition() { 36553+ return last_position_; 36554+} 36555+ 36556+void LocationProviderOhos::OnPermissionGranted() { 36557+ // Nothing to do here. 36558+} 36559+ 36560+void LocationProviderOhos::OnNewLocationAvailable( 36561+ const std::unique_ptr<OHOS::Location::Location>& location) { 36562+ mojom::Geoposition position; 36563+ position.latitude = location->GetLatitude(); 36564+ position.longitude = location->GetLongitude(); 36565+ // location->GetTimeStamp() has no value now, so that temporarily passed 36566+ // value 10. 36567+ position.timestamp = base::Time::FromDoubleT(10); 36568+ position.altitude = location->GetAltitude(); 36569+ position.accuracy = location->GetAccuracy(); 36570+ position.heading = location->GetDirection(); 36571+ position.speed = location->GetSpeed(); 36572+ 36573+ NewGeopositionReport(position); 36574+} 36575+ 36576+void LocationProviderOhos::OnNewErrorAvailable(std::string message) { 36577+ mojom::Geoposition position_error; 36578+ position_error.error_code = 36579+ mojom::Geoposition::ErrorCode::POSITION_UNAVAILABLE; 36580+ position_error.error_message = message; 36581+ 36582+ NewGeopositionReport(position_error); 36583+} 36584+ 36585+void LocationProviderOhos::RequestLocationUpdate(bool high_accuracy) { 36586+ is_running_ = true; 36587+ CreateLocationManagerIfNeeded(); 36588+ locator_->EnableAbility(true); 36589+ 36590+ std::unique_ptr<OHOS::Location::RequestConfig> requestConfig = 36591+ std::make_unique<OHOS::Location::RequestConfig>(); 36592+ SetRequestConfig(requestConfig, high_accuracy); 36593+ 36594+ locator_->StartLocating(requestConfig, locator_callback_, "location.ILocator", 36595+ 0, 0); 36596+} 36597+ 36598+void LocationProviderOhos::CreateLocationManagerIfNeeded() { 36599+ if (locator_ != nullptr) 36600+ return; 36601+ locator_ = std::make_unique<OHOS::Location::LocatorProxy>( 36602+ OHOS::Location::CommonUtils::GetRemoteObject( 36603+ OHOS::LOCATION_LOCATOR_SA_ID, 36604+ OHOS::Location::CommonUtils::InitDeviceId())); 36605+} 36606+ 36607+void LocationProviderOhos::SetRequestConfig( 36608+ std::unique_ptr<OHOS::Location::RequestConfig>& requestConfig, 36609+ bool high_accuracy) { 36610+ requestConfig->SetPriority(OHOS::Location::PRIORITY_FAST_FIRST_FIX); 36611+ requestConfig->SetScenario(OHOS::Location::SCENE_UNSET); 36612+ requestConfig->SetTimeInterval(1); 36613+ requestConfig->SetDistanceInterval(0); 36614+ requestConfig->SetMaxAccuracy(0); 36615+ requestConfig->SetFixNumber(1); 36616+} 36617+ 36618+void LocationProviderOhos::NewGeopositionReport( 36619+ const mojom::Geoposition& position) { 36620+ last_position_ = position; 36621+ if (!callback_.is_null()) 36622+ callback_.Run(this, position); 36623+} 36624+ 36625+int LocationProviderOhos::OnRemoteRequest(uint32_t code, 36626+ OHOS::MessageParcel& data, 36627+ OHOS::MessageParcel& reply, 36628+ OHOS::MessageOption& option) { 36629+ switch (code) { 36630+ case RECEIVE_LOCATION_INFO_EVENT: { 36631+ std::unique_ptr<OHOS::Location::Location> location = 36632+ OHOS::Location::Location::Unmarshalling(data); 36633+ OnLocationReport(location); 36634+ break; 36635+ } 36636+ case RECEIVE_ERROR_INFO_EVENT: { 36637+ break; 36638+ } 36639+ case RECEIVE_LOCATION_STATUS_EVENT: { 36640+ OnLocatingStatusChange(0); 36641+ break; 36642+ } 36643+ default: { 36644+ break; 36645+ } 36646+ } 36647+ return 0; 36648+} 36649+ 36650+void LocationProviderOhos::OnLocationReport( 36651+ const std::unique_ptr<OHOS::Location::Location>& location) { 36652+ if (is_running_) { 36653+ OnNewLocationAvailable(location); 36654+ StopProvider(); 36655+ } 36656+} 36657+ 36658+void LocationProviderOhos::OnLocatingStatusChange(const int status) {} 36659+ 36660+void LocationProviderOhos::OnErrorReport(const int errorCode) { 36661+ StopProvider(); 36662+ if (errorCode == LOCATION_GET_FAILED) { 36663+ OnNewErrorAvailable("Failed to get location!"); 36664+ } else { 36665+ OnNewErrorAvailable("Unknown error during the locating occured!"); 36666+ } 36667+} 36668+ 36669+// static 36670+std::unique_ptr<LocationProvider> NewSystemLocationProvider() { 36671+ return base::WrapUnique(new LocationProviderOhos); 36672+} 36673+ 36674+} // namespace device 36675diff --git a/services/device/geolocation/ohos/location_provider_ohos.h b/services/device/geolocation/ohos/location_provider_ohos.h 36676new file mode 100644 36677index 0000000000..7b7adac934 36678--- /dev/null 36679+++ b/services/device/geolocation/ohos/location_provider_ohos.h 36680@@ -0,0 +1,83 @@ 36681+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 36682+// Use of this source code is governed by a BSD-style license that can be 36683+// found in the LICENSE file. 36684+ 36685+#ifndef SERVICES_DEVICE_GEOLOCATION_LOCATION_PROVIDER_OHOS_H_ 36686+#define SERVICES_DEVICE_GEOLOCATION_LOCATION_PROVIDER_OHOS_H_ 36687+ 36688+#include <memory> 36689+ 36690+#include <i_locator_callback.h> 36691+#include <iremote_stub.h> 36692+#include <location.h> 36693+#include <locator_proxy.h> 36694+#include <message_parcel.h> 36695+#include <request_config.h> 36696+ 36697+#include "base/memory/scoped_refptr.h" 36698+#include "base/single_thread_task_runner.h" 36699+#include "base/threading/thread_checker.h" 36700+#include "services/device/public/cpp/geolocation/location_provider.h" 36701+#include "services/device/public/mojom/geoposition.mojom.h" 36702+ 36703+namespace device { 36704+ 36705+// Location provider for Android using the platform provider over JNI. 36706+class LocationProviderOhos 36707+ : public LocationProvider, 36708+ public OHOS::IRemoteStub<OHOS::Location::ILocatorCallback> { 36709+ public: 36710+ LocationProviderOhos(); 36711+ ~LocationProviderOhos() override; 36712+ 36713+ enum LocationErrorCode { 36714+ LOCATION_GET_SUCCESS = 0, 36715+ LOCATION_GET_FAILED, 36716+ LOCATION_UNKNOWN_ERROR, 36717+ }; 36718+ 36719+ // LocationProvider implementation. 36720+ void SetUpdateCallback( 36721+ const LocationProviderUpdateCallback& callback) override; 36722+ void StartProvider(bool high_accuracy) override; 36723+ void StopProvider() override; 36724+ const mojom::Geoposition& GetPosition() override; 36725+ void OnPermissionGranted() override; 36726+ 36727+ // ILocatorCallback implementation. 36728+ virtual int OnRemoteRequest(uint32_t code, 36729+ OHOS::MessageParcel& data, 36730+ OHOS::MessageParcel& reply, 36731+ OHOS::MessageOption& option) override; 36732+ void OnLocationReport( 36733+ const std::unique_ptr<OHOS::Location::Location>& location) override; 36734+ void OnLocatingStatusChange(const int status) override; 36735+ void OnErrorReport(const int errorCode) override; 36736+ 36737+ void OnNewLocationAvailable( 36738+ const std::unique_ptr<OHOS::Location::Location>& location); 36739+ void OnNewErrorAvailable(std::string message); 36740+ 36741+ private: 36742+ void RequestLocationUpdate(bool high_accuracy); 36743+ void CreateLocationManagerIfNeeded(); 36744+ void SetRequestConfig( 36745+ std::unique_ptr<OHOS::Location::RequestConfig>& requestConfig, 36746+ bool high_accuracy); 36747+ 36748+ // Calls |callback_| with the new location. 36749+ void NewGeopositionReport(const mojom::Geoposition& position); 36750+ 36751+ std::unique_ptr<OHOS::Location::LocatorProxy> locator_; 36752+ 36753+ mojom::Geoposition last_position_; 36754+ 36755+ LocationProviderUpdateCallback callback_; 36756+ 36757+ bool is_running_ = false; 36758+ OHOS::sptr<OHOS::Location::ILocatorCallback> locator_callback_; 36759+}; 36760+ 36761+} // namespace device 36762+ 36763+#endif // SERVICES_DEVICE_GEOLOCATION_LOCATION_PROVIDER_OHOS_H_ 36764diff --git a/skia/ext/fontmgr_default_ohos.cc b/skia/ext/fontmgr_default_ohos.cc 36765index 6558bbebea..f2e506a550 100644 36766--- a/skia/ext/fontmgr_default_ohos.cc 36767+++ b/skia/ext/fontmgr_default_ohos.cc 36768@@ -1,4 +1,4 @@ 36769-// Copyright 2022 The Chromium Authors. All rights reserved. 36770+// Copyright (c) 2022 Huawei Device Co., Ltd. All rights reserved. 36771 // Use of this source code is governed by a BSD-style license that can be 36772 // found in the LICENSE file. 36773 36774diff --git a/third_party/blink/public/common/web_preferences/web_preferences.h b/third_party/blink/public/common/web_preferences/web_preferences.h 36775index 08ed976ad4..2ddd9e0494 100644 36776--- a/third_party/blink/public/common/web_preferences/web_preferences.h 36777+++ b/third_party/blink/public/common/web_preferences/web_preferences.h 36778@@ -1,4 +1,5 @@ 36779-// Copyright 2014 The Chromium Authors. All rights reserved. 36780+// Copyright (c) 2022 Huawei Device Co., Ltd. 36781+// Copyright 2018 The Chromium Authors. All rights reserved. 36782 // Use of this source code is governed by a BSD-style license that can be 36783 // found in the LICENSE file. 36784 36785diff --git a/third_party/blink/renderer/platform/BUILD.gn b/third_party/blink/renderer/platform/BUILD.gn 36786index e0b3b8305a..09667cadf7 100644 36787--- a/third_party/blink/renderer/platform/BUILD.gn 36788+++ b/third_party/blink/renderer/platform/BUILD.gn 36789@@ -1742,7 +1742,7 @@ component("platform") { 36790 "/wd4724", # Modulo by 0. 36791 ] 36792 } 36793- 36794+ 36795 if (is_ohos) { 36796 sources += [ 36797 "fonts/android/font_cache_android.cc", 36798diff --git a/third_party/blink/renderer/platform/widget/compositing/render_frame_metadata_observer_impl.cc b/third_party/blink/renderer/platform/widget/compositing/render_frame_metadata_observer_impl.cc 36799index 775bafa715..972ce7ddd3 100644 36800--- a/third_party/blink/renderer/platform/widget/compositing/render_frame_metadata_observer_impl.cc 36801+++ b/third_party/blink/renderer/platform/widget/compositing/render_frame_metadata_observer_impl.cc 36802@@ -1,3 +1,4 @@ 36803+// Copyright (c) 2022 Huawei Device Co., Ltd. 36804 // Copyright 2018 The Chromium Authors. All rights reserved. 36805 // Use of this source code is governed by a BSD-style license that can be 36806 // found in the LICENSE file. 36807@@ -168,7 +169,11 @@ bool RenderFrameMetadataObserverImpl::ShouldSendRenderFrameMetadata( 36808 rfm1.top_controls_shown_ratio != rfm2.top_controls_shown_ratio || 36809 rfm1.local_surface_id != rfm2.local_surface_id || 36810 rfm2.new_vertical_scroll_direction != 36811- viz::VerticalScrollDirection::kNull) { 36812+ viz::VerticalScrollDirection::kNull 36813+#if defined(OS_OHOS) 36814+ || rfm1.root_layer_size != rfm2.root_layer_size 36815+#endif 36816+ ) { 36817 *needs_activation_notification = true; 36818 return true; 36819 } 36820diff --git a/tools/clang/crashreports/.gitignore b/tools/clang/crashreports/.gitignore 36821new file mode 100644 36822index 0000000000..d6b7ef32c8 36823--- /dev/null 36824+++ b/tools/clang/crashreports/.gitignore 36825@@ -0,0 +1,2 @@ 36826+* 36827+!.gitignore 36828diff --git a/ui/ozone/common/egl_util.cc b/ui/ozone/common/egl_util.cc 36829index d23a601460..7eda22ffbb 100644 36830--- a/ui/ozone/common/egl_util.cc 36831+++ b/ui/ozone/common/egl_util.cc 36832@@ -34,7 +34,12 @@ const base::FilePath::CharType kDefaultEglSoname[] = 36833 FILE_PATH_LITERAL("libEGL.so"); 36834 const base::FilePath::CharType kDefaultGlesSoname[] = 36835 FILE_PATH_LITERAL("libGLESv2.so"); 36836-#else // !defined(OS_FUCHSIA) 36837+#elif defined(OS_OHOS) 36838+const base::FilePath::CharType kDefaultEglSoname[] = 36839+ FILE_PATH_LITERAL("libEGL.so"); 36840+const base::FilePath::CharType kDefaultGlesSoname[] = 36841+ FILE_PATH_LITERAL("libGLES_mali.so"); 36842+#else 36843 const base::FilePath::CharType kDefaultEglSoname[] = 36844 FILE_PATH_LITERAL("libEGL.so.1"); 36845 const base::FilePath::CharType kDefaultGlesSoname[] = 36846diff --git a/ui/ozone/platform/headless/headless_surface_factory.cc b/ui/ozone/platform/headless/headless_surface_factory.cc 36847index b3cfb3cf34..57528f4cad 100644 36848--- a/ui/ozone/platform/headless/headless_surface_factory.cc 36849+++ b/ui/ozone/platform/headless/headless_surface_factory.cc 36850@@ -224,7 +224,8 @@ HeadlessSurfaceFactory::~HeadlessSurfaceFactory() = default; 36851 36852 std::vector<gl::GLImplementation> 36853 HeadlessSurfaceFactory::GetAllowedGLImplementations() { 36854- return std::vector<gl::GLImplementation>{gl::kGLImplementationSwiftShaderGL}; 36855+ return std::vector<gl::GLImplementation>{gl::kGLImplementationEGLGLES2, 36856+ gl::kGLImplementationSwiftShaderGL}; 36857 } 36858 36859 GLOzone* HeadlessSurfaceFactory::GetGLOzone( 36860diff --git a/ui/views/widget/desktop_aura/desktop_screen_win.cc b/ui/views/widget/desktop_aura/desktop_screen_win.cc 36861index 762a108fed..b0ef9c6c49 100644 36862--- a/ui/views/widget/desktop_aura/desktop_screen_win.cc 36863+++ b/ui/views/widget/desktop_aura/desktop_screen_win.cc 36864@@ -19,7 +19,7 @@ DesktopScreenWin::~DesktopScreenWin() { 36865 36866 HWND DesktopScreenWin::GetHWNDFromNativeWindow(gfx::NativeWindow window) const { 36867 if (!window) 36868- return nullptr; 36869+ return nullptr; 36870 aura::WindowTreeHost* host = window->GetHost(); 36871 return host ? host->GetAcceleratedWidget() : nullptr; 36872 } 36873diff --git a/ui/views/win/hwnd_message_handler.cc b/ui/views/win/hwnd_message_handler.cc 36874index 55b70c6349..0cf04f6ee6 100644 36875--- a/ui/views/win/hwnd_message_handler.cc 36876+++ b/ui/views/win/hwnd_message_handler.cc 36877@@ -3107,13 +3107,10 @@ LRESULT HWNDMessageHandler::HandleMouseEventInternal(UINT message, 36878 } else if (event.type() == ui::ET_MOUSEWHEEL) { 36879 ui::MouseWheelEvent mouse_wheel_event(msg); 36880 // Reroute the mouse wheel to the window under the pointer if applicable. 36881- if (ui::RerouteMouseWheel(hwnd(), w_param, l_param) || 36882- delegate_->HandleMouseEvent(&mouse_wheel_event)) { 36883- SetMsgHandled(TRUE); 36884- return 0; 36885- } else { 36886- return 1; 36887- } 36888+ return (ui::RerouteMouseWheel(hwnd(), w_param, l_param) || 36889+ delegate_->HandleMouseEvent(&mouse_wheel_event)) 36890+ ? 0 36891+ : 1; 36892 } 36893 36894 // Suppress |ET_MOUSE_MOVED| and |ET_MOUSE_DRAGGED| events from WM_MOUSE* 36895diff --git a/weblayer/browser/infobar_service.h b/weblayer/browser/infobar_service.h 36896index bf2100338b..b06b305498 100644 36897--- a/weblayer/browser/infobar_service.h 36898+++ b/weblayer/browser/infobar_service.h 36899@@ -33,9 +33,11 @@ class InfoBarService : public infobars::ContentInfoBarManager, 36900 InfoBarService(const InfoBarService&) = delete; 36901 InfoBarService& operator=(const InfoBarService&) = delete; 36902 36903+#if defined(OS_ANDROID) 36904 // InfoBarManager: 36905 std::unique_ptr<infobars::InfoBar> CreateConfirmInfoBar( 36906 std::unique_ptr<ConfirmInfoBarDelegate> delegate) override; 36907+#endif 36908 36909 protected: 36910 explicit InfoBarService(content::WebContents* web_contents); 36911