#io13

IO13

I sat in on three sessions at Google IO 2013 yesterday.

Memory Lane with Chrome Devtools and GMail was the first.

The presenters showed off their Heap Tracking Profiler and Memory Tracking tool in the Timeline and explained how to use them to track down a leaky DOM node. It was a practical application of how to use a developer tool to solve a particular problem.

One interesting takeaway that surprised the presenters during their research: Always allocating more memory (caching) as a way to improve performance in a large application like Gmail is not a panacea for slow performance. Having a large heap space actually slows down the garbage collector and your performance suffers. It’s a fine balance.

What surprised me was how they analyzed their problem by tracking a user with a known high memory problem for three days. The Google team constantly monitors their apps’ performance via the window.performance API and can single out hotspots in the population.

The next talk I sat in on was about Chrome Apps. The presenter, Erik Kay showed off some of the “Immersive” experiences of Chrome Apps and the different ways they could interact with the hardware on the Chrome Book. The talk included a demo of a small thermal printer being hooked up and controlled over USB which garnered some applause.

The Chrome Web Store lets you buy apps for Chrome.

The only real mention of Android was that they were using PhoneGap and Cordova to provide their compatibility layer. Same for IOS. There will be compatibility issues with deploying on iOS but it seems surprising that they would pursue this completely separate technology for Android. Surely they could ship a full version of the Chrome Runtime and deal with hardware incompatibilities directly.

The questions from the room were interesting. One man (not a Mozillian) asked about WebRTC compatibility across the different platforms, pointedly repeating the question of whether or not he’d be able to use WebRTC in an app on iOS. Only when their WebView supports it.

Another man asked something about interoperability between B2G and ChromeRT. Erik said that there is “no forcing function yet to drive standardization”.

I think my biggest takeaway from this talk was that people wearing Google Glass look like dorks.

My second biggest takeaway was that I was very surprised that there was zero mention of the Google Play Store for Chrome Apps.

Last talk I attended was a Fireside Chat with the Blink Team. While I was expecting an actual fire and was disappointed there wasn’t one, the team bravely took questions from an audience confused about feature-detection, unprefixed CSS and market fragmentation.

Dan Buchner asked the panel something about standardization and I felt a little badly for the Blink team who had a whole chunk of slides talking about how they’re going to be good citizens. (If you want to participate, you should join blink-dev@chromium.org.)

I was interested in ChromeStatus.com/features which shows a spreadsheet of features in-progress. Time will tell how their Intent to Implement and Intent to Ship broadcasting will work from an Open Source point-of-view, but they are currently claiming that a third of their intents to implement are coming from outside of Google.

I wanted to meet Paul Irish after the talk but Steven Shankland showed up and pushed me out of the way. When he was done I did get to meet him, but I think Buchner had made him angry or something. Maybe he was just tired. I dunno.

Firefox 23 Developer Tools Fixes

Bug ID Summary
581352 Console HTTP output should make JSON viewable as objects
586125 “””Copy”” “”Select All”” etc. popup menu item in the Web Console displays keyboard shortcuts
587757 Implement Browser Console
638953 Cannot copy keys or values in web console object inspector
640225 Make Property Panels Editable
688400 Web Console throws a TypeError when trying to display objects with no toString method
688401 Web Console displays “”[null]“” for [Object.create(null)]
711846 Intermittent browser_webconsole_bug_595934_message_categories.js | Test timed out (mostly on WinXP PGO)
725771 xpath use in console returns null elements
744741 console.dir tree is empty with cached messages
748851 Web Developer Console incorrectly displays escaped hex/unicode characters
757897 All code in the web console is considered to be at line 1
774365 Web Console setTimeout can’t find declared functions by name
783499 Web Console should use the debugger API
808370 Use the VariablesView in webconsole
809424 Intermittent browser_webconsole_bug_611795.js | The unknown CSS property warning is displayed only once – Got 1, expected 2
831400 Intermittent devtools/webconsole/test/browser_webconsole_bug_764572_output_open_url.js| Timed out while waiting for: complete to initialize the opening tab
836720 “”InternalError: too much recursion”” not correctly caught
840093 Text in object inspector can’t be copied
841129 Intermittent browser_repeated_messages_accuracy.js | two repeats for the second css warning – Got 1, expected 2
843287 UI improvements for the variables view and sidebar
847349 Variables View should have left arrow do collapse and navigate in separate steps
853568 Intermittentbrowser_webconsole_bug_599725_response_headers.js | we do not have the Content-Type header | Content-Length != 60 – Didn’t expect 60, but got it
855058 Intermittent browser/dom/tests/browser/browser_ConsoleAPITests.js | timer duration is positive
857441 Autocompletion popup is very jumpy while typing text
859170 Trying to select […] for a very long message printed to the web console will hang Firefox
859818 ConsoleAPIStorage.jsm tries to delete var-declared _consoleStorage
859858 Intermittent browser_bug664688_sandbox_update_after_navigation.js | Timed out while waiting for: window.location.href result is displayed after goBack(), browser_repeated_messages_accuracy.js | Timed out while waiting for: messages displayed
862024 Warning about replaced window.console API shows when content scripts do not change the object
863943 Intermittentbrowser_webconsole_bug_602572_log_bodies_checkbox.js | Test timed out, browser_webconsole_bug_603750_websocket.js | uncaught exception – ReferenceError: ok is not defined
865288 console.log with different object logged from same line number are grouped together
865792 Firefox for Android remote console doesn’t evaluate JS expressions
865871 Object inspector can’t be closed
677930 Style Inspector: make URLs clickable
777681 [rule view] Abbreviate long CSS file names source links
777877 Switch CssRuleView.jsm back to WeakMaps
854948 GCLI context.environment.contentDocument points to doc from when GCLI first opened
855502 we need a proper design for the new checkboxes
855520 “”No element selected”” in the inspector sidebar could use some margins
861908 Destroying Inspector without destroying Toolbox fails.
866381 Inspector shouldn’t break if target is a chrome document
679364 Use either content/devtools/* or content/browser/devtools/* for aliases
851231 Output console.jsm API calls to the browser console
855544 Implement a network monitor
855763 [ResponsiveMode] Intermittent browser_responsiveuiaddcustompreset.js | Test timed out, | Found a tab after previous test timed out: data:text/html,foo,browser_Services.js | Services.prompt is an nsIPromptService
855914 Start using the jetpack loader in devtools
859089 [netmonitor] Under very constrained sizes text in the timeline view is sometimes not rendered
859221 [netmonitor] Sizes are displayed in KB not kb
861197 chrome.manifest files created by the devtools loader should be ignored
723923 Debugger ‘breakpoint list’ GCLI command should have extra nice output
792815 Update promise usage in gcli commands
831720 GCLI needs an appcache command
861192 gcli addon command shows [object Object] instead of a list of addons
865680 devtools.gcli.allowSet is in firefox.js twice
869233 TEST-UNEXPECTED-FAIL | browser_cmd_appcache_valid.js | html output for appcache validate should match successfully. Actual textContent: “”Manifest URI…””
739031 Check for unused strings not used in translation (e.g. scoped.label) and remove them
740541 Style sheets in iframes are not listed in the style editor
816967 Remotable Style Editor
866264 Intermittent devtools/styleeditor/test/browser_styleeditor_new.js | new editor shows 1 rule after modification – Got 2, expected 1
772119 expose source mapped sources over the remote debugging protocol
818134 Allow multiple debuggers in toolboxes to debug separate tabs
832231 After a reload, breakpoints require multiple resumes to allow execution to continue
837723 [jsdbg2] Debugger should provide a way to get Debugger.Object referents directly
840292 The debugger’s xpcshell tests should use listTabs/attachTab instead of listContexts
843187 Variables view: going down through the properties via keyboard is really broken
849069 relative source map URLs should be resolved according to the spec’s rules
849071 Create some kind of chrome to turn source mapping on/off in the debugger
850738 Add a crap load of telemetry tests
851836 breakpoints[aLocation.line] is undefined after bug 820012
853787 Report errors in nested event loops in xpcshell tests
856232 initialize globalActorFactories upon declaring DebuggerServer
859181 Variables view closes immediately on first open
860349 Intermittent browser_dbg_createChrome.js | application timed out after 330 seconds with no output
861783 Removing watch expression of large object not possible via mouse
861817 Stop using Ctrl+Shift+O shortcut for function searching.
861852 Telemetry data from the remote protocol always appear in the remote buckets
862142 remote debugger doesn’t find any sources for simulator on nightly
862186 remove unused FileUtils import in DebuggerUI.jsm
862360 Use the exported Promise.all instead of reimplementing it
863571 Enable source map xpcshell tests on B2G
864802 The _store on each variables view instance is redundant
864900 The listTabs protocol request can fail if made immediately after a tab is closed
865073 remote debugging protocol: handlers should systematically catch and log exceptions
865328 JS debugger: clean up DebuggerClient.prototype.close
865509 JS debugger: UnsolicitedPauses in dbg-client.jsm should mention ‘exception’
866278 remote debugging protocol: number packets when dumping
867481 Remote debugging connection screen is broken
839515 Tiny fonts in the remote connection screen
849500 navigate and will-navigate events for remoted targets carry payload that is incompatible with the non-remoted case
851546 Create an Options panel for the toolbox
857082 TabTarget.makeRemote doesn’t need any arguments
859569 Target.makeRemote should attachTab
860101 payload._navPayload is a Window in ‘will-navigate’ event handler
862294 Sidebar should be responsive in docked Toolbox.
862363 Sync the killswitch upon (un)registering of a tool and respect it in Options Panel
862398 Maintain the order of tools in the tab and the options panel list
863600 Intermittent browser_toolbox_options.js on Windows PGO builds | Test timed out
851381 Make the Scratchpad evaluate asynchronously
865803 Unable to save Scratchpads, Style Editor, about:memory, … on OS X
852777 Make Tilt more extensible
862435 Tilt doesn’t open if the Inspector was opened beforehand
855244 Profiler hangs after pressing “”Stop”” if it was started in multiple profiles in different tabs
856797 Typo in “”profilerNotStarted”” in gclicommands.properties
858759 profiler.css in browser/devtools/ should actually be in browser/themes instead
859062 Hide right arrow in the SideMenuWidget
859085 Add tooltips to all labels in the UI that may have cropped values
859308 Hide Blocked in Timings tab until we know what that’s doing
859968 JSONP requests are not parsed into a tree
859980 JSON request not parsed
860055 SideMenuWidget shouldn’t scroll back to the selected item when new requests are coming in
860175 On netmonitor examining the specific details of a network action leads to bad overlapping display
860232 Function callbacks in jsonp responses should be displayed in the Response tab
861487 Sizes are displayed with non-localized decimal separator
862198 Intermittent browser_net_json-long.js | Test timed out, found a tab
864176 Details pane should remember its height when docked on the right
864519 Several Netmonitor tests fail when ECMAScript Internationalization API is enabled
866091 Intermittentdevtools/netmonitor/test/browser_net_prefs-reload.js | Test timed out | Found a tab after previous test timed out: http://example.com/browser/browser/devtools/netmonitor/test/html_simple-test-page.html and tons of fallout

Source: Firefox 22 – 23.