CINXE.COM
Chromium Blog: 2012
<!DOCTYPE html> <html class='v2 list-page' dir='ltr' itemscope='' itemtype='http://schema.org/Blog' lang='en' xmlns='http://www.w3.org/1999/xhtml' xmlns:b='http://www.google.com/2005/gml/b' xmlns:data='http://www.google.com/2005/gml/data' xmlns:expr='http://www.google.com/2005/gml/expr'> <head> <link href='https://www.blogger.com/static/v1/widgets/3566091532-css_bundle_v2.css' rel='stylesheet' type='text/css'/> <title> Chromium Blog: 2012 </title> <meta content='width=device-width, height=device-height, initial-scale=1.0' name='viewport'/> <meta content='IE=Edge' http-equiv='X-UA-Compatible'/> <meta content='Chromium Blog' property='og:title'/> <meta content='en_US' property='og:locale'/> <meta content='https://blog.chromium.org/2012/' property='og:url'/> <meta content='Chromium Blog' property='og:site_name'/> <!-- Twitter Card properties --> <meta content='Chromium Blog' property='og:title'/> <meta content='summary' name='twitter:card'/> <meta content='@ChromiumDev' name='twitter:creator'/> <link href='https://fonts.googleapis.com/css?family=Roboto:400italic,400,500,500italic,700,700italic' rel='stylesheet' type='text/css'/> <link href='https://fonts.googleapis.com/icon?family=Material+Icons' rel='stylesheet'/> <script src='https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js' type='text/javascript'></script> <!-- End --> <style id='page-skin-1' type='text/css'><!-- /* <Group description="Header Color" selector="header"> <Variable name="header.background.color" description="Header Background" type="color" default="#ffffff"/> </Group> */ .header-outer { border-bottom: 1px solid #e0e0e0; background: #ffffff; } html, .Label h2, #sidebar .rss a, .BlogArchive h2, .FollowByEmail h2.title, .widget .post h2 { font-family: Roboto, sans-serif; } .plusfollowers h2.title, .post h2.title, .widget h2.title { font-family: Roboto, sans-serif; } .widget-item-control { height: 100%; } .widget.Header, #header { position: relative; height: 100%; width: 100%; } } .widget.Header .header-logo1 { float: left; margin-right: 15px; padding-right: 15px; border-right: 1px solid #ddd; } .header-title h2 { color: rgba(0,0,0,.54); display: inline-block; font-size: 40px; font-family: Roboto, sans-serif; font-weight: normal; line-height: 76px; vertical-align: top; } .header-inner { background-repeat: no-repeat; background-position: right 0px; } .post-author, .byline-author { font-size: 14px; font-weight: normal; color: #757575; color: rgba(0,0,0,.54); } .post-content .img-border { border: 1px solid rgb(235, 235, 235); padding: 4px; } .header-title a { text-decoration: none !important; } pre { border: 1px solid #bbbbbb; margin-top: 1em 0 0 0; padding: 0.99em; overflow-x: auto; overflow-y: auto; } pre, code { font-size: 9pt; background-color: #fafafa; line-height: 125%; font-family: monospace; } pre, code { color: #060; font: 13px/1.54 "courier new",courier,monospace; } .header-left .header-logo1 { width: 128px !important; } .header-desc { line-height: 20px; margin-top: 8px; } .fb-custom img, .twitter-custom img, .gplus-share img { cursor: pointer; opacity: 0.54; } .fb-custom img:hover, .twitter-custom img:hover, .gplus-share img:hover { opacity: 0.87; } .fb-like { width: 80px; } .post .share { float: right; } #twitter-share{ border: #CCC solid 1px; border-radius: 3px; background-image: -webkit-linear-gradient(top,#ffffff,#dedede); } .twitter-follow { background: url(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimKBWDeRb1pqsbNiP9AFLyFDZHzXGYEJZRELMrZ6iI0yz4KeMPH_7tPsrMq9PpJ3H6riC_UohpWMn83_Z1N2sTuTTrVL7i6TrNzpO9oFg4e8VFK4zFJb1rfamWfc8RxG8Fhz2RgRgHN10u/s1600/twitter-bird.png) no-repeat left center; padding-left: 18px; font: normal normal normal 11px/18px 'Helvetica Neue',Arial,sans-serif; font-weight: bold; text-shadow: 0 1px 0 rgba(255,255,255,.5); cursor: pointer; margin-bottom: 10px; } .twitter-fb { padding-top: 2px; } .fb-follow-button { background: -webkit-linear-gradient(#4c69ba, #3b55a0); background: -moz-linear-gradient(#4c69ba, #3b55a0); background: linear-gradient(#4c69ba, #3b55a0); border-radius: 2px; height: 18px; padding: 4px 0 0 3px; width: 57px; border: #4c69ba solid 1px; } .fb-follow-button a { text-decoration: none !important; text-shadow: 0 -1px 0 #354c8c; text-align: center; white-space: nowrap; font-size: 11px; color: white; vertical-align: top; } .fb-follow-button a:visited { color: white; } .fb-follow { padding: 0px 5px 3px 0px; width: 14px; vertical-align: bottom; } .gplus-wrapper { margin-top: 3px; display: inline-block; vertical-align: top; } .twitter-custom, .gplus-share { margin-right: 12px; } .fb-follow-button{ margin: 10px auto; } /** CUSTOM CODE **/ --></style> <style id='template-skin-1' type='text/css'><!-- .header-outer { clear: both; } .header-inner { margin: auto; padding: 0px; } .footer-outer { background: #f5f5f5; clear: both; margin: 0; } .footer-inner { margin: auto; padding: 0px; } .footer-inner-2 { /* Account for right hand column elasticity. */ max-width: calc(100% - 248px); } .google-footer-outer { clear: both; } .cols-wrapper, .google-footer-outer, .footer-inner, .header-inner { max-width: 978px; margin-left: auto; margin-right: auto; } .cols-wrapper { margin: auto; clear: both; margin-top: 60px; margin-bottom: 60px; overflow: hidden; } .col-main-wrapper { float: left; width: 100%; } .col-main { margin-right: 278px; max-width: 660px; } .col-right { float: right; width: 248px; margin-left: -278px; } /* Tweaks for layout mode. */ body#layout .google-footer-outer { display: none; } body#layout .header-outer, body#layout .footer-outer { background: none; } body#layout .header-inner { height: initial; } body#layout .cols-wrapper { margin-top: initial; margin-bottom: initial; } --></style> <!-- start all head --> <meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/> <meta content='blogger' name='generator'/> <link href='https://blog.chromium.org/favicon.ico' rel='icon' type='image/x-icon'/> <link href='https://blog.chromium.org/2012/' rel='canonical'/> <link rel="alternate" type="application/atom+xml" title="Chromium Blog - Atom" href="https://blog.chromium.org/feeds/posts/default" /> <link rel="alternate" type="application/rss+xml" title="Chromium Blog - RSS" href="https://blog.chromium.org/feeds/posts/default?alt=rss" /> <link rel="service.post" type="application/atom+xml" title="Chromium Blog - Atom" href="https://www.blogger.com/feeds/2471378914199150966/posts/default" /> <!--Can't find substitution for tag [blog.ieCssRetrofitLinks]--> <meta content='https://blog.chromium.org/2012/' property='og:url'/> <meta content='Chromium Blog' property='og:title'/> <meta content='News and developments from the open source browser project' property='og:description'/> <!-- end all head --> <base target='_self'/> <style> html { font-family: Roboto, sans-serif; -moz-osx-font-smoothing: grayscale; -webkit-font-smoothing: antialiased; } body { padding: 0; /* This ensures that the scroll bar is always present, which is needed */ /* because content render happens after page load; otherwise the header */ /* would "bounce" in-between states. */ min-height: 150%; } h2 { font-size: 16px; } h1, h2, h3, h4, h5 { line-height: 2em; } html, h4, h5, h6 { font-size: 14px; } a, a:visited { /* Ensures links meet minimum contrast ratios. */ color: #3974d6; text-decoration: none; } a:focus, a:hover, a:active { text-decoration: none; } .Header { margin-top: 15px; } .Header h1 { font-size: 32px; font-weight: 300; line-height: 32px; height: 42px; } .header-inner .Header .titlewrapper { padding: 0; margin-top: 30px; } .header-inner .Header .descriptionwrapper { padding: 0; margin: 0; } .cols-wrapper { margin-top: 56px; } .header-outer, .cols-wrapper, .footer-outer, .google-footer-outer { padding: 0 60px; } .header-inner { height: 256px; position: relative; } html, .header-inner a { color: #212121; color: rgba(0,0,0,.87); } .header-inner .google-logo { display: inline-block; background-size: contain; z-index: 1; height: 70px; overflow: hidden; margin-top: 4px; margin-right: 8px; } .header-left { position: absolute; top: 50%; -webkit-transform: translateY(-50%); transform: translateY(-50%); margin-top: 12px; width: 100%; } .google-logo { margin-left: -4px; } .google-logo img{ height:70px; } #google-footer { position: relative; font-size: 13px; list-style: none; text-align: right; } #google-footer a { color: #444; } #google-footer ul { margin: 0; padding: 0; height: 144px; line-height: 144px; } #google-footer ul li { display: inline; } #google-footer ul li:before { color: #999; content: "\00b7"; font-weight: bold; margin: 5px; } #google-footer ul li:first-child:before { content: ''; } #google-footer .google-logo-dark { left: 0; margin-top: -16px; position: absolute; top: 50%; } /** Sitemap links. **/ .footer-inner-2 { font-size: 14px; padding-top: 42px; padding-bottom: 74px; } .footer-inner-2 .HTML h2 { color: #212121; color: rgba(0,0,0,.87); font-size: 14px; font-weight: 500; padding-left: 0; margin: 10px 0; } .footer-inner-2 .HTML ul { font-weight: normal; list-style: none; padding-left: 0; } .footer-inner-2 .HTML li { line-height: 24px; padding: 0; } .footer-inner-2 li a { color: rgba(65,132,243,.87); } /** Archive widget. **/ .BlogArchive { font-size: 13px; font-weight: normal; } .BlogArchive .widget-content { display: none; } .BlogArchive h2, .Label h2 { color: #4184F3; text-decoration: none; } .BlogArchive .hierarchy li { display: inline-block; } /* Specificity needed here to override widget CSS defaults. */ .BlogArchive #ArchiveList ul li, .BlogArchive #ArchiveList ul ul li { margin: 0; padding-left: 0; text-indent: 0; } .BlogArchive .intervalToggle { cursor: pointer; } .BlogArchive .expanded .intervalToggle .new-toggle { -ms-transform: rotate(180deg); transform: rotate(180deg); } .BlogArchive .new-toggle { float: right; padding-top: 3px; opacity: 0.87; } #ArchiveList { text-transform: uppercase; } #ArchiveList .expanded > ul:last-child { margin-bottom: 16px; } #ArchiveList .archivedate { width: 100%; } /* Months */ .BlogArchive .items { max-width: 150px; margin-left: -4px; } .BlogArchive .expanded .items { margin-bottom: 10px; overflow: hidden; } .BlogArchive .items > ul { float: left; height: 32px; } .BlogArchive .items a { padding: 0 4px; } .Label { font-size: 13px; font-weight: normal; } .sidebar-icon { display: inline-block; width: 24px; height: 24px; vertical-align: middle; margin-right: 12px; margin-top: -1px } .Label a { margin-right: 4px; } .Label .widget-content { display: none; } .FollowByEmail { font-size: 13px; font-weight: normal; } .FollowByEmail h2 { background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAALCAYAAACZIGYHAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAUBJREFUeNrMkSGLAlEUhb+ZB4JFi8mx2cz+ApvhRUGTcUCrNqNJDYIi+DO0GUwmQXDK2DSIoGgZcSaIjDrzwrK4ssvChj1w0733O+fdp+m6PozH4yQSCfb7Pa7r8pOi0SjJZBLP8zgej4gAIMvlMuPxmADIYrHger1+C6lUKmo+NJ/NZojb7SZDWiwWo1qtks1msW2bw+HwZdkwDHq9HvV6nel0SqvVYrvdIh6Ph3Qch+VyqRYLhQJSSjRNw7IsfN9XgGKxSLfbJZfL0e/3aTabrFYr7vc7IujLcOh8PqunrNdr0uk0pVKJVCpFJBJRgEajweVyod1uMxgM2O12BAGUgRbU8DV2JpOhVquRz+cRQii3+XxOp9NRN3jVR5LPOp1OjEYjlSL8hclkgmmabDabt4d+m+S30vkD/R/IU4ABAPTZgnZdmG/PAAAAAElFTkSuQmCC"); background-repeat: no-repeat; background-position: 0 50%; text-indent: 30px; } .FollowByEmail .widget-content { display: none; } .searchBox input { border: 1px solid #eee; color: #212121; color: rgba(0,0,0,.87); font-size: 14px; padding: 8px 8px 8px 40px; width: 164px; font-family: Roboto, sans-serif; background: url("https://www.gstatic.com/images/icons/material/system/1x/search_grey600_24dp.png") 8px center no-repeat; } .searchBox ::-webkit-input-placeholder { /* WebKit, Blink, Edge */ color: rgba(0,0,0,.54); } .searchBox :-moz-placeholder { /* Mozilla Firefox 4 to 18 */ color: #000; opacity: 0.54; } .searchBox ::-moz-placeholder { /* Mozilla Firefox 19+ */ color: #000; opacity: 0.54; } .searchBox :-ms-input-placeholder { /* Internet Explorer 10-11 */ color: #757575; } .widget-item-control { margin-top: 0px; } .section { margin: 0; padding: 0; } #sidebar-top { border: 1px solid #eee; } #sidebar-top > div { margin: 16px 0; } .widget ul { line-height: 1.6; } /*main post*/ .post { margin-bottom:30px; } #main .post .title { margin: 0; } #main .post .title a { color: #212121; color: rgba(0,0,0,.87); font-weight: normal; font-size: 24px; } #main .post .title a:hover { text-decoration:none; color: #3974d6; } .message, #main .post .post-header { margin: 0; padding: 0; } #main .post .post-header .caption, #main .post .post-header .labels-caption, #main .post .post-footer .caption, #main .post .post-footer .labels-caption { color: #444; font-weight: 500; } #main .tr-caption-container td { text-align: left; } #main .post .tr-caption { color: #757575; color: rgba(0,0,0,.54); display: block; max-width: 560px; padding-bottom: 20px; } #main .post .tr-caption-container { line-height: 24px; margin: -1px 0 0 0 !important; padding: 4px 0; text-align: left; } #main .post .post-header .published{ font-size:11px; font-weight:bold; } .post-header .publishdate { font-size: 17px; font-weight:normal; color: #757575; color: rgba(0,0,0,.54); } #main .post .post-footer{ font-size:12px; padding-bottom: 21px; } .label-footer { margin-bottom: 12px; margin-top: 12px; } .comment-img { margin-right: 16px; opacity: 0.54; vertical-align: middle; } #main .post .post-header .published { margin-bottom: 40px; margin-top: -2px; } .post .post-content { color: #212121; color: rgba(0,0,0,.87); font-size: 17px; margin: 25px 0 36px 0; line-height: 32px; } .post-body .post-content ul, .post-body .post-content ol { margin: 16px 0; padding: 0 48px; } .post-summary { display: none; } /* Another old-style caption. */ .post-content div i, .post-content div + i { font-size: 14px; font-style: normal; color: #757575; color: rgba(0,0,0,.54); display: block; line-height: 24px; margin-bottom: 16px; text-align: left; } /* Another old-style caption (with link) */ .post-content a > i { color: #4184F3 !important; } /* Old-style captions for images. */ .post-content .separator + div:not(.separator) { margin-top: -16px; } /* Capture section headers. */ .post-content br + br + b, .post-content .space + .space + b, .post-content .separator + b { display: inline-block; margin-bottom: 8px; margin-top: 24px; } .post-content li { line-height: 32px; } /* Override all post images/videos to left align. */ .post-content .separator, .post-content > div { text-align: left; } .post-content .separator > a, .post-content .separator > span { margin-left: 0 !important; } .post-content img { max-width: 100%; height: auto; width: auto; } .post-content .tr-caption-container img { margin-bottom: 12px; } .post-content iframe, .post-content embed { max-width: 100%; } .post-content .carousel-container { margin-bottom: 48px; } #main .post-content b { font-weight: 500; } /* These are the main paragraph spacing tweaks. */ #main .post-content br { content: ' '; display: block; padding: 4px; } .post-content .space { display: block; height: 8px; } .post-content iframe + .space, .post-content iframe + br { padding: 0 !important; } #main .post .jump-link { margin-bottom:10px; } .post-content img, .post-content iframe { margin: 30px 0 20px 0; } .post-content > img:first-child, .post-content > iframe:first-child { margin-top: 0; } .col-right .section { padding: 0 16px; } #aside { background:#fff; border:1px solid #eee; border-top: 0; } #aside .widget { margin:0; } #aside .widget h2, #ArchiveList .toggle + a.post-count-link { color: #212121; color: rgba(0,0,0,.87); font-weight: 400 !important; margin: 0; } #ArchiveList .toggle { float: right; } #ArchiveList .toggle .material-icons { padding-top: 4px; } #sidebar .tab { cursor: pointer; } #sidebar .tab .arrow { display: inline-block; float: right; } #sidebar .tab .icon { display: inline-block; vertical-align: top; height: 24px; width: 24px; margin-right: 13px; margin-left: -1px; margin-top: 1px; color: #757575; color: rgba(0,0,0,.54); } #sidebar .widget-content > :first-child { padding-top: 8px; } #sidebar .active .tab .arrow { -ms-transform: rotate(180deg); transform: rotate(180deg); } #sidebar .arrow { color: #757575; color: rgba(0,0,0,.54); } #sidebar .widget h2 { font-size: 14px; line-height: 24px; display: inline-block; } #sidebar .widget .BlogArchive { padding-bottom: 8px; } #sidebar .widget { border-bottom: 1px solid #eee; box-shadow: 0px 1px 0 white; margin-bottom: 0; padding: 14px 0; min-height: 20px; } #sidebar .widget:last-child { border-bottom: none; box-shadow: none; margin-bottom: 0; } #sidebar ul { margin: 0; padding: 0; } #sidebar ul li { list-style:none; padding:0; } #sidebar ul li a { line-height: 32px; } #sidebar .archive { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAYCAYAAADzoH0MAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAE1JREFUeNpiNDY23s9AAWBioBCwYBM8c+YMVsUmJibEGYBNMS5DaeMFfDYSZQA2v9I3FrB5AZeriI4FmnrBccCT8mhmGs1MwyAzAQQYAKEWG9zm9QFEAAAAAElFTkSuQmCC"); height: 24px; line-height: 24px; padding-left: 30px; } #sidebar .labels { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAYAAAA7bUf6AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAUxJREFUeNpiNDY23s9AAMycOfM7UF05kHkZmzwTMkdSUhKrIcXFxZy3bt3qBjIN8RrS09PDsHnzZjCNDr58+cKQlpbGDjSoHcg1w2oIyAUODg5gARCNzUVIBrUCuVYYhjx//pzhwIEDYAEQDeJjA1CDWIAGNQK59jBxRuSABbkAlwHIgIeHh2HWrFn/1NTU2oDcvSgBS4wBSC5iArqoCsj1YGIgEyAZVMoEchqlBjEB/cZAiUHg2AEGznpKDAImxOeM////B4VLKtBvEUCngZ1ILKivr3/u6+ubBzJAGZQ9gC5aQoqLgAY8BhkAZL4BuQQkxgXE34A4BuiiZEIuAhrwEGhAEZD5DpzYoIaA2UAM4kQADUrHZRDUgAIg8wO2XAwzbQXQa5OweQ1owB10AyA6gS7BgX1u3ry5397eHow3bdo0EyjGi00tQIABANPgyAH1q1eaAAAAAElFTkSuQmCC"); height: 20px; line-height: 20px; padding-left: 30px; } #sidebar .rss a { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAX5JREFUeNqsVDGSgkAQHL2rIiIikohIc/EBRkbwAIwuwgfwAXiAD9AHSI7kEkECRCb6AIyINDLx7K0aa6kT7uq0q7YYtnZ7umdnt7darXbr9Zpegeu61DNNc0dvwCcH4/GYJpMJnc9nOhwOVJbl/4hAAokMECZJQtvt9k+kH7qufyEYDAakqqqYxFdRFBqNRmTbNg2HQ0rTlK7XayvR0xqBdDqdkuM4dE/0ULhYLOh4PHYrknG5XGi/31MYhuL/nkwonM1mlGUZ1XXdrsiyLGEDhY7juJEZ1u5tIixDGdYhmYw+B7CAzPP5nDabjdgIAgCksMX1832/3drtdqPT6SQWapomiGEFNkDEdpDMMAzK81ys/7XYy+XyoQgq2WoURSIJ2iIIgp/WZCCTvFm2wgeAU31aI3Q2GhIDMeB53qPYPIcm5VrxXIOIOxsDMStjVawAc1VViRgN22lNBiuQN3GR+SY07hpOoStmFQAKXRRFY93bnpG+fONfedi+BRgAbkS8Fxp7QQIAAAAASUVORK5CYII="); } #sidebar .subscription a { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAALCAYAAACZIGYHAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAUBJREFUeNrMkSGLAlEUhb+ZB4JFi8mx2cz+ApvhRUGTcUCrNqNJDYIi+DO0GUwmQXDK2DSIoGgZcSaIjDrzwrK4ssvChj1w0733O+fdp+m6PozH4yQSCfb7Pa7r8pOi0SjJZBLP8zgej4gAIMvlMuPxmADIYrHger1+C6lUKmo+NJ/NZojb7SZDWiwWo1qtks1msW2bw+HwZdkwDHq9HvV6nel0SqvVYrvdIh6Ph3Qch+VyqRYLhQJSSjRNw7IsfN9XgGKxSLfbJZfL0e/3aTabrFYr7vc7IujLcOh8PqunrNdr0uk0pVKJVCpFJBJRgEajweVyod1uMxgM2O12BAGUgRbU8DV2JpOhVquRz+cRQii3+XxOp9NRN3jVR5LPOp1OjEYjlSL8hclkgmmabDabt4d+m+S30vkD/R/IU4ABAPTZgnZdmG/PAAAAAElFTkSuQmCC"); } #sidebar-bottom { background: #f5f5f5; border-top:1px solid #eee; } #sidebar-bottom .widget { border-bottom: 1px solid #e0e0e0; padding: 15px 0; text-align: center; } #sidebar-bottom > div:last-child { border-bottom: 0; } #sidebar-bottom .text { line-height: 20px; } /* Home, forward, and backward pagination. */ .blog-pager { border-top : 1px #e0e0e0 solid; padding-top: 10px; margin-top: 15px; text-align: right !important; } #blog-pager { margin-botom: 0; margin-top: -14px; padding: 16px 0 0 0; } #blog-pager a { display: inline-block; } .blog-pager i.disabled { opacity: 0.2 !important; } .blog-pager i { color: black; margin-left: 16px; opacity: 0.54; } .blog-pager i:hover, .blog-pager i:active { opacity: 0.87; } #blog-pager-older-link, #blog-pager-newer-link { float: none; } .gplus-profile { background-color: #fafafa; border: 1px solid #eee; overflow: hidden; width: 212px; } .gplus-profile-inner { margin-left: -1px; margin-top: -1px; } /* Sidebar follow buttons. */ .followgooglewrapper { padding: 12px 0 0 0; } .loading { visibility: hidden; } .detail-page .post-footer .cmt_iframe_holder { padding-top: 40px !important; } /** Desktop **/ @media (max-width: 900px) { .col-right { display: none; } .col-main { margin-right: 0; min-width: initial; } .footer-outer { display: none; } .cols-wrapper { min-width: initial; } .google-footer-outer { background-color: #f5f5f5; } } /** Tablet **/ @media (max-width: 712px) { .header-outer, .cols-wrapper, .footer-outer, .google-footer-outer { padding: 0 40px; } } /* An extra breakpoint accommodating for long blog titles. */ @media (max-width: 600px) { .header-left { height: 100%; position: initial; top: inherit; margin-top: 0; -webkit-transform: initial; transform: initial; } .header-title { margin-top: 18px; } .header-inner { height: auto; margin-bottom: 32px; margin-top: 32px; } .header-desc { margin-top: 12px; } .header-inner .google-logo { height: 70px; margin-top: 3px; } .header-inner .google-logo img { height: 70px; } .header-title h2 { font-size: 32px; line-height: 76px; } } /** Mobile/small desktop window; also landscape. **/ @media (max-width: 480px), (max-height: 480px) { .header-outer, .cols-wrapper, .footer-outer, .google-footer-outer { padding: 0 16px; } .cols-wrapper { margin-top: 0; } .post-header .publishdate, .post .post-content { font-size: 16px; } .post .post-content { line-height: 28px; margin-bottom: 30px; } .post { margin-top: 30px; } .byline-author { display: block; font-size: 12px; line-height: 24px; margin-top: 6px; } #main .post .title a { font-weight: 500; color: #4c4c4c; color: rgba(0,0,0,.70); } #main .post .post-header { padding-bottom: 12px; } #main .post .post-header .published { margin-bottom: -8px; margin-top: 3px; } .post .read-more { display: block; margin-top: 14px; } .post .tr-caption { font-size: 12px; } #main .post .title a { font-size: 20px; line-height: 30px; } .post-content iframe { /* iframe won't keep aspect ratio when scaled down. */ max-height: 240px; } .post-content .separator img, .post-content .tr-caption-container img, .post-content iframe { margin-left: -16px; max-width: inherit; width: calc(100% + 32px); } .post-content table, .post-content td { width: 100%; } #blog-pager { margin: 0; padding: 16px 0; } /** List page tweaks. **/ .list-page .post-original { display: none; } .list-page .post-summary { display: block; } .list-page .comment-container { display: none; } .list-page #blog-pager { padding-top: 0; border: 0; margin-top: -8px; } .list-page .label-footer { display: none; } .list-page #main .post .post-footer { border-bottom: 1px solid #eee; margin: -16px 0 0 0; padding: 0 0 20px 0; } .list-page .post .share { display: none; } /** Detail page tweaks. **/ .detail-page .post-footer .cmt_iframe_holder { padding-top: 32px !important; } .detail-page .label-footer { margin-bottom: 0; } .detail-page #main .post .post-footer { padding-bottom: 0; } .detail-page #comments { display: none; } } [data-about-pullquote], [data-is-preview], [data-about-syndication] { display: none; } </style> <noscript> <style> .loading { visibility: visible }</style> </noscript> <script type='text/javascript'> (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-37592578-1', 'auto', 'blogger'); ga('blogger.send', 'pageview'); </script> <link href='https://www.blogger.com/dyn-css/authorization.css?targetBlogID=2471378914199150966&zx=1c2c238c-e52c-4f00-81f6-e81b420ff116' media='none' onload='if(media!='all')media='all'' rel='stylesheet'/><noscript><link href='https://www.blogger.com/dyn-css/authorization.css?targetBlogID=2471378914199150966&zx=1c2c238c-e52c-4f00-81f6-e81b420ff116' rel='stylesheet'/></noscript> <meta name='google-adsense-platform-account' content='ca-host-pub-1556223355139109'/> <meta name='google-adsense-platform-domain' content='blogspot.com'/> <link rel="stylesheet" href="https://fonts.googleapis.com/css2?display=swap&family=Roboto"></head> <body> <script type='text/javascript'> //<![CDATA[ var axel = Math.random() + ""; var a = axel * 10000000000000; document.write('<iframe src="https://2542116.fls.doubleclick.net/activityi;src=2542116;type=gblog;cat=googl0;ord=ord=' + a + '?" width="1" height="1" frameborder="0" style="display:none"></iframe>'); //]]> </script> <noscript> <img alt='' height='1' src='https://ad.doubleclick.net/ddm/activity/src=2542116;type=gblog;cat=googl0;ord=1?' width='1'/> </noscript> <!-- Header --> <div class='header-outer'> <div class='header-inner'> <div class='section' id='header'><div class='widget Header' data-version='1' id='Header1'> <div class='header-left'> <div class='header-title'> <a class='google-logo' href='https://blog.chromium.org/'> <img alt="Chromium Blog" height="50" src="//1.bp.blogspot.com/-vkF7AFJOwBk/VkQxeAGi1mI/AAAAAAAARYo/57denvsQ8zA/s1600-r/logo_chromium.png"> </a> <a href='/.'> <h2> Chromium Blog </h2> </a> </div> <div class='header-desc'> News and developments from the open source browser project </div> </div> </div></div> </div> </div> <!-- all content wrapper start --> <div class='cols-wrapper loading'> <div class='col-main-wrapper'> <div class='col-main'> <div class='section' id='main'><div class='widget Blog' data-version='1' id='Blog1'> <div class='post' data-id='341654580879016691' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='https://blog.chromium.org/2012/12/no-more-silent-extension-installs.html' itemprop='url' title='No more silent extension installs'> No more silent extension installs </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Friday, December 21, 2012 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> <p> It’s important for users to know what extensions they have enabled since extensions can sometimes influence Chrome’s functionality and performance. Many users have installed extensions from the Chrome Web Store, but some users have extensions that were silently installed without their knowledge. </p> <p> Until now, it has been possible to silently install extensions into Chrome on Windows using the <a href="http://developer.chrome.com/extensions/external_extensions.html#registry">Windows registry mechanism</a> for extension deployment. This feature was originally intended to allow users to opt-in to adding a useful extension to Chrome as a part of the installation of another application. Unfortunately, this feature has been widely abused by third parties to silently install extensions into Chrome without proper acknowledgment from users. </p> <p> Two new features in Chrome 25 will help users run only the extensions they want to use: </p> <p> Extensions installed by third party programs using <a href="http://developer.chrome.com/extensions/external_extensions.html">external extension deployment options</a> will be disabled by default. When a third party program installs an extension, the Chrome menu will be badged, and users can click through the Chrome menu to see a dialog containing an option to enable the extension or to remove it from their computer. </p> <p> <div style="text-align: center;"> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjC6LoMSnTHKi7OaLabdyIjlQpubiyzqZvPqtPipr4Xtig_cpPUWEVmk4ri0kpKqalhFKvCxIstjwrGnZ7lgCtBfsavDF0EcuxcxHkHQCHXIB25ZDYt0xZ22dvv644eUJsqvnaiMZiHUC0/s1600/post-sideload-dialog.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="298" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjC6LoMSnTHKi7OaLabdyIjlQpubiyzqZvPqtPipr4Xtig_cpPUWEVmk4ri0kpKqalhFKvCxIstjwrGnZ7lgCtBfsavDF0EcuxcxHkHQCHXIB25ZDYt0xZ22dvv644eUJsqvnaiMZiHUC0/s400/post-sideload-dialog.png" width="400" /></a></div></p> <p> In addition, all extensions previously installed using external deployment options will be automatically disabled. Chrome will show a one-time prompt to allow the re-enabling of any of the extensions. </p> <p> <div style="text-align: center;"> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpn0BsnIMsn7lkzFfCtOpMbKMHCABL4lwsH6nRd7vOaLBjR0WPXQGgJse1FnSEe08o7V5qgm8je_wwL7eFDr7zFg6zHOSRqsnVADEO8yHXGPAgTAXe6fO6n9zgB6SKv_UH7U6LR5A3wTs/s1600/Sideload+wipeout+final+3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="295" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpn0BsnIMsn7lkzFfCtOpMbKMHCABL4lwsH6nRd7vOaLBjR0WPXQGgJse1FnSEe08o7V5qgm8je_wwL7eFDr7zFg6zHOSRqsnVADEO8yHXGPAgTAXe6fO6n9zgB6SKv_UH7U6LR5A3wTs/s400/Sideload+wipeout+final+3.png" width="400" /></a></div></p> <p> Windows application developers should ask users to install Chrome extensions from within Chrome. A great way to allow users to install a Chrome extension related to your Windows application is to link users to your website and use <a href="https://developers.google.com/chrome/web-store/docs/inline_installation">inline installation</a>. </p> <p> If you have questions, please get in touch with us on the <a href="https://groups.google.com/a/chromium.org/forum/?fromgroups#!forum/chromium-extensions">Chromium extensions</a> group. </p> <p> <span class="post-author">Posted by Peter Ludwig, Product Manager</span> </p> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> <p> It’s important for users to know what extensions they have enabled since extensions can sometimes influence Chrome’s functionality and performance. Many users have installed extensions from the Chrome Web Store, but some users have extensions that were silently installed without their knowledge. </p> <p> Until now, it has been possible to silently install extensions into Chrome on Windows using the <a href="http://developer.chrome.com/extensions/external_extensions.html#registry">Windows registry mechanism</a> for extension deployment. This feature was originally intended to allow users to opt-in to adding a useful extension to Chrome as a part of the installation of another application. Unfortunately, this feature has been widely abused by third parties to silently install extensions into Chrome without proper acknowledgment from users. </p> <p> Two new features in Chrome 25 will help users run only the extensions they want to use: </p> <p> Extensions installed by third party programs using <a href="http://developer.chrome.com/extensions/external_extensions.html">external extension deployment options</a> will be disabled by default. When a third party program installs an extension, the Chrome menu will be badged, and users can click through the Chrome menu to see a dialog containing an option to enable the extension or to remove it from their computer. </p> <p> <div style="text-align: center;"> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjC6LoMSnTHKi7OaLabdyIjlQpubiyzqZvPqtPipr4Xtig_cpPUWEVmk4ri0kpKqalhFKvCxIstjwrGnZ7lgCtBfsavDF0EcuxcxHkHQCHXIB25ZDYt0xZ22dvv644eUJsqvnaiMZiHUC0/s1600/post-sideload-dialog.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="298" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjC6LoMSnTHKi7OaLabdyIjlQpubiyzqZvPqtPipr4Xtig_cpPUWEVmk4ri0kpKqalhFKvCxIstjwrGnZ7lgCtBfsavDF0EcuxcxHkHQCHXIB25ZDYt0xZ22dvv644eUJsqvnaiMZiHUC0/s400/post-sideload-dialog.png" width="400" /></a></div></p> <p> In addition, all extensions previously installed using external deployment options will be automatically disabled. Chrome will show a one-time prompt to allow the re-enabling of any of the extensions. </p> <p> <div style="text-align: center;"> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpn0BsnIMsn7lkzFfCtOpMbKMHCABL4lwsH6nRd7vOaLBjR0WPXQGgJse1FnSEe08o7V5qgm8je_wwL7eFDr7zFg6zHOSRqsnVADEO8yHXGPAgTAXe6fO6n9zgB6SKv_UH7U6LR5A3wTs/s1600/Sideload+wipeout+final+3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="295" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpn0BsnIMsn7lkzFfCtOpMbKMHCABL4lwsH6nRd7vOaLBjR0WPXQGgJse1FnSEe08o7V5qgm8je_wwL7eFDr7zFg6zHOSRqsnVADEO8yHXGPAgTAXe6fO6n9zgB6SKv_UH7U6LR5A3wTs/s400/Sideload+wipeout+final+3.png" width="400" /></a></div></p> <p> Windows application developers should ask users to install Chrome extensions from within Chrome. A great way to allow users to install a Chrome extension related to your Windows application is to link users to your website and use <a href="https://developers.google.com/chrome/web-store/docs/inline_installation">inline installation</a>. </p> <p> If you have questions, please get in touch with us on the <a href="https://groups.google.com/a/chromium.org/forum/?fromgroups#!forum/chromium-extensions">Chromium extensions</a> group. </p> <p> <span class="post-author">Posted by Peter Ludwig, Product Manager</span> </p> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Chromium Blog:No more silent extension installs&url=https://blog.chromium.org/2012/12/no-more-silent-extension-installs.html&via=ChromiumDev'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=https://blog.chromium.org/2012/12/no-more-silent-extension-installs.html'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='https://blog.chromium.org/2012/12/no-more-silent-extension-installs.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> </div> </div> </div> <div class='post' data-id='7745023352342994753' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='https://blog.chromium.org/2012/12/darts-web-ui-library-is-ready-for.html' itemprop='url' title='Dart's Web UI library is ready for testing'> Dart's Web UI library is ready for testing </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Tuesday, December 18, 2012 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> <p> Built on <a href="http://www.w3.org/TR/components-intro/">Web Components</a>, and inspired by Model Driven Views, <a href="https://github.com/dart-lang/web-ui">Dart's Web UI library</a> is now ready for testing. This early release of Web UI supports dynamic templates, live one-way and two-way data binding, and custom DOM elements. Web UI also includes a compiler that makes these features available to all modern browsers today. </p> <p> Web UI helps you build declarative apps that have cleaner semantics and structure. You can build and use custom elements like <x-survey> that encapsulate their style, behavior, and structure to hide implementation details like deeply nested HTML tags. Just like HTML tags, these new tags (aka custom elements) can be nested, extended, and shared with other developers. </p> <p> Web UI also automatically keeps the HTML page and data models in sync with one-way and two-way data binding. Simply declare, in the DOM itself, the bindings between Dart objects and page elements and let Web UI take care of the details. </p> <p> Here is a small snippet from a simple TODO app that shows some of these features, including: </p> <p> (<span style="color: magenta;">1</span>) linking to a custom element<br /> (<span style="color: magenta;">2</span>) declarative event handling<br /> (<span style="color: magenta;">3</span>) templates and iteration<br /> (<span style="color: magenta;">4</span>) data binding with a custom element<br /> </p> <p style="text-align: center;"> <img border="0" height="305" src="//3.bp.blogspot.com/-9d3jLIJbZis/UMqxW7iusXI/AAAAAAAABEI/3gRNXzXadjs/s400/1CfiI8I4bJXZaiySy_WfBAozBmOKg-ec.png" width="400"> </p> <p> To see Dart Web UI in action, we've ported the ubiquitous <a href="http://dart-lang.github.com/web-ui/example/todomvc/index.html">TodoMVC sample app</a>: </p> <p style="text-align: center;"> <img border="0" height="336" src="//3.bp.blogspot.com/-U2yLnwL86lE/UMqxtsSNlPI/AAAAAAAABEQ/ZjE48Bzk06M/s400/todomvc.png" width="400"> </p> <p> Getting started and installing Web UI is easy with <a href="http://pub.dartlang.org/">pub</a>, the Dart package manager. Simply add the <a href="http://pub.dartlang.org/packages/web_ui">web_ui package</a> to your list of dependencies and run <a href="http://pub.dartlang.org/doc/pub-install.html">pub install</a>. Once installed, you can even <a href="http://www.dartlang.org/articles/dart-web-components/tools.html">configure Dart Editor</a> to watch for changes and automatically recompile your Web UI apps for quick and easy edit and reload development cycles. </p> <p> To learn more about Dart's Web UI package, you can read the <a href="https://www.dartlang.org/articles/dart-web-components/">docs</a> and browse the <a href="https://www.dartlang.org/articles/dart-web-components/summary.html">summary of features</a>. There's more work to do, and we look forward to your comments on our <a href="https://groups.google.com/a/dartlang.org/forum/?fromgroups#!forum/web-ui">mailing list</a>. </p> <p> <span class="post-author">Posted by Siggi Cherem, Software Engineer</span> </p> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> <p> Built on <a href="http://www.w3.org/TR/components-intro/">Web Components</a>, and inspired by Model Driven Views, <a href="https://github.com/dart-lang/web-ui">Dart's Web UI library</a> is now ready for testing. This early release of Web UI supports dynamic templates, live one-way and two-way data binding, and custom DOM elements. Web UI also includes a compiler that makes these features available to all modern browsers today. </p> <p> Web UI helps you build declarative apps that have cleaner semantics and structure. You can build and use custom elements like <x-survey> that encapsulate their style, behavior, and structure to hide implementation details like deeply nested HTML tags. Just like HTML tags, these new tags (aka custom elements) can be nested, extended, and shared with other developers. </p> <p> Web UI also automatically keeps the HTML page and data models in sync with one-way and two-way data binding. Simply declare, in the DOM itself, the bindings between Dart objects and page elements and let Web UI take care of the details. </p> <p> Here is a small snippet from a simple TODO app that shows some of these features, including: </p> <p> (<span style="color: magenta;">1</span>) linking to a custom element<br /> (<span style="color: magenta;">2</span>) declarative event handling<br /> (<span style="color: magenta;">3</span>) templates and iteration<br /> (<span style="color: magenta;">4</span>) data binding with a custom element<br /> </p> <p style="text-align: center;"> <img border="0" height="305" src="//3.bp.blogspot.com/-9d3jLIJbZis/UMqxW7iusXI/AAAAAAAABEI/3gRNXzXadjs/s400/1CfiI8I4bJXZaiySy_WfBAozBmOKg-ec.png" width="400"> </p> <p> To see Dart Web UI in action, we've ported the ubiquitous <a href="http://dart-lang.github.com/web-ui/example/todomvc/index.html">TodoMVC sample app</a>: </p> <p style="text-align: center;"> <img border="0" height="336" src="//3.bp.blogspot.com/-U2yLnwL86lE/UMqxtsSNlPI/AAAAAAAABEQ/ZjE48Bzk06M/s400/todomvc.png" width="400"> </p> <p> Getting started and installing Web UI is easy with <a href="http://pub.dartlang.org/">pub</a>, the Dart package manager. Simply add the <a href="http://pub.dartlang.org/packages/web_ui">web_ui package</a> to your list of dependencies and run <a href="http://pub.dartlang.org/doc/pub-install.html">pub install</a>. Once installed, you can even <a href="http://www.dartlang.org/articles/dart-web-components/tools.html">configure Dart Editor</a> to watch for changes and automatically recompile your Web UI apps for quick and easy edit and reload development cycles. </p> <p> To learn more about Dart's Web UI package, you can read the <a href="https://www.dartlang.org/articles/dart-web-components/">docs</a> and browse the <a href="https://www.dartlang.org/articles/dart-web-components/summary.html">summary of features</a>. There's more work to do, and we look forward to your comments on our <a href="https://groups.google.com/a/dartlang.org/forum/?fromgroups#!forum/web-ui">mailing list</a>. </p> <p> <span class="post-author">Posted by Siggi Cherem, Software Engineer</span> </p> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Chromium Blog:Dart's Web UI library is ready for testing&url=https://blog.chromium.org/2012/12/darts-web-ui-library-is-ready-for.html&via=ChromiumDev'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=https://blog.chromium.org/2012/12/darts-web-ui-library-is-ready-for.html'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='https://blog.chromium.org/2012/12/darts-web-ui-library-is-ready-for.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> <span class='labels-caption'> Labels: </span> <span class='labels'> <a class='label' href='https://blog.chromium.org/search/label/dart' rel='tag'> dart </a> </span> </div> </div> </div> <div class='post' data-id='8727779532616446551' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='https://blog.chromium.org/2012/12/faster-simpler-search-in-chrome.html' itemprop='url' title='Faster, simpler search in Chrome'> Faster, simpler search in Chrome </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Wednesday, December 12, 2012 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> Since we launched Chrome, the team has continued to work on ways to make it fast and simple for people to use. To that end, we’re going to begin <a href="http://blog.chromium.org/2012/05/changes-to-field-trials-infrastructure.html">testing variations</a> of Chrome’s New Tab page (NTP) in which a user’s default search provider will be able to add a search box or otherwise customize the NTP. While you can search straight from the <a href="http://support.google.com/chrome/bin/answer.py?hl=en&answer=95440">omnibox in Chrome</a>, we’ve found that many people still navigate to their search engine's home page to initiate a search instead. The goal is to save people time by helping them search and navigate the web faster.<br /> <br /> We’ll also allow search engines to display the user’s search terms right in the omnibox, which avoids the need for a second search box on the results page. This new capability, along with other ways to improve search suggestions, are exposed in a new <a href="http://dev.chromium.org/embeddedsearch">Embedded Search API</a>, an extension of the existing <a href="http://dev.chromium.org/searchbox">SearchBox API</a>. Search engines can implement any part of the specification if they’d like their users to experience a customized variation of the NTP experience.<br /> <br /> Starting today, a small set of users on Dev channel on Windows and Chrome OS, who have Google selected as their search provider, will begin seeing variations of the new experience. Mac will be coming soon. We look forward to your feedback and bug reports, which you can file against the InstantExtended feature on <a href="http://crbug.com/">crbug.com</a>.<br /> <br /> <span class="post-author">Posted by David Holloway, Software Engineer </span> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> Since we launched Chrome, the team has continued to work on ways to make it fast and simple for people to use. To that end, we’re going to begin <a href="http://blog.chromium.org/2012/05/changes-to-field-trials-infrastructure.html">testing variations</a> of Chrome’s New Tab page (NTP) in which a user’s default search provider will be able to add a search box or otherwise customize the NTP. While you can search straight from the <a href="http://support.google.com/chrome/bin/answer.py?hl=en&answer=95440">omnibox in Chrome</a>, we’ve found that many people still navigate to their search engine's home page to initiate a search instead. The goal is to save people time by helping them search and navigate the web faster.<br /> <br /> We’ll also allow search engines to display the user’s search terms right in the omnibox, which avoids the need for a second search box on the results page. This new capability, along with other ways to improve search suggestions, are exposed in a new <a href="http://dev.chromium.org/embeddedsearch">Embedded Search API</a>, an extension of the existing <a href="http://dev.chromium.org/searchbox">SearchBox API</a>. Search engines can implement any part of the specification if they’d like their users to experience a customized variation of the NTP experience.<br /> <br /> Starting today, a small set of users on Dev channel on Windows and Chrome OS, who have Google selected as their search provider, will begin seeing variations of the new experience. Mac will be coming soon. We look forward to your feedback and bug reports, which you can file against the InstantExtended feature on <a href="http://crbug.com/">crbug.com</a>.<br /> <br /> <span class="post-author">Posted by David Holloway, Software Engineer </span> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Chromium Blog:Faster, simpler search in Chrome&url=https://blog.chromium.org/2012/12/faster-simpler-search-in-chrome.html&via=ChromiumDev'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=https://blog.chromium.org/2012/12/faster-simpler-search-in-chrome.html'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='https://blog.chromium.org/2012/12/faster-simpler-search-in-chrome.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> </div> </div> </div> <div class='post' data-id='6618675355241045023' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='https://blog.chromium.org/2012/11/build-chrome-packaged-apps-with.html' itemprop='url' title='Build Chrome Packaged Apps with the MediaGalleries API'> Build Chrome Packaged Apps with the MediaGalleries API </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Tuesday, November 20, 2012 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> Many popular applications today help users consume, share, manage, and edit media content, as evidenced by the rise of web apps like <a href="https://play.google.com/music/">Google Play Music</a> and <a href="//www.youtube.com/">YouTube</a>. For <a href="http://developer.chrome.com/apps/about_apps.html">Chrome packaged app developers</a>, the new <a href="http://developer.chrome.com/apps/mediaGalleries.html">Media Galleries API</a> introduces a simple way for apps to access media stored on a user’s device (with the user’s permission, of course).<br /> <br /> To use the API, you first have to determine what kind of permission your app needs to access user’s media:<br /> <ul> <li><b>read-only</b>: allows media content to be read, but not modified </li> <li><b>read-write</b>: allows media content to be read and modified </li> <li><b>add-files</b>: allows media to be added to the galleries but prevents modifying existing media files. </li> </ul> Currently, only read-only access is supported. Support for read-write and add-files will be introduced in a future release.<br /> <br /> To retrieve media content, use <a href="http://developer.chrome.com/apps/mediaGalleries.html#method-getMediaFileSystems">getMediaFilesystems()</a>. If this is the first time your app is accessing the user’s media libraries, the system will prompt the user to grant access:<br /> <br /> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEcYobxmpvRvQReMy83fXvpmxPmh8aD28WVEhpcoixQ0sktop4fqIKXkCPlR3mJUscuZcYWBvmpgmHgZkitq4XsPOfaFTvsN3sBe-bBtDeoF71KBNAQAQqEYT9_3blyV4Mg3VqSttqhHc/s1600/Screen+Shot+2012-11-20+at+9.58.51+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="144" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEcYobxmpvRvQReMy83fXvpmxPmh8aD28WVEhpcoixQ0sktop4fqIKXkCPlR3mJUscuZcYWBvmpgmHgZkitq4XsPOfaFTvsN3sBe-bBtDeoF71KBNAQAQqEYT9_3blyV4Mg3VqSttqhHc/s320/Screen+Shot+2012-11-20+at+9.58.51+AM.png" width="320" /></a> <br /> <br /> You can also make your app explicitly ask the user to designate specific galleries. This is useful if, for example, your app is only interested in pictures. Once access is granted, your app can then retrieve a list of <a href="http://www.html5rocks.com/en/tutorials/file/filesystem/">LocalFileSystem</a> structures. At that point, you can use the <a href="http://www.w3.org/TR/file-system-api/">W3C FileSystem API</a> to access the media gallery content.<br /> <br /> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjti0RhWWU1Hc_3GzvGCYGKzNPispqESlXTabX-NcHyRSjeM69AxPiD2fIQpEacWw3OVz-1KNQ2sSZCeqbUUVWcNvqLkTw4J7Ul-8TMhYkef4e7JzbWlDTPxG-uv_SdDL1VQvUPPyaxUgQ/s1600/Screen+Shot+2012-11-20+at+9.59.04+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjti0RhWWU1Hc_3GzvGCYGKzNPispqESlXTabX-NcHyRSjeM69AxPiD2fIQpEacWw3OVz-1KNQ2sSZCeqbUUVWcNvqLkTw4J7Ul-8TMhYkef4e7JzbWlDTPxG-uv_SdDL1VQvUPPyaxUgQ/s320/Screen+Shot+2012-11-20+at+9.59.04+AM.png" width="320" /></a> <br /> <b><br /></b> <b>NOTE</b>: The file system APIs will only return files that the Chrome platform <a href="http://www.chromium.org/developers/web-platform-status#TOC-Multimedia">natively supports</a>, and only the <a href="http://www.w3.org/TR/file-system-api/#the-asynchronous-filesystem-interface">asynchronous version</a> of the FileSystem API is currently supported.<br /> <br /> We’re eager to see what great applications you will build with the Media Galleries API and the Chrome Packaged Apps platform. To get started, clone our <a href="http://github.com/GoogleChrome/chrome-app-samples">samples repository</a> and look at the Media Galleries <a href="https://github.com/GoogleChrome/chrome-app-samples/tree/master/media-gallery">sample application</a>. Have questions or comments? Subscribe to <a href="https://groups.google.com/a/chromium.org/group/chromium-apps">chromium-apps</a> and follow us on our <a href="https://plus.google.com/+GoogleChromeDevelopers/">Google+ page</a>!<br /> <span class="post-author"><br /></span> <span class="post-author">Posted by Joe Marini, Developer Advocate</span> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> Many popular applications today help users consume, share, manage, and edit media content, as evidenced by the rise of web apps like <a href="https://play.google.com/music/">Google Play Music</a> and <a href="//www.youtube.com/">YouTube</a>. For <a href="http://developer.chrome.com/apps/about_apps.html">Chrome packaged app developers</a>, the new <a href="http://developer.chrome.com/apps/mediaGalleries.html">Media Galleries API</a> introduces a simple way for apps to access media stored on a user’s device (with the user’s permission, of course).<br /> <br /> To use the API, you first have to determine what kind of permission your app needs to access user’s media:<br /> <ul> <li><b>read-only</b>: allows media content to be read, but not modified </li> <li><b>read-write</b>: allows media content to be read and modified </li> <li><b>add-files</b>: allows media to be added to the galleries but prevents modifying existing media files. </li> </ul> Currently, only read-only access is supported. Support for read-write and add-files will be introduced in a future release.<br /> <br /> To retrieve media content, use <a href="http://developer.chrome.com/apps/mediaGalleries.html#method-getMediaFileSystems">getMediaFilesystems()</a>. If this is the first time your app is accessing the user’s media libraries, the system will prompt the user to grant access:<br /> <br /> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEcYobxmpvRvQReMy83fXvpmxPmh8aD28WVEhpcoixQ0sktop4fqIKXkCPlR3mJUscuZcYWBvmpgmHgZkitq4XsPOfaFTvsN3sBe-bBtDeoF71KBNAQAQqEYT9_3blyV4Mg3VqSttqhHc/s1600/Screen+Shot+2012-11-20+at+9.58.51+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="144" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEcYobxmpvRvQReMy83fXvpmxPmh8aD28WVEhpcoixQ0sktop4fqIKXkCPlR3mJUscuZcYWBvmpgmHgZkitq4XsPOfaFTvsN3sBe-bBtDeoF71KBNAQAQqEYT9_3blyV4Mg3VqSttqhHc/s320/Screen+Shot+2012-11-20+at+9.58.51+AM.png" width="320" /></a> <br /> <br /> You can also make your app explicitly ask the user to designate specific galleries. This is useful if, for example, your app is only interested in pictures. Once access is granted, your app can then retrieve a list of <a href="http://www.html5rocks.com/en/tutorials/file/filesystem/">LocalFileSystem</a> structures. At that point, you can use the <a href="http://www.w3.org/TR/file-system-api/">W3C FileSystem API</a> to access the media gallery content.<br /> <br /> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjti0RhWWU1Hc_3GzvGCYGKzNPispqESlXTabX-NcHyRSjeM69AxPiD2fIQpEacWw3OVz-1KNQ2sSZCeqbUUVWcNvqLkTw4J7Ul-8TMhYkef4e7JzbWlDTPxG-uv_SdDL1VQvUPPyaxUgQ/s1600/Screen+Shot+2012-11-20+at+9.59.04+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjti0RhWWU1Hc_3GzvGCYGKzNPispqESlXTabX-NcHyRSjeM69AxPiD2fIQpEacWw3OVz-1KNQ2sSZCeqbUUVWcNvqLkTw4J7Ul-8TMhYkef4e7JzbWlDTPxG-uv_SdDL1VQvUPPyaxUgQ/s320/Screen+Shot+2012-11-20+at+9.59.04+AM.png" width="320" /></a> <br /> <b><br /></b> <b>NOTE</b>: The file system APIs will only return files that the Chrome platform <a href="http://www.chromium.org/developers/web-platform-status#TOC-Multimedia">natively supports</a>, and only the <a href="http://www.w3.org/TR/file-system-api/#the-asynchronous-filesystem-interface">asynchronous version</a> of the FileSystem API is currently supported.<br /> <br /> We’re eager to see what great applications you will build with the Media Galleries API and the Chrome Packaged Apps platform. To get started, clone our <a href="http://github.com/GoogleChrome/chrome-app-samples">samples repository</a> and look at the Media Galleries <a href="https://github.com/GoogleChrome/chrome-app-samples/tree/master/media-gallery">sample application</a>. Have questions or comments? Subscribe to <a href="https://groups.google.com/a/chromium.org/group/chromium-apps">chromium-apps</a> and follow us on our <a href="https://plus.google.com/+GoogleChromeDevelopers/">Google+ page</a>!<br /> <span class="post-author"><br /></span> <span class="post-author">Posted by Joe Marini, Developer Advocate</span> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Chromium Blog:Build Chrome Packaged Apps with the MediaGalleries API&url=https://blog.chromium.org/2012/11/build-chrome-packaged-apps-with.html&via=ChromiumDev'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=https://blog.chromium.org/2012/11/build-chrome-packaged-apps-with.html'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='https://blog.chromium.org/2012/11/build-chrome-packaged-apps-with.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> <span class='labels-caption'> Labels: </span> <span class='labels'> <a class='label' href='https://blog.chromium.org/search/label/chrome%20apps' rel='tag'> chrome apps </a> , <a class='label' href='https://blog.chromium.org/search/label/chrome%20web%20store' rel='tag'> chrome web store </a> </span> </div> </div> </div> <div class='post' data-id='5883147465250632474' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='https://blog.chromium.org/2012/11/a-safer-playground-for-your-linux-and.html' itemprop='url' title='A safer playground for your Linux and Chrome OS renderers'> A safer playground for your Linux and Chrome OS renderers </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Monday, November 19, 2012 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> <a href="http://dev.chromium.org/developers/design-documents/sandbox">Sandboxing</a> is a layer of security that Chrome places between attackers and their computer, aiming to isolate an attacker who has successfully exploited a vulnerability. When contained in a sandbox jail, an attacker will typically look for porous or fragile bits in the walls to throw rocks at. That is, he’ll try to gain additional privileges by taking advantage of other vulnerabilities. Our job is to make the virtual walls of the sandbox as strong and impenetrable as possible.<br /> <br /> One juicy target for attackers is the operating system’s kernel: a large and complex code base. The latest stable version of Chrome introduces a new layer of sandboxing of Chrome renderers for the 64-bit versions of Chrome OS and Linux, based on a new kernel feature called <a href="http://lwn.net/Articles/475043/">seccomp-bpf</a>. With seccomp-bpf we’ll install a small filter in the kernel that will quickly reject many of the rocks thrown by an attacker. A simple example: if we know that Chrome renderers don’t need a system call such as <a href="http://lwn.net/Articles/268783/">vmsplice</a>, or a facility such as “inotify”, we can just deny them completely. We use a <a href="http://dev.chromium.org/developers/design-documents/sandbox">broker process model</a> to keep the list of allowed system calls small.<br /> <br /> Installing this filter in the kernel improves the security of our users. But it is just the beginning: using this new facility, we’ll continue to make the sandbox safer.<br /> <br /> This new sandbox layer is automatically baked into the latest version of Chrome OS. On Linux, you can check by going to <span style="font-family: Courier New, Courier, monospace;">chrome://sandbox</span> and look for “Seccomp-BPF sandbox Yes”. If this is not available, ask your Linux distribution to include and enable seccomp-bpf in its kernel, as <a href="http://www.ubuntu.com/">Ubuntu</a> has done since version 12.04.<br /> <br /> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHrB9f16SgCWeu4bQp-WyQNzuc-S0NUNSXe9FbiZyqkJUSBLdTYNNB5jOMZZ8z1Fwm0cL61ymmPKmKM2qUe7UWU1k9RavKhjI_8Opmk246SWGLHOIyU_yJVvFJxBsi1xXeI3ysYeB70eE/s1600/Screen+Shot+2012-11-19+at+2.34.45+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="273" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHrB9f16SgCWeu4bQp-WyQNzuc-S0NUNSXe9FbiZyqkJUSBLdTYNNB5jOMZZ8z1Fwm0cL61ymmPKmKM2qUe7UWU1k9RavKhjI_8Opmk246SWGLHOIyU_yJVvFJxBsi1xXeI3ysYeB70eE/s320/Screen+Shot+2012-11-19+at+2.34.45+PM.png" width="320" /></a> <br /> As always, you can report bugs and issues <a href="https://code.google.com/p/chromium/issues/list">here</a>, by clicking on “New issue”.<br /> <br /> <span class="post-author">Posted by Julien Tinnes, Software Engineer</span> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> <a href="http://dev.chromium.org/developers/design-documents/sandbox">Sandboxing</a> is a layer of security that Chrome places between attackers and their computer, aiming to isolate an attacker who has successfully exploited a vulnerability. When contained in a sandbox jail, an attacker will typically look for porous or fragile bits in the walls to throw rocks at. That is, he’ll try to gain additional privileges by taking advantage of other vulnerabilities. Our job is to make the virtual walls of the sandbox as strong and impenetrable as possible.<br /> <br /> One juicy target for attackers is the operating system’s kernel: a large and complex code base. The latest stable version of Chrome introduces a new layer of sandboxing of Chrome renderers for the 64-bit versions of Chrome OS and Linux, based on a new kernel feature called <a href="http://lwn.net/Articles/475043/">seccomp-bpf</a>. With seccomp-bpf we’ll install a small filter in the kernel that will quickly reject many of the rocks thrown by an attacker. A simple example: if we know that Chrome renderers don’t need a system call such as <a href="http://lwn.net/Articles/268783/">vmsplice</a>, or a facility such as “inotify”, we can just deny them completely. We use a <a href="http://dev.chromium.org/developers/design-documents/sandbox">broker process model</a> to keep the list of allowed system calls small.<br /> <br /> Installing this filter in the kernel improves the security of our users. But it is just the beginning: using this new facility, we’ll continue to make the sandbox safer.<br /> <br /> This new sandbox layer is automatically baked into the latest version of Chrome OS. On Linux, you can check by going to <span style="font-family: Courier New, Courier, monospace;">chrome://sandbox</span> and look for “Seccomp-BPF sandbox Yes”. If this is not available, ask your Linux distribution to include and enable seccomp-bpf in its kernel, as <a href="http://www.ubuntu.com/">Ubuntu</a> has done since version 12.04.<br /> <br /> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHrB9f16SgCWeu4bQp-WyQNzuc-S0NUNSXe9FbiZyqkJUSBLdTYNNB5jOMZZ8z1Fwm0cL61ymmPKmKM2qUe7UWU1k9RavKhjI_8Opmk246SWGLHOIyU_yJVvFJxBsi1xXeI3ysYeB70eE/s1600/Screen+Shot+2012-11-19+at+2.34.45+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="273" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHrB9f16SgCWeu4bQp-WyQNzuc-S0NUNSXe9FbiZyqkJUSBLdTYNNB5jOMZZ8z1Fwm0cL61ymmPKmKM2qUe7UWU1k9RavKhjI_8Opmk246SWGLHOIyU_yJVvFJxBsi1xXeI3ysYeB70eE/s320/Screen+Shot+2012-11-19+at+2.34.45+PM.png" width="320" /></a> <br /> As always, you can report bugs and issues <a href="https://code.google.com/p/chromium/issues/list">here</a>, by clicking on “New issue”.<br /> <br /> <span class="post-author">Posted by Julien Tinnes, Software Engineer</span> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Chromium Blog:A safer playground for your Linux and Chrome OS renderers&url=https://blog.chromium.org/2012/11/a-safer-playground-for-your-linux-and.html&via=ChromiumDev'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=https://blog.chromium.org/2012/11/a-safer-playground-for-your-linux-and.html'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='https://blog.chromium.org/2012/11/a-safer-playground-for-your-linux-and.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> <span class='labels-caption'> Labels: </span> <span class='labels'> <a class='label' href='https://blog.chromium.org/search/label/chromeos' rel='tag'> chromeos </a> , <a class='label' href='https://blog.chromium.org/search/label/linux' rel='tag'> linux </a> , <a class='label' href='https://blog.chromium.org/search/label/security' rel='tag'> security </a> </span> </div> </div> </div> <div class='post' data-id='1981163676689602999' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='https://blog.chromium.org/2012/11/build-smoother-web-apps-with-chrome.html' itemprop='url' title='Build smoother web apps with Chrome Developer Tools'> Build smoother web apps with Chrome Developer Tools </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Friday, November 16, 2012 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> Whether your web app involves scrolling down a long list of news headlines or a game with <a href="https://chrome.google.com/webstore/detail/angry-birds/aknpkdffaafgjchaibgeefbgmgeghloj">flying birds</a> and crumbling structures, you want your web app to look as smooth as native apps. It used to be tricky to chase down the cause of animation jitter and lag in user actions with <a href="https://developers.google.com/chrome-developer-tools/">Chrome Developer Tools</a>. This is why <a href="http://blog.chromium.org/2012/10/do-more-with-chrome-developer-tools.html">we’ve added</a> <b>the Frame Mode to our Timeline panel</b> to help you pinpoint offending long frames and understand what’s causing them to run slowly.<br /> <br /> <a href="//youtu.be/hAzhayTnhEI?t=1m27s">So, what’s a frame</a>? A frame includes all the tasks that the browser needs to perform in order to update the screen upon a user action or a tick of the animation timer. A complex, but not uncommon, sequence might be:<br /> <ol> <li>run JavaScript animations and other event handlers </li> <li>update CSS animations </li> <li>recalculate styles and lay out the elements in the DOM </li> <li>re-paint the updated layers of the page </li> <li>compose them and present to the user </li> </ol> Delivering a butter-smooth animation means completing all of the above in <b>less than 16.6ms</b> (common 60Hz refresh rate). <b>If you are not done by then, you’ll miss the frame</b> and the animation will appear janky.<br /> <br /> To see how using Timeline can help you, run your favorite browser-based game, then open Developer Tools and record the Timeline while the game is running some animation. The Timeline Frame mode will now show you colored bars, each representing a frame. The colors correspond to different types of timeline events:<br /> <ul> <li>network activity and HTML parsing (blue) </li> <li>running JavaScript (yellow) </li> <li>performing style recalculation and layout (violet) </li> <li>painting and compositing (green) </li> </ul> You can zoom in by selecting several frames or by clicking on a particular frame of interest. Looking at a specific frame in detailed view will show you the frame duration, and you can find more detailed statistics by hovering on it.<br /> <br /> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitjMKrk8Oe1wjLLDsMsBKs0FratAkyu7pxZX8BO3PP6Ew23gKxtFVVQNxJsJwQQJFuRZEnZR9kcTzGF6cIYtS5f8pAAqaSkNHZ1bRSRC5EWfJiXUWdYfNmSCmsw03H2EFYHirEwh80XrY/s1600/Screen+Shot+2012-11-16+at+12.56.31+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="157" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitjMKrk8Oe1wjLLDsMsBKs0FratAkyu7pxZX8BO3PP6Ew23gKxtFVVQNxJsJwQQJFuRZEnZR9kcTzGF6cIYtS5f8pAAqaSkNHZ1bRSRC5EWfJiXUWdYfNmSCmsw03H2EFYHirEwh80XrY/s400/Screen+Shot+2012-11-16+at+12.56.31+PM.png" width="400" /></a> <br /> <br /> Even if your web app doesn’t have animation in it, the notion of a frame is still useful because the browser performs a repeated sequence of actions while processing input events such as keypress, mouse actions, scrolling etc. Leaving enough time to process such events inside a frame makes your app more <b>responsive and interactiv</b>e, resulting in a better overall experience for users.<br /> <br /> In large web applications with huge DOM trees, layout typically takes time and resources. Doing it in a loop makes things much worse. So we’ve <b>added a warning mark on layouts that were forced, by requesting positional properties</b> (e.g. offsetWidth and offsetHeight) of DOM elements from JavaScript. If you hover over the layout event, you can see two stacks -- one that invalidated the DOM and another that caused layout synchronously. You can also see the area that had to be re-laid highlighted on the screen.<br /> <br /> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3Elrn-rYJzVzyoXNd1ErVU0xDXRsyH_gohfwlcNcvN2hTtit1-uT4OLSmVST4XEQXeuofKK-lIWAUCvg50cCsnGIHsX3SrG8DJ1ARgmVBnSCsQE5w5LpjojXuJGtgxLiimAc8QI0UTAg/s1600/Screen+Shot+2012-11-16+at+12.59.10+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="171" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3Elrn-rYJzVzyoXNd1ErVU0xDXRsyH_gohfwlcNcvN2hTtit1-uT4OLSmVST4XEQXeuofKK-lIWAUCvg50cCsnGIHsX3SrG8DJ1ARgmVBnSCsQE5w5LpjojXuJGtgxLiimAc8QI0UTAg/s320/Screen+Shot+2012-11-16+at+12.59.10+PM.png" width="320" /></a> <br /> <br /> Finally, don’t forget that the <a href="//youtu.be/hAzhayTnhEI?t=6m26s">best practice</a> for dealing with animations is to use the <a href="http://paulirish.com/2011/requestanimationframe-for-smart-animating/">requestAnimationFrame</a> API, which guarantees that Chromium will call back your animation code in sync with the display refresh.<br /> <br /> You can learn more about optimizing rendering performance of a page in <a href="http://www.html5rocks.com/en/tutorials/speed/rendering/">Tom Wiltzius’ article</a> on html5rocks.com. Follow <a href="https://plus.google.com/+GoogleChromeDevelopers/">Google Chrome Developers</a> on Google+ or <a href="http://twitter.com/ChromiumDev">@ChromiumDev</a> on Twitter for more news on Chrome Developer Tools.<br /> <span class="post-author"><br /></span> <span class="post-author">Posted by Andrey Kosyakov, Software Engineer</span> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> Whether your web app involves scrolling down a long list of news headlines or a game with <a href="https://chrome.google.com/webstore/detail/angry-birds/aknpkdffaafgjchaibgeefbgmgeghloj">flying birds</a> and crumbling structures, you want your web app to look as smooth as native apps. It used to be tricky to chase down the cause of animation jitter and lag in user actions with <a href="https://developers.google.com/chrome-developer-tools/">Chrome Developer Tools</a>. This is why <a href="http://blog.chromium.org/2012/10/do-more-with-chrome-developer-tools.html">we’ve added</a> <b>the Frame Mode to our Timeline panel</b> to help you pinpoint offending long frames and understand what’s causing them to run slowly.<br /> <br /> <a href="//youtu.be/hAzhayTnhEI?t=1m27s">So, what’s a frame</a>? A frame includes all the tasks that the browser needs to perform in order to update the screen upon a user action or a tick of the animation timer. A complex, but not uncommon, sequence might be:<br /> <ol> <li>run JavaScript animations and other event handlers </li> <li>update CSS animations </li> <li>recalculate styles and lay out the elements in the DOM </li> <li>re-paint the updated layers of the page </li> <li>compose them and present to the user </li> </ol> Delivering a butter-smooth animation means completing all of the above in <b>less than 16.6ms</b> (common 60Hz refresh rate). <b>If you are not done by then, you’ll miss the frame</b> and the animation will appear janky.<br /> <br /> To see how using Timeline can help you, run your favorite browser-based game, then open Developer Tools and record the Timeline while the game is running some animation. The Timeline Frame mode will now show you colored bars, each representing a frame. The colors correspond to different types of timeline events:<br /> <ul> <li>network activity and HTML parsing (blue) </li> <li>running JavaScript (yellow) </li> <li>performing style recalculation and layout (violet) </li> <li>painting and compositing (green) </li> </ul> You can zoom in by selecting several frames or by clicking on a particular frame of interest. Looking at a specific frame in detailed view will show you the frame duration, and you can find more detailed statistics by hovering on it.<br /> <br /> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitjMKrk8Oe1wjLLDsMsBKs0FratAkyu7pxZX8BO3PP6Ew23gKxtFVVQNxJsJwQQJFuRZEnZR9kcTzGF6cIYtS5f8pAAqaSkNHZ1bRSRC5EWfJiXUWdYfNmSCmsw03H2EFYHirEwh80XrY/s1600/Screen+Shot+2012-11-16+at+12.56.31+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="157" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitjMKrk8Oe1wjLLDsMsBKs0FratAkyu7pxZX8BO3PP6Ew23gKxtFVVQNxJsJwQQJFuRZEnZR9kcTzGF6cIYtS5f8pAAqaSkNHZ1bRSRC5EWfJiXUWdYfNmSCmsw03H2EFYHirEwh80XrY/s400/Screen+Shot+2012-11-16+at+12.56.31+PM.png" width="400" /></a> <br /> <br /> Even if your web app doesn’t have animation in it, the notion of a frame is still useful because the browser performs a repeated sequence of actions while processing input events such as keypress, mouse actions, scrolling etc. Leaving enough time to process such events inside a frame makes your app more <b>responsive and interactiv</b>e, resulting in a better overall experience for users.<br /> <br /> In large web applications with huge DOM trees, layout typically takes time and resources. Doing it in a loop makes things much worse. So we’ve <b>added a warning mark on layouts that were forced, by requesting positional properties</b> (e.g. offsetWidth and offsetHeight) of DOM elements from JavaScript. If you hover over the layout event, you can see two stacks -- one that invalidated the DOM and another that caused layout synchronously. You can also see the area that had to be re-laid highlighted on the screen.<br /> <br /> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3Elrn-rYJzVzyoXNd1ErVU0xDXRsyH_gohfwlcNcvN2hTtit1-uT4OLSmVST4XEQXeuofKK-lIWAUCvg50cCsnGIHsX3SrG8DJ1ARgmVBnSCsQE5w5LpjojXuJGtgxLiimAc8QI0UTAg/s1600/Screen+Shot+2012-11-16+at+12.59.10+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="171" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3Elrn-rYJzVzyoXNd1ErVU0xDXRsyH_gohfwlcNcvN2hTtit1-uT4OLSmVST4XEQXeuofKK-lIWAUCvg50cCsnGIHsX3SrG8DJ1ARgmVBnSCsQE5w5LpjojXuJGtgxLiimAc8QI0UTAg/s320/Screen+Shot+2012-11-16+at+12.59.10+PM.png" width="320" /></a> <br /> <br /> Finally, don’t forget that the <a href="//youtu.be/hAzhayTnhEI?t=6m26s">best practice</a> for dealing with animations is to use the <a href="http://paulirish.com/2011/requestanimationframe-for-smart-animating/">requestAnimationFrame</a> API, which guarantees that Chromium will call back your animation code in sync with the display refresh.<br /> <br /> You can learn more about optimizing rendering performance of a page in <a href="http://www.html5rocks.com/en/tutorials/speed/rendering/">Tom Wiltzius’ article</a> on html5rocks.com. Follow <a href="https://plus.google.com/+GoogleChromeDevelopers/">Google Chrome Developers</a> on Google+ or <a href="http://twitter.com/ChromiumDev">@ChromiumDev</a> on Twitter for more news on Chrome Developer Tools.<br /> <span class="post-author"><br /></span> <span class="post-author">Posted by Andrey Kosyakov, Software Engineer</span> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Chromium Blog:Build smoother web apps with Chrome Developer Tools&url=https://blog.chromium.org/2012/11/build-smoother-web-apps-with-chrome.html&via=ChromiumDev'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=https://blog.chromium.org/2012/11/build-smoother-web-apps-with-chrome.html'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='https://blog.chromium.org/2012/11/build-smoother-web-apps-with-chrome.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> <span class='labels-caption'> Labels: </span> <span class='labels'> <a class='label' href='https://blog.chromium.org/search/label/devtools' rel='tag'> devtools </a> </span> </div> </div> </div> <div class='post' data-id='2535430993957648993' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='https://blog.chromium.org/2012/11/restricting-extension-apis-in-legacy.html' itemprop='url' title='Restricting extension APIs in legacy packaged apps'> Restricting extension APIs in legacy packaged apps </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Thursday, November 15, 2012 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> Even though Chrome extensions and <a href="http://developer.chrome.com/extensions/apps.html">legacy packaged apps</a> are similar at a technical level, users have very different expectations for how extensions and apps should look and behave. Users expect extensions to interact with the whole browser, whereas they expect apps to act solely in their containing tab or window.<br /> <br /> Until now, all Chrome legacy packaged apps could request the same permissions and use the same APIs as extensions to interact with Chrome. In order to make the capabilities of legacy packaged apps more closely align with user expectations, we’ve decided to limit the extensions permissions that legacy packaged apps can request.<br /> <br /> Beginning this week, you won’t be able to publish legacy packaged apps in the Chrome Web Store that request any of the following permissions:<br /> (a) any host permissions, including "<span style="font-family: Courier New, Courier, monospace;">< all urls ><all urls="urls"></all></span><all_urls>" </all_urls><br /> <all_urls>(b) the top-level "content_scripts" key </all_urls><br /> <all_urls>(c) the "debugger", "devtools", "pageCapture", "plugin", "proxy", "tabs'", "history", "webNavigation" permissions </all_urls><br /> <all_urls>(d) the top-level "npapi" key </all_urls><br /> <all_urls><br /></all_urls> <all_urls>Existing legacy packaged apps in the Chrome Web Store will not be affected, and those existing apps can continue to be updated without being subject to these new restrictions. </all_urls><br /> <br /> If you have questions, please get in touch with us on the <a href="http://developer.chrome.com/extensions/apps.html">Chromium extensions</a> or <a href="https://groups.google.com/a/chromium.org/forum/?fromgroups#!forum/chromium-apps">Chromium apps</a> groups.<br /> <span class="post-author"><br /></span> <span class="post-author">Posted by Peter Ludwig, Product Manager</span> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> Even though Chrome extensions and <a href="http://developer.chrome.com/extensions/apps.html">legacy packaged apps</a> are similar at a technical level, users have very different expectations for how extensions and apps should look and behave. Users expect extensions to interact with the whole browser, whereas they expect apps to act solely in their containing tab or window.<br /> <br /> Until now, all Chrome legacy packaged apps could request the same permissions and use the same APIs as extensions to interact with Chrome. In order to make the capabilities of legacy packaged apps more closely align with user expectations, we’ve decided to limit the extensions permissions that legacy packaged apps can request.<br /> <br /> Beginning this week, you won’t be able to publish legacy packaged apps in the Chrome Web Store that request any of the following permissions:<br /> (a) any host permissions, including "<span style="font-family: Courier New, Courier, monospace;">< all urls ><all urls="urls"></all></span><all_urls>" </all_urls><br /> <all_urls>(b) the top-level "content_scripts" key </all_urls><br /> <all_urls>(c) the "debugger", "devtools", "pageCapture", "plugin", "proxy", "tabs'", "history", "webNavigation" permissions </all_urls><br /> <all_urls>(d) the top-level "npapi" key </all_urls><br /> <all_urls><br /></all_urls> <all_urls>Existing legacy packaged apps in the Chrome Web Store will not be affected, and those existing apps can continue to be updated without being subject to these new restrictions. </all_urls><br /> <br /> If you have questions, please get in touch with us on the <a href="http://developer.chrome.com/extensions/apps.html">Chromium extensions</a> or <a href="https://groups.google.com/a/chromium.org/forum/?fromgroups#!forum/chromium-apps">Chromium apps</a> groups.<br /> <span class="post-author"><br /></span> <span class="post-author">Posted by Peter Ludwig, Product Manager</span> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Chromium Blog:Restricting extension APIs in legacy packaged apps&url=https://blog.chromium.org/2012/11/restricting-extension-apis-in-legacy.html&via=ChromiumDev'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=https://blog.chromium.org/2012/11/restricting-extension-apis-in-legacy.html'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='https://blog.chromium.org/2012/11/restricting-extension-apis-in-legacy.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> <span class='labels-caption'> Labels: </span> <span class='labels'> <a class='label' href='https://blog.chromium.org/search/label/chrome%20web%20store' rel='tag'> chrome web store </a> , <a class='label' href='https://blog.chromium.org/search/label/extensions' rel='tag'> extensions </a> </span> </div> </div> </div> <div class='post' data-id='4436824294095955342' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='https://blog.chromium.org/2012/11/backstage-at-jam-with-chrome.html' itemprop='url' title='Backstage at JAM with Chrome'> Backstage at JAM with Chrome </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Thursday, November 8, 2012 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> Earlier today <a href="http://chrome.blogspot.com/2012/11/jam-with-chrome-play-music-live-with.html">we launched</a> JAM with Chrome. <a href="http://jamwithchrome.com/">JAM with Chrome</a> is an interactive web application that enables friends in different locations to play music together in the Chrome browser on their computers.<br /> <br /> <iframe allowfullscreen="allowfullscreen" frameborder="0" height="315" src="//www.youtube.com/embed/YkvKICWaRT4" width="560"></iframe> <br /> <br /> JAM with Chrome was built with the <a href="http://www.jamwithchrome.com/technology.html">latest browser technologies</a>:<br /> <ul> <li><a href="http://www.html5rocks.com/en/tutorials/webaudio/intro/">Web Audio</a> for high fidelity playback without resorting to lots of pre-recorded audio samples. </li> <li><a href="http://www.html5rocks.com/en/tutorials/websockets/basics/">WebSockets</a> is used to deliver immediate real-time playback across all the members of the band ensuring they stay in sync and playing from the same tab sheet. </li> <li>Finally, <a href="http://html5search.com/search/css3">CSS3</a>, <a href="http://www.html5rocks.com/en/tutorials/svg/mobile_fundamentals/">SVG</a> and <a href="http://www.html5rocks.com/en/tutorials/canvas/integrating/">Canvas</a> provide rich visuals and an immersive experience.</li> </ul> To learn more about how we built this experience, check out “<a href="http://www.html5rocks.com/en/tutorials/casestudies/jamwithchrome-audio/">How we made the Audio rock</a>”. This is the first of three HTML5 Rocks articles that describes how the team used Web Audio to deliver an absorbing auditory experience. Stay tuned for more developer stories by following <a href="//google.com/+Google%20Chrome%20Developers">+Google Chrome Developers</a>.<br /> <br /> Enjoy playing music with friends at <a href="http://www.jamwithchrome.com/">www.jamwithchrome.com</a> and be sure to open Chrome’s <a href="https://developers.google.com/chrome-developer-tools/docs/overview">developer tools</a> to see what’s going on backstage!<br /> <span class="post-author"><br /></span> <span class="post-author">Posted by Paul Kinlan, Developer Advocate</span> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> Earlier today <a href="http://chrome.blogspot.com/2012/11/jam-with-chrome-play-music-live-with.html">we launched</a> JAM with Chrome. <a href="http://jamwithchrome.com/">JAM with Chrome</a> is an interactive web application that enables friends in different locations to play music together in the Chrome browser on their computers.<br /> <br /> <iframe allowfullscreen="allowfullscreen" frameborder="0" height="315" src="//www.youtube.com/embed/YkvKICWaRT4" width="560"></iframe> <br /> <br /> JAM with Chrome was built with the <a href="http://www.jamwithchrome.com/technology.html">latest browser technologies</a>:<br /> <ul> <li><a href="http://www.html5rocks.com/en/tutorials/webaudio/intro/">Web Audio</a> for high fidelity playback without resorting to lots of pre-recorded audio samples. </li> <li><a href="http://www.html5rocks.com/en/tutorials/websockets/basics/">WebSockets</a> is used to deliver immediate real-time playback across all the members of the band ensuring they stay in sync and playing from the same tab sheet. </li> <li>Finally, <a href="http://html5search.com/search/css3">CSS3</a>, <a href="http://www.html5rocks.com/en/tutorials/svg/mobile_fundamentals/">SVG</a> and <a href="http://www.html5rocks.com/en/tutorials/canvas/integrating/">Canvas</a> provide rich visuals and an immersive experience.</li> </ul> To learn more about how we built this experience, check out “<a href="http://www.html5rocks.com/en/tutorials/casestudies/jamwithchrome-audio/">How we made the Audio rock</a>”. This is the first of three HTML5 Rocks articles that describes how the team used Web Audio to deliver an absorbing auditory experience. Stay tuned for more developer stories by following <a href="//google.com/+Google%20Chrome%20Developers">+Google Chrome Developers</a>.<br /> <br /> Enjoy playing music with friends at <a href="http://www.jamwithchrome.com/">www.jamwithchrome.com</a> and be sure to open Chrome’s <a href="https://developers.google.com/chrome-developer-tools/docs/overview">developer tools</a> to see what’s going on backstage!<br /> <span class="post-author"><br /></span> <span class="post-author">Posted by Paul Kinlan, Developer Advocate</span> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Chromium Blog:Backstage at JAM with Chrome&url=https://blog.chromium.org/2012/11/backstage-at-jam-with-chrome.html&via=ChromiumDev'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=https://blog.chromium.org/2012/11/backstage-at-jam-with-chrome.html'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='https://blog.chromium.org/2012/11/backstage-at-jam-with-chrome.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> <span class='labels-caption'> Labels: </span> <span class='labels'> <a class='label' href='https://blog.chromium.org/search/label/webaudio' rel='tag'> webaudio </a> , <a class='label' href='https://blog.chromium.org/search/label/websockets' rel='tag'> websockets </a> </span> </div> </div> </div> <div class='post' data-id='146246069021493528' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='https://blog.chromium.org/2012/11/a-web-developers-guide-to-latest-chrome.html' itemprop='url' title='A web developer’s guide to the latest Chrome Beta'> A web developer’s guide to the latest Chrome Beta </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Thursday, November 8, 2012 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> Today’s Chrome <a href="https://www.google.com/landing/chrome/beta/">Beta channel release</a> includes a slew of awesome new developer features.<br /> <br /> <b>Datalist support in date and time</b><br /> <br /> <a href="http://demo.agektmr.com/datalist/">datalist</a> allows you to specify a list of suggested dates and times for input elements. Of course, users still have the freedom to enter arbitrary dates and times. One use case is helping users choose when their food should be ready for pickup:<br /> <br /> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZK1KzJLrqUYHzSj_E4t5L93o6jZfO5_jK8vMkanitfyTTbCQx0qXEIkk91wM2d5AVMjS5rDh2QE8NzqtFTKctBaBewDTrfhOzoVpmTFCPqKGLnfIzM6JclqmarlihoJEMwOPF-zbCseg/s1600/Screen+Shot+2012-11-08+at+10.15.27+AM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="86" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZK1KzJLrqUYHzSj_E4t5L93o6jZfO5_jK8vMkanitfyTTbCQx0qXEIkk91wM2d5AVMjS5rDh2QE8NzqtFTKctBaBewDTrfhOzoVpmTFCPqKGLnfIzM6JclqmarlihoJEMwOPF-zbCseg/s400/Screen+Shot+2012-11-08+at+10.15.27+AM.png" width="400" /></a><br /> <br /> <b><br /></b> <b><br /></b> <b><br /></b> <b><br /></b><br /> <br /> <b>MathML</b><br /> <br /> Now you can write mathematical content in <a href="https://developer.mozilla.org/en-US/docs/MathML">MathML</a> and expect it to be consistently beautiful across the web. Special kudos to <a href="http://webkit.org/">WebKit</a> volunteer <a href="http://stackoverflow.com/questions/9018694/is-there-an-official-statement-of-when-mathml-will-be-available-on-the-iphone-ip/9024138#9024138">Dave Barton</a> for implementing this on his own accord.<br /> <br /> <br /> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirIKt_R9Fe1KXkEYDwk4RE07tvI3WBpaq1CuZBvTQ3m8tZH7N2-VaMXjK9WasNGFm0yOr4psfLIbXdh8BN00jNE9ADtjK_QTZ-zWf8UK9GkavSd_3kNGgZItWBVYvt1pJQow6vTebeq2c/s1600/Screen+Shot+2012-11-08+at+10.17.31+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="101" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirIKt_R9Fe1KXkEYDwk4RE07tvI3WBpaq1CuZBvTQ3m8tZH7N2-VaMXjK9WasNGFm0yOr4psfLIbXdh8BN00jNE9ADtjK_QTZ-zWf8UK9GkavSd_3kNGgZItWBVYvt1pJQow6vTebeq2c/s400/Screen+Shot+2012-11-08+at+10.17.31+AM.png" width="400" /></a> <br /> <b><br /></b> <b>Other new features in this release</b><br /> <ul> <li><a href="http://adobe.github.com/web-platform/samples/css-customfilters/">CSS custom filters</a> have landed behind a <a href="http://blogs.adobe.com/cantrell/archives/2012/07/all-about-chrome-flags.html">flag</a>. They enable sweet cinematic effects like page flipping with just CSS and HTML. You can turn them on with <span style="font-family: Courier New, Courier, monospace;">chrome://flags</span>. </li> <li>Chromium now parses the <a href="http://www.whatwg.org/specs/web-apps/current-work/multipage/association-of-controls-and-forms.html#autofilling-form-controls:-the-autocomplete-attribute"><span style="font-family: Courier New, Courier, monospace;">autocomplete</span></a> attribute <a href="http://code.google.com/p/chromium/issues/detail?id=156508">according to spec</a>. Use it to specify which type of saved user data the browser should use to prefill input elements. Examples are <span style="font-family: Courier New, Courier, monospace;">name</span> and <span style="font-family: Courier New, Courier, monospace;">street-address</span>. </li> <li>A few brand new features landed with a prefix: <span style="font-family: Courier New, Courier, monospace;"><a href="https://bugs.webkit.org/attachment.cgi?id=149882&action=prettypatch">-webkit-hyphens</a></span> gives you more control over hyphenation at line breaks, and <span style="font-family: Courier New, Courier, monospace;">-webkit-clip-path</span> enables you to <a href="https://plus.google.com/118075919496626375791/posts/2n8PTisLztW">clip DOM content</a> to an SVG shape. </li> </ul> <b>Un-prefixed APIs </b><br /> <br /> APIs un-prefixed in today’s Beta release include:<br /> <ul> <li><a href="http://www.html5rocks.com/en/tutorials/indexeddb/todo/">IndexedDB</a>, a client-side storage API offering fast access to large amounts of structured data </li> <li><a href="http://norbertlindenberg.com/2012/10/ecmascript-internationalization-api/index.html#Intl"><span style="font-family: Courier New, Courier, monospace;">Intl</span></a>, which adds support for JavaScript internationalization of date format, number format, collation and non-standard segmentation, and more time zones </li> <li><span style="font-family: Courier New, Courier, monospace;"><a href="https://developer.mozilla.org/en-US/docs/DOM/window.postMessage">postMessage</a></span>, a feature enabling cross-origin communication (including <a href="http://updates.html5rocks.com/2011/12/Transferable-Objects-Lightning-Fast">support for fast transferable objects</a>) </li> <li><span style="font-family: Courier New, Courier, monospace;"><a href="http://www.html5rocks.com/en/tutorials/speed/animations/">requestAnimationFrame</a></span> for silky smooth JavaScript animations </li> <li><a href="http://updates.html5rocks.com/2012/08/When-milliseconds-are-not-enough-performance-now"><span style="font-family: Courier New, Courier, monospace;">performance.now()</span></a> for reliable, high-resolution timing </li> </ul> Today’s Beta release supports these APIs in both their prefixed and un-prefixed forms. If you’re currently using the prefixed versions, you should switch to the un-prefixed versions after today’s Beta release reaches the Stable channel. At that point the prefixed versions will be deprecated, and future releases may not support them.<br /> <br /> <b>Experiments removed in this release </b><br /> <br /> As the web platform evolves, support for some experiments has been removed. The <a href="http://updates.html5rocks.com/2012/06/Don-t-Build-Blobs-Construct-Them"><span style="font-family: Courier New, Courier, monospace;">Blob</span> constructor</a> should now be used instead of the <span style="font-family: inherit;">WebKitBlobBuilder A</span>PI, and the <span style="font-family: Courier New, Courier, monospace;">Blob.webkitSlice()</span> method is deprecated in favor of<span style="font-family: inherit;"> </span><b id="internal-source-marker_0.7631188819650561"><a href="https://bugs.webkit.org/show_bug.cgi?id=78111"><span style="color: #1155cc; font-weight: normal; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Courier New, Courier, monospace;">Blob.slice()</span></span></a></b><span style="font-family: inherit;">.</span> We also gathered a lot of valuable data and feedback from our experimental support for <a href="http://webintents.org/">Web Intents</a> and <a href="https://plus.google.com/u/1/116171619992010691739/posts/gcXURKLN8bg">decided to disable</a> the feature in today's Beta release.<br /> <br /> <b>Stay in the loop </b><br /> <br /> Visit <a href="http://chromestatus.com/">chromestatus.com</a> for a complete overview of Chrome’s developer features, and circle <a href="https://plus.google.com/+GoogleChromeDevelopers">+Google Chrome Developers</a> for more frequent updates.<br /> <br /> We hope you enjoy this Beta release as much as we’ve enjoyed working on it!<br /> <span class="post-author"><br /></span> <span class="post-author">Posted by Peter Beverloo, Software Engineer and Web Platform Enthusiast</span> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> Today’s Chrome <a href="https://www.google.com/landing/chrome/beta/">Beta channel release</a> includes a slew of awesome new developer features.<br /> <br /> <b>Datalist support in date and time</b><br /> <br /> <a href="http://demo.agektmr.com/datalist/">datalist</a> allows you to specify a list of suggested dates and times for input elements. Of course, users still have the freedom to enter arbitrary dates and times. One use case is helping users choose when their food should be ready for pickup:<br /> <br /> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZK1KzJLrqUYHzSj_E4t5L93o6jZfO5_jK8vMkanitfyTTbCQx0qXEIkk91wM2d5AVMjS5rDh2QE8NzqtFTKctBaBewDTrfhOzoVpmTFCPqKGLnfIzM6JclqmarlihoJEMwOPF-zbCseg/s1600/Screen+Shot+2012-11-08+at+10.15.27+AM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="86" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZK1KzJLrqUYHzSj_E4t5L93o6jZfO5_jK8vMkanitfyTTbCQx0qXEIkk91wM2d5AVMjS5rDh2QE8NzqtFTKctBaBewDTrfhOzoVpmTFCPqKGLnfIzM6JclqmarlihoJEMwOPF-zbCseg/s400/Screen+Shot+2012-11-08+at+10.15.27+AM.png" width="400" /></a><br /> <br /> <b><br /></b> <b><br /></b> <b><br /></b> <b><br /></b><br /> <br /> <b>MathML</b><br /> <br /> Now you can write mathematical content in <a href="https://developer.mozilla.org/en-US/docs/MathML">MathML</a> and expect it to be consistently beautiful across the web. Special kudos to <a href="http://webkit.org/">WebKit</a> volunteer <a href="http://stackoverflow.com/questions/9018694/is-there-an-official-statement-of-when-mathml-will-be-available-on-the-iphone-ip/9024138#9024138">Dave Barton</a> for implementing this on his own accord.<br /> <br /> <br /> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirIKt_R9Fe1KXkEYDwk4RE07tvI3WBpaq1CuZBvTQ3m8tZH7N2-VaMXjK9WasNGFm0yOr4psfLIbXdh8BN00jNE9ADtjK_QTZ-zWf8UK9GkavSd_3kNGgZItWBVYvt1pJQow6vTebeq2c/s1600/Screen+Shot+2012-11-08+at+10.17.31+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="101" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirIKt_R9Fe1KXkEYDwk4RE07tvI3WBpaq1CuZBvTQ3m8tZH7N2-VaMXjK9WasNGFm0yOr4psfLIbXdh8BN00jNE9ADtjK_QTZ-zWf8UK9GkavSd_3kNGgZItWBVYvt1pJQow6vTebeq2c/s400/Screen+Shot+2012-11-08+at+10.17.31+AM.png" width="400" /></a> <br /> <b><br /></b> <b>Other new features in this release</b><br /> <ul> <li><a href="http://adobe.github.com/web-platform/samples/css-customfilters/">CSS custom filters</a> have landed behind a <a href="http://blogs.adobe.com/cantrell/archives/2012/07/all-about-chrome-flags.html">flag</a>. They enable sweet cinematic effects like page flipping with just CSS and HTML. You can turn them on with <span style="font-family: Courier New, Courier, monospace;">chrome://flags</span>. </li> <li>Chromium now parses the <a href="http://www.whatwg.org/specs/web-apps/current-work/multipage/association-of-controls-and-forms.html#autofilling-form-controls:-the-autocomplete-attribute"><span style="font-family: Courier New, Courier, monospace;">autocomplete</span></a> attribute <a href="http://code.google.com/p/chromium/issues/detail?id=156508">according to spec</a>. Use it to specify which type of saved user data the browser should use to prefill input elements. Examples are <span style="font-family: Courier New, Courier, monospace;">name</span> and <span style="font-family: Courier New, Courier, monospace;">street-address</span>. </li> <li>A few brand new features landed with a prefix: <span style="font-family: Courier New, Courier, monospace;"><a href="https://bugs.webkit.org/attachment.cgi?id=149882&action=prettypatch">-webkit-hyphens</a></span> gives you more control over hyphenation at line breaks, and <span style="font-family: Courier New, Courier, monospace;">-webkit-clip-path</span> enables you to <a href="https://plus.google.com/118075919496626375791/posts/2n8PTisLztW">clip DOM content</a> to an SVG shape. </li> </ul> <b>Un-prefixed APIs </b><br /> <br /> APIs un-prefixed in today’s Beta release include:<br /> <ul> <li><a href="http://www.html5rocks.com/en/tutorials/indexeddb/todo/">IndexedDB</a>, a client-side storage API offering fast access to large amounts of structured data </li> <li><a href="http://norbertlindenberg.com/2012/10/ecmascript-internationalization-api/index.html#Intl"><span style="font-family: Courier New, Courier, monospace;">Intl</span></a>, which adds support for JavaScript internationalization of date format, number format, collation and non-standard segmentation, and more time zones </li> <li><span style="font-family: Courier New, Courier, monospace;"><a href="https://developer.mozilla.org/en-US/docs/DOM/window.postMessage">postMessage</a></span>, a feature enabling cross-origin communication (including <a href="http://updates.html5rocks.com/2011/12/Transferable-Objects-Lightning-Fast">support for fast transferable objects</a>) </li> <li><span style="font-family: Courier New, Courier, monospace;"><a href="http://www.html5rocks.com/en/tutorials/speed/animations/">requestAnimationFrame</a></span> for silky smooth JavaScript animations </li> <li><a href="http://updates.html5rocks.com/2012/08/When-milliseconds-are-not-enough-performance-now"><span style="font-family: Courier New, Courier, monospace;">performance.now()</span></a> for reliable, high-resolution timing </li> </ul> Today’s Beta release supports these APIs in both their prefixed and un-prefixed forms. If you’re currently using the prefixed versions, you should switch to the un-prefixed versions after today’s Beta release reaches the Stable channel. At that point the prefixed versions will be deprecated, and future releases may not support them.<br /> <br /> <b>Experiments removed in this release </b><br /> <br /> As the web platform evolves, support for some experiments has been removed. The <a href="http://updates.html5rocks.com/2012/06/Don-t-Build-Blobs-Construct-Them"><span style="font-family: Courier New, Courier, monospace;">Blob</span> constructor</a> should now be used instead of the <span style="font-family: inherit;">WebKitBlobBuilder A</span>PI, and the <span style="font-family: Courier New, Courier, monospace;">Blob.webkitSlice()</span> method is deprecated in favor of<span style="font-family: inherit;"> </span><b id="internal-source-marker_0.7631188819650561"><a href="https://bugs.webkit.org/show_bug.cgi?id=78111"><span style="color: #1155cc; font-weight: normal; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Courier New, Courier, monospace;">Blob.slice()</span></span></a></b><span style="font-family: inherit;">.</span> We also gathered a lot of valuable data and feedback from our experimental support for <a href="http://webintents.org/">Web Intents</a> and <a href="https://plus.google.com/u/1/116171619992010691739/posts/gcXURKLN8bg">decided to disable</a> the feature in today's Beta release.<br /> <br /> <b>Stay in the loop </b><br /> <br /> Visit <a href="http://chromestatus.com/">chromestatus.com</a> for a complete overview of Chrome’s developer features, and circle <a href="https://plus.google.com/+GoogleChromeDevelopers">+Google Chrome Developers</a> for more frequent updates.<br /> <br /> We hope you enjoy this Beta release as much as we’ve enjoyed working on it!<br /> <span class="post-author"><br /></span> <span class="post-author">Posted by Peter Beverloo, Software Engineer and Web Platform Enthusiast</span> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Chromium Blog:A web developer’s guide to the latest Chrome Beta&url=https://blog.chromium.org/2012/11/a-web-developers-guide-to-latest-chrome.html&via=ChromiumDev'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=https://blog.chromium.org/2012/11/a-web-developers-guide-to-latest-chrome.html'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='https://blog.chromium.org/2012/11/a-web-developers-guide-to-latest-chrome.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> </div> </div> </div> <div class='post' data-id='5091758005433029582' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='https://blog.chromium.org/2012/11/introducing-tcp-listen-new-api-for.html' itemprop='url' title='Introducing TCP Listen, a new API for Chrome packaged apps'> Introducing TCP Listen, a new API for Chrome packaged apps </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Friday, November 2, 2012 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> <a href="http://developer.chrome.com/trunk/apps/about_apps.html">Chrome packaged apps</a> aim to deliver an app experience with the appearance and capabilities of native apps, but built using the growing capabilities of HTML5. These apps can access APIs for better filesystem handling, direct access to hardware devices, raw network communication and <a href="http://developer.chrome.com/trunk/apps/api_index.html">many others</a>. One of the new APIs that just landed in an experimental state is <a href="http://developer.chrome.com/trunk/apps/socket.html#method-listen">TCP Listen</a>, which allows an app to accept incoming TCP connections.<br /> <br /> Since the developer preview launch <a href="http://blog.chromium.org/2012/08/the-evolution-of-chrome-packaged-apps.html">earlier this year</a>, Chrome packaged apps have been able to connect to remote servers using TCP or UDP, and bind to a UDP port. For example, this <a href="http://developer.chrome.com/trunk/apps/sencha_framework.html">Media Center application</a> searches for and connects to media servers in the local network. Now, through the new TCP Listen API, a Chrome packaged app can also act as a TCP server itself and accept incoming connections on specified ports.<br /> <br /> You can use this API, for example, to create a <a href="https://github.com/GoogleChrome/chrome-app-samples/tree/master/webserver">HTTP server</a> on a development environment application, to <a href="https://github.com/GoogleChrome/chrome-app-samples/tree/master/tcpserver">automate a browser window</a> for page load testing (see image below) or even to augment the <a href="http://developer.chrome.com/trunk/apps/sencha_framework.html">Media Center application</a> with a <a href="http://en.wikipedia.org/wiki/Digital_Living_Network_Alliance">DLNA®/UPnP</a> media server and show your PicasaWeb pictures on your DLNA® enabled television.<br /> <br /> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJB5llZuYS6UOyts645ea9Wmi3fWStI3smUFIsoye-xyBs0loY8JADqDIo2tP8O8LWDDaz_sxWvW0tXPPy5Ix4n7jUUtxcwz_-JvrdG4SHuDOtuOP4z4GLGOoyN40Si4SxMyPeWI2z8aU/s1600/screenshot_tcpserver.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="136" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJB5llZuYS6UOyts645ea9Wmi3fWStI3smUFIsoye-xyBs0loY8JADqDIo2tP8O8LWDDaz_sxWvW0tXPPy5Ix4n7jUUtxcwz_-JvrdG4SHuDOtuOP4z4GLGOoyN40Si4SxMyPeWI2z8aU/s400/screenshot_tcpserver.png" width="400" /></a> <br /> <br /> To get started, clone this <a href="http://github.com/GoogleChrome/chrome-app-samples">GitHub repository</a> and look at the <a href="https://github.com/GoogleChrome/chrome-app-samples/tree/master/webserver">webserver</a> and the <a href="https://github.com/GoogleChrome/chrome-app-samples/tree/master/tcpserver">TCP server</a> samples. You may also want to watch the <a href="https://developers.google.com/live/shows/ahNzfmdvb2dsZS1kZXZlbG9wZXJzchoLEgVFdmVudBjW474DDAsSBUV2ZW50GIknDA/">Chrome Apps Office Hours</a> where we specifically talk about the TCP Listen API.<br /> <br /> We are curious to see what clever ideas you will come up with. Have questions or comments? Subscribe to <a href="https://groups.google.com/a/chromium.org/group/chromium-apps">chromium-apps</a> and let us know!<br /> <span class="post-author"><br /></span> <span class="post-author">Posted by Renato Mangini, Developer Advocate </span> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> <a href="http://developer.chrome.com/trunk/apps/about_apps.html">Chrome packaged apps</a> aim to deliver an app experience with the appearance and capabilities of native apps, but built using the growing capabilities of HTML5. These apps can access APIs for better filesystem handling, direct access to hardware devices, raw network communication and <a href="http://developer.chrome.com/trunk/apps/api_index.html">many others</a>. One of the new APIs that just landed in an experimental state is <a href="http://developer.chrome.com/trunk/apps/socket.html#method-listen">TCP Listen</a>, which allows an app to accept incoming TCP connections.<br /> <br /> Since the developer preview launch <a href="http://blog.chromium.org/2012/08/the-evolution-of-chrome-packaged-apps.html">earlier this year</a>, Chrome packaged apps have been able to connect to remote servers using TCP or UDP, and bind to a UDP port. For example, this <a href="http://developer.chrome.com/trunk/apps/sencha_framework.html">Media Center application</a> searches for and connects to media servers in the local network. Now, through the new TCP Listen API, a Chrome packaged app can also act as a TCP server itself and accept incoming connections on specified ports.<br /> <br /> You can use this API, for example, to create a <a href="https://github.com/GoogleChrome/chrome-app-samples/tree/master/webserver">HTTP server</a> on a development environment application, to <a href="https://github.com/GoogleChrome/chrome-app-samples/tree/master/tcpserver">automate a browser window</a> for page load testing (see image below) or even to augment the <a href="http://developer.chrome.com/trunk/apps/sencha_framework.html">Media Center application</a> with a <a href="http://en.wikipedia.org/wiki/Digital_Living_Network_Alliance">DLNA®/UPnP</a> media server and show your PicasaWeb pictures on your DLNA® enabled television.<br /> <br /> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJB5llZuYS6UOyts645ea9Wmi3fWStI3smUFIsoye-xyBs0loY8JADqDIo2tP8O8LWDDaz_sxWvW0tXPPy5Ix4n7jUUtxcwz_-JvrdG4SHuDOtuOP4z4GLGOoyN40Si4SxMyPeWI2z8aU/s1600/screenshot_tcpserver.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="136" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJB5llZuYS6UOyts645ea9Wmi3fWStI3smUFIsoye-xyBs0loY8JADqDIo2tP8O8LWDDaz_sxWvW0tXPPy5Ix4n7jUUtxcwz_-JvrdG4SHuDOtuOP4z4GLGOoyN40Si4SxMyPeWI2z8aU/s400/screenshot_tcpserver.png" width="400" /></a> <br /> <br /> To get started, clone this <a href="http://github.com/GoogleChrome/chrome-app-samples">GitHub repository</a> and look at the <a href="https://github.com/GoogleChrome/chrome-app-samples/tree/master/webserver">webserver</a> and the <a href="https://github.com/GoogleChrome/chrome-app-samples/tree/master/tcpserver">TCP server</a> samples. You may also want to watch the <a href="https://developers.google.com/live/shows/ahNzfmdvb2dsZS1kZXZlbG9wZXJzchoLEgVFdmVudBjW474DDAsSBUV2ZW50GIknDA/">Chrome Apps Office Hours</a> where we specifically talk about the TCP Listen API.<br /> <br /> We are curious to see what clever ideas you will come up with. Have questions or comments? Subscribe to <a href="https://groups.google.com/a/chromium.org/group/chromium-apps">chromium-apps</a> and let us know!<br /> <span class="post-author"><br /></span> <span class="post-author">Posted by Renato Mangini, Developer Advocate </span> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Chromium Blog:Introducing TCP Listen, a new API for Chrome packaged apps&url=https://blog.chromium.org/2012/11/introducing-tcp-listen-new-api-for.html&via=ChromiumDev'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=https://blog.chromium.org/2012/11/introducing-tcp-listen-new-api-for.html'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='https://blog.chromium.org/2012/11/introducing-tcp-listen-new-api-for.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> <span class='labels-caption'> Labels: </span> <span class='labels'> <a class='label' href='https://blog.chromium.org/search/label/chrome%20web%20store' rel='tag'> chrome web store </a> </span> </div> </div> </div> <div class='post' data-id='5034174919564834847' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='https://blog.chromium.org/2012/10/smarter-npapi-installs-from-chrome-web.html' itemprop='url' title='Smarter NPAPI installs from the Chrome Web Store'> Smarter NPAPI installs from the Chrome Web Store </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Wednesday, October 31, 2012 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> <a href="https://chrome.google.com/webstore/category/home">Chrome Web Store</a> developers can create and distribute apps and extensions that use <a href="https://developer.mozilla.org/en-US/docs/Plugins">NPAPI</a> plug-ins. However, platforms such as ChromeOS and Windows 8 don’t support NPAPI. Today, we’re making the installation of apps and extensions that use NPAPI smarter, to help users avoid installing items that they can’t use on their particular platform.<br /> <br /> If a user visits the Chrome Web Store on a platform that doesn’t support NPAPI, the store will filter out all items that use it from the home page and the various category pages. These apps and extensions will still show up in search results, and can be visited from direct URL links, but the Details dialog for each item will display a message that the app or the extension in question cannot be installed and the Install button will be disabled.<br /> <br /> If you are a developer whose apps or extensions use NPAPI but can still work without it, we’ve provided a way for you to prevent your items from being filtered out. In your manifest.json file under the <a href="http://developer.chrome.com/apps/manifest.html#requirements">requirements</a> section, specify the “npapi” flag like this:<br /> <br /> <span style="font-family: Courier New, Courier, monospace;">"requirements": {</span><br /> <span style="font-family: Courier New, Courier, monospace;"> "plugins": {</span><br /> <span style="font-family: Courier New, Courier, monospace;"> "npapi": false</span><br /> <span style="font-family: Courier New, Courier, monospace;"> }</span><br /> <span style="font-family: Courier New, Courier, monospace;"> }</span><br /> <br /> This will allow your apps and extensions to continue to be available to users on platforms that don’t support NPAPI. If your plug-in doesn’t have any explicit dependencies on the underlying OS, then you should really consider porting it to <a href="https://developers.google.com/native-client/">Native Client</a>, which provides improved portability and security and runs just great on Windows 8 and ChromeOS.<br /> <br /> Have any questions or comments about NPAPI? You can reach us on our <a href="https://groups.google.com/a/chromium.org/forum/?fromgroups#!forum/chromium-apps">developer forum</a> for all of your store-related questions.<br /> <span class="post-author"><br /></span> <span class="post-author">Posted by Joe Marini, Developer Advocate </span> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> <a href="https://chrome.google.com/webstore/category/home">Chrome Web Store</a> developers can create and distribute apps and extensions that use <a href="https://developer.mozilla.org/en-US/docs/Plugins">NPAPI</a> plug-ins. However, platforms such as ChromeOS and Windows 8 don’t support NPAPI. Today, we’re making the installation of apps and extensions that use NPAPI smarter, to help users avoid installing items that they can’t use on their particular platform.<br /> <br /> If a user visits the Chrome Web Store on a platform that doesn’t support NPAPI, the store will filter out all items that use it from the home page and the various category pages. These apps and extensions will still show up in search results, and can be visited from direct URL links, but the Details dialog for each item will display a message that the app or the extension in question cannot be installed and the Install button will be disabled.<br /> <br /> If you are a developer whose apps or extensions use NPAPI but can still work without it, we’ve provided a way for you to prevent your items from being filtered out. In your manifest.json file under the <a href="http://developer.chrome.com/apps/manifest.html#requirements">requirements</a> section, specify the “npapi” flag like this:<br /> <br /> <span style="font-family: Courier New, Courier, monospace;">"requirements": {</span><br /> <span style="font-family: Courier New, Courier, monospace;"> "plugins": {</span><br /> <span style="font-family: Courier New, Courier, monospace;"> "npapi": false</span><br /> <span style="font-family: Courier New, Courier, monospace;"> }</span><br /> <span style="font-family: Courier New, Courier, monospace;"> }</span><br /> <br /> This will allow your apps and extensions to continue to be available to users on platforms that don’t support NPAPI. If your plug-in doesn’t have any explicit dependencies on the underlying OS, then you should really consider porting it to <a href="https://developers.google.com/native-client/">Native Client</a>, which provides improved portability and security and runs just great on Windows 8 and ChromeOS.<br /> <br /> Have any questions or comments about NPAPI? You can reach us on our <a href="https://groups.google.com/a/chromium.org/forum/?fromgroups#!forum/chromium-apps">developer forum</a> for all of your store-related questions.<br /> <span class="post-author"><br /></span> <span class="post-author">Posted by Joe Marini, Developer Advocate </span> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Chromium Blog:Smarter NPAPI installs from the Chrome Web Store&url=https://blog.chromium.org/2012/10/smarter-npapi-installs-from-chrome-web.html&via=ChromiumDev'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=https://blog.chromium.org/2012/10/smarter-npapi-installs-from-chrome-web.html'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='https://blog.chromium.org/2012/10/smarter-npapi-installs-from-chrome-web.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> <span class='labels-caption'> Labels: </span> <span class='labels'> <a class='label' href='https://blog.chromium.org/search/label/chrome%20web%20store' rel='tag'> chrome web store </a> </span> </div> </div> </div> <div class='post' data-id='4684736921211888006' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='https://blog.chromium.org/2012/10/do-more-with-chrome-developer-tools.html' itemprop='url' title='Do more with Chrome Developer Tools'> Do more with Chrome Developer Tools </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Tuesday, October 23, 2012 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> The <a href="https://developers.google.com/chrome-developer-tools/docs/overview">Chrome Developer Tools</a> team recently launched new features and made several UI changes to improve your development and debugging workflow.<br /> <br /> <b>Develop for mobile </b><br /> <br /> Since <a href="http://chrome.blogspot.com/2012/02/introducing-chrome-for-android.html">we launched</a> Chrome for Android, you’ve been able to use Chrome Developer Tools to debug and profile mobile web pages and web apps.<br /> <br /> Today, we take this feature one step further by introducing device emulation support in Chrome Developer Tools. Device emulation includes, among other things, native <b>User Agent and dimension overriding</b>. This allows developers to debug mobile browsers on different devices and operating systems via the Settings Menu. So, now, you can emulate the exact device metrics of devices like the Galaxy Nexus and the iPhone to test your media query-driven design.<br /> <br /> Chrome Developer Tools also supports single <b><a href="http://www.w3.org/TR/touch-events/">touch event</a> emulation</b> to make it easier to <a href="//www.youtube.com/watch?v=3pxf3Ju2row#t=26m40s">debug mobile applications</a> on the desktop.<br /> <br /> <b>Profile rendering performance </b><br /> <br /> The Timeline’s Frame Mode feature now allows you to <b>profile Chrome’s rendering performance</b>, remove the jank and deliver the silky smooth performance users expect from your apps. To learn more about this topic, check out the recent <a href="//www.youtube.com/watch?v=hAzhayTnhEI">"Jank Busters"</a> video from Google I/O.<br /> <br /> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhqxG0DJzm_142Z1q8AhB2XgttO9AIf9JhzHZMS6mHrz2X2vfa0qYaLwFhF3SJk21x7gaG0SlAzLl9ELb8q1K0_jBq9a-eWsgPxTBTydZO7PAS0K4S2OQmXoC0Ox0v8_Tuzu0eZMiCYmU/s1600/timeline_screenshot.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="247" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhqxG0DJzm_142Z1q8AhB2XgttO9AIf9JhzHZMS6mHrz2X2vfa0qYaLwFhF3SJk21x7gaG0SlAzLl9ELb8q1K0_jBq9a-eWsgPxTBTydZO7PAS0K4S2OQmXoC0Ox0v8_Tuzu0eZMiCYmU/s400/timeline_screenshot.png" width="400" /></a> <br /> <b><br /></b> <b>Preview your log items</b><br /> <br /> The console now prints a user-friendly snapshot of the object properties taken at log time, whereas by expanding the object manually, you can still see its live content. This is especially useful when logging an object in a loop and observing its mutation. With this change, we resolved a <a href="http://code.google.com/p/chromium/issues/detail?id=50316">longstanding bug</a> many of you prioritized on <a href="http://crbug.com/">crbug.com</a>.<br /> <br /> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9Fg6ZkIOQ4WwB0tL-ieDxTBmLHHUqJ5O7B5a0hRY6d-jyDdHbviW4dqGzBhfv0e5WM7YKtr_Q7FQRykKhbu7l43FTB_nkp-pbUuUYB8HiUjwZERVawgIv2rnOXwdUig_pWR_NoS05khI/s1600/console_preview.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="167" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9Fg6ZkIOQ4WwB0tL-ieDxTBmLHHUqJ5O7B5a0hRY6d-jyDdHbviW4dqGzBhfv0e5WM7YKtr_Q7FQRykKhbu7l43FTB_nkp-pbUuUYB8HiUjwZERVawgIv2rnOXwdUig_pWR_NoS05khI/s400/console_preview.png" width="400" /></a> <br /> <b><br /></b> <b>Play with experimental features</b><br /> <br /> You can now try new experimental features in Chrome Developer Tools by visiting <span style="font-family: Courier New, Courier, monospace;">chrome:flags</span> and enabling them there. Once you do that, a new tab called “Experiments” will be visible in the settings menu, allowing you to enable and use any of the following experiments:<br /> <ul> <li>Snippets (essentially multi-line console on steroids) </li> <li>Source mapping support for <a href="http://sass-lang.com/">SASS</a> </li> <li>Native memory profiling </li> <li>Geolocation / orientation override </li> <li>FileSystem inspection </li> <li>Canvas inspection </li> <li>CPU activity in Timeline </li> <li>CSS Regions support </li> </ul> Some of these experimental features are almost ready while others have just landed and need some more refining. In either case, we’d love your <a href="http://new.crbug.com/">feedback</a> before we bake these fully in Chrome Developer Tools. You can also read our recently updated <a href="https://developers.google.com/chrome-developer-tools/docs/contributing">contribution guide</a> if you’re interested in helping us make the tools better.<br /> <br /> To get more information on all of Chrome Developer Tools features, check out our “<a href="//www.youtube.com/watch?v=3pxf3Ju2row">Chrome Developer Tools Evolution</a>” talk at the I/O 2012. You can also follow <a href="https://plus.google.com/+GoogleChromeDevelopers/">Google Chrome Developers</a> on Google+ or<a href="http://twitter.com/ChromiumDev"> @ChromiumDev</a> on Twitter for more news on changes landing in Chrome Developer Tools.<br /> <span class="post-author"><br /></span> <span class="post-author">Posted by Stefano Cazzulani, Product Manager </span> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> The <a href="https://developers.google.com/chrome-developer-tools/docs/overview">Chrome Developer Tools</a> team recently launched new features and made several UI changes to improve your development and debugging workflow.<br /> <br /> <b>Develop for mobile </b><br /> <br /> Since <a href="http://chrome.blogspot.com/2012/02/introducing-chrome-for-android.html">we launched</a> Chrome for Android, you’ve been able to use Chrome Developer Tools to debug and profile mobile web pages and web apps.<br /> <br /> Today, we take this feature one step further by introducing device emulation support in Chrome Developer Tools. Device emulation includes, among other things, native <b>User Agent and dimension overriding</b>. This allows developers to debug mobile browsers on different devices and operating systems via the Settings Menu. So, now, you can emulate the exact device metrics of devices like the Galaxy Nexus and the iPhone to test your media query-driven design.<br /> <br /> Chrome Developer Tools also supports single <b><a href="http://www.w3.org/TR/touch-events/">touch event</a> emulation</b> to make it easier to <a href="//www.youtube.com/watch?v=3pxf3Ju2row#t=26m40s">debug mobile applications</a> on the desktop.<br /> <br /> <b>Profile rendering performance </b><br /> <br /> The Timeline’s Frame Mode feature now allows you to <b>profile Chrome’s rendering performance</b>, remove the jank and deliver the silky smooth performance users expect from your apps. To learn more about this topic, check out the recent <a href="//www.youtube.com/watch?v=hAzhayTnhEI">"Jank Busters"</a> video from Google I/O.<br /> <br /> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhqxG0DJzm_142Z1q8AhB2XgttO9AIf9JhzHZMS6mHrz2X2vfa0qYaLwFhF3SJk21x7gaG0SlAzLl9ELb8q1K0_jBq9a-eWsgPxTBTydZO7PAS0K4S2OQmXoC0Ox0v8_Tuzu0eZMiCYmU/s1600/timeline_screenshot.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="247" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhqxG0DJzm_142Z1q8AhB2XgttO9AIf9JhzHZMS6mHrz2X2vfa0qYaLwFhF3SJk21x7gaG0SlAzLl9ELb8q1K0_jBq9a-eWsgPxTBTydZO7PAS0K4S2OQmXoC0Ox0v8_Tuzu0eZMiCYmU/s400/timeline_screenshot.png" width="400" /></a> <br /> <b><br /></b> <b>Preview your log items</b><br /> <br /> The console now prints a user-friendly snapshot of the object properties taken at log time, whereas by expanding the object manually, you can still see its live content. This is especially useful when logging an object in a loop and observing its mutation. With this change, we resolved a <a href="http://code.google.com/p/chromium/issues/detail?id=50316">longstanding bug</a> many of you prioritized on <a href="http://crbug.com/">crbug.com</a>.<br /> <br /> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9Fg6ZkIOQ4WwB0tL-ieDxTBmLHHUqJ5O7B5a0hRY6d-jyDdHbviW4dqGzBhfv0e5WM7YKtr_Q7FQRykKhbu7l43FTB_nkp-pbUuUYB8HiUjwZERVawgIv2rnOXwdUig_pWR_NoS05khI/s1600/console_preview.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="167" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9Fg6ZkIOQ4WwB0tL-ieDxTBmLHHUqJ5O7B5a0hRY6d-jyDdHbviW4dqGzBhfv0e5WM7YKtr_Q7FQRykKhbu7l43FTB_nkp-pbUuUYB8HiUjwZERVawgIv2rnOXwdUig_pWR_NoS05khI/s400/console_preview.png" width="400" /></a> <br /> <b><br /></b> <b>Play with experimental features</b><br /> <br /> You can now try new experimental features in Chrome Developer Tools by visiting <span style="font-family: Courier New, Courier, monospace;">chrome:flags</span> and enabling them there. Once you do that, a new tab called “Experiments” will be visible in the settings menu, allowing you to enable and use any of the following experiments:<br /> <ul> <li>Snippets (essentially multi-line console on steroids) </li> <li>Source mapping support for <a href="http://sass-lang.com/">SASS</a> </li> <li>Native memory profiling </li> <li>Geolocation / orientation override </li> <li>FileSystem inspection </li> <li>Canvas inspection </li> <li>CPU activity in Timeline </li> <li>CSS Regions support </li> </ul> Some of these experimental features are almost ready while others have just landed and need some more refining. In either case, we’d love your <a href="http://new.crbug.com/">feedback</a> before we bake these fully in Chrome Developer Tools. You can also read our recently updated <a href="https://developers.google.com/chrome-developer-tools/docs/contributing">contribution guide</a> if you’re interested in helping us make the tools better.<br /> <br /> To get more information on all of Chrome Developer Tools features, check out our “<a href="//www.youtube.com/watch?v=3pxf3Ju2row">Chrome Developer Tools Evolution</a>” talk at the I/O 2012. You can also follow <a href="https://plus.google.com/+GoogleChromeDevelopers/">Google Chrome Developers</a> on Google+ or<a href="http://twitter.com/ChromiumDev"> @ChromiumDev</a> on Twitter for more news on changes landing in Chrome Developer Tools.<br /> <span class="post-author"><br /></span> <span class="post-author">Posted by Stefano Cazzulani, Product Manager </span> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Chromium Blog:Do more with Chrome Developer Tools&url=https://blog.chromium.org/2012/10/do-more-with-chrome-developer-tools.html&via=ChromiumDev'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=https://blog.chromium.org/2012/10/do-more-with-chrome-developer-tools.html'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='https://blog.chromium.org/2012/10/do-more-with-chrome-developer-tools.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> <span class='labels-caption'> Labels: </span> <span class='labels'> <a class='label' href='https://blog.chromium.org/search/label/devtools' rel='tag'> devtools </a> </span> </div> </div> </div> <div class='post' data-id='7142868715770088235' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='https://blog.chromium.org/2012/10/new-site-ownership-verification-option.html' itemprop='url' title='New site ownership verification option in CWS'> New site ownership verification option in CWS </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Friday, October 19, 2012 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> To publish an app in the <a href="http://chrome.google.com/webstore">Chrome Web Store</a>, developers need to prove they own the domain that hosts their application. Until recently, the only way to do this was through <a href="https://www.google.com/webmasters/tools/">Google’s Webmaster Tools</a>. Today, we are simplifying the process further by allowing you use Google's site verification service to prove your association with a verified site.<br /> <br /> Suppose you want to publish an app on the Chrome Web Store and have it associated with your company’s existing site, but you don’t have the ability to use any of the current verification methods e.g. you’re not allowed to upload a verification file to the root directory. The site verification service option in the edit page for each item listed in your Chrome Web Store <a href="https://chrome.google.com/webstore/developer/dashboard">developer dashboard</a> allows you to request association of your app with your organization’s site:<br /> <br /> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRuopJUk8YARiLr_AQdGPwzd3d-HcGsuPVHpo9F1mKOwpa0Lox1j_yH2SWFY3HxavP0oxjSlM6QBW0ly2sQxnWtIxUK1jtNAD8eLbv3GVq0fmTg2K6zU8Sti9LBPrRNtzKDYxh6DL7iLM/s1600/Screen+Shot+2012-10-19+at+10.00.26+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="138" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRuopJUk8YARiLr_AQdGPwzd3d-HcGsuPVHpo9F1mKOwpa0Lox1j_yH2SWFY3HxavP0oxjSlM6QBW0ly2sQxnWtIxUK1jtNAD8eLbv3GVq0fmTg2K6zU8Sti9LBPrRNtzKDYxh6DL7iLM/s400/Screen+Shot+2012-10-19+at+10.00.26+AM.png" width="400" /></a> <br /> <br /> When you choose an existing site from the drop-down menu or click “Add a new site”, the current registered owner for the site will receive a notification of your request to be associated. The owner can see who is making the request, and then approve or deny the request appropriately. That’s all there is to it! (<b>Note</b>: if this checkbox isn’t available, it may be because there’s no current owner of the site or you already have an outstanding association request).<br /> <br /> We hope that this new feature will further streamline the process for publishing new apps on the Chrome Web Store, and allows you to focus more on developing your app and less on process. Have any questions or comments about using Google’s site verification service? You can reach us on our <a href="http://groups.google.com/a/chromium.org/group/chromium-apps/topics">developer forum</a> for store-related questions or head on over to the <a href="http://productforums.google.com/forum/#!forum/webmasters">Webmaster Help forum</a>.<br /> <span class="post-author"><br /></span> <span class="post-author">Posted by Joe Marini, Developer Advocate </span> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> To publish an app in the <a href="http://chrome.google.com/webstore">Chrome Web Store</a>, developers need to prove they own the domain that hosts their application. Until recently, the only way to do this was through <a href="https://www.google.com/webmasters/tools/">Google’s Webmaster Tools</a>. Today, we are simplifying the process further by allowing you use Google's site verification service to prove your association with a verified site.<br /> <br /> Suppose you want to publish an app on the Chrome Web Store and have it associated with your company’s existing site, but you don’t have the ability to use any of the current verification methods e.g. you’re not allowed to upload a verification file to the root directory. The site verification service option in the edit page for each item listed in your Chrome Web Store <a href="https://chrome.google.com/webstore/developer/dashboard">developer dashboard</a> allows you to request association of your app with your organization’s site:<br /> <br /> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRuopJUk8YARiLr_AQdGPwzd3d-HcGsuPVHpo9F1mKOwpa0Lox1j_yH2SWFY3HxavP0oxjSlM6QBW0ly2sQxnWtIxUK1jtNAD8eLbv3GVq0fmTg2K6zU8Sti9LBPrRNtzKDYxh6DL7iLM/s1600/Screen+Shot+2012-10-19+at+10.00.26+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="138" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRuopJUk8YARiLr_AQdGPwzd3d-HcGsuPVHpo9F1mKOwpa0Lox1j_yH2SWFY3HxavP0oxjSlM6QBW0ly2sQxnWtIxUK1jtNAD8eLbv3GVq0fmTg2K6zU8Sti9LBPrRNtzKDYxh6DL7iLM/s400/Screen+Shot+2012-10-19+at+10.00.26+AM.png" width="400" /></a> <br /> <br /> When you choose an existing site from the drop-down menu or click “Add a new site”, the current registered owner for the site will receive a notification of your request to be associated. The owner can see who is making the request, and then approve or deny the request appropriately. That’s all there is to it! (<b>Note</b>: if this checkbox isn’t available, it may be because there’s no current owner of the site or you already have an outstanding association request).<br /> <br /> We hope that this new feature will further streamline the process for publishing new apps on the Chrome Web Store, and allows you to focus more on developing your app and less on process. Have any questions or comments about using Google’s site verification service? You can reach us on our <a href="http://groups.google.com/a/chromium.org/group/chromium-apps/topics">developer forum</a> for store-related questions or head on over to the <a href="http://productforums.google.com/forum/#!forum/webmasters">Webmaster Help forum</a>.<br /> <span class="post-author"><br /></span> <span class="post-author">Posted by Joe Marini, Developer Advocate </span> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Chromium Blog:New site ownership verification option in CWS&url=https://blog.chromium.org/2012/10/new-site-ownership-verification-option.html&via=ChromiumDev'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=https://blog.chromium.org/2012/10/new-site-ownership-verification-option.html'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='https://blog.chromium.org/2012/10/new-site-ownership-verification-option.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> <span class='labels-caption'> Labels: </span> <span class='labels'> <a class='label' href='https://blog.chromium.org/search/label/chrome%20web%20store' rel='tag'> chrome web store </a> </span> </div> </div> </div> <div class='post' data-id='2917862363015259881' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='https://blog.chromium.org/2012/10/a-better-developer-experience-for.html' itemprop='url' title='A better developer experience for Native Client'> A better developer experience for Native Client </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Wednesday, October 17, 2012 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> <a href="https://developers.google.com/native-client/">Native Client</a> (NaCl) enables you to write high-performance apps that run your C and C++ code in the browser. With the new Native Client add-in for Microsoft Visual Studio and the new Native Client debugger it just got a lot easier.<br /> <br /> The Visual Studio add-in makes it easy to set up, build, run, and debug your app as a Pepper plug-in and as a Native Client module. If you are porting an existing application to Native Client, building as a Pepper plug-in is a convenient intermediate stage for development enabling you to gradually rewrite the app to use the Pepper APIs (<a href="//www.youtube.com/watch?v=1zvhs5FR0X8">video</a>). <br /> <br /> <a href="//4.bp.blogspot.com/-G0o8xblGtJg/UH7-jH0n7oI/AAAAAAAACEY/Py603Sh0Zq0/s1600/studio.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="356" src="//4.bp.blogspot.com/-G0o8xblGtJg/UH7-jH0n7oI/AAAAAAAACEY/Py603Sh0Zq0/s400/studio.png" width="400"></a> <br /> <br /> The Native Client debugger, affectionately called <a href="https://developers.google.com/native-client/dev/devguide/devcycle/debugging#gdb">nacl-gdb</a>, works on Windows, Mac, and Linux and is now available in the <a href="https://developers.google.com/native-client/beta/sdk/download">SDK</a>. So whatever your development platform, you can now spend more time coding features and less time chasing bugs with <code>printf</code>.<br /> <br /> Following the Native Client philosophy of being OS-independent and open source, nacl-gdb is based on... well... <a href="http://www.gnu.org/software/gdb/">gdb</a>! For those of you who are not excited by a text interface, the Visual Studio <a href="https://developers.google.com/native-client/dev/devguide/devcycle/vs-addin">add-in</a> makes interacting with the debugger easier. If you use a different development environment that can interact with gdb, you can point it to nacl-gdb and use the same commands plus some additional NaCl-specific commands. <br /> <br /> <a href="//2.bp.blogspot.com/-2_eAbbnGIpU/UH7-h9Q-VeI/AAAAAAAACEA/5iNv5I9_n-c/s1600/cmdline.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="371" src="//2.bp.blogspot.com/-2_eAbbnGIpU/UH7-h9Q-VeI/AAAAAAAACEA/5iNv5I9_n-c/s400/cmdline.png" width="400"></a><br /> <br /> Whether you’re an existing Native Client developer or thinking about using Native Client for your next project, now is a great time to <a href="https://developers.google.com/native-client/beta/sdk/download">grab the SDK</a>, write an amazing app, and quickly squash any bugs you find. We look forward to questions on <a href="http://stackoverflow.com/questions/tagged/google-nativeclient">Stack Overflow</a> and ideas and comments in the discussion <a href="https://groups.google.com/group/native-client-discuss?pli=1">forum</a>.<br /> <span class="post-author"><br /></span> <span class="post-author">Posted by Christian Stefansen, Product Manager </span> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> <a href="https://developers.google.com/native-client/">Native Client</a> (NaCl) enables you to write high-performance apps that run your C and C++ code in the browser. With the new Native Client add-in for Microsoft Visual Studio and the new Native Client debugger it just got a lot easier.<br /> <br /> The Visual Studio add-in makes it easy to set up, build, run, and debug your app as a Pepper plug-in and as a Native Client module. If you are porting an existing application to Native Client, building as a Pepper plug-in is a convenient intermediate stage for development enabling you to gradually rewrite the app to use the Pepper APIs (<a href="//www.youtube.com/watch?v=1zvhs5FR0X8">video</a>). <br /> <br /> <a href="//4.bp.blogspot.com/-G0o8xblGtJg/UH7-jH0n7oI/AAAAAAAACEY/Py603Sh0Zq0/s1600/studio.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="356" src="//4.bp.blogspot.com/-G0o8xblGtJg/UH7-jH0n7oI/AAAAAAAACEY/Py603Sh0Zq0/s400/studio.png" width="400"></a> <br /> <br /> The Native Client debugger, affectionately called <a href="https://developers.google.com/native-client/dev/devguide/devcycle/debugging#gdb">nacl-gdb</a>, works on Windows, Mac, and Linux and is now available in the <a href="https://developers.google.com/native-client/beta/sdk/download">SDK</a>. So whatever your development platform, you can now spend more time coding features and less time chasing bugs with <code>printf</code>.<br /> <br /> Following the Native Client philosophy of being OS-independent and open source, nacl-gdb is based on... well... <a href="http://www.gnu.org/software/gdb/">gdb</a>! For those of you who are not excited by a text interface, the Visual Studio <a href="https://developers.google.com/native-client/dev/devguide/devcycle/vs-addin">add-in</a> makes interacting with the debugger easier. If you use a different development environment that can interact with gdb, you can point it to nacl-gdb and use the same commands plus some additional NaCl-specific commands. <br /> <br /> <a href="//2.bp.blogspot.com/-2_eAbbnGIpU/UH7-h9Q-VeI/AAAAAAAACEA/5iNv5I9_n-c/s1600/cmdline.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="371" src="//2.bp.blogspot.com/-2_eAbbnGIpU/UH7-h9Q-VeI/AAAAAAAACEA/5iNv5I9_n-c/s400/cmdline.png" width="400"></a><br /> <br /> Whether you’re an existing Native Client developer or thinking about using Native Client for your next project, now is a great time to <a href="https://developers.google.com/native-client/beta/sdk/download">grab the SDK</a>, write an amazing app, and quickly squash any bugs you find. We look forward to questions on <a href="http://stackoverflow.com/questions/tagged/google-nativeclient">Stack Overflow</a> and ideas and comments in the discussion <a href="https://groups.google.com/group/native-client-discuss?pli=1">forum</a>.<br /> <span class="post-author"><br /></span> <span class="post-author">Posted by Christian Stefansen, Product Manager </span> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Chromium Blog:A better developer experience for Native Client&url=https://blog.chromium.org/2012/10/a-better-developer-experience-for.html&via=ChromiumDev'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=https://blog.chromium.org/2012/10/a-better-developer-experience-for.html'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='https://blog.chromium.org/2012/10/a-better-developer-experience-for.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> <span class='labels-caption'> Labels: </span> <span class='labels'> <a class='label' href='https://blog.chromium.org/search/label/na' rel='tag'> na </a> </span> </div> </div> </div> <div class='post' data-id='7858569126426173145' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='https://blog.chromium.org/2012/10/dart-m1-release.html' itemprop='url' title='Celebrating Dart’s birthday with the first release of the Dart SDK'> Celebrating Dart’s birthday with the first release of the Dart SDK </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Tuesday, October 16, 2012 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> A year ago we <a href="http://blog.chromium.org/2011/10/dart-language-for-structured.html?utm_source=chromium&utm_medium=blog&utm_campaign=m1">released</a> a technology preview of <a href="http://www.dartlang.org/?utm_source=chromium&utm_medium=blog&utm_campaign=m1">Dart</a>, a project that includes a modern language, libraries and tools for building complex web applications. Today, after plowing through thousands of bug reports and feature requests from the web community, a new, more stable and comprehensive version of Dart is now available and ready to use.<br /> <br /> <iframe allowfullscreen="allowfullscreen" frameborder="0" height="304" src="//www.youtube.com/embed/5KlnlCq2M5Q" width="540"></iframe> With this version of the Dart SDK, we’ve made several improvements and added many features:<br /> <ul> <li>A faster Dart Virtual Machine that on some <a href="https://developers.google.com/octane/">Octane</a> tests outperforms even <a href="https://developers.google.com/v8/">V8</a>. </li> <li>A new Dart to JavaScript translator that generates fast and compact output.</li> <li>An <a href="http://api.dartlang.org/docs/continuous/dart_html.html?utm_source=chromium&utm_medium=blog&utm_campaign=m1">HTML library</a> that works transparently on modern browsers.</li> <li>A library to <a href="https://github.com/dart-lang/js-interop?utm_source=chromium&utm_medium=blog&utm_campaign=m1">interoperate with JavaScript</a> code.</li> <li>An easy to use <a href="http://www.dartlang.org/docs/editor/getting-started/?utm_source=chromium&utm_medium=blog&utm_campaign=m1">editor</a>.</li> <li><a href="http://pub.dartlang.org/">Pub</a>, a new package manager</li> <li><a href="http://www.dartlang.org/dartium/?utm_source=chromium&utm_medium=blog&utm_campaign=m1">Dartium</a>, a Chromium build with native Dart support.</li> <li>A <a href="http://api.dartlang.org/docs/continuous/dart_io.html?utm_source=chromium&utm_medium=blog&utm_campaign=m1">server-side I/O library</a>.</li> <li>A language <a href="http://www.dartlang.org/docs/spec/?utm_source=chromium&utm_medium=blog&utm_campaign=m1">specification</a> describing the Dart semantics, including new <a href="http://www.dartlang.org/articles/m1-language-changes/?utm_source=chromium&utm_medium=blog&utm_campaign=m1">features</a>.</li> </ul> Over the following months, we will continue to work hard to evolve the SDK, improve Dart’s robustness and performance, and fine-tune the language while maintaining backwards compatibility. <br /> <br /> <div style="text-align: center;"> <img border="0" height="138" src="//4.bp.blogspot.com/-vCZVkL_Qhtg/UH2MfULU7-I/AAAAAAAAAxU/JWwqCGP3WJ4/s320/happy+birthday+dart.png" style="border: none;" width="320"> </div> <br /> <br /> You can download the Dart Editor from <a href="http://dartlang.org/?utm_source=chromium&utm_medium=blog&utm_campaign=m1">dartlang.org</a>. It comes with a copy of the open-source SDK and Dartium. Thanks again for all your <a href="http://dartbug.com/new">feedback</a> - keep it coming.<br /> <br /> <span style="color: #666666;">Posted by Lars Bak, Software Engineer</span> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> A year ago we <a href="http://blog.chromium.org/2011/10/dart-language-for-structured.html?utm_source=chromium&utm_medium=blog&utm_campaign=m1">released</a> a technology preview of <a href="http://www.dartlang.org/?utm_source=chromium&utm_medium=blog&utm_campaign=m1">Dart</a>, a project that includes a modern language, libraries and tools for building complex web applications. Today, after plowing through thousands of bug reports and feature requests from the web community, a new, more stable and comprehensive version of Dart is now available and ready to use.<br /> <br /> <iframe allowfullscreen="allowfullscreen" frameborder="0" height="304" src="//www.youtube.com/embed/5KlnlCq2M5Q" width="540"></iframe> With this version of the Dart SDK, we’ve made several improvements and added many features:<br /> <ul> <li>A faster Dart Virtual Machine that on some <a href="https://developers.google.com/octane/">Octane</a> tests outperforms even <a href="https://developers.google.com/v8/">V8</a>. </li> <li>A new Dart to JavaScript translator that generates fast and compact output.</li> <li>An <a href="http://api.dartlang.org/docs/continuous/dart_html.html?utm_source=chromium&utm_medium=blog&utm_campaign=m1">HTML library</a> that works transparently on modern browsers.</li> <li>A library to <a href="https://github.com/dart-lang/js-interop?utm_source=chromium&utm_medium=blog&utm_campaign=m1">interoperate with JavaScript</a> code.</li> <li>An easy to use <a href="http://www.dartlang.org/docs/editor/getting-started/?utm_source=chromium&utm_medium=blog&utm_campaign=m1">editor</a>.</li> <li><a href="http://pub.dartlang.org/">Pub</a>, a new package manager</li> <li><a href="http://www.dartlang.org/dartium/?utm_source=chromium&utm_medium=blog&utm_campaign=m1">Dartium</a>, a Chromium build with native Dart support.</li> <li>A <a href="http://api.dartlang.org/docs/continuous/dart_io.html?utm_source=chromium&utm_medium=blog&utm_campaign=m1">server-side I/O library</a>.</li> <li>A language <a href="http://www.dartlang.org/docs/spec/?utm_source=chromium&utm_medium=blog&utm_campaign=m1">specification</a> describing the Dart semantics, including new <a href="http://www.dartlang.org/articles/m1-language-changes/?utm_source=chromium&utm_medium=blog&utm_campaign=m1">features</a>.</li> </ul> Over the following months, we will continue to work hard to evolve the SDK, improve Dart’s robustness and performance, and fine-tune the language while maintaining backwards compatibility. <br /> <br /> <div style="text-align: center;"> <img border="0" height="138" src="//4.bp.blogspot.com/-vCZVkL_Qhtg/UH2MfULU7-I/AAAAAAAAAxU/JWwqCGP3WJ4/s320/happy+birthday+dart.png" style="border: none;" width="320"> </div> <br /> <br /> You can download the Dart Editor from <a href="http://dartlang.org/?utm_source=chromium&utm_medium=blog&utm_campaign=m1">dartlang.org</a>. It comes with a copy of the open-source SDK and Dartium. Thanks again for all your <a href="http://dartbug.com/new">feedback</a> - keep it coming.<br /> <br /> <span style="color: #666666;">Posted by Lars Bak, Software Engineer</span> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Chromium Blog:Celebrating Dart’s birthday with the first release of the Dart SDK&url=https://blog.chromium.org/2012/10/dart-m1-release.html&via=ChromiumDev'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=https://blog.chromium.org/2012/10/dart-m1-release.html'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='https://blog.chromium.org/2012/10/dart-m1-release.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> <span class='labels-caption'> Labels: </span> <span class='labels'> <a class='label' href='https://blog.chromium.org/search/label/dart' rel='tag'> dart </a> </span> </div> </div> </div> <div class='post' data-id='6675642914569581323' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='https://blog.chromium.org/2012/10/modpagespeed-is-now-out-of-beta.html' itemprop='url' title='mod_pagespeed is now out of beta'> mod_pagespeed is now out of beta </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Wednesday, October 10, 2012 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> If you are as obsessed with the speed of your web pages as we are, then you may have heard of mod_pagespeed, an Apache module that automatically optimizes your web pages for performance. Since <a href="http://googledevelopers.blogspot.com/2010/11/make-your-websites-run-faster.html">we introduced</a> mod_pagespeed in 2010, we’ve been focused on improving its functionality, to help developers increase the performance of their web pages. Today, after 18 releases, mod_pagespeed is now <a href="http://googledevelopers.blogspot.com/2012/10/make-web-faster-with-modpagespeed-now.html">officially out of beta</a>.<br /> <br /> <iframe allowfullscreen="allowfullscreen" frameborder="0" height="315" src="//www.youtube.com/embed/6uCAdQSHhmA" width="560"></iframe><br /> <br /> More than 120,000 sites are already using mod_pagespeed to take advantage of the latest performance optimization techniques. To learn more about mod_pagespeed and how to incorporate it in your site, watch our recent <a href="//www.youtube.com/watch?v=6uCAdQSHhmA">Google Developers Live session</a> or visit the mod_pagespeed <a href="https://developers.google.com/speed/pagespeed/mod">developer documentation site</a>.<br /> <span class="post-author"><br /></span> <span class="post-author">Posted by Ilya Grigorik, Developer Advocate </span> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> If you are as obsessed with the speed of your web pages as we are, then you may have heard of mod_pagespeed, an Apache module that automatically optimizes your web pages for performance. Since <a href="http://googledevelopers.blogspot.com/2010/11/make-your-websites-run-faster.html">we introduced</a> mod_pagespeed in 2010, we’ve been focused on improving its functionality, to help developers increase the performance of their web pages. Today, after 18 releases, mod_pagespeed is now <a href="http://googledevelopers.blogspot.com/2012/10/make-web-faster-with-modpagespeed-now.html">officially out of beta</a>.<br /> <br /> <iframe allowfullscreen="allowfullscreen" frameborder="0" height="315" src="//www.youtube.com/embed/6uCAdQSHhmA" width="560"></iframe><br /> <br /> More than 120,000 sites are already using mod_pagespeed to take advantage of the latest performance optimization techniques. To learn more about mod_pagespeed and how to incorporate it in your site, watch our recent <a href="//www.youtube.com/watch?v=6uCAdQSHhmA">Google Developers Live session</a> or visit the mod_pagespeed <a href="https://developers.google.com/speed/pagespeed/mod">developer documentation site</a>.<br /> <span class="post-author"><br /></span> <span class="post-author">Posted by Ilya Grigorik, Developer Advocate </span> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Chromium Blog:mod_pagespeed is now out of beta&url=https://blog.chromium.org/2012/10/modpagespeed-is-now-out-of-beta.html&via=ChromiumDev'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=https://blog.chromium.org/2012/10/modpagespeed-is-now-out-of-beta.html'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='https://blog.chromium.org/2012/10/modpagespeed-is-now-out-of-beta.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> </div> </div> </div> <div class='post' data-id='3161951373966360828' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='https://blog.chromium.org/2012/10/pwnium-2-results-and-wrap-up_10.html' itemprop='url' title='Pwnium 2: results and wrap-up'> Pwnium 2: results and wrap-up </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Wednesday, October 10, 2012 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> As part of our ongoing effort to reward exceptional <a href="http://www.chromium.org/Home/chromium-security/vulnerability-rewards-program">vulnerability research</a> in the security community, we hosted the <a href="http://blog.chromium.org/2012/08/announcing-pwnium-2.html">Pwnium 2</a> competition at <a href="http://conference.hitb.org/hitbsecconf2012kul/">Hack in the Box 2012</a> in Kuala Lumpur yesterday.<br /> <br /> We’re happy to confirm that we received a valid exploit from <a href="http://blog.chromium.org/2012/05/tale-of-two-pwnies-part-1.html">returning pwner</a>, Pinkie Pie. This pwn relies on a WebKit Scalable Vector Graphics (SVG) compromise to exploit the renderer process and a second bug in the <a href="http://www.chromium.org/developers/design-documents/inter-process-communication">IPC layer</a> to escape the Chrome sandbox. Since this exploit depends entirely on bugs within Chrome to achieve code execution, it qualifies for our highest award level as a “full Chrome exploit,” a $60,000 prize and free Chromebook.<br /> <br /> One of Chrome’s most effective security defenses is our <a href="http://www.chromium.org/Home/chromium-security/core-principles">fast response time</a> and ability to update users with critical patches, quickly. These bugs were no exception. We started analyzing the exploit as soon as it was submitted, and in fewer than 10 hours after Pwnium 2 concluded we were updating users with a <a href="http://googlechromereleases.blogspot.com/2012/10/stable-channel-update_6105.html">freshly patched</a> version of Chrome.<br /> <br /> We’d like to thank Pinkie Pie for his hard work in assembling another great Pwnium submission. We’ll post an in-depth look at the bugs used and subsequent mitigations once other platforms have been patched.<br /> <br /> <span class="post-author">Posted by Chris Evans, Software Engineer </span> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> As part of our ongoing effort to reward exceptional <a href="http://www.chromium.org/Home/chromium-security/vulnerability-rewards-program">vulnerability research</a> in the security community, we hosted the <a href="http://blog.chromium.org/2012/08/announcing-pwnium-2.html">Pwnium 2</a> competition at <a href="http://conference.hitb.org/hitbsecconf2012kul/">Hack in the Box 2012</a> in Kuala Lumpur yesterday.<br /> <br /> We’re happy to confirm that we received a valid exploit from <a href="http://blog.chromium.org/2012/05/tale-of-two-pwnies-part-1.html">returning pwner</a>, Pinkie Pie. This pwn relies on a WebKit Scalable Vector Graphics (SVG) compromise to exploit the renderer process and a second bug in the <a href="http://www.chromium.org/developers/design-documents/inter-process-communication">IPC layer</a> to escape the Chrome sandbox. Since this exploit depends entirely on bugs within Chrome to achieve code execution, it qualifies for our highest award level as a “full Chrome exploit,” a $60,000 prize and free Chromebook.<br /> <br /> One of Chrome’s most effective security defenses is our <a href="http://www.chromium.org/Home/chromium-security/core-principles">fast response time</a> and ability to update users with critical patches, quickly. These bugs were no exception. We started analyzing the exploit as soon as it was submitted, and in fewer than 10 hours after Pwnium 2 concluded we were updating users with a <a href="http://googlechromereleases.blogspot.com/2012/10/stable-channel-update_6105.html">freshly patched</a> version of Chrome.<br /> <br /> We’d like to thank Pinkie Pie for his hard work in assembling another great Pwnium submission. We’ll post an in-depth look at the bugs used and subsequent mitigations once other platforms have been patched.<br /> <br /> <span class="post-author">Posted by Chris Evans, Software Engineer </span> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Chromium Blog:Pwnium 2: results and wrap-up&url=https://blog.chromium.org/2012/10/pwnium-2-results-and-wrap-up_10.html&via=ChromiumDev'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=https://blog.chromium.org/2012/10/pwnium-2-results-and-wrap-up_10.html'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='https://blog.chromium.org/2012/10/pwnium-2-results-and-wrap-up_10.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> <span class='labels-caption'> Labels: </span> <span class='labels'> <a class='label' href='https://blog.chromium.org/search/label/security' rel='tag'> security </a> </span> </div> </div> </div> <div class='post' data-id='9062003748257361783' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='https://blog.chromium.org/2012/10/pwnium-2-begins.html' itemprop='url' title='Pwnium 2 begins'> Pwnium 2 begins </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Tuesday, October 9, 2012 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> Security is one of Chrome’s <a href="http://www.chromium.org/developers/core-principles">core principles</a>, and we work closely with the security community to continually make the web safer for users. In that spirit, we're hosting <a href="http://blog.chromium.org/2012/08/announcing-pwnium-2.html">Pwnium 2</a> at <a href="http://conference.hitb.org/">Hack in the Box 2012</a> in Kuala Lumpur this week.<br /> <br /> Participants will be able to <a href="http://www.chromium.org/Home/chromium-security/pwnium-2">demonstrate their pwns</a> against Chrome at 9 a.m. Wednesday local time (1 a.m. GMT for folks keeping track). We’ll be actively analyzing any submissions we receive, and will announce successful exploits and prizes during <a href="http://conference.hitb.org/hitbsecconf2012kul/chris-evans/">our talk</a> at 5 p.m, Thursday (9 a.m. GMT) on the evolution of Chrome’s <a href="http://blog.chromium.org/2012/08/chromium-vulnerability-rewards-program.html">vulnerability rewards program</a>.<br /> <br /> Stay tuned!<br /> <br /> <span class="post-author">Posted by Chris Evans, Software Engineer </span> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> Security is one of Chrome’s <a href="http://www.chromium.org/developers/core-principles">core principles</a>, and we work closely with the security community to continually make the web safer for users. In that spirit, we're hosting <a href="http://blog.chromium.org/2012/08/announcing-pwnium-2.html">Pwnium 2</a> at <a href="http://conference.hitb.org/">Hack in the Box 2012</a> in Kuala Lumpur this week.<br /> <br /> Participants will be able to <a href="http://www.chromium.org/Home/chromium-security/pwnium-2">demonstrate their pwns</a> against Chrome at 9 a.m. Wednesday local time (1 a.m. GMT for folks keeping track). We’ll be actively analyzing any submissions we receive, and will announce successful exploits and prizes during <a href="http://conference.hitb.org/hitbsecconf2012kul/chris-evans/">our talk</a> at 5 p.m, Thursday (9 a.m. GMT) on the evolution of Chrome’s <a href="http://blog.chromium.org/2012/08/chromium-vulnerability-rewards-program.html">vulnerability rewards program</a>.<br /> <br /> Stay tuned!<br /> <br /> <span class="post-author">Posted by Chris Evans, Software Engineer </span> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Chromium Blog:Pwnium 2 begins&url=https://blog.chromium.org/2012/10/pwnium-2-begins.html&via=ChromiumDev'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=https://blog.chromium.org/2012/10/pwnium-2-begins.html'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='https://blog.chromium.org/2012/10/pwnium-2-begins.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> <span class='labels-caption'> Labels: </span> <span class='labels'> <a class='label' href='https://blog.chromium.org/search/label/security' rel='tag'> security </a> </span> </div> </div> </div> <div class='post' data-id='5866715442118193207' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='https://blog.chromium.org/2012/10/get-front-row-seat-with-gdl-presents.html' itemprop='url' title='Get a front row seat with GDL Presents'> Get a front row seat with GDL Presents </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Monday, October 8, 2012 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> <b id="internal-source-marker_0.28260394069366157" style="font-weight: normal;"><span style="background-color: white; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">Calling designers, web developers, and the creatively curious! Next week marks the launch of </span><span style="background-color: white; font-family: Arial; font-size: 13px; font-style: italic; vertical-align: baseline; white-space: pre-wrap;">Google Developers Live Presents,</span><span style="background-color: white; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;"> a new series of exclusive programming from </span><a href="http://developers.google.com/live"><span style="background-color: white; color: black; font-family: Arial; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><span style="background-color: white; color: #1155cc; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">GDL</span></a><span style="background-color: white; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">. </span><span style="background-color: white; font-family: Arial; font-size: 13px; font-style: italic; vertical-align: baseline; white-space: pre-wrap;">Presents</span><span style="background-color: white; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;"> kicks off this month with </span><span style="background-color: white; font-family: Arial; font-size: 13px; font-style: italic; font-weight: bold; vertical-align: baseline; white-space: pre-wrap;">Design Ignites the Web</span><span style="background-color: white; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">, a family of episodes that takes you on a journey from back-end to front-end, showing you how to create compelling projects in the browser. The series will feature exclusive interviews with the developers behind select </span><a href="http://www.chromeexperiments.com/"><span style="background-color: white; color: black; font-family: Arial; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><span style="background-color: white; color: #1155cc; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">Chrome Experiments</span></a><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">, </span><a href="http://www.chromeweblab.com/"><span style="background-color: white; color: black; font-family: Arial; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><span style="background-color: white; color: #1155cc; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">Chrome WebLab</span></a><span style="background-color: white; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">, </span><a href="http://www.movikantirevo.com/"><span style="background-color: white; color: black; font-family: Arial; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><span style="background-color: white; color: #1155cc; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">Movi.Kanti.Revo</span></a><span style="background-color: white; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">, and DevArt.</span></b> <b style="font-weight: normal;"><span style="background-color: white; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;"> </span></b><br /> <b><span style="background-color: white; font-family: Arial; font-size: 13px; font-weight: normal; vertical-align: baseline; white-space: pre-wrap;"><br /></span></b> <b> <span style="background-color: white; font-family: Arial; font-size: 13px; font-weight: normal; vertical-align: baseline; white-space: pre-wrap;">So, what’s coming up?</span> <span style="font-weight: normal;"><span style="background-color: white; font-family: Arial; font-size: 13px; font-style: italic; vertical-align: baseline; white-space: pre-wrap;"></span></span> </b><br /> <b><b id="internal-source-marker_0.28260394069366157" style="font-weight: normal;"><span style="font-family: Arial; font-size: 13px; font-weight: bold; vertical-align: baseline; white-space: pre-wrap;"><br /></span></b></b> <b><b id="internal-source-marker_0.28260394069366157" style="font-weight: normal;"><span style="font-family: Arial; font-size: 13px; font-weight: bold; vertical-align: baseline; white-space: pre-wrap;">Make Web Magic: The Minds Behind the Most Popular Chrome Experiments | </span><span style="font-family: Arial; font-size: 13px; font-style: italic; vertical-align: baseline; white-space: pre-wrap;">Tuesday, October 9 - Part 1, 1:00 PM PDT </span><span style="font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">| <i>20:00 UTC</i></span><span style="font-family: Arial; font-size: 13px; font-style: italic; vertical-align: baseline; white-space: pre-wrap;"> </span><a href="https://developers.google.com/live/shows/ahNzfmdvb2dsZS1kZXZlbG9wZXJzcg4LEgVFdmVudBjnrKEEDA/"><span style="color: #1155cc; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">[Event page]</span></a><span style="font-family: Arial; font-size: 13px; font-style: italic; vertical-align: baseline; white-space: pre-wrap;"> | Part II, 2:00 PM PDT </span><span style="font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">| <i>21:00 UTC</i></span><span style="font-family: Arial; font-size: 13px; font-style: italic; vertical-align: baseline; white-space: pre-wrap;"> </span><a href="https://developers.google.com/events/ahNzfmdvb2dsZS1kZXZlbG9wZXJzcg4LEgVFdmVudBiVw6QEDA/"><span style="color: #1155cc; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">[Event page]</span></a><span style="font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;"> | </span><span style="font-family: Arial; font-size: 13px; font-style: italic; vertical-align: baseline; white-space: pre-wrap;">Part III, 3:00 PM PDT </span></b></b><b id="internal-source-marker_0.28260394069366157" style="font-weight: normal;"><b id="internal-source-marker_0.28260394069366157" style="font-weight: normal;"><span style="font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">| <i>22:00 UTC </i></span></b></b><b style="font-weight: normal;"><b style="font-weight: normal;"><span style="font-family: Arial; font-size: 13px; font-style: italic; vertical-align: baseline; white-space: pre-wrap;"> </span><a href="https://developers.google.com/events/ahNzfmdvb2dsZS1kZXZlbG9wZXJzcg4LEgVFdmVudBjAkqIEDA/"><span style="color: #1155cc; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">[Event page]</span></a></b></b> <b style="font-weight: normal;"> <span style="background-color: white; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">Using the latest open web technologies, the developers creating some of the most inspired Chrome Experiments showcase their latest web experiments and discuss how they are making the web faster, more fun, and open in this 3-episode hangout.</span> <span style="background-color: white; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">Host: </span><a href="https://plus.google.com/113127438179392830442/posts"><span style="background-color: white; color: black; font-family: Arial; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><span style="background-color: white; color: #1155cc; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">Paul Irish</span></a><span style="background-color: white; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">, </span><span style="background-color: white; color: #222222; font-family: Arial; font-size: 13px; font-style: italic; vertical-align: baseline; white-space: pre-wrap;">Developer Advocate, Chrome</span> <span style="background-color: white; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">Guests: Hakim: </span><a href="https://plus.google.com/110819624687392857345/posts"><span style="background-color: white; color: black; font-family: Arial; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><span style="background-color: white; color: #1155cc; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">Google+</span></a><span style="background-color: white; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">, </span><a href="http://hakim.se/experiments"><span style="background-color: white; color: black; font-family: Arial; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><span style="background-color: white; color: #1155cc; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">Website</span></a><span style="background-color: white; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;"> | Michael Deal: </span><a href="https://plus.google.com/107688529762867989230/posts"><span style="background-color: white; color: black; font-family: Arial; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><span style="background-color: white; color: #1155cc; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">Google+</span></a><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">, </span><a href="http://mudcu.be/"><span style="background-color: white; color: black; font-family: Arial; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><span style="background-color: white; color: #1155cc; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">Website</span></a><span style="background-color: white; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;"> | Mark Danks: </span><a href="https://plus.google.com/114750061080899808673/posts"><span style="background-color: white; color: black; font-family: Arial; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><span style="background-color: white; color: #1155cc; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">Google+</span></a><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">, </span><a href="http://www.danks.org/mark/"><span style="color: black; font-family: Arial; font-size: 15px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><span style="background-color: white; color: #1155cc; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">Website</span></a><span style="font-family: Arial; font-size: 13px; font-style: italic; vertical-align: baseline; white-space: pre-wrap;"></span> <span style="font-family: Arial; font-size: 13px; font-style: italic; vertical-align: baseline; white-space: pre-wrap;"></span> </b><br /> <b style="font-weight: normal;"><span style="font-family: Arial; font-size: 13px; font-weight: bold; vertical-align: baseline; white-space: pre-wrap;"><br /></span></b> <b style="font-weight: normal;"><span style="font-family: Arial; font-size: 13px; font-weight: bold; vertical-align: baseline; white-space: pre-wrap;">All the Web’s a Stage: Building a 3D Space in the Browser </span><span style="font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">| </span><span style="font-family: Arial; font-size: 13px; font-style: italic; vertical-align: baseline; white-space: pre-wrap;">Thursday, October 11 - 10:30 AM PDT | 17:30 UTC</span><span style="font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;"> </span><a href="https://developers.google.com/live/shows/ahNzfmdvb2dsZS1kZXZlbG9wZXJzcg4LEgVFdmVudBjU_rIEDA/"><span style="color: #1155cc; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">[Event page]</span></a><span style="font-family: Arial; font-size: 13px; font-weight: bold; vertical-align: baseline; white-space: pre-wrap;"></span> <span style="background-color: white; color: #222222; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">Meet the designers and creative team behind a new sensory Chrome experiment, </span><a href="http://www.movikantirevo.com/"><span style="background-color: white; color: #222222; font-family: Arial; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><span style="background-color: white; color: #1155cc; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">Movi.Kanti.Revo</span></a><span style="background-color: white; color: #222222; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">, in a live, design-focused Q&A. Learn how Cirque du Soleil and Subatomic Systems worked to translate the wonder of Cirque into an environment built entirely with markup and CSS.</span> <span style="background-color: white; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">Host: </span><a href="https://plus.google.com/117555368223516714643/posts"><span style="background-color: white; color: black; font-family: Arial; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><span style="background-color: white; color: #1155cc; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">Pete LePage</span></a>, <span style="background-color: white; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;"></span><span style="background-color: white; font-family: Arial; font-size: 13px; font-style: italic; vertical-align: baseline; white-space: pre-wrap;">Developer Advocate</span> <span style="background-color: white; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">Guests: </span><span style="font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">Gillian Ferrabee, </span><span style="background-color: white; color: #222222; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">Creative Director, Images & Special Projects, </span><span style="font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">Cirque du Soleil | Nicole McDonald, </span><span style="background-color: white; color: #222222; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">Director/Creative Director, </span><a href="http://www.yitalent.com/#contact"><span style="color: #1155cc; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">Subatomic Systems</span></a><span style="font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;"></span> <span style="font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;"></span> </b><br /> <b style="font-weight: normal;"><span style="font-family: Arial; font-size: 13px; font-weight: bold; vertical-align: baseline; white-space: pre-wrap;"><br /></span></b> <b style="font-weight: normal;"><span style="font-family: Arial; font-size: 13px; font-weight: bold; vertical-align: baseline; white-space: pre-wrap;">Van Gogh Meets Alan Turing: The Browser Becomes a Canvas with DevArt</span><span style="font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;"> |</span></b><b style="font-weight: normal;"><span style="font-family: Arial; font-size: 13px; font-weight: bold; vertical-align: baseline; white-space: pre-wrap;"> </span></b><b id="internal-source-marker_0.23573064198717475"><span style="background-color: white; font-family: Arial; font-size: 13px; font-style: italic; font-weight: normal; vertical-align: baseline; white-space: pre-wrap;">Friday, October 19 - 10:00 AM PDT </span><span style="background-color: white; font-family: Arial; font-size: 13px; font-weight: normal; vertical-align: baseline; white-space: pre-wrap;">| <i>17:00 UTC </i></span><span style="background-color: white; font-family: Arial; font-size: 13px; font-weight: normal; vertical-align: baseline; white-space: pre-wrap;"> </span><span style="background-color: white; color: #1155cc; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;"><a href="https://developers.google.com/live/shows/ahNzfmdvb2dsZS1kZXZlbG9wZXJzcg4LEgVFdmVudBjwo6QEDA/" style="font-weight: normal;">[Event page]</a></span></b> <b style="font-weight: normal;"><span style="background-color: white; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">How can art and daily life be joined together? Host Ido Green chats with creators Uri Shaked and Tom Teman about tackling this question with their “Music Room” – a case study in the power of Android – and with Emmanuel Witzthum on his project “Dissolving Realities,” which aims to connect the virtual environment of the Internet using Google Street View.</span> <span style="background-color: white; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">Host: </span><a href="https://plus.google.com/101709676645745930035/posts"><span style="background-color: white; color: black; font-family: Arial; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><span style="background-color: white; color: #1155cc; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">Ido Green</span></a><span style="background-color: white; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">, </span><span style="background-color: white; font-family: Arial; font-size: 13px; font-style: italic; vertical-align: baseline; white-space: pre-wrap;">Developer Advocate</span> <span style="background-color: white; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">Guests: Uri Shaked, Tom Teman, and </span><span style="background-color: white; color: black; font-family: Arial; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><span style="background-color: white; color: #1155cc; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;"><a href="https://plus.google.com/112609434608714448272/posts">Emmanuel Witzthum</a></span></b><br /> <b style="font-weight: normal;"><span style="font-family: Arial; font-size: 13px; font-weight: bold; vertical-align: baseline; white-space: pre-wrap;"><br /></span></b> <b style="font-weight: normal;"> <a href="https://plus.google.com/112609434608714448272/posts"><span style="background-color: white; color: #1155cc; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;"></span></a></b><b style="font-weight: normal;"><span style="font-family: Arial; font-size: 13px; font-weight: bold; vertical-align: baseline; white-space: pre-wrap;">Push the Limits: Building Extraordinary Experiences with Chrome </span><span style="font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">|</span></b><b style="font-weight: normal;"><span style="font-family: Arial; font-size: 13px; font-weight: bold; vertical-align: baseline; white-space: pre-wrap;"> </span></b><b id="internal-source-marker_0.23573064198717475" style="font-weight: normal;"><span style="font-family: Arial; font-size: 13px; font-style: italic; vertical-align: baseline; white-space: pre-wrap;">Week of October 29</span><span style="font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;"> </span><a href="https://developers.google.com/live/shows/ahNzfmdvb2dsZS1kZXZlbG9wZXJzcg4LEgVFdmVudBjuo6QEDA/"><span style="color: #1155cc; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">[Event page]</span></a></b> <b style="font-weight: normal;"><span style="background-color: white; color: #222222; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">The experiments in </span><a href="http://www.chromeweblab.com/"><span style="background-color: white; color: #222222; font-family: Arial; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><span style="background-color: white; color: #1155cc; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">Chrome Web Lab</span></a><span style="background-color: white; color: #222222; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;"> are pushing the limits of what developers can build in a browser. Explore the design and technical mastery that went into making extraordinary experiences, directly from the experiments’ home, the London Science Museum.</span> <span style="background-color: white; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">Hosts: </span><a href="https://plus.google.com/117555368223516714643/posts"><span style="background-color: white; color: black; font-family: Arial; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><span style="background-color: white; color: #1155cc; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">Pete LePage</span></a><span style="background-color: white; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">, </span><span style="background-color: white; font-family: Arial; font-size: 13px; font-style: italic; vertical-align: baseline; white-space: pre-wrap;">Developer Advocate </span><span style="background-color: white; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">| </span><a href="https://plus.google.com/116059998563577101552/posts"><span style="background-color: white; color: #1155cc; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">Paul Kinlan</span></a><span style="background-color: white; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">, </span><span style="background-color: white; font-family: Arial; font-size: 13px; font-style: italic; vertical-align: baseline; white-space: pre-wrap;">Developer Advocate</span> <span style="background-color: white; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">Guests: </span><a href="http://tellart.com/"><span style="background-color: white; color: black; font-family: Arial; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><span style="background-color: white; color: #1155cc; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">Tellart</span></a><span style="background-color: white; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;"> & </span><a href="http://www.b-reel.com/"><span style="background-color: white; color: black; font-family: Arial; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><span style="background-color: white; color: #1155cc; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">B-Reel</span></a><span style="background-color: white; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;"> representatives for </span><span style="background-color: white; font-family: Arial; font-size: 13px; font-style: italic; vertical-align: baseline; white-space: pre-wrap;">Universal Orchestra, Sketchbot, Teleporter, LabTag, DataTracer</span> <span style="background-color: white; font-family: Arial; font-size: 13px; font-style: italic; vertical-align: baseline; white-space: pre-wrap;"></span> </b><br /> <b style="font-weight: normal;"><span style="background-color: white; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;"><br /></span></b> <b style="font-weight: normal;"><span style="background-color: white; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">If you can’t make the live show, you’ll still be able to see recordings of these and past sessions on our </span><a href="//www.youtube.com/user/googledevelopers?feature=results_main"><span style="background-color: white; color: black; font-family: Arial; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><span style="background-color: white; color: #1155cc; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">YouTube channel</span></a><span style="background-color: white; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">. For more information on our monthly schedule, add </span><a href="https://plus.google.com/+GoogleDevelopers/posts"><span style="background-color: white; color: #1155cc; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">+Google Developers</span></a><span style="background-color: white; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;"> to your circles and follow </span><a href="https://twitter.com/googledevs"><span style="background-color: white; color: black; font-family: Arial; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><span style="background-color: white; color: #1155cc; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">@googledevs</span></a><span style="background-color: white; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;"> on Twitter.</span></b><br /> <span style="color: #666666; font-family: Arial, Helvetica, sans-serif;"><span style="font-size: 12px; line-height: 15.600000381469727px;"><br /></span></span> <b style="font-weight: normal;"><span style="background-color: white; vertical-align: baseline;"> </span></b> <span style="color: #666666; font-family: Arial, Helvetica, sans-serif;"><span style="font-size: 12px; line-height: 15.600000381469727px;">Posted by Peter Lubbers, Program Manager</span></span> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> <b id="internal-source-marker_0.28260394069366157" style="font-weight: normal;"><span style="background-color: white; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">Calling designers, web developers, and the creatively curious! Next week marks the launch of </span><span style="background-color: white; font-family: Arial; font-size: 13px; font-style: italic; vertical-align: baseline; white-space: pre-wrap;">Google Developers Live Presents,</span><span style="background-color: white; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;"> a new series of exclusive programming from </span><a href="http://developers.google.com/live"><span style="background-color: white; color: black; font-family: Arial; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><span style="background-color: white; color: #1155cc; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">GDL</span></a><span style="background-color: white; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">. </span><span style="background-color: white; font-family: Arial; font-size: 13px; font-style: italic; vertical-align: baseline; white-space: pre-wrap;">Presents</span><span style="background-color: white; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;"> kicks off this month with </span><span style="background-color: white; font-family: Arial; font-size: 13px; font-style: italic; font-weight: bold; vertical-align: baseline; white-space: pre-wrap;">Design Ignites the Web</span><span style="background-color: white; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">, a family of episodes that takes you on a journey from back-end to front-end, showing you how to create compelling projects in the browser. The series will feature exclusive interviews with the developers behind select </span><a href="http://www.chromeexperiments.com/"><span style="background-color: white; color: black; font-family: Arial; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><span style="background-color: white; color: #1155cc; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">Chrome Experiments</span></a><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">, </span><a href="http://www.chromeweblab.com/"><span style="background-color: white; color: black; font-family: Arial; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><span style="background-color: white; color: #1155cc; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">Chrome WebLab</span></a><span style="background-color: white; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">, </span><a href="http://www.movikantirevo.com/"><span style="background-color: white; color: black; font-family: Arial; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><span style="background-color: white; color: #1155cc; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">Movi.Kanti.Revo</span></a><span style="background-color: white; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">, and DevArt.</span></b> <b style="font-weight: normal;"><span style="background-color: white; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;"> </span></b><br /> <b><span style="background-color: white; font-family: Arial; font-size: 13px; font-weight: normal; vertical-align: baseline; white-space: pre-wrap;"><br /></span></b> <b> <span style="background-color: white; font-family: Arial; font-size: 13px; font-weight: normal; vertical-align: baseline; white-space: pre-wrap;">So, what’s coming up?</span> <span style="font-weight: normal;"><span style="background-color: white; font-family: Arial; font-size: 13px; font-style: italic; vertical-align: baseline; white-space: pre-wrap;"></span></span> </b><br /> <b><b id="internal-source-marker_0.28260394069366157" style="font-weight: normal;"><span style="font-family: Arial; font-size: 13px; font-weight: bold; vertical-align: baseline; white-space: pre-wrap;"><br /></span></b></b> <b><b id="internal-source-marker_0.28260394069366157" style="font-weight: normal;"><span style="font-family: Arial; font-size: 13px; font-weight: bold; vertical-align: baseline; white-space: pre-wrap;">Make Web Magic: The Minds Behind the Most Popular Chrome Experiments | </span><span style="font-family: Arial; font-size: 13px; font-style: italic; vertical-align: baseline; white-space: pre-wrap;">Tuesday, October 9 - Part 1, 1:00 PM PDT </span><span style="font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">| <i>20:00 UTC</i></span><span style="font-family: Arial; font-size: 13px; font-style: italic; vertical-align: baseline; white-space: pre-wrap;"> </span><a href="https://developers.google.com/live/shows/ahNzfmdvb2dsZS1kZXZlbG9wZXJzcg4LEgVFdmVudBjnrKEEDA/"><span style="color: #1155cc; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">[Event page]</span></a><span style="font-family: Arial; font-size: 13px; font-style: italic; vertical-align: baseline; white-space: pre-wrap;"> | Part II, 2:00 PM PDT </span><span style="font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">| <i>21:00 UTC</i></span><span style="font-family: Arial; font-size: 13px; font-style: italic; vertical-align: baseline; white-space: pre-wrap;"> </span><a href="https://developers.google.com/events/ahNzfmdvb2dsZS1kZXZlbG9wZXJzcg4LEgVFdmVudBiVw6QEDA/"><span style="color: #1155cc; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">[Event page]</span></a><span style="font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;"> | </span><span style="font-family: Arial; font-size: 13px; font-style: italic; vertical-align: baseline; white-space: pre-wrap;">Part III, 3:00 PM PDT </span></b></b><b id="internal-source-marker_0.28260394069366157" style="font-weight: normal;"><b id="internal-source-marker_0.28260394069366157" style="font-weight: normal;"><span style="font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">| <i>22:00 UTC </i></span></b></b><b style="font-weight: normal;"><b style="font-weight: normal;"><span style="font-family: Arial; font-size: 13px; font-style: italic; vertical-align: baseline; white-space: pre-wrap;"> </span><a href="https://developers.google.com/events/ahNzfmdvb2dsZS1kZXZlbG9wZXJzcg4LEgVFdmVudBjAkqIEDA/"><span style="color: #1155cc; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">[Event page]</span></a></b></b> <b style="font-weight: normal;"> <span style="background-color: white; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">Using the latest open web technologies, the developers creating some of the most inspired Chrome Experiments showcase their latest web experiments and discuss how they are making the web faster, more fun, and open in this 3-episode hangout.</span> <span style="background-color: white; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">Host: </span><a href="https://plus.google.com/113127438179392830442/posts"><span style="background-color: white; color: black; font-family: Arial; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><span style="background-color: white; color: #1155cc; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">Paul Irish</span></a><span style="background-color: white; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">, </span><span style="background-color: white; color: #222222; font-family: Arial; font-size: 13px; font-style: italic; vertical-align: baseline; white-space: pre-wrap;">Developer Advocate, Chrome</span> <span style="background-color: white; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">Guests: Hakim: </span><a href="https://plus.google.com/110819624687392857345/posts"><span style="background-color: white; color: black; font-family: Arial; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><span style="background-color: white; color: #1155cc; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">Google+</span></a><span style="background-color: white; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">, </span><a href="http://hakim.se/experiments"><span style="background-color: white; color: black; font-family: Arial; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><span style="background-color: white; color: #1155cc; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">Website</span></a><span style="background-color: white; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;"> | Michael Deal: </span><a href="https://plus.google.com/107688529762867989230/posts"><span style="background-color: white; color: black; font-family: Arial; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><span style="background-color: white; color: #1155cc; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">Google+</span></a><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">, </span><a href="http://mudcu.be/"><span style="background-color: white; color: black; font-family: Arial; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><span style="background-color: white; color: #1155cc; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">Website</span></a><span style="background-color: white; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;"> | Mark Danks: </span><a href="https://plus.google.com/114750061080899808673/posts"><span style="background-color: white; color: black; font-family: Arial; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><span style="background-color: white; color: #1155cc; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">Google+</span></a><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">, </span><a href="http://www.danks.org/mark/"><span style="color: black; font-family: Arial; font-size: 15px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><span style="background-color: white; color: #1155cc; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">Website</span></a><span style="font-family: Arial; font-size: 13px; font-style: italic; vertical-align: baseline; white-space: pre-wrap;"></span> <span style="font-family: Arial; font-size: 13px; font-style: italic; vertical-align: baseline; white-space: pre-wrap;"></span> </b><br /> <b style="font-weight: normal;"><span style="font-family: Arial; font-size: 13px; font-weight: bold; vertical-align: baseline; white-space: pre-wrap;"><br /></span></b> <b style="font-weight: normal;"><span style="font-family: Arial; font-size: 13px; font-weight: bold; vertical-align: baseline; white-space: pre-wrap;">All the Web’s a Stage: Building a 3D Space in the Browser </span><span style="font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">| </span><span style="font-family: Arial; font-size: 13px; font-style: italic; vertical-align: baseline; white-space: pre-wrap;">Thursday, October 11 - 10:30 AM PDT | 17:30 UTC</span><span style="font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;"> </span><a href="https://developers.google.com/live/shows/ahNzfmdvb2dsZS1kZXZlbG9wZXJzcg4LEgVFdmVudBjU_rIEDA/"><span style="color: #1155cc; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">[Event page]</span></a><span style="font-family: Arial; font-size: 13px; font-weight: bold; vertical-align: baseline; white-space: pre-wrap;"></span> <span style="background-color: white; color: #222222; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">Meet the designers and creative team behind a new sensory Chrome experiment, </span><a href="http://www.movikantirevo.com/"><span style="background-color: white; color: #222222; font-family: Arial; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><span style="background-color: white; color: #1155cc; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">Movi.Kanti.Revo</span></a><span style="background-color: white; color: #222222; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">, in a live, design-focused Q&A. Learn how Cirque du Soleil and Subatomic Systems worked to translate the wonder of Cirque into an environment built entirely with markup and CSS.</span> <span style="background-color: white; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">Host: </span><a href="https://plus.google.com/117555368223516714643/posts"><span style="background-color: white; color: black; font-family: Arial; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><span style="background-color: white; color: #1155cc; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">Pete LePage</span></a>, <span style="background-color: white; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;"></span><span style="background-color: white; font-family: Arial; font-size: 13px; font-style: italic; vertical-align: baseline; white-space: pre-wrap;">Developer Advocate</span> <span style="background-color: white; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">Guests: </span><span style="font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">Gillian Ferrabee, </span><span style="background-color: white; color: #222222; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">Creative Director, Images & Special Projects, </span><span style="font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">Cirque du Soleil | Nicole McDonald, </span><span style="background-color: white; color: #222222; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">Director/Creative Director, </span><a href="http://www.yitalent.com/#contact"><span style="color: #1155cc; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">Subatomic Systems</span></a><span style="font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;"></span> <span style="font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;"></span> </b><br /> <b style="font-weight: normal;"><span style="font-family: Arial; font-size: 13px; font-weight: bold; vertical-align: baseline; white-space: pre-wrap;"><br /></span></b> <b style="font-weight: normal;"><span style="font-family: Arial; font-size: 13px; font-weight: bold; vertical-align: baseline; white-space: pre-wrap;">Van Gogh Meets Alan Turing: The Browser Becomes a Canvas with DevArt</span><span style="font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;"> |</span></b><b style="font-weight: normal;"><span style="font-family: Arial; font-size: 13px; font-weight: bold; vertical-align: baseline; white-space: pre-wrap;"> </span></b><b id="internal-source-marker_0.23573064198717475"><span style="background-color: white; font-family: Arial; font-size: 13px; font-style: italic; font-weight: normal; vertical-align: baseline; white-space: pre-wrap;">Friday, October 19 - 10:00 AM PDT </span><span style="background-color: white; font-family: Arial; font-size: 13px; font-weight: normal; vertical-align: baseline; white-space: pre-wrap;">| <i>17:00 UTC </i></span><span style="background-color: white; font-family: Arial; font-size: 13px; font-weight: normal; vertical-align: baseline; white-space: pre-wrap;"> </span><span style="background-color: white; color: #1155cc; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;"><a href="https://developers.google.com/live/shows/ahNzfmdvb2dsZS1kZXZlbG9wZXJzcg4LEgVFdmVudBjwo6QEDA/" style="font-weight: normal;">[Event page]</a></span></b> <b style="font-weight: normal;"><span style="background-color: white; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">How can art and daily life be joined together? Host Ido Green chats with creators Uri Shaked and Tom Teman about tackling this question with their “Music Room” – a case study in the power of Android – and with Emmanuel Witzthum on his project “Dissolving Realities,” which aims to connect the virtual environment of the Internet using Google Street View.</span> <span style="background-color: white; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">Host: </span><a href="https://plus.google.com/101709676645745930035/posts"><span style="background-color: white; color: black; font-family: Arial; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><span style="background-color: white; color: #1155cc; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">Ido Green</span></a><span style="background-color: white; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">, </span><span style="background-color: white; font-family: Arial; font-size: 13px; font-style: italic; vertical-align: baseline; white-space: pre-wrap;">Developer Advocate</span> <span style="background-color: white; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">Guests: Uri Shaked, Tom Teman, and </span><span style="background-color: white; color: black; font-family: Arial; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><span style="background-color: white; color: #1155cc; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;"><a href="https://plus.google.com/112609434608714448272/posts">Emmanuel Witzthum</a></span></b><br /> <b style="font-weight: normal;"><span style="font-family: Arial; font-size: 13px; font-weight: bold; vertical-align: baseline; white-space: pre-wrap;"><br /></span></b> <b style="font-weight: normal;"> <a href="https://plus.google.com/112609434608714448272/posts"><span style="background-color: white; color: #1155cc; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;"></span></a></b><b style="font-weight: normal;"><span style="font-family: Arial; font-size: 13px; font-weight: bold; vertical-align: baseline; white-space: pre-wrap;">Push the Limits: Building Extraordinary Experiences with Chrome </span><span style="font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">|</span></b><b style="font-weight: normal;"><span style="font-family: Arial; font-size: 13px; font-weight: bold; vertical-align: baseline; white-space: pre-wrap;"> </span></b><b id="internal-source-marker_0.23573064198717475" style="font-weight: normal;"><span style="font-family: Arial; font-size: 13px; font-style: italic; vertical-align: baseline; white-space: pre-wrap;">Week of October 29</span><span style="font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;"> </span><a href="https://developers.google.com/live/shows/ahNzfmdvb2dsZS1kZXZlbG9wZXJzcg4LEgVFdmVudBjuo6QEDA/"><span style="color: #1155cc; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">[Event page]</span></a></b> <b style="font-weight: normal;"><span style="background-color: white; color: #222222; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">The experiments in </span><a href="http://www.chromeweblab.com/"><span style="background-color: white; color: #222222; font-family: Arial; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><span style="background-color: white; color: #1155cc; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">Chrome Web Lab</span></a><span style="background-color: white; color: #222222; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;"> are pushing the limits of what developers can build in a browser. Explore the design and technical mastery that went into making extraordinary experiences, directly from the experiments’ home, the London Science Museum.</span> <span style="background-color: white; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">Hosts: </span><a href="https://plus.google.com/117555368223516714643/posts"><span style="background-color: white; color: black; font-family: Arial; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><span style="background-color: white; color: #1155cc; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">Pete LePage</span></a><span style="background-color: white; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">, </span><span style="background-color: white; font-family: Arial; font-size: 13px; font-style: italic; vertical-align: baseline; white-space: pre-wrap;">Developer Advocate </span><span style="background-color: white; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">| </span><a href="https://plus.google.com/116059998563577101552/posts"><span style="background-color: white; color: #1155cc; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">Paul Kinlan</span></a><span style="background-color: white; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">, </span><span style="background-color: white; font-family: Arial; font-size: 13px; font-style: italic; vertical-align: baseline; white-space: pre-wrap;">Developer Advocate</span> <span style="background-color: white; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">Guests: </span><a href="http://tellart.com/"><span style="background-color: white; color: black; font-family: Arial; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><span style="background-color: white; color: #1155cc; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">Tellart</span></a><span style="background-color: white; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;"> & </span><a href="http://www.b-reel.com/"><span style="background-color: white; color: black; font-family: Arial; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><span style="background-color: white; color: #1155cc; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">B-Reel</span></a><span style="background-color: white; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;"> representatives for </span><span style="background-color: white; font-family: Arial; font-size: 13px; font-style: italic; vertical-align: baseline; white-space: pre-wrap;">Universal Orchestra, Sketchbot, Teleporter, LabTag, DataTracer</span> <span style="background-color: white; font-family: Arial; font-size: 13px; font-style: italic; vertical-align: baseline; white-space: pre-wrap;"></span> </b><br /> <b style="font-weight: normal;"><span style="background-color: white; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;"><br /></span></b> <b style="font-weight: normal;"><span style="background-color: white; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">If you can’t make the live show, you’ll still be able to see recordings of these and past sessions on our </span><a href="//www.youtube.com/user/googledevelopers?feature=results_main"><span style="background-color: white; color: black; font-family: Arial; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><span style="background-color: white; color: #1155cc; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">YouTube channel</span></a><span style="background-color: white; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">. For more information on our monthly schedule, add </span><a href="https://plus.google.com/+GoogleDevelopers/posts"><span style="background-color: white; color: #1155cc; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">+Google Developers</span></a><span style="background-color: white; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;"> to your circles and follow </span><a href="https://twitter.com/googledevs"><span style="background-color: white; color: black; font-family: Arial; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><span style="background-color: white; color: #1155cc; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">@googledevs</span></a><span style="background-color: white; font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;"> on Twitter.</span></b><br /> <span style="color: #666666; font-family: Arial, Helvetica, sans-serif;"><span style="font-size: 12px; line-height: 15.600000381469727px;"><br /></span></span> <b style="font-weight: normal;"><span style="background-color: white; vertical-align: baseline;"> </span></b> <span style="color: #666666; font-family: Arial, Helvetica, sans-serif;"><span style="font-size: 12px; line-height: 15.600000381469727px;">Posted by Peter Lubbers, Program Manager</span></span> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Chromium Blog:Get a front row seat with GDL Presents&url=https://blog.chromium.org/2012/10/get-front-row-seat-with-gdl-presents.html&via=ChromiumDev'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=https://blog.chromium.org/2012/10/get-front-row-seat-with-gdl-presents.html'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='https://blog.chromium.org/2012/10/get-front-row-seat-with-gdl-presents.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> <span class='labels-caption'> Labels: </span> <span class='labels'> <a class='label' href='https://blog.chromium.org/search/label/html5' rel='tag'> html5 </a> </span> </div> </div> </div> <div class='post' data-id='5325153279062686647' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='https://blog.chromium.org/2012/10/teaming-up-on-web-platform-docs.html' itemprop='url' title='Teaming up on Web Platform Docs '> Teaming up on Web Platform Docs </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Monday, October 8, 2012 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> <i>Cross-posted on the <a href="http://googledevelopers.blogspot.com/">Google Developers Blog</a></i><br /> <br /> When you want to build something for the web, it's surprisingly difficult to find out how you can implement your vision across all browsers and operating systems. You often need to search across various websites and blogs to learn how certain technologies can be used. It's kind of like a scavenger hunt, except it's not any fun.<br /> <br /> This scavenger hunt is soon coming to an end. Google along with the W3C and several <a href="http://webplatform.org/stewards/">leading internet and technology companies</a> just <a href="http://www.w3.org/2012/10/webplatform.html.en">announced</a> the alpha release of <a href="http://docs.webplatform.org/wiki/">Web Platform Docs</a>. Web Platform Docs is a community-driven site that aims to become the comprehensive and authoritative source for web developer documentation.<br /> <br /> <iframe allowfullscreen="allowfullscreen" frameborder="0" height="315" src="//www.youtube.com/embed/Ug6XAw6hzaw" width="560"></iframe> <br /> <br /> The founding members of Web Platforms Docs have all already provided a lot of content for the site to help get this effort off to a strong start. However, collectively, we’ve barely scratched the surface. We decided that it would be better to open up Web Platform Docs to the community as early as possible, so that everyone--including you--can help <a href="http://docs.webplatform.org/wiki/WPD:Getting_Started">expand and refine</a> the documentation, and ultimately define the direction of the site.<br /> <br /> If you have more questions about Web Platform Docs, you can find us on <a href="https://twitter.com/WebPlatform">Twitter</a>.<br /> <br /> <span class="post-author">Posted by Alex Komoroske, Product Manager</span> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> <i>Cross-posted on the <a href="http://googledevelopers.blogspot.com/">Google Developers Blog</a></i><br /> <br /> When you want to build something for the web, it's surprisingly difficult to find out how you can implement your vision across all browsers and operating systems. You often need to search across various websites and blogs to learn how certain technologies can be used. It's kind of like a scavenger hunt, except it's not any fun.<br /> <br /> This scavenger hunt is soon coming to an end. Google along with the W3C and several <a href="http://webplatform.org/stewards/">leading internet and technology companies</a> just <a href="http://www.w3.org/2012/10/webplatform.html.en">announced</a> the alpha release of <a href="http://docs.webplatform.org/wiki/">Web Platform Docs</a>. Web Platform Docs is a community-driven site that aims to become the comprehensive and authoritative source for web developer documentation.<br /> <br /> <iframe allowfullscreen="allowfullscreen" frameborder="0" height="315" src="//www.youtube.com/embed/Ug6XAw6hzaw" width="560"></iframe> <br /> <br /> The founding members of Web Platforms Docs have all already provided a lot of content for the site to help get this effort off to a strong start. However, collectively, we’ve barely scratched the surface. We decided that it would be better to open up Web Platform Docs to the community as early as possible, so that everyone--including you--can help <a href="http://docs.webplatform.org/wiki/WPD:Getting_Started">expand and refine</a> the documentation, and ultimately define the direction of the site.<br /> <br /> If you have more questions about Web Platform Docs, you can find us on <a href="https://twitter.com/WebPlatform">Twitter</a>.<br /> <br /> <span class="post-author">Posted by Alex Komoroske, Product Manager</span> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Chromium Blog:Teaming up on Web Platform Docs &url=https://blog.chromium.org/2012/10/teaming-up-on-web-platform-docs.html&via=ChromiumDev'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=https://blog.chromium.org/2012/10/teaming-up-on-web-platform-docs.html'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='https://blog.chromium.org/2012/10/teaming-up-on-web-platform-docs.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> </div> </div> </div> <div class='post' data-id='839808902656316272' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='https://blog.chromium.org/2012/10/supporting-new-media-experiences-on-web.html' itemprop='url' title='Supporting new media experiences on the web'> Supporting new media experiences on the web </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Tuesday, October 2, 2012 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> In recent years, video has taken a central role on the web. Developers are using the latest web technologies to make it easier for users to access, watch, and create video content. Today’s <a href="https://www.google.com/landing/chrome/beta/">Chrome Beta</a> update includes more tools for developers to take video engagement to the next level.<br /> <br /> Chrome now includes the <a href="http://www.html5rocks.com/en/tutorials/webrtc/basics/">PeerConnection API</a>, which allows developers to create web apps with real-time audio and video calling without the need for a plug-in. Together, PeerConnection and the <a href="http://chrome.blogspot.com/2012/07/new-senses-for-web.html">getUserMedia API</a> represent the next steps in <a href="http://www.webrtc.org/">WebRTC</a>, a new standard which aims to allow high quality video, audio, and data communications on the web. Check out this funky video chat <a href="http://jeromeetienne.github.com/webglmeeting/">demo</a> to see how the PeerConnection API can be combined with other web technologies to create fun new video chat experiences. To start the video chat demo, send the url to a friend.<br /> <br /> Today’s Chrome Beta update also includes <a href="http://www.html5rocks.com/en/tutorials/track/basics/">track</a> support for HTML5 video. Track support provides an easy, standard way to add subtitles, captions, descriptions, chapters, and metadata to videos. It can be used to make videos accessible, split videos into sections, and create new unique video experiences. Track provides developers with a unified, programmatic mechanism for doing all these things in the HTML DOM and Javascript. In the following <a href="http://www.samdutton.net/mapTrack/">demo</a>, track is used to enhance a video of a bike ride with metadata including a Google Map showing the biker’s route and Google Street View from the biker’s location.<br /> <br /> <div class="separator" style="text-align: center;"> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjK9ZFLTct8eXqy2J40Wl54Hs-vaYGGxrozAaJTyq5UGjpWQKt6aVxjY_fMDPi-syBz-AeXyRs5Q8er1IaEWoB6PNwq4UYv0Xl09NybupOKXUUOqBwbeGw6s47_ArqFeNjyfNUl74CXXHk/s1600/track_screenshot.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="250" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjK9ZFLTct8eXqy2J40Wl54Hs-vaYGGxrozAaJTyq5UGjpWQKt6aVxjY_fMDPi-syBz-AeXyRs5Q8er1IaEWoB6PNwq4UYv0Xl09NybupOKXUUOqBwbeGw6s47_ArqFeNjyfNUl74CXXHk/s1600/track_screenshot.png" width="400" /></a></div> <br /> Last but not least, we’ve added the <a href="http://dvcs.w3.org/hg/html-media/raw-file/tip/media-source/media-source.html">MediaSource API</a>. It provides a video playback solution that adapts video quality based on changing computer and network conditions to prevent excessive buffering and startup delays for videos -- in other words, your video will play silky smooth for users with no annoying stutters. Watch how smooth this <a href="http://downloads.webmproject.org/adaptive-demo/adaptive/dash-player.html">demo video</a> plays despite fluctuations in your network speed. <br /> <br /> To get your hands on all this tasty video goodness, download <a href="https://www.google.com/landing/chrome/beta/">Chrome Beta</a>.<br /> <br /> <span class="post-author">Posted by Justin Uberti, Software Engineer and Trained Video Professional</span> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> In recent years, video has taken a central role on the web. Developers are using the latest web technologies to make it easier for users to access, watch, and create video content. Today’s <a href="https://www.google.com/landing/chrome/beta/">Chrome Beta</a> update includes more tools for developers to take video engagement to the next level.<br /> <br /> Chrome now includes the <a href="http://www.html5rocks.com/en/tutorials/webrtc/basics/">PeerConnection API</a>, which allows developers to create web apps with real-time audio and video calling without the need for a plug-in. Together, PeerConnection and the <a href="http://chrome.blogspot.com/2012/07/new-senses-for-web.html">getUserMedia API</a> represent the next steps in <a href="http://www.webrtc.org/">WebRTC</a>, a new standard which aims to allow high quality video, audio, and data communications on the web. Check out this funky video chat <a href="http://jeromeetienne.github.com/webglmeeting/">demo</a> to see how the PeerConnection API can be combined with other web technologies to create fun new video chat experiences. To start the video chat demo, send the url to a friend.<br /> <br /> Today’s Chrome Beta update also includes <a href="http://www.html5rocks.com/en/tutorials/track/basics/">track</a> support for HTML5 video. Track support provides an easy, standard way to add subtitles, captions, descriptions, chapters, and metadata to videos. It can be used to make videos accessible, split videos into sections, and create new unique video experiences. Track provides developers with a unified, programmatic mechanism for doing all these things in the HTML DOM and Javascript. In the following <a href="http://www.samdutton.net/mapTrack/">demo</a>, track is used to enhance a video of a bike ride with metadata including a Google Map showing the biker’s route and Google Street View from the biker’s location.<br /> <br /> <div class="separator" style="text-align: center;"> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjK9ZFLTct8eXqy2J40Wl54Hs-vaYGGxrozAaJTyq5UGjpWQKt6aVxjY_fMDPi-syBz-AeXyRs5Q8er1IaEWoB6PNwq4UYv0Xl09NybupOKXUUOqBwbeGw6s47_ArqFeNjyfNUl74CXXHk/s1600/track_screenshot.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="250" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjK9ZFLTct8eXqy2J40Wl54Hs-vaYGGxrozAaJTyq5UGjpWQKt6aVxjY_fMDPi-syBz-AeXyRs5Q8er1IaEWoB6PNwq4UYv0Xl09NybupOKXUUOqBwbeGw6s47_ArqFeNjyfNUl74CXXHk/s1600/track_screenshot.png" width="400" /></a></div> <br /> Last but not least, we’ve added the <a href="http://dvcs.w3.org/hg/html-media/raw-file/tip/media-source/media-source.html">MediaSource API</a>. It provides a video playback solution that adapts video quality based on changing computer and network conditions to prevent excessive buffering and startup delays for videos -- in other words, your video will play silky smooth for users with no annoying stutters. Watch how smooth this <a href="http://downloads.webmproject.org/adaptive-demo/adaptive/dash-player.html">demo video</a> plays despite fluctuations in your network speed. <br /> <br /> To get your hands on all this tasty video goodness, download <a href="https://www.google.com/landing/chrome/beta/">Chrome Beta</a>.<br /> <br /> <span class="post-author">Posted by Justin Uberti, Software Engineer and Trained Video Professional</span> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Chromium Blog:Supporting new media experiences on the web&url=https://blog.chromium.org/2012/10/supporting-new-media-experiences-on-web.html&via=ChromiumDev'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=https://blog.chromium.org/2012/10/supporting-new-media-experiences-on-web.html'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='https://blog.chromium.org/2012/10/supporting-new-media-experiences-on-web.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> </div> </div> </div> <div class='post' data-id='657013468302117595' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='https://blog.chromium.org/2012/09/enabling-new-classes-of-applications.html' itemprop='url' title='Enabling new classes of applications with Pointer Lock'> Enabling new classes of applications with Pointer Lock </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Tuesday, September 25, 2012 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> Moving the web forward includes enabling <a href="http://www.20thingsilearned.com/en-US/web-apps/1">new classes of applications</a>. Today’s <a href="http://chrome.com/">Chrome Stable release</a> advances this effort with the inclusion of the <a href="http://www.html5rocks.com/en/tutorials/pointerlock/intro/">Pointer Lock JavaScript API</a> (often called Mouse Lock). Now, 3D applications such as first-person games can allow users to control their perspective naturally with the mouse, without moving outside the window or bumping into the edge of their screen. Try it out for yourself in this 3D, <a href="https://developer.mozilla.org/en-US/demos/detail/bananabread">first-person shooter demo</a> created by our friends at Mozilla. <br /> <br /> <div class="separator" style="text-align: center;"> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMTgkFqMe3a68WFf7M8zZ0L4om6j6Lc7goijkGLEoDIG13A39VTRkMvVrhmfyVcI2jsYfzEu7Dl-pVykr02c5f3LU3LIal7YrpIsZfu2dM9aVX2wlpq4YUJTgePb5KSHY-moyZ7njuQbk/s1600/banana_bread_blog_post.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="250" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMTgkFqMe3a68WFf7M8zZ0L4om6j6Lc7goijkGLEoDIG13A39VTRkMvVrhmfyVcI2jsYfzEu7Dl-pVykr02c5f3LU3LIal7YrpIsZfu2dM9aVX2wlpq4YUJTgePb5KSHY-moyZ7njuQbk/s400/banana_bread_blog_post.png" width="400" /></a></div> <br /> While games are fun, these capabilities also empower other types of applications such as medical and scientific visualization, training, simulation, modeling, authoring packages, and more. We're excited to see recent web platform technologies such as <a href="http://www.html5rocks.com/en/tutorials/webgl/webgl_fundamentals/">WebGL</a>, <a href="http://www.html5rocks.com/en/tutorials/webaudio/intro/">Web Audio</a>, <a href="http://updates.html5rocks.com/2011/10/Let-Your-Content-Do-the-Talking-Fullscreen-API">Fullscreen</a>, <a href="http://www.html5rocks.com/en/tutorials/websockets/basics/">WebSockets</a>, <a href="http://www.html5rocks.com/en/tutorials/doodles/gamepad/">Gamepad</a>, and <a href="http://www.html5rocks.com/en/tutorials/pointerlock/intro/">Pointer Lock</a> combine to be greater than the sum of their parts. Game developers have an excellent platform on which they can deploy rich games with all the benefits of the instant-on, auto-updating, linkable, shareable, and searchable web. <br /> <br /> As always, Chrome will automatically update itself to include these latest enhancements. If you haven’t tried Chrome yet, <a href="http://chrome.com/">give it a spin</a>! <br /> <br /> <span class="post-author">Posted by Vincent Scheib, Software Engineer often overheard singing, "And we’re out of Beta. We’re releasing on time."</span> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> Moving the web forward includes enabling <a href="http://www.20thingsilearned.com/en-US/web-apps/1">new classes of applications</a>. Today’s <a href="http://chrome.com/">Chrome Stable release</a> advances this effort with the inclusion of the <a href="http://www.html5rocks.com/en/tutorials/pointerlock/intro/">Pointer Lock JavaScript API</a> (often called Mouse Lock). Now, 3D applications such as first-person games can allow users to control their perspective naturally with the mouse, without moving outside the window or bumping into the edge of their screen. Try it out for yourself in this 3D, <a href="https://developer.mozilla.org/en-US/demos/detail/bananabread">first-person shooter demo</a> created by our friends at Mozilla. <br /> <br /> <div class="separator" style="text-align: center;"> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMTgkFqMe3a68WFf7M8zZ0L4om6j6Lc7goijkGLEoDIG13A39VTRkMvVrhmfyVcI2jsYfzEu7Dl-pVykr02c5f3LU3LIal7YrpIsZfu2dM9aVX2wlpq4YUJTgePb5KSHY-moyZ7njuQbk/s1600/banana_bread_blog_post.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="250" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMTgkFqMe3a68WFf7M8zZ0L4om6j6Lc7goijkGLEoDIG13A39VTRkMvVrhmfyVcI2jsYfzEu7Dl-pVykr02c5f3LU3LIal7YrpIsZfu2dM9aVX2wlpq4YUJTgePb5KSHY-moyZ7njuQbk/s400/banana_bread_blog_post.png" width="400" /></a></div> <br /> While games are fun, these capabilities also empower other types of applications such as medical and scientific visualization, training, simulation, modeling, authoring packages, and more. We're excited to see recent web platform technologies such as <a href="http://www.html5rocks.com/en/tutorials/webgl/webgl_fundamentals/">WebGL</a>, <a href="http://www.html5rocks.com/en/tutorials/webaudio/intro/">Web Audio</a>, <a href="http://updates.html5rocks.com/2011/10/Let-Your-Content-Do-the-Talking-Fullscreen-API">Fullscreen</a>, <a href="http://www.html5rocks.com/en/tutorials/websockets/basics/">WebSockets</a>, <a href="http://www.html5rocks.com/en/tutorials/doodles/gamepad/">Gamepad</a>, and <a href="http://www.html5rocks.com/en/tutorials/pointerlock/intro/">Pointer Lock</a> combine to be greater than the sum of their parts. Game developers have an excellent platform on which they can deploy rich games with all the benefits of the instant-on, auto-updating, linkable, shareable, and searchable web. <br /> <br /> As always, Chrome will automatically update itself to include these latest enhancements. If you haven’t tried Chrome yet, <a href="http://chrome.com/">give it a spin</a>! <br /> <br /> <span class="post-author">Posted by Vincent Scheib, Software Engineer often overheard singing, "And we’re out of Beta. We’re releasing on time."</span> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Chromium Blog:Enabling new classes of applications with Pointer Lock&url=https://blog.chromium.org/2012/09/enabling-new-classes-of-applications.html&via=ChromiumDev'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=https://blog.chromium.org/2012/09/enabling-new-classes-of-applications.html'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='https://blog.chromium.org/2012/09/enabling-new-classes-of-applications.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> </div> </div> </div> <div class='post' data-id='2698314375236404784' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='https://blog.chromium.org/2012/09/announcing-movikantirevo-new-chrome.html' itemprop='url' title='Announcing Movi.Kanti.Revo, A New Chrome Experiment'> Announcing Movi.Kanti.Revo, A New Chrome Experiment </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Wednesday, September 19, 2012 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> Earlier this year at Google I/O, we gave developers a <a href="//goo.gl/I8p7z">sneak peek at Movi.Kanti.Revo</a>, a new sensory Chrome experiment crafted by Cirque du Soleil and developed by Subatomic Systems that brings the magic of Cirque du Soleil to the web through modern web technologies. The full experiment, which allows users to follow a mysterious character through a beautiful world of Cirque du Soleil performances, was launched today at the <a href="//www.google.com/events/bigtent2012nyc/">Big Tent event</a> in New York City. <br /> <br /> <iframe allowfullscreen="allowfullscreen" frameborder="0" height="315" src="//www.youtube.com/embed/APq56KqdfS4" width="560"></iframe> <br /> <br /> The experiment was created using just HTML5, and the environment is built entirely with markup and CSS. Like set pieces on stage, divs, images and other elements are positioned in a 3D space using CSS. To create movement, <a href="https://developer.mozilla.org/en-US/docs/CSS/Using_CSS_animations">CSS animations</a> and <a href="http://www.html5rocks.com/en/tutorials/3d/css/">3D transforms</a> were applied making the elements appear closer and further away. Everything is positioned and scaled individually to create a highly realistic interactive environment. In addition, the experiment uses HTML5 <audio> to play music and sounds. <br /> <br /> Movi.Kanti.Revo breaks with the tradition of keyboard or mouse navigation; instead users navigate through an interactive Cirque du Soleil world with their gestures. To accomplish this, the experiment asks users for permission to access their web cam using the new <a href="http://www.html5rocks.com/en/tutorials/getusermedia/intro/">getUserMedia</a> API. With this new API, the experiment renders the camera output to a small <video> element on the page. A facial detection JavaScript library then looks for movement and applies a CSS 3D transform to the elements on the page, making environment move with the user. <br /> <br /> <div class="separator" style="text-align: center;"> <a href="//4.bp.blogspot.com/-CRKW4iL9fuI/UFo9Ru0NA3I/AAAAAAAABBk/kGMcViJ_x5M/s1600/mobile_ss.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="250" src="//4.bp.blogspot.com/-CRKW4iL9fuI/UFo9Ru0NA3I/AAAAAAAABBk/kGMcViJ_x5M/s400/mobile_ss.png" width="400"></a></div> <br /> Because this experience was built using just markup, it works in the browser across all devices. The experiment takes advantage of the rich capabilities possible on mobile devices, like the <a href="http://www.html5rocks.com/en/tutorials/device/orientation/">accelerometer</a> to navigate through the world. <br /> <br /> To learn more about how this experiment was built, check out the new <a href="http://www.html5rocks.com/en/tutorials/casestudies/movikantirevo/">technical case study</a> or join us for a special Google Developers Live <a href="https://developers.google.com/events/ahNzfmdvb2dsZS1kZXZlbG9wZXJzcg4LEgVFdmVudBi7idIDDA/">Behind The Divs</a> event on September 20th at <a href="http://timeanddate.com/worldclock/fixedtime.html?iso=20120920T0830&p1=1241,">8:30am PDT /15:30 UTC</a> where we’ll be talking to the engineers behind the project. <br /> <br /> Head over to Movi.Kanti.Revo at <a href="http://www.movikantirevo.com/">www.movikantirevo.com</a> to check things out, and be sure to open Chrome’s <a href="https://developers.google.com/chrome-developer-tools/docs/overview">developer tools</a> to see what’s going on behind the <div>s! <br /> <br /> <span class="post-author">Pete LePage, Developer Advocate</span> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> Earlier this year at Google I/O, we gave developers a <a href="//goo.gl/I8p7z">sneak peek at Movi.Kanti.Revo</a>, a new sensory Chrome experiment crafted by Cirque du Soleil and developed by Subatomic Systems that brings the magic of Cirque du Soleil to the web through modern web technologies. The full experiment, which allows users to follow a mysterious character through a beautiful world of Cirque du Soleil performances, was launched today at the <a href="//www.google.com/events/bigtent2012nyc/">Big Tent event</a> in New York City. <br /> <br /> <iframe allowfullscreen="allowfullscreen" frameborder="0" height="315" src="//www.youtube.com/embed/APq56KqdfS4" width="560"></iframe> <br /> <br /> The experiment was created using just HTML5, and the environment is built entirely with markup and CSS. Like set pieces on stage, divs, images and other elements are positioned in a 3D space using CSS. To create movement, <a href="https://developer.mozilla.org/en-US/docs/CSS/Using_CSS_animations">CSS animations</a> and <a href="http://www.html5rocks.com/en/tutorials/3d/css/">3D transforms</a> were applied making the elements appear closer and further away. Everything is positioned and scaled individually to create a highly realistic interactive environment. In addition, the experiment uses HTML5 <audio> to play music and sounds. <br /> <br /> Movi.Kanti.Revo breaks with the tradition of keyboard or mouse navigation; instead users navigate through an interactive Cirque du Soleil world with their gestures. To accomplish this, the experiment asks users for permission to access their web cam using the new <a href="http://www.html5rocks.com/en/tutorials/getusermedia/intro/">getUserMedia</a> API. With this new API, the experiment renders the camera output to a small <video> element on the page. A facial detection JavaScript library then looks for movement and applies a CSS 3D transform to the elements on the page, making environment move with the user. <br /> <br /> <div class="separator" style="text-align: center;"> <a href="//4.bp.blogspot.com/-CRKW4iL9fuI/UFo9Ru0NA3I/AAAAAAAABBk/kGMcViJ_x5M/s1600/mobile_ss.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="250" src="//4.bp.blogspot.com/-CRKW4iL9fuI/UFo9Ru0NA3I/AAAAAAAABBk/kGMcViJ_x5M/s400/mobile_ss.png" width="400"></a></div> <br /> Because this experience was built using just markup, it works in the browser across all devices. The experiment takes advantage of the rich capabilities possible on mobile devices, like the <a href="http://www.html5rocks.com/en/tutorials/device/orientation/">accelerometer</a> to navigate through the world. <br /> <br /> To learn more about how this experiment was built, check out the new <a href="http://www.html5rocks.com/en/tutorials/casestudies/movikantirevo/">technical case study</a> or join us for a special Google Developers Live <a href="https://developers.google.com/events/ahNzfmdvb2dsZS1kZXZlbG9wZXJzcg4LEgVFdmVudBi7idIDDA/">Behind The Divs</a> event on September 20th at <a href="http://timeanddate.com/worldclock/fixedtime.html?iso=20120920T0830&p1=1241,">8:30am PDT /15:30 UTC</a> where we’ll be talking to the engineers behind the project. <br /> <br /> Head over to Movi.Kanti.Revo at <a href="http://www.movikantirevo.com/">www.movikantirevo.com</a> to check things out, and be sure to open Chrome’s <a href="https://developers.google.com/chrome-developer-tools/docs/overview">developer tools</a> to see what’s going on behind the <div>s! <br /> <br /> <span class="post-author">Pete LePage, Developer Advocate</span> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Chromium Blog:Announcing Movi.Kanti.Revo, A New Chrome Experiment&url=https://blog.chromium.org/2012/09/announcing-movikantirevo-new-chrome.html&via=ChromiumDev'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=https://blog.chromium.org/2012/09/announcing-movikantirevo-new-chrome.html'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='https://blog.chromium.org/2012/09/announcing-movikantirevo-new-chrome.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> </div> </div> </div> <div class='post' data-id='395117250806956416' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='https://blog.chromium.org/2012/08/lossless-and-transparency-modes-in-webp.html' itemprop='url' title='Lossless and Transparency Modes in WebP'> Lossless and Transparency Modes in WebP </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Thursday, August 30, 2012 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> <i>Cross-posted on the <a href="http://googledevelopers.blogspot.com/2012/08/lossless-and-transparency-modes-in-webp.html">Google Developers Blog</a></i><br /> <br /> At Google, we are constantly looking at ways to make web pages load faster. One way to do this is by making web images smaller. This is especially important for mobile devices where smaller images save both bandwidth and battery life. Earlier this month, we released <a href="http://code.google.com/p/webp/downloads/detail?name=libwebp-0.2.0.tar.gz">version 0.2 of the WebP library</a> that adds support for lossless and transparency modes to compress images. This version provides CPU and memory performance comparable to or better than PNG, yet results in <a href="https://developers.google.com/speed/webp/docs/webp_lossless_alpha_study">26% smaller files</a>.<br /> <br /> WebP’s improved compression comes from advanced techniques such as dedicated <a href="http://en.wikipedia.org/wiki/Entropy_encoding">entropy codes</a> for different color channels, exploiting 2D locality of <a href="http://en.wikipedia.org/wiki/LZ77_and_LZ78">backward reference distances</a> and a color cache of recently used colors. This complements basic techniques such as <a href="http://en.wikipedia.org/wiki/Dictionary_coder">dictionary coding</a>, <a href="http://en.wikipedia.org/wiki/Huffman_coding">Huffman coding</a> and <a href="http://en.wikipedia.org/wiki/Palette_(computing)">color indexing transform</a>. We think that we've only scratched the surface in improving compression. Our newly added support for <a href="http://en.wikipedia.org/wiki/RGBA_color_space">alpha transparency</a> with lossy images promises additional gains in this space, helping make WebP an efficient replacement for PNG.<br /> <br /> The new WebP modes are supported natively in the latest Beta version of Chrome. The <a href="https://developers.google.com/speed/webp/docs/webp_lossless_bitstream_specification">bit stream specification</a> for these new WebP modes has been finalized and the <a href="https://developers.google.com/speed/webp/docs/riff_container">container specification</a> has been updated. We thank the community for their valuable feedback and for helping us evolve WebP as a new image compression format for the web. We encourage you to try these new compression methods on your favorite set of images, check out the code, and continue to provide <a href="http://www.webmproject.org/about/discuss/#webp-discuss">feedback</a>.<br /> <br /> <span class="post-author">Posted by Jyrki Alakuijala - Software Engineer </span> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> <i>Cross-posted on the <a href="http://googledevelopers.blogspot.com/2012/08/lossless-and-transparency-modes-in-webp.html">Google Developers Blog</a></i><br /> <br /> At Google, we are constantly looking at ways to make web pages load faster. One way to do this is by making web images smaller. This is especially important for mobile devices where smaller images save both bandwidth and battery life. Earlier this month, we released <a href="http://code.google.com/p/webp/downloads/detail?name=libwebp-0.2.0.tar.gz">version 0.2 of the WebP library</a> that adds support for lossless and transparency modes to compress images. This version provides CPU and memory performance comparable to or better than PNG, yet results in <a href="https://developers.google.com/speed/webp/docs/webp_lossless_alpha_study">26% smaller files</a>.<br /> <br /> WebP’s improved compression comes from advanced techniques such as dedicated <a href="http://en.wikipedia.org/wiki/Entropy_encoding">entropy codes</a> for different color channels, exploiting 2D locality of <a href="http://en.wikipedia.org/wiki/LZ77_and_LZ78">backward reference distances</a> and a color cache of recently used colors. This complements basic techniques such as <a href="http://en.wikipedia.org/wiki/Dictionary_coder">dictionary coding</a>, <a href="http://en.wikipedia.org/wiki/Huffman_coding">Huffman coding</a> and <a href="http://en.wikipedia.org/wiki/Palette_(computing)">color indexing transform</a>. We think that we've only scratched the surface in improving compression. Our newly added support for <a href="http://en.wikipedia.org/wiki/RGBA_color_space">alpha transparency</a> with lossy images promises additional gains in this space, helping make WebP an efficient replacement for PNG.<br /> <br /> The new WebP modes are supported natively in the latest Beta version of Chrome. The <a href="https://developers.google.com/speed/webp/docs/webp_lossless_bitstream_specification">bit stream specification</a> for these new WebP modes has been finalized and the <a href="https://developers.google.com/speed/webp/docs/riff_container">container specification</a> has been updated. We thank the community for their valuable feedback and for helping us evolve WebP as a new image compression format for the web. We encourage you to try these new compression methods on your favorite set of images, check out the code, and continue to provide <a href="http://www.webmproject.org/about/discuss/#webp-discuss">feedback</a>.<br /> <br /> <span class="post-author">Posted by Jyrki Alakuijala - Software Engineer </span> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Chromium Blog:Lossless and Transparency Modes in WebP&url=https://blog.chromium.org/2012/08/lossless-and-transparency-modes-in-webp.html&via=ChromiumDev'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=https://blog.chromium.org/2012/08/lossless-and-transparency-modes-in-webp.html'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='https://blog.chromium.org/2012/08/lossless-and-transparency-modes-in-webp.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> <span class='labels-caption'> Labels: </span> <span class='labels'> <a class='label' href='https://blog.chromium.org/search/label/webp' rel='tag'> webp </a> </span> </div> </div> </div> <div class='post' data-id='671492812605003893' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='https://blog.chromium.org/2012/08/octane-javascript-benchmark-suite-for.html' itemprop='url' title='Octane: the JavaScript benchmark suite for the modern web'> Octane: the JavaScript benchmark suite for the modern web </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Tuesday, August 21, 2012 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> The web is evolving and so should the JavaScript benchmarks that measure its performance. Today, we are releasing <a href="http://octane-benchmark.googlecode.com/svn/latest/index.html">Octane</a>, a JavaScript benchmark suite that aims to measure a browser’s performance when running the complex and demanding web applications that users interact with daily.<br /> <br /> Most of the existing JavaScript benchmarks run artificial tests that were created on an ad-hoc basis to stress a specific JavaScript feature. Octane breaks with this tradition and extends the former V8 Benchmark Suite with 5 new benchmarks created from full, unaltered [1], well-known web applications and libraries. A high score in the new benchmarks directly translates to better and smoother performance in similar web applications.<br /> <br /> Here is an overview of the new tests:<br /> <ul> <li><b>Box2DWeb</b> runs a JavaScript port of a popular <a href="http://code.google.com/p/box2dweb/">2D physics engine</a> that is behind many well-known simulations and web games. </li> <li><b>Mandreel</b> puts a JavaScript port of the 3D Bullet Engine to the test with a twist: The original C++ source code for the engine is translated to JavaScript by Onan Games’ <a href="http://www.mandreel.com/">Mandreel</a> compiler, which is also used in countless web-based games. </li> <li><b>Pdf.js</b> is based on <a href="http://mozilla.github.com/pdf.js/">Mozilla’s PDF reader</a> and shows how Javascript applications can replace complex native browser plug-ins. It measures how fast the browser decodes a sample PDF document. </li> <li><b>GB Emulator</b> is derived from an <a href="https://github.com/grantgalitz/GameBoy-Online">open source emulator</a> of a famous game console running a 3D demo. </li> <li><b>CodeLoad</b> measures how quickly a JavaScript engine can bootstrap commonly used JavaScript libraries and start executing code in them. The source for this test is derived from open source libraries (<a href="https://developers.google.com/closure/">Closure</a>, <a href="http://jquery.com/">jQuery</a>). </li> </ul> Besides an expanded <a href="https://developers.google.com/octane/benchmark">set of benchmarks</a>, Octane also has an interface that makes it easier to read and that adapts automatically to tablet and mobile screens.<br /> <br /> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqA5xhJbeQ1-AlZeGH0FIBiR-IjP7xS8fn2pGAjgUVCryBSB2ZXhVSAyHjUyEH460o-B_WRA9A86z3m59Oq7VGSr04poTHTraEMlkWqnwGIq0aFCopS6YG_pp8zxcN7XO3Z72_uOwuB8A/s1600/Screen+shot+2012-08-21+at+7.51.11+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="143" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqA5xhJbeQ1-AlZeGH0FIBiR-IjP7xS8fn2pGAjgUVCryBSB2ZXhVSAyHjUyEH460o-B_WRA9A86z3m59Oq7VGSr04poTHTraEMlkWqnwGIq0aFCopS6YG_pp8zxcN7XO3Z72_uOwuB8A/s400/Screen+shot+2012-08-21+at+7.51.11+AM.png" width="400" /></a> <br /> <br /> You can try out <a href="http://octane-benchmark.googlecode.com/svn/latest/index.html">Octane</a> yourself, browse the <a href="http://code.google.com/p/octane-benchmark/">source code</a>, or read more about each benchmark at the <a href="http://developers.google.com/octane">Octane site</a>. Still have some questions? Have a look at the <a href="http://developers.google.com/octane/faq">FAQ page</a>.<br /> <br /> [1] <i>Beside glue logic and emulation of canvas / DOM interaction where necessary. </i><br /> <span class="post-author"><br /></span> <span class="post-author">Posted by Stefano Cazzulani, Product Manager</span> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> The web is evolving and so should the JavaScript benchmarks that measure its performance. Today, we are releasing <a href="http://octane-benchmark.googlecode.com/svn/latest/index.html">Octane</a>, a JavaScript benchmark suite that aims to measure a browser’s performance when running the complex and demanding web applications that users interact with daily.<br /> <br /> Most of the existing JavaScript benchmarks run artificial tests that were created on an ad-hoc basis to stress a specific JavaScript feature. Octane breaks with this tradition and extends the former V8 Benchmark Suite with 5 new benchmarks created from full, unaltered [1], well-known web applications and libraries. A high score in the new benchmarks directly translates to better and smoother performance in similar web applications.<br /> <br /> Here is an overview of the new tests:<br /> <ul> <li><b>Box2DWeb</b> runs a JavaScript port of a popular <a href="http://code.google.com/p/box2dweb/">2D physics engine</a> that is behind many well-known simulations and web games. </li> <li><b>Mandreel</b> puts a JavaScript port of the 3D Bullet Engine to the test with a twist: The original C++ source code for the engine is translated to JavaScript by Onan Games’ <a href="http://www.mandreel.com/">Mandreel</a> compiler, which is also used in countless web-based games. </li> <li><b>Pdf.js</b> is based on <a href="http://mozilla.github.com/pdf.js/">Mozilla’s PDF reader</a> and shows how Javascript applications can replace complex native browser plug-ins. It measures how fast the browser decodes a sample PDF document. </li> <li><b>GB Emulator</b> is derived from an <a href="https://github.com/grantgalitz/GameBoy-Online">open source emulator</a> of a famous game console running a 3D demo. </li> <li><b>CodeLoad</b> measures how quickly a JavaScript engine can bootstrap commonly used JavaScript libraries and start executing code in them. The source for this test is derived from open source libraries (<a href="https://developers.google.com/closure/">Closure</a>, <a href="http://jquery.com/">jQuery</a>). </li> </ul> Besides an expanded <a href="https://developers.google.com/octane/benchmark">set of benchmarks</a>, Octane also has an interface that makes it easier to read and that adapts automatically to tablet and mobile screens.<br /> <br /> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqA5xhJbeQ1-AlZeGH0FIBiR-IjP7xS8fn2pGAjgUVCryBSB2ZXhVSAyHjUyEH460o-B_WRA9A86z3m59Oq7VGSr04poTHTraEMlkWqnwGIq0aFCopS6YG_pp8zxcN7XO3Z72_uOwuB8A/s1600/Screen+shot+2012-08-21+at+7.51.11+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="143" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqA5xhJbeQ1-AlZeGH0FIBiR-IjP7xS8fn2pGAjgUVCryBSB2ZXhVSAyHjUyEH460o-B_WRA9A86z3m59Oq7VGSr04poTHTraEMlkWqnwGIq0aFCopS6YG_pp8zxcN7XO3Z72_uOwuB8A/s400/Screen+shot+2012-08-21+at+7.51.11+AM.png" width="400" /></a> <br /> <br /> You can try out <a href="http://octane-benchmark.googlecode.com/svn/latest/index.html">Octane</a> yourself, browse the <a href="http://code.google.com/p/octane-benchmark/">source code</a>, or read more about each benchmark at the <a href="http://developers.google.com/octane">Octane site</a>. Still have some questions? Have a look at the <a href="http://developers.google.com/octane/faq">FAQ page</a>.<br /> <br /> [1] <i>Beside glue logic and emulation of canvas / DOM interaction where necessary. </i><br /> <span class="post-author"><br /></span> <span class="post-author">Posted by Stefano Cazzulani, Product Manager</span> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Chromium Blog:Octane: the JavaScript benchmark suite for the modern web&url=https://blog.chromium.org/2012/08/octane-javascript-benchmark-suite-for.html&via=ChromiumDev'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=https://blog.chromium.org/2012/08/octane-javascript-benchmark-suite-for.html'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='https://blog.chromium.org/2012/08/octane-javascript-benchmark-suite-for.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> <span class='labels-caption'> Labels: </span> <span class='labels'> <a class='label' href='https://blog.chromium.org/search/label/octane' rel='tag'> octane </a> , <a class='label' href='https://blog.chromium.org/search/label/v8' rel='tag'> v8 </a> </span> </div> </div> </div> <div class='blog-pager' id='blog-pager'> <a class='home-link' href='https://blog.chromium.org/'> <i class='material-icons'>  </i> </a> <span id='blog-pager-newer-link'> <a class='blog-pager-newer-link' href='https://blog.chromium.org/search?updated-max=2013-02-06T10:53:00-08:00&max-results=7&reverse-paginate=true' id='Blog1_blog-pager-newer-link' title='Newer Posts'> <i class='material-icons'>  </i> </a> </span> <span id='blog-pager-older-link'> <a class='blog-pager-older-link' href='https://blog.chromium.org/search?updated-max=2012-08-21T08:13:00-07:00&max-results=7' id='Blog1_blog-pager-older-link' title='Older Posts'> <i class='material-icons'>  </i> </a> </span> </div> <div class='clear'></div> </div></div> </div> </div> <div class='col-right'> <div class='section' id='sidebar-top'><div class='widget HTML' data-version='1' id='HTML8'> <div class='widget-content'> <div class='searchBox'> <input type='text' title='Search This Blog' placeholder='Search blog ...' /> </div> </div> <div class='clear'></div> </div></div> <div id='aside'> <div class='section' id='sidebar'><div class='widget Label' data-version='1' id='Label1'> <div class='tab'> <img class='sidebar-icon' src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAYpJREFUeNrs2aFuwzAQBmAvKRkMKRjZA4QMDJaWFgyMjuzFRg37DIUlA3uFkoGQSaWzJU+tpri5O9+l/zSfdFJlpe59yTmyVedq1PjfcZMZ70NuQnaF8w8htyE/rABtpviXkLcK88c5HhLkMBfgVan43zfFBNGMjHVGT/s55KP2pAvidbGHd+nzKt1RKSLG3rKF1iPFv6UWiPke8i7kEqGdGsI1O+LYVdqJAjgirwkKYD0ytkJBUNbAMvX8V3q9PhUsYvU1sWD8SO/sQvx2ahxOiNoJCSBCoAHYCEQAC4EKICOQASQEOmAS8RcAFxFN5hiIiugpgC3wk9hQAHH/70EBHXUN7IER5EWMiBgo2+nzOKQv9SCAeEM/OQAkhE/ncccFICB87qzQMia5FsJfOui0zMnmRvipU1ormHQuxGTxUsAcCFLxJQBLBLn4UoAFglW8BkATwS5eC6CBEBWvCShBiIvXBkgQRcVbADiI4uKtABSESvGWgB9EzHt3+tNwyO0qa9SoIYtvAQYAqDJhaWWeMecAAAAASUVORK5CYII='/> <h2> Labels </h2> <i class='material-icons arrow'>  </i> </div> <div class='widget-content list-label-widget-content'> <ul> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/%24200K'> $200K </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/10th%20birthday'> 10th birthday </a> <span dir='ltr'> 4 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/abusive%20ads'> abusive ads </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/abusive%20notifications'> abusive notifications </a> <span dir='ltr'> 2 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/accessibility'> accessibility </a> <span dir='ltr'> 3 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/ad%20blockers'> ad blockers </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/ad%20blocking'> ad blocking </a> <span dir='ltr'> 2 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/advanced%20capabilities'> advanced capabilities </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/android'> android </a> <span dir='ltr'> 2 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/anti%20abuse'> anti abuse </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/anti-deception'> anti-deception </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/background%20periodic%20sync'> background periodic sync </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/badging'> badging </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/benchmarks'> benchmarks </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/beta'> beta </a> <span dir='ltr'> 83 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/better%20ads%20standards'> better ads standards </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/billing'> billing </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/birthday'> birthday </a> <span dir='ltr'> 4 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/blink'> blink </a> <span dir='ltr'> 2 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/browser'> browser </a> <span dir='ltr'> 2 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/browser%20interoperability'> browser interoperability </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/bundles'> bundles </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/capabilities'> capabilities </a> <span dir='ltr'> 6 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/capable%20web'> capable web </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/cds'> cds </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/cds18'> cds18 </a> <span dir='ltr'> 2 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/cds2018'> cds2018 </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/chrome'> chrome </a> <span dir='ltr'> 35 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/chrome%2081'> chrome 81 </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/chrome%2083'> chrome 83 </a> <span dir='ltr'> 2 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/chrome%2084'> chrome 84 </a> <span dir='ltr'> 2 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/chrome%20ads'> chrome ads </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/chrome%20apps'> chrome apps </a> <span dir='ltr'> 5 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/Chrome%20dev'> Chrome dev </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/chrome%20dev%20summit'> chrome dev summit </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/chrome%20dev%20summit%202018'> chrome dev summit 2018 </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/chrome%20dev%20summit%202019'> chrome dev summit 2019 </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/chrome%20developer'> chrome developer </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/Chrome%20Developer%20Center'> Chrome Developer Center </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/chrome%20developer%20summit'> chrome developer summit </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/chrome%20devtools'> chrome devtools </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/Chrome%20extension'> Chrome extension </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/chrome%20extensions'> chrome extensions </a> <span dir='ltr'> 3 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/Chrome%20Frame'> Chrome Frame </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/Chrome%20lite'> Chrome lite </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/Chrome%20on%20Android'> Chrome on Android </a> <span dir='ltr'> 2 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/chrome%20on%20ios'> chrome on ios </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/Chrome%20on%20Mac'> Chrome on Mac </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/Chrome%20OS'> Chrome OS </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/chrome%20privacy'> chrome privacy </a> <span dir='ltr'> 4 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/chrome%20releases'> chrome releases </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/chrome%20security'> chrome security </a> <span dir='ltr'> 10 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/chrome%20web%20store'> chrome web store </a> <span dir='ltr'> 32 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/chromedevtools'> chromedevtools </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/chromeframe'> chromeframe </a> <span dir='ltr'> 3 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/chromeos'> chromeos </a> <span dir='ltr'> 4 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/chromeos.dev'> chromeos.dev </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/chromium'> chromium </a> <span dir='ltr'> 9 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/cloud%20print'> cloud print </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/coalition'> coalition </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/coalition%20for%20better%20ads'> coalition for better ads </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/contact%20picker'> contact picker </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/content%20indexing'> content indexing </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/cookies'> cookies </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/core%20web%20vitals'> core web vitals </a> <span dir='ltr'> 2 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/csrf'> csrf </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/css'> css </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/cumulative%20layout%20shift'> cumulative layout shift </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/custom%20tabs'> custom tabs </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/dart'> dart </a> <span dir='ltr'> 8 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/dashboard'> dashboard </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/Data%20Saver'> Data Saver </a> <span dir='ltr'> 3 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/Data%20saver%20desktop%20extension'> Data saver desktop extension </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/day%202'> day 2 </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/deceptive%20installation'> deceptive installation </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/declarative%20net%20request%20api'> declarative net request api </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/design'> design </a> <span dir='ltr'> 2 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/developer%20dashboard'> developer dashboard </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/Developer%20Program%20Policy'> Developer Program Policy </a> <span dir='ltr'> 2 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/developer%20website'> developer website </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/devtools'> devtools </a> <span dir='ltr'> 13 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/digital%20event'> digital event </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/discoverability'> discoverability </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/DNS-over-HTTPS'> DNS-over-HTTPS </a> <span dir='ltr'> 4 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/DoH'> DoH </a> <span dir='ltr'> 4 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/emoji'> emoji </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/emscriptem'> emscriptem </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/enterprise'> enterprise </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/extensions'> extensions </a> <span dir='ltr'> 27 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/Fast%20badging'> Fast badging </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/faster%20web'> faster web </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/features'> features </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/feedback'> feedback </a> <span dir='ltr'> 2 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/field%20data'> field data </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/first%20input%20delay'> first input delay </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/Follow'> Follow </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/fonts'> fonts </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/form%20controls'> form controls </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/frameworks'> frameworks </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/fugu'> fugu </a> <span dir='ltr'> 2 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/fund'> fund </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/funding'> funding </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/gdd'> gdd </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/google%20earth'> google earth </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/google%20event'> google event </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/google%20io%202019'> google io 2019 </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/google%20web%20developer'> google web developer </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/googlechrome'> googlechrome </a> <span dir='ltr'> 12 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/harmful%20ads'> harmful ads </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/html5'> html5 </a> <span dir='ltr'> 11 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/HTTP%2F3'> HTTP/3 </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/HTTPS'> HTTPS </a> <span dir='ltr'> 4 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/iframes'> iframes </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/images'> images </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/incognito'> incognito </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/insecure%20forms'> insecure forms </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/intent%20to%20explain'> intent to explain </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/ios'> ios </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/ios%20Chrome'> ios Chrome </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/issue%20tracker'> issue tracker </a> <span dir='ltr'> 3 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/jank'> jank </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/javascript'> javascript </a> <span dir='ltr'> 5 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/lab%20data'> lab data </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/labelling'> labelling </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/largest%20contentful%20paint'> largest contentful paint </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/launch'> launch </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/lazy-loading'> lazy-loading </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/lighthouse'> lighthouse </a> <span dir='ltr'> 2 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/linux'> linux </a> <span dir='ltr'> 2 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/Lite%20Mode'> Lite Mode </a> <span dir='ltr'> 2 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/Lite%20pages'> Lite pages </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/loading%20interventions'> loading interventions </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/loading%20optimizations'> loading optimizations </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/lock%20icon'> lock icon </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/long-tail'> long-tail </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/mac'> mac </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/manifest%20v3'> manifest v3 </a> <span dir='ltr'> 2 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/metrics'> metrics </a> <span dir='ltr'> 2 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/microsoft%20edge'> microsoft edge </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/mixed%20forms'> mixed forms </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/mobile'> mobile </a> <span dir='ltr'> 2 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/na'> na </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/native%20client'> native client </a> <span dir='ltr'> 8 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/native%20file%20system'> native file system </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/New%20Features'> New Features </a> <span dir='ltr'> 5 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/notifications'> notifications </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/octane'> octane </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/open%20web'> open web </a> <span dir='ltr'> 4 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/origin%20trials'> origin trials </a> <span dir='ltr'> 2 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/pagespeed%20insights'> pagespeed insights </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/pagespeedinsights'> pagespeedinsights </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/passwords'> passwords </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/payment%20handler'> payment handler </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/payment%20request'> payment request </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/payments'> payments </a> <span dir='ltr'> 2 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/performance'> performance </a> <span dir='ltr'> 20 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/performance%20tools'> performance tools </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/permission%20UI'> permission UI </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/permissions'> permissions </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/play%20store'> play store </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/portals'> portals </a> <span dir='ltr'> 3 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/prefetching'> prefetching </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/privacy'> privacy </a> <span dir='ltr'> 2 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/privacy%20sandbox'> privacy sandbox </a> <span dir='ltr'> 4 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/private%20prefetch%20proxy'> private prefetch proxy </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/profile%20guided%20optimization'> profile guided optimization </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/progressive%20web%20apps'> progressive web apps </a> <span dir='ltr'> 2 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/Project%20Strobe'> Project Strobe </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/protection'> protection </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/pwa'> pwa </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/QUIC'> QUIC </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/quieter%20permissions'> quieter permissions </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/releases'> releases </a> <span dir='ltr'> 3 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/removals'> removals </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/rlz'> rlz </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/root%20program'> root program </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/safe%20browsing'> safe browsing </a> <span dir='ltr'> 2 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/Secure%20DNS'> Secure DNS </a> <span dir='ltr'> 2 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/security'> security </a> <span dir='ltr'> 36 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/site%20isolation'> site isolation </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/slow%20loading'> slow loading </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/sms%20receiver'> sms receiver </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/spam%20policy'> spam policy </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/spdy'> spdy </a> <span dir='ltr'> 2 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/spectre'> spectre </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/speed'> speed </a> <span dir='ltr'> 4 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/ssl'> ssl </a> <span dir='ltr'> 2 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/store%20listing'> store listing </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/strobe'> strobe </a> <span dir='ltr'> 2 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/subscription%20pages'> subscription pages </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/suspicious%20site%20reporter%20extension'> suspicious site reporter extension </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/TCP'> TCP </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/the%20fast%20and%20the%20curious'> the fast and the curious </a> <span dir='ltr'> 23 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/TLS'> TLS </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/tools'> tools </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/tracing'> tracing </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/transparency'> transparency </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/trusted%20web%20activities'> trusted web activities </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/twa'> twa </a> <span dir='ltr'> 2 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/user%20agent%20string'> user agent string </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/user%20data%20policy'> user data policy </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/v8'> v8 </a> <span dir='ltr'> 6 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/video'> video </a> <span dir='ltr'> 2 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/wasm'> wasm </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/web'> web </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/web%20apps'> web apps </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/web%20assembly'> web assembly </a> <span dir='ltr'> 2 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/web%20developers'> web developers </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/web%20intents'> web intents </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/web%20packaging'> web packaging </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/web%20payments'> web payments </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/web%20platform'> web platform </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/web%20request%20api'> web request api </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/web%20vitals'> web vitals </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/web.dev'> web.dev </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/web.dev%20live'> web.dev live </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/webapi'> webapi </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/webassembly'> webassembly </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/webaudio'> webaudio </a> <span dir='ltr'> 3 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/webgl'> webgl </a> <span dir='ltr'> 7 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/webkit'> webkit </a> <span dir='ltr'> 5 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/WebM'> WebM </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/webmaster'> webmaster </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/webp'> webp </a> <span dir='ltr'> 5 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/webrtc'> webrtc </a> <span dir='ltr'> 6 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/websockets'> websockets </a> <span dir='ltr'> 5 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/webtiming'> webtiming </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/writable-files'> writable-files </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://blog.chromium.org/search/label/yerba%20beuna%20center%20for%20the%20arts'> yerba beuna center for the arts </a> <span dir='ltr'> 1 </span> </li> </ul> <div class='clear'></div> </div> </div><div class='widget BlogArchive' data-version='1' id='BlogArchive1'> <div class='tab'> <i class='material-icons icon'>  </i> <h2> Archive </h2> <i class='material-icons arrow'>  </i> </div> <div class='widget-content'> <div id='ArchiveList'> <div id='BlogArchive1_ArchiveList'> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class='intervalToggle'> <span class='new-toggle' href='javascript:void(0)'> <i class='material-icons arrow'>  </i> </span> <a class='toggle' href='javascript:void(0)' style='display: none'> <span class='zippy'> <i class='material-icons'>  </i>   </span> </a> <a class='post-count-link' href='https://blog.chromium.org/2024/'> 2024 </a> </div> <div class='items'> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2024/08/'> Aug </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2024/06/'> Jun </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2024/05/'> May </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2024/04/'> Apr </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2024/03/'> Mar </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2024/02/'> Feb </a> </div> <div class='items'> </div> </li> </ul> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class='intervalToggle'> <span class='new-toggle' href='javascript:void(0)'> <i class='material-icons arrow'>  </i> </span> <a class='toggle' href='javascript:void(0)' style='display: none'> <span class='zippy'> <i class='material-icons'>  </i>   </span> </a> <a class='post-count-link' href='https://blog.chromium.org/2023/'> 2023 </a> </div> <div class='items'> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2023/11/'> Nov </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2023/10/'> Oct </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2023/09/'> Sep </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2023/08/'> Aug </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2023/06/'> Jun </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2023/05/'> May </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2023/04/'> Apr </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2023/02/'> Feb </a> </div> <div class='items'> </div> </li> </ul> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class='intervalToggle'> <span class='new-toggle' href='javascript:void(0)'> <i class='material-icons arrow'>  </i> </span> <a class='toggle' href='javascript:void(0)' style='display: none'> <span class='zippy'> <i class='material-icons'>  </i>   </span> </a> <a class='post-count-link' href='https://blog.chromium.org/2022/'> 2022 </a> </div> <div class='items'> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2022/12/'> Dec </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2022/09/'> Sep </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2022/08/'> Aug </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2022/06/'> Jun </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2022/05/'> May </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2022/04/'> Apr </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2022/03/'> Mar </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2022/02/'> Feb </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2022/01/'> Jan </a> </div> <div class='items'> </div> </li> </ul> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class='intervalToggle'> <span class='new-toggle' href='javascript:void(0)'> <i class='material-icons arrow'>  </i> </span> <a class='toggle' href='javascript:void(0)' style='display: none'> <span class='zippy'> <i class='material-icons'>  </i>   </span> </a> <a class='post-count-link' href='https://blog.chromium.org/2021/'> 2021 </a> </div> <div class='items'> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2021/12/'> Dec </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2021/11/'> Nov </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2021/10/'> Oct </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2021/09/'> Sep </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2021/08/'> Aug </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2021/07/'> Jul </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2021/06/'> Jun </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2021/05/'> May </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2021/04/'> Apr </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2021/03/'> Mar </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2021/02/'> Feb </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2021/01/'> Jan </a> </div> <div class='items'> </div> </li> </ul> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class='intervalToggle'> <span class='new-toggle' href='javascript:void(0)'> <i class='material-icons arrow'>  </i> </span> <a class='toggle' href='javascript:void(0)' style='display: none'> <span class='zippy'> <i class='material-icons'>  </i>   </span> </a> <a class='post-count-link' href='https://blog.chromium.org/2020/'> 2020 </a> </div> <div class='items'> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2020/12/'> Dec </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2020/11/'> Nov </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2020/10/'> Oct </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2020/09/'> Sep </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2020/08/'> Aug </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2020/07/'> Jul </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2020/06/'> Jun </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2020/05/'> May </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2020/04/'> Apr </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2020/03/'> Mar </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2020/02/'> Feb </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2020/01/'> Jan </a> </div> <div class='items'> </div> </li> </ul> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class='intervalToggle'> <span class='new-toggle' href='javascript:void(0)'> <i class='material-icons arrow'>  </i> </span> <a class='toggle' href='javascript:void(0)' style='display: none'> <span class='zippy'> <i class='material-icons'>  </i>   </span> </a> <a class='post-count-link' href='https://blog.chromium.org/2019/'> 2019 </a> </div> <div class='items'> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2019/12/'> Dec </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2019/11/'> Nov </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2019/10/'> Oct </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2019/09/'> Sep </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2019/08/'> Aug </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2019/07/'> Jul </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2019/06/'> Jun </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2019/05/'> May </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2019/04/'> Apr </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2019/03/'> Mar </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2019/02/'> Feb </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2019/01/'> Jan </a> </div> <div class='items'> </div> </li> </ul> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class='intervalToggle'> <span class='new-toggle' href='javascript:void(0)'> <i class='material-icons arrow'>  </i> </span> <a class='toggle' href='javascript:void(0)' style='display: none'> <span class='zippy'> <i class='material-icons'>  </i>   </span> </a> <a class='post-count-link' href='https://blog.chromium.org/2018/'> 2018 </a> </div> <div class='items'> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2018/12/'> Dec </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2018/11/'> Nov </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2018/10/'> Oct </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2018/09/'> Sep </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2018/08/'> Aug </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2018/07/'> Jul </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2018/06/'> Jun </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2018/05/'> May </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2018/04/'> Apr </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2018/03/'> Mar </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2018/02/'> Feb </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2018/01/'> Jan </a> </div> <div class='items'> </div> </li> </ul> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class='intervalToggle'> <span class='new-toggle' href='javascript:void(0)'> <i class='material-icons arrow'>  </i> </span> <a class='toggle' href='javascript:void(0)' style='display: none'> <span class='zippy'> <i class='material-icons'>  </i>   </span> </a> <a class='post-count-link' href='https://blog.chromium.org/2017/'> 2017 </a> </div> <div class='items'> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2017/12/'> Dec </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2017/11/'> Nov </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2017/10/'> Oct </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2017/09/'> Sep </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2017/08/'> Aug </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2017/07/'> Jul </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2017/06/'> Jun </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2017/05/'> May </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2017/04/'> Apr </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2017/03/'> Mar </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2017/02/'> Feb </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2017/01/'> Jan </a> </div> <div class='items'> </div> </li> </ul> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class='intervalToggle'> <span class='new-toggle' href='javascript:void(0)'> <i class='material-icons arrow'>  </i> </span> <a class='toggle' href='javascript:void(0)' style='display: none'> <span class='zippy'> <i class='material-icons'>  </i>   </span> </a> <a class='post-count-link' href='https://blog.chromium.org/2016/'> 2016 </a> </div> <div class='items'> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2016/12/'> Dec </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2016/11/'> Nov </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2016/10/'> Oct </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2016/09/'> Sep </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2016/08/'> Aug </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2016/06/'> Jun </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2016/05/'> May </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2016/04/'> Apr </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2016/03/'> Mar </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2016/02/'> Feb </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2016/01/'> Jan </a> </div> <div class='items'> </div> </li> </ul> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class='intervalToggle'> <span class='new-toggle' href='javascript:void(0)'> <i class='material-icons arrow'>  </i> </span> <a class='toggle' href='javascript:void(0)' style='display: none'> <span class='zippy'> <i class='material-icons'>  </i>   </span> </a> <a class='post-count-link' href='https://blog.chromium.org/2015/'> 2015 </a> </div> <div class='items'> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2015/12/'> Dec </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2015/11/'> Nov </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2015/10/'> Oct </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2015/09/'> Sep </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2015/08/'> Aug </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2015/07/'> Jul </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2015/06/'> Jun </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2015/05/'> May </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2015/04/'> Apr </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2015/03/'> Mar </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2015/02/'> Feb </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2015/01/'> Jan </a> </div> <div class='items'> </div> </li> </ul> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class='intervalToggle'> <span class='new-toggle' href='javascript:void(0)'> <i class='material-icons arrow'>  </i> </span> <a class='toggle' href='javascript:void(0)' style='display: none'> <span class='zippy'> <i class='material-icons'>  </i>   </span> </a> <a class='post-count-link' href='https://blog.chromium.org/2014/'> 2014 </a> </div> <div class='items'> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2014/12/'> Dec </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2014/11/'> Nov </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2014/10/'> Oct </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2014/09/'> Sep </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2014/08/'> Aug </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2014/07/'> Jul </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2014/06/'> Jun </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2014/05/'> May </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2014/04/'> Apr </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2014/03/'> Mar </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2014/02/'> Feb </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2014/01/'> Jan </a> </div> <div class='items'> </div> </li> </ul> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class='intervalToggle'> <span class='new-toggle' href='javascript:void(0)'> <i class='material-icons arrow'>  </i> </span> <a class='toggle' href='javascript:void(0)' style='display: none'> <span class='zippy'> <i class='material-icons'>  </i>   </span> </a> <a class='post-count-link' href='https://blog.chromium.org/2013/'> 2013 </a> </div> <div class='items'> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2013/12/'> Dec </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2013/11/'> Nov </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2013/10/'> Oct </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2013/09/'> Sep </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2013/08/'> Aug </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2013/07/'> Jul </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2013/06/'> Jun </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2013/05/'> May </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2013/04/'> Apr </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2013/03/'> Mar </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2013/02/'> Feb </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2013/01/'> Jan </a> </div> <div class='items'> </div> </li> </ul> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate expanded'> <div class='intervalToggle'> <span class='new-toggle' href='javascript:void(0)'> <i class='material-icons arrow'>  </i> </span> <a class='toggle' href='javascript:void(0)' style='display: none'> <span class='zippy toggle-open'> <i class='material-icons'>  </i>   </span> </a> <a class='post-count-link' href='https://blog.chromium.org/2012/'> 2012 </a> </div> <div class='items'> <ul class='hierarchy'> <li class='archivedate expanded'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2012/12/'> Dec </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2012/11/'> Nov </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2012/10/'> Oct </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2012/09/'> Sep </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2012/08/'> Aug </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2012/07/'> Jul </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2012/06/'> Jun </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2012/05/'> May </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2012/04/'> Apr </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2012/03/'> Mar </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2012/02/'> Feb </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2012/01/'> Jan </a> </div> <div class='items'> </div> </li> </ul> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class='intervalToggle'> <span class='new-toggle' href='javascript:void(0)'> <i class='material-icons arrow'>  </i> </span> <a class='toggle' href='javascript:void(0)' style='display: none'> <span class='zippy'> <i class='material-icons'>  </i>   </span> </a> <a class='post-count-link' href='https://blog.chromium.org/2011/'> 2011 </a> </div> <div class='items'> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2011/12/'> Dec </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2011/11/'> Nov </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2011/10/'> Oct </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2011/09/'> Sep </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2011/08/'> Aug </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2011/07/'> Jul </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2011/06/'> Jun </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2011/05/'> May </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2011/04/'> Apr </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2011/03/'> Mar </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2011/02/'> Feb </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2011/01/'> Jan </a> </div> <div class='items'> </div> </li> </ul> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class='intervalToggle'> <span class='new-toggle' href='javascript:void(0)'> <i class='material-icons arrow'>  </i> </span> <a class='toggle' href='javascript:void(0)' style='display: none'> <span class='zippy'> <i class='material-icons'>  </i>   </span> </a> <a class='post-count-link' href='https://blog.chromium.org/2010/'> 2010 </a> </div> <div class='items'> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2010/12/'> Dec </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2010/11/'> Nov </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2010/10/'> Oct </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2010/09/'> Sep </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2010/08/'> Aug </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2010/07/'> Jul </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2010/06/'> Jun </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2010/05/'> May </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2010/04/'> Apr </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2010/03/'> Mar </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2010/02/'> Feb </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2010/01/'> Jan </a> </div> <div class='items'> </div> </li> </ul> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class='intervalToggle'> <span class='new-toggle' href='javascript:void(0)'> <i class='material-icons arrow'>  </i> </span> <a class='toggle' href='javascript:void(0)' style='display: none'> <span class='zippy'> <i class='material-icons'>  </i>   </span> </a> <a class='post-count-link' href='https://blog.chromium.org/2009/'> 2009 </a> </div> <div class='items'> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2009/12/'> Dec </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2009/11/'> Nov </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2009/09/'> Sep </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2009/08/'> Aug </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2009/07/'> Jul </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2009/06/'> Jun </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2009/05/'> May </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2009/04/'> Apr </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2009/03/'> Mar </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2009/02/'> Feb </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2009/01/'> Jan </a> </div> <div class='items'> </div> </li> </ul> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class='intervalToggle'> <span class='new-toggle' href='javascript:void(0)'> <i class='material-icons arrow'>  </i> </span> <a class='toggle' href='javascript:void(0)' style='display: none'> <span class='zippy'> <i class='material-icons'>  </i>   </span> </a> <a class='post-count-link' href='https://blog.chromium.org/2008/'> 2008 </a> </div> <div class='items'> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2008/12/'> Dec </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2008/11/'> Nov </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2008/10/'> Oct </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://blog.chromium.org/2008/09/'> Sep </a> </div> <div class='items'> </div> </li> </ul> </div> </li> </ul> </div> </div> <div class='clear'></div> </div> </div><div class='widget HTML' data-version='1' id='HTML6'> <div class='widget-content'> <a href="http://blog.chromium.org/atom.xml"> <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAihJREFUeNrsWa9Pw0AU7viRMDFRBAkzJDMIBIhJJhCzk7NILIqMv4AEhdz+BCY3OYssAlGBoAJREpZwAlHEBO8lr8nSvNeVbu1dyX3JlzTrXfa+u/e9d7c5joWFhYVO1Fa8PwH2gK6m+BRwAvSlAdsrgr8E1jUuMH73GTAEzrkBWymTewZlihhLmgDXIAFuHgGVQOUF7OSYM1p6PgTuA1vAZlUEvAnPdapcMY0VICECekQ0XRfYrqoHsAGNgXfAoMomRiFDEhOZkkL3S88hMaB2LwXp0bj+ps2edpToZpjfoIDQtBeU+xjoDzP2G/gCPKZ5f8WsCAFJoJgOCcFdWSTeL9YQMSvTA1h9BkI5jaiXhLpSCL/8mVZY0UpyJ9ZdOkniu1dmJ96BpzQu9w6s28gcOq9j6pwLdR8/36NK5CQKwJSMrb2MhhSglBpt4UjsrdsnNu0B3J0HCozbCc4TjyY2srEgos/4RQljCzNxl4ireQD8FOq+T+W0mTB2g7njhlR+Sy2jsXFvU658U8YTbeaGpdIu7mWkEAq5ZtIjIhFZdtfX7QHckSvB2B6zC3VdAkZk0kAQwaXTk/CzTXK3wjIExCs6ZJpTnE4uY1KV+KzFzA3KTiFPENHJkOPcsfpLhwe4btoSuvUqAR+6TOxlCE6ZfKUsJLgsqGW8OpqAGx2X+sLxrwUog+JUeQRMDBIwyXOcnlPtPnL0/UsT/8LnOxYWFhZG4leAAQAAQHEaYuzHbAAAAABJRU5ErkJggg==" class="sidebar-icon" /> <h2>Feed</h2> </a> </div> <div class='clear'></div> </div></div> <div class='section' id='sidebar-bottom'><div class='widget HTML' data-version='1' id='HTML4'> <div class='widget-content'> <div class="share followgooglewrapper"> <button data-href="https://twitter.com/intent/follow?original_referer=http://blog.chromium.org/&screen_name=ChromiumDev" onclick='sharingPopup(this);' id='twitter-share'><span class="twitter-follow">Follow @ChromiumDev</span></button> <script> function sharingPopup (button) { var url = button.getAttribute("data-href"); window.open( url,'popUpWindow','height=500,width=500,left=10,top=10,resizable=yes,scrollbars=yes,toolbar=yes,menubar=no,location=no,directories=no,status=yes'); } </script> </div> </div> <div class='clear'></div> </div><div class='widget HTML' data-version='1' id='HTML1'> <div class='widget-content'> Give us feedback in our <a href="http://support.google.com/bin/static.py?hl=en&page=portal_groups.cs">Product Forums</a>. </div> <div class='clear'></div> </div></div> </div> </div> <div style='clear:both;'></div> </div> <!-- Footer --> <div class='google-footer-outer loading'> <div id='google-footer'> <a href='//www.google.com/'> <img class='google-logo-dark' height='36' src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAALgAAABICAYAAABFoT/eAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAACLVJREFUeNrsXd+L20YQ3vOprdLqiMXFXE2qB7dcwEcTSB7ykIc+9A/PQx/yEMq1TWhNuYIpJriNr7XpmZ5IxFEvmW2EKs3Ornb1w50PxIFP0kiz387OzM6uhGAwGAxGP3Ho+f7x7ri1O7LdccPqZjSNA4dEHsLfaHcEFedJom93x9Xu2OyOFTcBo6sED3fHZHeMEELrkAHJF0B8Rr+gDFsZ5n0luLTQ95AXs4W06D/tjpR50xtM4CjD0y48YGB4rnyZxNOzyA7zBHr+nLnDaJLg0mo/ALekCasg3Z4XbM0ZdTEgnDPeHY8bIne+Qz2GvwyGNwsuyT218KWvIIBMcwGpLiipcolecjMxfBDchNyS1EvxLiOSIecp31q6IJ/C3yrIrMqMm4jhg+AxkdwbIO3aUO4KjqqMjCT3uaazMBhWBJfuxH3CtRfiXf66DhSRZWbmlMnNaILgZxrXJQO/eO3wORZwvwm4JUxuhheCjzVBYAbW1ces45YDSoZrFNOEE835M8FT6oyeEnws8Fz3QnBxFKPHBMem4GU+m6fPGb0leCTwWcM5B36MPgeZI01gudyDdw3hPeXfo8L/rmCUWnuMMdqUL2WqWeRbhf+twfVsO7YagZGNC79fw7OthEVtkiJ4jJzTd3KPwf3CRqhhiTu23AP5sl0/0xiwISQXpNwLIJK87mHF+U8ddzzdmgKlGzlPYjyxGJQouIhNT4k9AqWEFkqfguIvagTWbcq3KW1WE3xS3m8NtA9WS451xofwjKT5kkDoK/b6mDk5FfXr1lWDL4BofZEv2/SRsK/EHGlGdBdu8QNRb8HMCFwt7Yy3DDI/QP7fx5z3VLhdlJEIs4rKNuXXJXdxZPdB7kfCzWqwCO4V1LHgLjInX3tQ1KzCR52Cz+vDj1dydeRuS74rcvs2Pi6fT5H8OaaUQPQPYcWwRSGXyhhscn5dpAnEFMkuEZetbfkTAnlSuH4DxisE+aMGeJAQ3lFl7C4LJE6QWCaCd583ORQ1jYAwjFctal7nOs2ZZvicwvlZx+RHGrcoAwKUVX8uwcc/9TT65INeDOr5shL9LDRB6QTeIy3zwfdh3WOi6axLCEhSjXU7F3h6LqggUtvyJxpynwu8tDkD98fXApOxRj8zoZ9MnGveYVIVZKaGrkBXCY65BCYNN9NkjpKOyQ81Q79JgdxS+Jn3SDTEXRI7SWzaiSTB32oI3nU3BvMfM0urhOVYgwKhuiAfc4tM07wXwm1ZRoQYSl2NUwiu01fEAHVcpixd745FvVz4dzUUc0o8rwoLy8ZSwU6CyFx1RP5II9+1bFPEFs9HWbNLiimDXE+vCm7u1CS47cofzD3aEhVY57mxRo5zlqdt+RFC1JUH2S7bcVXg4liTMakaBZZVxiTICRoivcn1sEUBlk24JmaC6kxUbYmWoqvyfck2xZGGnDFYa9MMzkYQ1ijkCX6qidybrgePiQ0QIQqoi6qRLeqQfIoRsEHaQJLBdHOnLGetSdm/IPcymJuS1PAnbQPH0MOw/39C1vL11DiLOqIsbDI8QcHvGiLnySi2qUXBicaqUSxN5LEB0g7Jt3ENXJLPJ5S1tnaZBoWbpRqrmjRE7qHmpSmNHdQcYrEUadoh+TbBnc9ri7iycI1kzPeNcLDIvbiqXpez9Tmdq6zGREPuzECBoxrPMiI2WtvyNwhJba2wy3JZ6ky5dD1lSvmZS3e4SPA1wcf1VTFHKX+cGwZzdUYcqpvUtvwrD/InDttVlyZeAKlNN5MKbAiurHhKIPlUuJvlTCCiDjSKSCsUmCFWbGLZwCESfK07JB8LvMYWVtw0D00JEHV8Mq2HkqPbE0oHLvvK2g0o8ETg+4cfwTlZDT9JDoWygu4uQQE/ivIvtcnfPkaCqhiupz7jWOAzqL/vjtcdkv9G4MVMt+EaylfuImiPAXEUjRF3pjjaHiPPZ6If9TGGAO4ZY0am6jOCb+DQ+ZCqLkIpOIPrdNfIjnFPY6nyFut7TS/fanrziOBOKMupKw94WaLMtuVnSFt9CPrWWdJE6PeltCX432DEBoh+5Dv8RRhdis8YAv9uyq4/JAwtlEApgBe9Cw9xDD3tdk4Jn0MDfiHwPHcRPxBePCMER3GuIx7kGlv9fkZ4V9lolx2Uv4X7hEj7qJ3LDoAMGbTRMRibu4L2xQ8bgt8AyU+Q+x7nYrvDnH4iuO5LxKsYwPVbkPMvKF9Zky9wXzRfVWizi62r9X5VHf55h+WHhDjGBZ4WRhyTr6z5SlCoLMxLSpBZFsQ9F80uQFbF/6aFWi+Ev51vzzsuX+msyzuQXXjUz8zEBy+zpq9yweXAoxJW4JbYrDS6gYDqGHxPl+TKeiBfxj9/EBIElPYeOA4y8/qRQfknjvSzgRgtq0Pw/M1eQeMdOSb2Bnrhr6Led+1vcp2x7oTFHMnedFW+Ivlty062BUt74oHgSj+vHepnhunn0JJAMtBZgDI/qmGtMujRv8DDpo47zBJ8UtPOuAR/7rKn8t9AJ0tBdmBAmJ/Fu71yxp4I3qh+DhyRqbi5Y1ShVPlSb8X7bRNcfgZFl+WRGYo7uecrWq1r8X5bhmzP5OdlDwsGRm1suSxkg5rYm7ConyGQ3Zl+DgSD8V/kPwrWBMG9YcBtyShBnTLdTiHgttw7qAW7cqh/ZnmPKr/6ignOaKsdyxbsToT5UkPsW00bJjijDXficcX/JsLs6w2BwGtherdckH3w/kNXRPVI0OqJQoHX42/66IMfMj/2huRjxIidgKV/W0JS+bsstDoTeAHcrI8E5zTh/sDkqxL5rZup55/3USlswfcHf4IrQplVDgW9XFlOqnwr6pVPMMEZTuC60EttvdzbLbaZ4PsFVa3nohhO+vW+yn/ZB2fUhpysmQrzBcTSai9EszuZMcEZ1lCFVrp9zGXhm69iLyY4oxFIa178lPe12I/P2DAYDAaDwWAwGAwGg8FgMBgMBoPBYDD2Cf8IMADDRGoQTe+E9AAAAABJRU5ErkJggg==' style='margin-top: -16px;' width='92'/> </a> <ul> <li> <a href='//www.google.com/'> Google </a> </li> <li> <a href='//www.google.com/policies/privacy/'> Privacy </a> </li> <li> <a href='//www.google.com/policies/terms/'> Terms </a> </li> </ul> </div> </div> <script type='text/javascript'> //<![CDATA[ // Social sharing popups. var postEl = document.getElementsByClassName('social-wrapper'); var postCount = postEl.length; for(i=0; i<postCount;i++){ postEl[i].addEventListener("click", function(event){ var postUrl = this.getAttribute("data-href"); window.open( postUrl,'popUpWindow','height=500,width=500,left=10,top=10,resizable=yes,scrollbars=yes,toolbar=yes,menubar=no,location=no,directories=no,status=yes'); });} //]]> </script> <script type='text/javascript'> //<![CDATA[ var BreakpointHandler = function() { this.initted = false; this.isHomePage = false; this.isMobile = false; }; BreakpointHandler.prototype.finalizeSummary = function(summaryHtml, lastNode) { // Use $.trim for IE8 compatibility summaryHtml = $.trim(summaryHtml).replace(/(<br>|\s)+$/,''); if (lastNode.nodeType == 3) { var lastChar = summaryHtml.slice(-1); if (!lastChar.match(/[.”"?]/)) { if (!lastChar.match(/[A-Za-z]/)) { summaryHtml = summaryHtml.slice(0, -1); } summaryHtml += ' ...'; } } else if (lastNode.nodeType == 1 && (lastNode.nodeName == 'I' || lastNode.nodeName == 'A')) { summaryHtml += ' ...'; } return summaryHtml; }; BreakpointHandler.prototype.generateSummaryFromContent = function(content, numWords) { var seenWords = 0; var summaryHtml = ''; for (var i=0; i < content.childNodes.length; i++) { var node = content.childNodes[i]; var nodeText; if (node.nodeType == 1) { if (node.hasAttribute('data-about-pullquote')) { continue; } nodeText = node.textContent; if (nodeText === undefined) { // innerText for IE8 nodeText = node.innerText; } if (node.nodeName == 'DIV' || node.nodeName == 'B') { // Don't end early if we haven't seen enough words. if (seenWords < 10) { continue; } if (i > 0) { summaryHtml = this.finalizeSummary(summaryHtml, content.childNodes[i-1]); } break; } summaryHtml += node.outerHTML; } else if (node.nodeType == 3) { nodeText = node.nodeValue; summaryHtml += nodeText + ' '; } var words = nodeText.match(/\S+\s*/g); if (!words) { continue; } var remain = numWords - seenWords; if (words.length >= remain) { summaryHtml = this.finalizeSummary(summaryHtml, node); break; } seenWords += words.length; } return summaryHtml; }; BreakpointHandler.prototype.detect = function() { var match, pl = /\+/g, search = /([^&=]+)=?([^&]*)/g, decode = function (s) { return decodeURIComponent(s.replace(pl, " ")); }, query = window.location.search.substring(1); var urlParams = {}; while (match = search.exec(query)) urlParams[decode(match[1])] = decode(match[2]); this.isListPage = $('html').hasClass('list-page'); this.isMobile = urlParams['m'] === '1'; this.isHomePage = window.location.pathname == '/'; }; BreakpointHandler.prototype.initContent = function() { var self = this; $('.post').each(function(index) { var body = $(this).children('.post-body')[0]; var content = $(body).children('.post-content')[0]; $(content).addClass('post-original'); var data = $(content).children('script').html(); data = self.rewriteForSSL(data); // If exists, extract specified editor's preview. var match = data.match(/([\s\S]+?)<div data-is-preview.+?>([\s\S]+)<\/div>/m); if (match) { data = match[1]; } // Prevent big images from loading when they aren't needed. // This must be done as a pre-injection step, since image loading can't be // canceled once embedded into the DOM. if (self.isListPage && self.isMobile) { data = data.replace(/<(img|iframe) .+?>/g, ''); } // Insert template to be rendered as nodes. content.innerHTML = data; if (self.isListPage) { var summary = document.createElement('div'); $(summary).addClass('post-content'); $(summary).addClass('post-summary'); body.insertBefore(summary, content); if (match) { // Use provided summary. summary.innerHTML = match[2]; } else { // Generate a summary. // Summary generation relies on DOM, so it must occur after content is // inserted into the page. summary.innerHTML = self.generateSummaryFromContent(content, 30); } // Add read more link to summary. var titleAnchor = $(this).find('.title a')[0]; var link = titleAnchor.cloneNode(true); link.innerHTML = 'Read More'; $(link).addClass('read-more'); summary.appendChild(link); } }); // Firefox does not allow for proper styling of BR. if (navigator.userAgent.indexOf('Firefox') > -1) { $('.post-content br').replaceWith('<span class="space"></span>'); } $('.loading').removeClass('loading'); }; BreakpointHandler.prototype.process = function() { if (!this.initted) { var makeInsecureImageRegex = function(hosts) { var whitelist = hosts.join('|').replace(/\./g,'\\.'); // Normal image tags, plus input images (yes, this is possible!) return new RegExp('(<(img|input)[^>]+?src=("|\'))http:\/\/(' + whitelist +')', 'g'); }; this.sslImageRegex = makeInsecureImageRegex(BreakpointHandler.KNOWN_HTTPS_HOSTS); this.sslImageCurrentDomainRegex = makeInsecureImageRegex([window.location.hostname]); this.detect(); this.initContent(); this.initted = true; } }; BreakpointHandler.KNOWN_HTTPS_HOSTS = [ "www.google.org", "www.google.com", "services.google.com", "blogger.com", "draft.blogger.com", "www.blogger.com", "photos1.blogger.com", "photos2.blogger.com", "photos3.blogger.com", "blogblog.com", "img1.blogblog.com", "img2.blogblog.com", "www.blogblog.com", "www1.blogblog.com", "www2.blogblog.com", "0.bp.blogspot.com", "1.bp.blogspot.com", "2.bp.blogspot.com", "3.bp.blogspot.com", "4.bp.blogspot.com", "lh3.googleusercontent.com", "lh4.googleusercontent.com", "lh5.googleusercontent.com", "lh6.googleusercontent.com", "themes.googleusercontent.com", ]; BreakpointHandler.prototype.rewriteForSSL = function(html) { // Handle HTTP -> HTTPS source replacement of images, movies, and other embedded content. return html.replace(this.sslImageRegex, '$1https://$4') .replace(this.sslImageCurrentDomainRegex, '$1//$4') .replace(/(<(embed|iframe)[^>]+?src=("|'))http:\/\/([^"']*?(youtube|picasaweb\.google)\.com)/g, '$1https://$4') // Slideshow SWF takes a image host, so we need to rewrite that parameter. .replace(/(<embed[^>]+?feed=http(?=[^s]))/g, '$1s'); }; $(document).ready(function() { var handler = new BreakpointHandler(); handler.process(); // Top-level navigation. $(".BlogArchive .tab").click(function(ev) { ev.preventDefault(); $(this).parent().toggleClass('active'); $(this).siblings().slideToggle(300); }); $(".Label .tab").click(function(ev) { ev.preventDefault(); $(this).parent().toggleClass('active'); $(this).siblings().slideToggle(300); }); // Blog archive year expansion. $('.BlogArchive .intervalToggle').click(function(ev) { ev.preventDefault(); if ($(this).parent().hasClass('collapsed')) { $(this).parent().removeClass('collapsed'); $(this).parent().addClass('expanded'); } else { $(this).parent().removeClass('expanded'); $(this).parent().addClass('collapsed'); } }); // Reverse order of months. $('.BlogArchive .intervalToggle + div').each(function(_, items) { var year = $(this); year.children().each(function(_, month) { year.prepend(month); }); }); // Set anchors to open in new tab. $('.post-content img').parent().each(function(_, node) { if (node.nodeName == 'A') { $(this).attr('target', '_blank'); } }); // Process search requests. $('.searchBox input').on("keypress", function(ev) { if (ev.which == 13) { window.location.href = 'https://www.google.com/search?q=site%3A' + window.location.hostname + '%20' + encodeURIComponent ($(this).val()); } }); }); //]]> </script> <script type="text/javascript" src="https://www.blogger.com/static/v1/widgets/984859869-widgets.js"></script> <script type='text/javascript'> window['__wavt'] = 'AOuZoY45LNFD2aGRLgiMckv2rpnb4kQC_A:1732732137231';_WidgetManager._Init('//www.blogger.com/rearrange?blogID\x3d2471378914199150966','//blog.chromium.org/2012/','2471378914199150966'); _WidgetManager._SetDataContext([{'name': 'blog', 'data': {'blogId': '2471378914199150966', 'title': 'Chromium Blog', 'url': 'https://blog.chromium.org/2012/', 'canonicalUrl': 'https://blog.chromium.org/2012/', 'homepageUrl': 'https://blog.chromium.org/', 'searchUrl': 'https://blog.chromium.org/search', 'canonicalHomepageUrl': 'https://blog.chromium.org/', 'blogspotFaviconUrl': 'https://blog.chromium.org/favicon.ico', 'bloggerUrl': 'https://www.blogger.com', 'hasCustomDomain': true, 'httpsEnabled': true, 'enabledCommentProfileImages': true, 'gPlusViewType': 'FILTERED_POSTMOD', 'adultContent': false, 'analyticsAccountNumber': 'UA-37592578-1', 'encoding': 'UTF-8', 'locale': 'en', 'localeUnderscoreDelimited': 'en', 'languageDirection': 'ltr', 'isPrivate': false, 'isMobile': false, 'isMobileRequest': false, 'mobileClass': '', 'isPrivateBlog': false, 'isDynamicViewsAvailable': true, 'feedLinks': '\x3clink rel\x3d\x22alternate\x22 type\x3d\x22application/atom+xml\x22 title\x3d\x22Chromium Blog - Atom\x22 href\x3d\x22https://blog.chromium.org/feeds/posts/default\x22 /\x3e\n\x3clink rel\x3d\x22alternate\x22 type\x3d\x22application/rss+xml\x22 title\x3d\x22Chromium Blog - RSS\x22 href\x3d\x22https://blog.chromium.org/feeds/posts/default?alt\x3drss\x22 /\x3e\n\x3clink rel\x3d\x22service.post\x22 type\x3d\x22application/atom+xml\x22 title\x3d\x22Chromium Blog - Atom\x22 href\x3d\x22https://www.blogger.com/feeds/2471378914199150966/posts/default\x22 /\x3e\n', 'meTag': '', 'adsenseHostId': 'ca-host-pub-1556223355139109', 'adsenseHasAds': false, 'adsenseAutoAds': false, 'boqCommentIframeForm': true, 'loginRedirectParam': '', 'view': '', 'dynamicViewsCommentsSrc': '//www.blogblog.com/dynamicviews/4224c15c4e7c9321/js/comments.js', 'dynamicViewsScriptSrc': '//www.blogblog.com/dynamicviews/02de2df73990045b', 'plusOneApiSrc': 'https://apis.google.com/js/platform.js', 'disableGComments': true, 'interstitialAccepted': false, 'sharing': {'platforms': [{'name': 'Get link', 'key': 'link', 'shareMessage': 'Get link', 'target': ''}, {'name': 'Facebook', 'key': 'facebook', 'shareMessage': 'Share to Facebook', 'target': 'facebook'}, {'name': 'BlogThis!', 'key': 'blogThis', 'shareMessage': 'BlogThis!', 'target': 'blog'}, {'name': 'X', 'key': 'twitter', 'shareMessage': 'Share to X', 'target': 'twitter'}, {'name': 'Pinterest', 'key': 'pinterest', 'shareMessage': 'Share to Pinterest', 'target': 'pinterest'}, {'name': 'Email', 'key': 'email', 'shareMessage': 'Email', 'target': 'email'}], 'disableGooglePlus': true, 'googlePlusShareButtonWidth': 0, 'googlePlusBootstrap': '\x3cscript type\x3d\x22text/javascript\x22\x3ewindow.___gcfg \x3d {\x27lang\x27: \x27en\x27};\x3c/script\x3e'}, 'hasCustomJumpLinkMessage': false, 'jumpLinkMessage': 'Read more', 'pageType': 'archive', 'pageName': '2012', 'pageTitle': 'Chromium Blog: 2012'}}, {'name': 'features', 'data': {}}, {'name': 'messages', 'data': {'edit': 'Edit', 'linkCopiedToClipboard': 'Link copied to clipboard!', 'ok': 'Ok', 'postLink': 'Post Link'}}, {'name': 'template', 'data': {'name': 'custom', 'localizedName': 'Custom', 'isResponsive': false, 'isAlternateRendering': false, 'isCustom': true}}, {'name': 'view', 'data': {'classic': {'name': 'classic', 'url': '?view\x3dclassic'}, 'flipcard': {'name': 'flipcard', 'url': '?view\x3dflipcard'}, 'magazine': {'name': 'magazine', 'url': '?view\x3dmagazine'}, 'mosaic': {'name': 'mosaic', 'url': '?view\x3dmosaic'}, 'sidebar': {'name': 'sidebar', 'url': '?view\x3dsidebar'}, 'snapshot': {'name': 'snapshot', 'url': '?view\x3dsnapshot'}, 'timeslide': {'name': 'timeslide', 'url': '?view\x3dtimeslide'}, 'isMobile': false, 'title': 'Chromium Blog', 'description': 'News and developments from the open source browser project', 'url': 'https://blog.chromium.org/2012/', 'type': 'feed', 'isSingleItem': false, 'isMultipleItems': true, 'isError': false, 'isPage': false, 'isPost': false, 'isHomepage': false, 'isArchive': true, 'isLabelSearch': false, 'archive': {'year': 2012, 'rangeMessage': 'Showing posts from 2012'}}}]); _WidgetManager._RegisterWidget('_HeaderView', new _WidgetInfo('Header1', 'header', document.getElementById('Header1'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_BlogView', new _WidgetInfo('Blog1', 'main', document.getElementById('Blog1'), {'cmtInteractionsEnabled': false}, 'displayModeFull')); _WidgetManager._RegisterWidget('_HTMLView', new _WidgetInfo('HTML8', 'sidebar-top', document.getElementById('HTML8'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_LabelView', new _WidgetInfo('Label1', 'sidebar', document.getElementById('Label1'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_BlogArchiveView', new _WidgetInfo('BlogArchive1', 'sidebar', document.getElementById('BlogArchive1'), {'languageDirection': 'ltr', 'loadingMessage': 'Loading\x26hellip;'}, 'displayModeFull')); _WidgetManager._RegisterWidget('_HTMLView', new _WidgetInfo('HTML6', 'sidebar', document.getElementById('HTML6'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_HTMLView', new _WidgetInfo('HTML4', 'sidebar-bottom', document.getElementById('HTML4'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_HTMLView', new _WidgetInfo('HTML1', 'sidebar-bottom', document.getElementById('HTML1'), {}, 'displayModeFull')); </script> </body> </html>