IndexedDb in a Web Worker in the latest Safari? - safari

I have an existing app which runs on fine in earlier versions of Safari and makes use of an indexedDB polyfill to store data. Most of this activity takes place in a web worker so WebSQL can be accessed from the web worker.
However, I am now trying native indexedDB access using Safari 6.2 and although indexedDB can be referenced in the "main" work thread, when i try to access "self.indexeddb" or "indexeddb" they both come back as undefined.
Has anyone been able to access indexedDB in a web worker in the newest versions of Safari?

Has anyone been able to access indexedDB in a web worker in the newest versions of Safari?
IndexedDB is accessible from Web Worker since Safari Technology Preview Release 5:
Safari Technology Preview is a version of Safari for OS X, distributed by Apple, that includes a cutting-edge, in-development version of the WebKit browser engine. It’s a great way to test upcoming WebKit features and give feedback to the people building them when it’s most useful — early in development.
Released on May 15, 2016. The release notes state:
Enabled IndexedDB in Web Worker scripts
Safari Technology Preview requires a Mac running OS X 10.11.4 or later.
Release 5 of Safari Technology Preview covers WebKit revisions 200418–201083.
References
Introducing Safari Technology Preview
Safari Technology Preview: Release Notes
Release Notes for Safari Technology Preview 5
Webkit Bug 149953 – Modern IDB: WebWorker support
What's New in MacOS
Primary Key issue on iOS8 implementation of IndexedDb
indexeddb on iOS 8 - Broken Bad

Related

Will Safari ever support WebExtensions api?

My web extension works with Chromium browsers, Firefox, Edge, but as I understand - it is impossible now just to open the same codebase with Safari browser?
Update 2021
The Safari support for WebExtensions was released in 2021 and is available from Safari 14 (shipped with macOS Big Sur). WebExtensions for Safari are published in the App Store. Documentation here: https://developer.apple.com/documentation/safariservices/safari_web_extensions
Original answer
We cannot possibly know this for sure, but Apple is currently not planning to support (a version of) the WebExtensions API. The name of the standard/specification is Browser Extension.
Apple is not part of the W3C group which attempts to make a cross browser standard: https://www.w3.org/community/browserext/participants
For more general info on the Browser Extension W3C working group, see
https://browserext.github.io/browserext
The provisional spec can be found here: https://browserext.github.io/browserext/
In macOS Big Sur, Safari will support the WebExtensions API:
New support for the WebExtensions API and migration tools allows developers to bring Chrome extensions to Safari — letting you personalize your browsing experience with new Safari extensions from your favorite developers.

Does Microsoft UI Automation Framework work with Chrome, Python and Java Apps?

I am working on an automation project, in which I need to capture the activities [ application launched, data entered, input type etc.] user performs on a desktop. I came across Microsoft UI Automation framework which so far works well for native windows based applications like MS Office, .NET apps etc. However I did not find any useful information / samples of capturing the information from different web browsers [Chrome is a must], Python apps, Java Apps etc. Can someone please confirm whether MS UI Automation Framework supports such apps. Any working example to extract user activities from these apps would be highly appreciated. Thanks.
Chrome only supports UI Automation for toolbars, tabs, menu, buttons around the web page. Everything that's rendered as a web page is not seen by UIA.
For the web page content, the easiest way is to use Selenium (driven by the ChromeDriver), which is kind of a de facto standard for browsers, and has nothing to do with UIA.
To test if an app supports UIA, and how far it does, it's very easy, just run UIA's Inspect tool and check the UI tree over that application.
Some additions to Simon's answer...
Chrome page content can be seen by UIA if you run chrome --force-renderer-accessibility. Only for existing Chrome process it won't work. Though user can create a new tab chrome://accessibility manually and enable UIA for all or some chosen pages. This method also works for AT-SPI accessibility technology on Linux. Of course, Selenium WebDriver is an industry standard here. But another way exists. Both Mozilla and IE support UIA by default.
Inspect.exe can be simply downloaded from this GitHub repo.
Regarding Java apps it depends on the app type. Your chances is about 50/50.
WxPython or PyQt5 are good for UIA. TkInter or Kivy apps are not.
P.S. There is an example how to drag a file from explorer.exe and drop to Google Drive in Chrome using Python library pywinauto.
I'm a bit late to the party..
But Chromes accessibility features are only activated once something tries to access it's accessibility.
If you call AccessibleObjectFromWindow ([DllImport("oleacc.dll")]) with the window handle an existing chrome window will have its accessibility activated (and you'll see the actual web page content in UIA!).
If the chrome window is opened after your app is running - Chrome pings open processes for any open accessibility apps... for that you use AccessibleObjectFromEvent and the event you're responding to comes from the windows pipeline: EVENT_SYSTEM_ALERT = 0x0002 .
The bottom line is - you have to tell chrome that there's something installed that wants to access it's web page content.
Oh! and your application has to be signed!! Unsigned apps won't be able to access web content - I think that's the same in firefox too.
I hope this helps someone in the future.
See:
https://www.chromium.org/developers/design-documents/accessibility

Will the Add-ons disappear and be useless for Google apps on 2017-2018?

I was trying to publish a new version of an Add-on that was already created, but when I tried to publish it, in the Developer Dashboard and on the top of the page a warning message was shown:
As of November 21st, 2016, all newly published packaged or hosted apps are restricted to Chrome OS, and are not available to users on Windows, Mac or Linux. Existing apps will continue to be available on all major platforms and will continue to receive updates. - More Info
Note: This change does not apply to Google Drive Apps or Add-Ons for Google Apps.
So if you click on the "More Info" button you will see more additional information.
So all of this should be a problem to me because I have important applications that I need everyday, so I wonder if there is any other alternative way to keep working with add-ons.
Thank you!
AFAIK, this change (if Google decides to proceed with it) would only apply to Chrome Apps (see my answer here).
In the Chromium Blogpost (also the link for More Info in your post), it mentioned:
In the second half of 2017, the Chrome Web Store will no longer show Chrome apps on Windows, Mac, and Linux, but will continue to surface extensions and themes.
Add-ons weren't specifically mentioned, but as already included in your post, Add-ons that are for Google Drive Apps or any Google Apps in general (e.g. Docs, Sheets, etc.) are the exception.
If you're add-on is associated with a non-Google App, it is possible that you will be affected with the change. Seeing as the Chrome App will be removed, the associated Add-ons would follow.
You probably already know the differences between a Chrome App, an Extension, and an Add-on, but for future readers that are not familiar, might as well post this link to a YouTube video that explains Apps vs Extensions vs Add-ons.

Cannot view video from publisher using Chrome to iPad with OpenTok

I'm currently trying to set up a connection between my web client and my iOS app, but for some reason my iOS client only sees a black box when using Chrome (version 33). I can see the video just fine if I use Firefox (both in my app and when I put the browsers side-by-side, they can see each other).
This doesn't appear to be a documented known issue with the JavaScript SDK, and I can't see any recent discussion about this on the forums (last post was mine).
The iOS sample can be located here (samples/OpenTokHelloWorld) with the browser page in samples/OpenTokHelloWorld/browser_demo.html
I suggest cd'ing into samples/OpenTokHelloWorld and running python -m SimpleHTTPServer, as it can't be run from a file:/// path.
Here is what my iPad sees:
Chrome:
Firefox:
And Chrome/Firefox (respectively), both publishing video from the same camera
Edit: after testing on other machines, it may be something specific to my environment even though none of my extensions run in Incognito and I don't have any custom plugins installed.
It looks like the OpenTok mobile SDKs with the specific webcam I was using has issues. On Android the video stream will display for a brief moment then segfault, and on iOS there will be no video at all.
I have tested this many times and could not reproduce what you are seeing in your chrome.
Without seeing any console errors or iOS logs the best suggestion is to try clearing your cache, or maybe restarting your computer (longshot)

How does Chrome side-load "store apps"?

I have been tasked with writing a simple one-time-use Metro/windows store/modern UI (whatever you want to call it now) app for windows 8; it wouldn't be appropriate to try to get it into the store, because we only plan on deploying it to about 4 or 5 devices. I noticed that when I installed Chrome on the machine, it somehow managed to sneak a metro version of itself into my start menu.
I am not looking for a way to deploy a metro app to another machine, I can already do this a variety of ways (including add-appxpackage and via the remote debugger tools with visual studio 2012), I am only curious how Chrome managed to side-load a metro app, and what process they used.
Anyone have any ideas?
There was no side-loading of a Windows App when Chrome was installed. Browsers get special treatment, and the default browser (and only the default browser) can act as a Windows Store app if it implements the appropriate functionality.
There is a downloadable white paper about how this works on MSDN:
http://msdn.microsoft.com/en-us/library/windows/apps/hh465413.aspx