This commit fixes https://github.com/electron/electron/issues/18829
Previously the full preferences set to OS was not given to Chromium.
Also, this commit improves fallback font selection for CJK text.
Chromium uses browser languages to determine fallback fonts on Windows,
especially kanji/han characters in CJK.
For instance, when user sets 'en-US, ja-JP' to Accept-Language,
while Chromium chooses Japanese font for kanji text, but Electron
chooses Chinese font. This is because only the first language was given
to Accept-Language on Electron.
This patch is based on https://github.com/electron/electron/pull/15532
Co-authored-by: Nitish Sakhawalkar <nitsakh@icloud.com>
Co-authored-by: Kasumi Hanazuki <kasumi@rollingapple.net>
Co-authored-by: Nitish Sakhawalkar <nitsakh@icloud.com>
Co-authored-by: Kasumi Hanazuki <kasumi@rollingapple.net>
* chore: bump chromium in DEPS to 461ecae368fd0832f18e0b13e61f3561d83f0031
* update patches
* update patches
* Remove both vs browser/child split in content gn files.
https://chromium-review.googlesource.com/c/chromium/src/+/2157965
* chore: bump chromium in DEPS to 7ff3897f3104563763ef26ad940d4e988d7245dd
* update patches
* update patches
* Add ElectronKioskDelegate for extensions
https://chromium-review.googlesource.com/c/chromium/src/+/2159760
Co-authored-by: John Kleinschmidt <jkleinsc@github.com>
Co-authored-by: Electron Bot <anonymous@electronjs.org>
* feat(extensions): implement chrome.i18n API
* refactor(extensions): use forward declaration for ScriptExecutor
* fix(extensions): add message filter to handle i18n GetMessageBundle
* test(extensions): add chrome.i18n tests
* fix(extensions): message filter lint error
* fix: remove exclusive test
* fix(extensions): format api feature arrays
Co-Authored-By: Jeremy Apthorp <nornagon@nornagon.net>
* fix(extensions): uncomment chrome.i18n usage in old extensions test
Co-authored-by: Jeremy Apthorp <nornagon@nornagon.net>
* fix(extensions): set lowest isolated world id
* refactor: move world IDs into separate header file
Several files are including electron_render_frame_observer.h just for the world IDs.
* feat: add API for receiving logs from service workers
* feat: add new serviceWorkerContext APIs
* chore: add missing #include's
* refactor: rename serviceWorkerContext to serviceWorkers
* chore: clean up based on review
* chore: remove native_mate
* chore: add tests for the service worker module
* Update spec-main/api-service-workers-spec.ts
Co-Authored-By: Jeremy Apthorp <jeremya@chromium.org>
* chore: fix linting
* chore: handle renames
Co-authored-by: Jeremy Apthorp <nornagon@nornagon.net>
* fix: web request support proxying websocket
* fix: make tests work
* chore: do not use api:: code outside api/ folder
* chore: do not create proxy when no listener
* test: use separate session to avoid conflicts
* chore: address review
* chore: bump chromium in DEPS to 46d2d82e84d73806da623c5333dae4dd218172df
* chore: bump chromium in DEPS to cbafe74731a5d1e59844ca59e0fc28f4a5f80a33
* chore: bump chromium in DEPS to d5dcd6b5cc76f4e1732083d775cdd7b533f0abe9
* Update patches
* update for lint
* Fix compilation errors
* chore: bump chromium in DEPS to 1c19360fdaaf65d4ed006736c7f9804104095990
* Replace removed constant
* chore: bump chromium in DEPS to 3b6639f5da26c1772c5d4f3ba634aca65df75fec
* chore: bump chromium in DEPS to cc6b1b930d4b5eca06701820dac54fa0f41e8999
* chore: bump chromium in DEPS to 7d1445641ad1032c67f731ba6ff7798f29349ade
* chore: bump chromium in DEPS to 6f7e5e79cefe982ad84a88927565a88db2e592be
* chore: bump chromium in DEPS to bfb25dafff19cb41bf9781331d19ef0be819d1e4
* chore: bump chromium in DEPS to 1a8196b39f0e0cdc4935fd122fff5625d5fab06e
* chore: bump chromium in DEPS to 9a03d8d2bb38ad8c0cbb9550ca81b2f94ff60c15
* chore: bump chromium in DEPS to 4c67f3505dab2d5457adb418cd3270a4f3236fd0
* chore: bump chromium in DEPS to 652394e7626fc1ae895a53fb34c64070494e648e
* chore: bump chromium in DEPS to 07653652c58cc019af7f833bd63eb0c2eceaab5e
* chore: bump chromium in DEPS to 451a1c5fec1fb073a5bae12a033bb342c72c905f
* chore: bump chromium in DEPS to 86cdba00e233899a232868b412b333d08db63478
* chore: bump chromium in DEPS to 7c322faad1aee8abef2330d74aabf09ecf8c11af
* Update patches
* chore: bump chromium in DEPS to d0044fae7efc29eb201cfdd5fdbed77d48aba212
* Replace IsProcessingUserGesture with HasTransientUserActivation
4baa9a6e85
* Fix 10.15 sdk build
0eaa6db358
* Remove CancelPrerender
5eb3329719
* Remove no longer used WebFloatPoint
43ab96ce6b
* Use base::span<const uint8_t> for devtools messages in content/public
21e19401af
* Update renamed header files
* TODO: update with upstream changes
This code needs to be updated to handle the changes made in:
19be6547a9
* chore: bump chromium in DEPS to 82e5a2c6bd33c2e53634a09fbcbc9fcac1e7ff93
* chore: bump chromium in DEPS to 91f877cadd2995201c276e952b3bf2c60b226c64
* chore: bump chromium in DEPS to 43fcd2ab2677a06d38246b42761dc5b40cf87177
* chore: bump chromium in DEPS to e30957dcb710c0977a7ff95b8d3cf65843df12ca
* chore: bump chromium in DEPS to 6a8335a56db12aae2fd06296f82579d804d92217
* chore: bump chromium in DEPS to a4a436cbc28ace88d71752f8f479e59559e54e46
* chore: bump chromium in DEPS to 982bbd0e4b2e1d57d515f384f6483ffc0d7073ad
* chore: bump chromium in DEPS to 92bb7a99f84ffcdf41d4edca57e90b1f0c7c6c8b
* update patches
* add checkout_google_benchmark gclient var
* FIXME: workaround grit bug
* chore: bump chromium in DEPS to d3623fc53615739e6b59340a5d349e4b397cb7c5
* update patches
* Remove color arg from DidChangeThemeColor().
https://chromium-review.googlesource.com/c/chromium/src/+/1982623
* update CreateFileURLLoader with new suffix
CL: https://chromium-review.googlesource.com/c/chromium/src/+/1981414
* add node patch for removal of task API in v8
CL: https://chromium-review.googlesource.com/c/v8/v8/+/1868620
* add disable_secure_dns param for WillCreateURLLoaderFactory
CL: https://chromium-review.googlesource.com/c/chromium/src/+/1888099
* switch to mojo-ified PrintMsg_PrintPreview
CL: https://chromium-review.googlesource.com/c/chromium/src/+/1972307
* chore: bump chromium in DEPS to e7a6d173632660b6aeb9806e9132c34a315331c2
* update missing chrome/browser/ssl:proto dependency after chrome removal
CL: https://chromium-review.googlesource.com/c/chromium/src/+/1986082
* chore: add libvulkan.so to the linux manifest
CL: https://chromium-review.googlesource.com/c/chromium/src/+/1973042
* revert DidChangeThemeColor ternary change due to templates
* match Chrome's mojo-ified implementation in geolocation_permission_context.cc
CL: https://chromium-review.googlesource.com/c/chromium/src/+/1963371
* add vulkan-1.dll to zips
2d6f74c6d4
* add bug link to fixme_grit_conflicts.patch
* Introduce device.mojom.DeviceService
https://chromium-review.googlesource.com/c/chromium/src/+/1956277
* PDF Compositor rename to Print Compositor
https://chromium-review.googlesource.com/c/chromium/src/+/1981135
* chore: bump chromium_version 00362ea584735b4acf4c5a0e1912d7987f8645ab
* chore: update patches
* Use a virtual base class to provide GetWidget().
https://chromium-review.googlesource.com/c/chromium/src/+/1996948
* [base] Remove usage of base::CurrentThread
https://chromium-review.googlesource.com/c/chromium/src/+/1962019
* chore: gn format
* Revert "ci: Use Visual Studio Build Tools instead of VS Studio (#21771)"
This reverts commit 9c1310dadc.
* fix: trigger resize when iframe requests fullscreen
* fix: Locking scheme registry is not necessary
https://chromium-review.googlesource.com/c/chromium/src/+/1973198
* chore: bump chromium f707f1d6d428f84cf14b64bc2ca74372e25c6ce7
* chore: update patches
* ui/base/clipboard: Remove redundant ANSI format functions
https://chromium-review.googlesource.com/c/chromium/src/+/1992015
* [base] Prepare //chrome for Value::GetList() switch
https://chromium-review.googlesource.com/c/chromium/src/+/1962255
Co-authored-by: John Kleinschmidt <jkleinsc@github.com>
Co-authored-by: loc <andy@slack-corp.com>
Co-authored-by: Jeremy Apthorp <nornagon@nornagon.net>
Co-authored-by: Robo <hop2deep@gmail.com>
* refactor: use gin in Promise
* refactor: separate Promise impl that returns nothing
* refactor: use Promise<void> for promise that returns nothing
* fix: methods should be able to run on both browser and renderer process
* fix: should not pass base::StringPiece across threads
* refactor: no more need to use different ResolvePromise for empty Promise
* refactor: move Promise to gin_helper
* refactor: convert Menu and globalShortcut to gin
* refactor: convert api::Cookies to gin
* refactor: convert View and WebContentsView to gin
* refactor: convert WebContents related classes to gin
* refactor: convert powerMonitor to gin
* refactor: prepare for header change
* refactor: remove last uses of mate::EventEmitter
* refactor: remove mate::EventEmitter
* refactor: move trackable_object to gin_helper
* fix: custom converter should not use Handle
* fix: no more need to check if icon is empty
It was a bug that the Handle<NativeImage> can be non-empty when the
image file does not exist. The bug was caused by the converter code
writing out the image even when the convertion fails.
The bug was work-arounded by adding an additional check, but since the
original bug had been fixed, the additional check is no longer needed.
* fix: should always set frameId even when callback is null
* fix: do not mix gin/mate handles for NativeImage
* refactor: remove a few uses of native_mate/gfx_converter.h
* refactor: deprecate mate::EventEmitter
* refactor: add gin_helper::EventEmitter
* refactor: convert a few classes to use gin_helper::EventEmitter
* refactor: get rid of native_mate_converters/gfx_converter.h
* fix: follow native_mate on reporting errors
* fix: gin is weak at guessing parameter types
* fix: incorrect full class name
* fix: gin::Handle does not accept null
* feat: add a new contextBridge module
* chore: fix docs linting
* feat: add support for function arguments being proxied
* chore: ensure that contextBridge can only be used when contextIsolation is enabled
* docs: getReverseBinding can be null
* docs: fix broken links in md file
* feat: add support for promises in function parameters
* fix: linting failure for explicit constructor
* Update atom_api_context_bridge.cc
* chore: update docs and API design as per feedback
* refactor: remove reverse bindings and handle GC'able functions across the bridge
* chore: only expose debugGC in testing builds
* fix: do not proxy promises as objects
* spec: add complete spec coverage for contextBridge
* spec: add tests for null/undefined and the anti-overwrite logic
* chore: fix linting
* spec: add complex nested back-and-forth function calling
* fix: expose contextBridge in sandboxed renderers
* refactor: improve security of default_app using the new contextBridge module
* s/bindAPIInMainWorld/exposeInMainWorld
* chore: sorry for this commit, its a big one, I fixed like everything and refactored a lot
* chore: remove PassedValueCache as it is unused now
Values transferred from context A to context B are now cachde in the RenderFramePersistenceStore
* chore: move to anonymous namespace
* refactor: remove PassValueToOtherContextWithCache
* chore: remove commented unused code blocks
* chore: remove .only
* chore: remote commented code
* refactor: extract RenderFramePersistenceStore
* spec: ensure it works with numbered keys
* fix: handle number keys correctly
* fix: sort out the linter
* spec: update default_app asar spec for removed file
* refactor: change signatures to return v8 objects directly rather than the mate dictionary handle
* refactor: use the v8 serializer to support cloneable buffers and other object types
* chore: fix linting
* fix: handle hash collisions with a linked list in the map
* fix: enforce a recursion limit on the context bridge
* chore: fix linting
* chore: remove TODO
* chore: adapt for PR feedback
* chore: remove .only
* chore: clean up docs and clean up the proxy map when objects are released
* chore: ensure we cache object values that are cloned through the V8 serializer
* refactor: convert methods of AutoUpdater to gin
* refactor: converter in map_converter.h is no more needed
* refactor: use gin in crash_reporter
* refactor: remove native_mate_converters/map_converter.h
* refactor: implement gfx_converter with gin
* refactor: convert methods of NativeImage to gin
* refactor: add gin_helper::Arguments
* fix: use gin_helper::Arguments to parse multi-type parameters
* refactor: use gin converters in api::Protocol
* refactor: convert JS constructor impl to gin
* refactor: use InitWithArgs helper
* fix: gin_helper::Dictionary should behave the same with mate
* fix cpplint warnings
* refactor: no more need to patch gin/dictionary.h
* refactor: use v8 serialization for ipc
* cloning process.env doesn't work
* serialize host objects by enumerating key/values
* new serialization can handle NaN, Infinity, and undefined correctly
* can't allocate v8 objects during GC
* backport microtasks fix
* fix compile
* fix node_stream_loader reentrancy
* update subframe spec to expect undefined instead of null
* write undefined instead of crashing when serializing host objects
* fix webview spec
* fix download spec
* buffers are transformed into uint8arrays
* can't serialize promises
* fix chrome.i18n.getMessage
* fix devtools tests
* fix zoom test
* fix debug build
* fix lint
* update ipcRenderer tests
* fix printToPDF test
* update patch
* remove accidentally re-added remote-side spec
* wip
* don't attempt to serialize host objects
* jump through different hoops to set options.webContents sometimes
* whoops
* fix lint
* clean up error-handling logic
* fix memory leak
* fix lint
* convert host objects using old base::Value serialization
* fix lint more
* fall back to base::Value-based serialization
* remove commented-out code
* add docs to breaking-changes.md
* Update breaking-changes.md
* update ipcRenderer and WebContents docs
* lint
* use named values for format tag
* save a memcpy for ~30% speedup
* get rid of calls to ShallowClone
* extra debugging for paranoia
* d'oh, use the correct named tags
* apparently msstl doesn't like this DCHECK
* funny story about that DCHECK
* disable remote-related functions when enable_remote_module = false
* nits
* use EnableIf to disable remote methods in mojom
* fix include
* review comments
* deprecate native_mate/native_mate/object_template_builder.h
* add gin_helper/object_template_builder.h
* add patch to avoid ambiguous error
* remove usage of object_template_builder_deprecated.h in a few files
* add note we should remove gin_helper/object_template_builder.h in future
Exposing these in the renderer didn't make sense as they weren't backed
by the same instance / value store. This API should be browser only
especially now that we have nativeTheme.themeSource. Exposing in
//common was a mistake from the beginning.
* use gin converter in atom_api_menu
* please only put necessary includes in header
Having include in header means they have dependency relationship,
putting arbitrary includes really really really really really makes
refacoring much harder.
* remove some simple uses of callback_converter_deprecated.h
* use gin callback converter in file_dialog code
* use gin in ErrorThrower
* use gin in atom_bundle_mover
* fix mistake in node stream
* deprecate native_mate version of event_emitter_caller
* use gin in node_bindings
* remove usages of native_mate event_emitter_caller.h except for EventEmitter
* fix compilation on Windows
* gin::Arguments behaves differently on GetNext
* just use StringToV8
* feat: add nativeTheme.shouldUseDarkColorsOverride to allow apps to override Chromiums theme choice
* spec: add tests for shouldUseDarkColorsOverride
* chore: add missing forward declarations
* refactor: rename overrideShouldUseDarkColors to themeSource
* chore: only run appLevelAppearance specs on Mojave and up
* chore: update patch with more info and no define
* Update spec-main/api-native-theme-spec.ts
Co-Authored-By: Jeremy Apthorp <jeremya@chromium.org>
* Update api-native-theme-spec.ts
* Update api-native-theme-spec.ts
* Update api-native-theme-spec.ts
* add notice to files being removed
* add gin version of function_template.h
* rename callback.h to avoid confliction
* add gin version of callback_converter
* add gin converter for OnceCallback
* remove callback_converter_gin_adapter.h
* remove gin_util.h and gin_utils.h
* fix lint warning
* add helper for setting methods
* move Destroyable utilities out of native_mate
* do not set "destroy" in ObjectTemplateBuilder
* remove ObjectTemplateBuilder::MakeDestroyable
* do not pollute gin namespace
* add more comments
* remove hack of Arguments
* fix: i18n of gtk msgbox buttons
similar to #19756 (12df0e8) but for messageboxes
* refactor: DRY the gtk+ button mnemonics
* fix: don't compile gtk_util on non-Linux platforms
rename from `gtk_util.[cc,h]` to `util_gtk.[cc,h]` so that it gets
picked up by the `extra_source_filters` rule in `BUILD.gn`.
* fix: make linter happy
It really shows that I cannot build locally atm... :P
* feat: add new nativeTheme API
* chore: deprecate and clean up old systemPreferences theme APIs in favor of new nativeTheme module
* chore: clean up and deprecate things per feedback
* chore: add tests for deprecate and clean up invert impl
* build: when is a boolean not a boolean???
* Stub class for NetworkService-based URLRequest
* Create SimpleURLLoader
* Implement downloading
* Implement response event
* Only write data afte previous one finished
* Use DataPipeGetter for uploading data
* Support chunked upload data
* Call size callback at last
* Simplify UploadDataPipeGetter
* Implement cancelling and closing
* Handle redirection
* Fix uploading large data
* Emit error when request fails
* Emit error for redirection error
* Simplify emitting error
* "follow" should also emit "redirect" event
* SetLoadFlags is not really used
* Implement GetUploadProgress
* Implement FollowRedirect
* Fix exception with multiple redirections
* Reduce number of EmitEvent methods
* Emit response errors
* FetchRedirectMode => RedirectMode
* chore: add ability to log native deprecation warnings
* take std::string, handle conversion later
* address feedback from @ckerr's review
* simplify with feedback from zcbenz
This is useful for checking which processes are sandboxed on OS level.
Regarding creationTime, since the pid can be reused after a process dies, it is useful to use both the pid and the creationTime to uniquely identify a process.
Historically, we've been passing in all MessageBox parameters individually, which makes augmenting or improving MessageBox functionality challenging because to change or add even one argument requires a huge cascade of argument changes that leaves room for errors.
For other file dialog related APIs, we use a struct (DialogSettings), and so this PR takes a similar approach and refactors MessageBox parameters into a struct (MessageBoxSettings) which we then use to simplify argument passing and which will enable us to more quickly iterate and improve upon functionality in the future.
* Initial changes to use crashpad for windows
* Remove crashpad patch
* Report error when failed to connect pipe
* Allow crashpad to communicate with named pipe
* Add patch to make crashpad named pipe work
* Windows also needs crashReporter on main process
* Call SetUnhandledExceptionFilter in node process
Node can also use crash reporter.
* Do not treat node process as browser process
* No more need to manually start crash service
* Use base::StringPrintf for better readbility
* Print error when pipe name not available
* Make sure pipe name is updated
Note that the crashpad may be started after renderer process gets
created.
* Fix some tests
* Update node
* Exclude crashpad files on Linux and MAS
* Fix lint warning
* Remove unused checks
* kCrashpadPipeName is only available on Windows
* Fix uploadToServer tests
* Fix extra params tests
* Fix getCrashesDirectory tests
* Run crashReporter tests on CI
* Style fixes
* Update crashreporter docs
* Rename InitBreakpad to Init
* Add comment for process_type_.empty() and UTF16ToASCII to UTF16ToUTF8.
* Update build.gn include crashpad headers
* Address comment https://github.com/electron/electron/pull/18483#discussion_r290887898
* Avoid using api::WebContents
* Put kRunAsNode in atom_constants
* Remove duplicate settings on upload params
* Fix building on macOS
* Update description for crashpad_pid_check.patch
* Pipe data into HTTP protocol handlers
* Remove unused parameters
* Remove "sending request of http protocol urls" test
Sending request to "http://" in "file://" violates CORS rules and always
fail, before NetworkService somehow Chromium still sent a request even
though the request failed with CORS error, so the test passes while the
test is not valid. With NetworkService no request is sent at all and the
test jsut fails.
So this is an ancient invalid test, as sending http requests have been
fully covered in other tests, I am removing this test.
* refactor: bundle the browser and renderer process electron code
* Bundles browser/init and renderer/init
* Improves load performance of main process by ~40%
* Improves load performance of renderer process by ~30%
* Prevents users from importing our "requiring" our internal logic such
as ipc-main-internal. This makes those message buses safer as they are
less accessible, there is still some more work to be done though to lock
down those buses completely.
* The electron.asar file now only contains 2 files, as a future
improvement maybe we can use atom_natives to ship these two files
embedded in the binary
* This also removes our dependency on browserify which had some strange
edge cases that caused us to have to hack around require-order and
stopped us using certain ES6/7 features we should have been able to use
(async / await in some files in the sandboxed renderer init script)
TLDR: Things are faster and better :)
* fix: I really do not want to talk about it
* chore: add performance improvements from debugging
* fix: resolve the provided path so webpack thinks it is absolute
* chore: fixup per PR review
* fix: use webpacks ProvidePlugin to keep global, process and Buffer alive after deletion from global scope for use in internal code
* fix: bundle worker/init as well to make node-in-workers work
* chore: update wording as per feedback
* chore: make the timers hack work when yarn is not used
* fix: make IsProtocolHandled return true for builtin schemes
* fix: return ERR_NOT_IMPLEMENTED for wrong arg
* Initial work of AsarURLLoader
* Put normal file logics in AsarURLLoader
* Implement asar file reading
* Don't change URL for unpacked file
* Fix cpplint warning
* Parse stream protocol handler
* Pipe node stream to mojo
* Merge the parser for headers
* Add ToDict helper to simplify code
* Simplify dispatching logic
* Add an experimental API for returning any type of response
* Fix subscribing event
* URL loaders' lifetime is independent of the factory
* HandleError helper is no longer needed
* Rename "SendResponse" => "StartLoading" to follow naming conventions
* Delete when connection error happens
* Fix cpplint warning
This turns the AtomViewMsg_Offscreen message, which only called the global setter blink::WebView::SetUseExternalPopupMenus(false) to get Chrome to render popup menus in the renderer instead of externally on macOS, into a command-line renderer flag --offscreen which does the same thing, except at render thread startup time, which is where Chromium sets the flag: https://chromium.googlesource.com/chromium/src/+/refs/tags/75.0.3755.3/content/renderer/render_thread_impl.cc#728.
This was the last usage of RenderViewObserver in our codebase, so this PR also removes that class.
Previously, we were creating the app logs folder at a predefined location during initial electron startup, which meant that it had to be manually removed and prevented clean app portability. This refactors that implementation such that it's now an opt-in feature and developers must call app.setAppLogsPath(path) with an optional custom path in order to set this directory.
* refactor: use mojo for electron internal IPC
* add sender_id, drop MessageSync
* remove usages of AtomFrameMsg_Message
* iwyu
* first draft of renderer->browser direction
* refactor to reuse a single ipc interface
* implement TakeHeapSnapshot through mojo
* the rest of the owl^WtakeHeapSnapshot mojofication
* remove no-op overrides in AtomRendererClient
* delete renderer-side ElectronApiServiceImpl when its pipe is destroyed
* looks like we don't need to overlay the renderer manifest after all
* don't try to send 2 replies to a sync rpc
* undo changes to manifests.cc
* unify sandboxed + unsandboxed ipc events
* lint
* register ElectronBrowser mojo service on devtools WebContents
* fix takeHeapSnapshopt failure paths
* {electron_api => atom}::mojom
* add send_to_all to ElectronRenderer::Message
* keep interface alive until callback is called
* review comments
* use GetContext from RendererClientBase
* robustify a test that uses window.open
* MessageSync posts a task to put sync messages in the same queue as async ones
* add v8::MicrotasksScope and node::CallbackScope
* iwyu
* use weakptr to api::WebContents instead of Unretained
* make MessageSync an asynchronous message & use non-associated interface
* iwyu + comments
* remove unused WeakPtrFactory
* inline OnRendererMessage[Sync]
* cleanups & comments
* use helper methods instead of inline lambdas
* remove unneeded async in test
* add mojo to manifests deps
* add gn check for //electron/manifests and mojo
* don't register renderer side service until preload has been run
* update gn check targets list
* move interface registration back to RenderFrameCreated