Building efficient apps and extensions with push messaging

Thursday, May 09, 2013

Labels: ,

Event pages keep apps and extensions efficient by allowing them to respond to a variety of events such as timers or navigation to a particular site, without having to remain running persistently. But what if you need to respond to something that occurs outside of Chrome, such as a news alert, a message sent to a user or a stock hitting a price threshold? Until now, you had to do this by repeatedly polling a server. This process consumed bandwidth and reduced the battery life of your users’ machines. For a more efficient solution, starting today you can use Google Cloud Messaging for Chrome (GCM) - across all channels of Chrome.

GCM will be familiar to developers who have used Google Cloud Messaging for Android. To send a message, all you need to do is:

  1. Request a token (channel ID) via chrome.pushMessaging.getChannelId()
  2. Pass the returned token to your server. 
  3. Whenever you need to send a message to your app or extension, post the message along with the token to the GCM server-side API. 
Your message is then delivered in near real time to Chrome. This makes your event page wake up (if it’s not already running), and the message is delivered to your chrome.pushMessaging.onMessage listener.



To use GCM, your users must be signed into Chrome, as the service relies on an efficient push channel that’s only established for signed-in users. Messages are automatically delivered to all the devices where the user has signed in and installed your app/extension.

To add GCM to your app/extension, take a look at the overview of the service or start with some of the sample apps—and start pushing!

Integrate Chrome with your iOS app

Tuesday, May 07, 2013

As an iOS app developer, when your users want to access web content, you currently have two options: create your own in-app web browser frame, or send users away from your app to a browser.

With Chrome’s OpenInChromeController class with x-callback, users can open a web page in Chrome and then return to your app with just one tap.

In the example below, a YouTube user has opened a link in Chrome. “YouTube” is prominently displayed in Chrome’s back button. Touching “YouTube” returns the user to the YouTube app.


After you've downloaded the OpenInChromeController class and added it to your project, you’ll be able to check if Chrome is installed, and if so, send links to Chrome with or without x-callback enabled. Additionally, you can specify whether or not to open a new tab when sending a link to Chrome. For a deeper dive and to download the code, check out our developer docs.

Posted by Michele Aiello, Software Engineer and Callback Captain

Preview the new Chrome packaged apps

Wednesday, May 01, 2013

A few months ago, we announced the developer preview of Chrome packaged apps and the Chrome App Launcher. That preview enabled you to to upload your Chrome packaged apps to the Chrome Web Store and test the app install flow. However, a Chrome packaged app was discoverable only if you had a direct link to it, not via searching and browsing the store.

Starting today Chrome packaged apps will be available in the Chrome Web Store for anyone on Chrome's developer channel on Windows and Chrome OS. You will notice that the “App” category now contains only the new Chrome packaged apps. A new category, called “Websites”, contains all existing hosted apps and legacy packaged apps.

.  

Many of these apps are works in progress, which is why we’re only making them easily available on Chrome’s dev channel. If you’ve written a packaged app, or are working on one, now is a great time to get some early feedback and polish your app before Chrome packaged apps become more broadly available.

A number of developers have taken advantage of the early preview to publish apps that demonstrate the new powerful capabilities of the packaged apps platform. If you're looking for inspiration, we've highlighted a few of them for you to try out in the Web Store’s Apps category. If you’re not sure whether a Chrome packaged app is right for you, you can learn more at our developer site: developer.chrome.com/apps. As always, we welcome your feedback on our G+ Developers page or our developer forum.

Posted by Amanda Bishop, Product manager and (web) store keeper

Chrome 27 Beta: A Speedier Web and New HTML5 Forms

Thursday, April 04, 2013

Today we launched Chrome 27 on the Beta channel. This release introduces smarter behind-the-scenes resource scheduling and a few new features for web developers. Unless otherwise noted, updates apply to desktop versions of Chrome and Chrome for Android.

Faster page loads

Web content now appears on screen 5% faster (on average) thanks to changes in Chrome’s resource scheduler. Starting with this release, the scheduler is more aggressive about using an idle connection and demoting the priority of preloaded resources so that they don’t interfere with critical assets. We’ve also added Speed Index values from webpagetest.org to the list of metrics we use to measure improvements in page load time.

Elegant HTML5 date and time <input> forms

The month, week, and date <input> types now feature a simple, elegant user interface on desktop versions of Chrome, as shown in these screenshots from the datalist demo page:


Live audio input to Web Audio API

Starting in today’s Beta, you can use live audio as input to the Web Audio API for extremely low-latency local audio manipulation and playback. When combined with the recent hook up of Web Audio and WebRTC PeerConnection, it enables analysis and manipulation of the input signal to WebRTC. For now this feature is only available on Mac and Windows.

Sync FileSystem API for Chrome Apps

The Sync FileSystem API is a new offline storage API for Chrome Packaged Apps which automatically synchronizes stored data across clients via Google Drive. The files are stored in private sandboxes and can be manipulated with the HTML5 File API and FileSystem API. To play with the code, check out the API spec and syncfs-editor sample app.

DevTools updates

Dock-to-right supports vertical split view, and you can now right-click resources in the Network tab to “Copy as cURL”. The network panel has been improved as well: you can now customize what columns are shown, including the new “domain” one. Finally, console messages can be filtered by source and impl-side painting events are properly displayed in the timeline.

Other web platform features in this release
  • Unprefixed support for the allowfullscreen attribute for <iframe> allows embedded video players like YouTube’s to go fullscreen.
  • The User-Agent field is now sent in WebSocket opening handshake headers.
  • The ch CSS unit can be used to match the width and spacing of the "0"-glyph in the current font.
  • The 'X-Content-Type-Options: nosniff' HTTP response header now blocks script that's served with a content type other than one of the few we recognize as executable.
Visit chromestatus.com for a complete overview of Chrome’s developer features, and circle +Google Chrome Developers for more frequent updates.

Posted by Kinuko Yasuda, Software Engineer and Super Sync-er

Blink: A rendering engine for the Chromium project

Wednesday, April 03, 2013

Labels: ,

WebKit is a lightweight yet powerful rendering engine that emerged out of KHTML in 2001. Its flexibility, performance and thoughtful design made it the obvious choice for Chromium's rendering engine back when we started. Thanks to the hard work by all in the community, WebKit has thrived and kept pace with the web platform’s growing capabilities since then.

However, Chromium uses a different multi-process architecture than other WebKit-based browsers, and supporting multiple architectures over the years has led to increasing complexity for both the WebKit and Chromium projects. This has slowed down the collective pace of innovation - so today, we are introducing Blink, a new open source rendering engine based on WebKit.

This was not an easy decision. We know that the introduction of a new rendering engine can have significant implications for the web. Nevertheless, we believe that having multiple rendering engines—similar to having multiple browsers—will spur innovation and over time improve the health of the entire open web ecosystem.

In the short term, Blink will bring little change for web developers. The bulk of the initial work will focus on internal architectural improvements and a simplification of the codebase. For example, we anticipate that we’ll be able to remove 7 build systems and delete more than 7,000 files—comprising more than 4.5 million lines—right off the bat. Over the long term a healthier codebase leads to more stability and fewer bugs.

Throughout this transition, we’ll collaborate closely with other browser vendors to move the web forward and preserve the compatibility that made it a successful ecosystem. In that spirit, we’ve set strong guidelines for new features that emphasize standards, interoperability, conformance testing and transparency.

To learn more about Blink visit our project page.

Discover Chrome DevTools - Our new interactive course

Thursday, March 21, 2013

Today, we are launching Discover DevTools, an interactive Code School training course that will teach you how to take advantage of Chrome DevTool's powerful suite of resources and speed up the development and debugging of your web apps.

   
In each of the seven chapters of this interactive course, you can watch an overview video teaching you the latest techniques, and follow a series of challenges where your knowledge will be put to the test. We've integrated the Chrome DevTools themselves into the course, so as you explore the functionality within them, you'll get immediate feedback and earn points and badges.

Even regular users of the Chrome DevTools may be surprised to find some lesser-known features from this course that can really boost productivity. You'll learn a debugging workflow to go from an uncaught exception to a live fix without ever refreshing your app. In addition, the course will share time-saving tricks to improve your efficiency while debugging CSS, improving reflow issues, and interpreting your network and JavaScript bottlenecks. You'll also uncover the DOM bottlenecks that are blocking you from delivering a slick 60 FPS experience.

We hope you’ll try out the Discover DevTools course and see how Chrome DevTools can make you a more productive developer.

Posted by Paul Irish, Senior Developer Advocate (completed the course in 14:52) and Peter Lubbers, Program Manager (best time: 15:05)

Pwnium 3 and Pwn2Own Results

Monday, March 18, 2013

Labels:

Earlier this month at the CanSecWest security conference, the Chrome team took part in another Pwn2Own and hosted our third-edition Pwnium competition. This year’s participants once again impressed us with their talent and security prowess. We’re excited about what lessons we can learn from their work to make Chrome and Chrome OS even more secure.

At Pwnium, we didn’t receive any winning entries, but did reserve the right to issue “partial” rewards. We’re pleased to reward $40,000 to Pinkie Pie, who submitted a plausible bug chain involving video parsing, a Linux kernel bug and a config file error. The submission included an unreliable exploit demonstrating one of the bugs. We’ve fixed most of these bugs already.

In particular, we’d like to thank Pinkie Pie for honoring the spirit of the competition by disclosing a partial exploit at the deadline, rather than holding on to bugs in lieu of an end-to-end exploit. This means that we can find fixes sooner, target new hardening measures and keep users safe.

In the parallel Pwn2Own contest, participants attacked many different browsers and plug-ins. There was a top prize on the line for Chrome, which was claimed by Nils and Jon of MWR Labs. Of the two bugs used, one bug was in Chrome code, which we fixed in 24 hours. Thankfully, recently deployed hardening measures protected Chrome OS users. The second bug was in the Windows kernel. The new Pwn2Own rules required the researcher to hand the bug and exploit over to Microsoft, so we’re delighted that the Chrome entry will make other products safer, beyond just Chrome.

While these security gatherings and live competitions are fun, we also want to highlight the ongoing Chromium Vulnerability Reward Program, which covers not only the Chrome desktop browser, but also all Chrome OS components and Chrome on mobile devices. We’ve given away more than $900,000 in rewards over the years and we’re itching to give more, as engaging the security community is one of the best ways to keep all Internet users safe.