diff --git a/extensions/chrome/manifest.json b/extensions/chrome/manifest.json
index 9b34437b2..63c77905a 100644
--- a/extensions/chrome/manifest.json
+++ b/extensions/chrome/manifest.json
@@ -1,11 +1,15 @@
 {
-  "name": "uriloader@pdf.js",
-  "version": "0.1",
-  "description": "Read PDF Document",
+  "manifest_version": 2,
+  "name": "PDF Viewer",
+  "version": "PDFJSSCRIPT_VERSION",
+  "description": "Uses HTML5 to display PDF files directly in Chrome.",
   "permissions": [
     "webRequest", "webRequestBlocking",
     "http://*/*.pdf",
+    "https://*/*.pdf",
     "file:///*/*.pdf"
   ],
-  "background_page": "pdfHandler.html"
+  "background": {
+    "page": "pdfHandler.html"
+  }
 }
diff --git a/extensions/chrome/pdfHandler.html b/extensions/chrome/pdfHandler.html
index 35375de73..7a64ecd16 100644
--- a/extensions/chrome/pdfHandler.html
+++ b/extensions/chrome/pdfHandler.html
@@ -14,30 +14,4 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
 -->
-<script>
-
-function isPdfDownloadable(details) {
-  return details.url.indexOf('pdfjs.action=download') >= 0;
-}
-
-chrome.webRequest.onBeforeRequest.addListener(
-  function(details) {
-    if (isPdfDownloadable(details))
-      return;
-
-    var viewerPage = 'content/web/viewer.html';
-    var url = chrome.extension.getURL(viewerPage) +
-      '?file=' + encodeURIComponent(details.url);
-    return { redirectUrl: url };
-  },
-  {
-    urls: [
-      "http://*/*.pdf",
-      "file://*/*.pdf"
-    ],
-    types: [ "main_frame" ]
-  },
-  ["blocking"]);
-
-</script>
-
+<script src="pdfHandler.js"></script>
diff --git a/extensions/chrome/pdfHandler.js b/extensions/chrome/pdfHandler.js
new file mode 100644
index 000000000..d1906ee69
--- /dev/null
+++ b/extensions/chrome/pdfHandler.js
@@ -0,0 +1,39 @@
+/*
+Copyright 2012 Mozilla Foundation
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+function isPdfDownloadable(details) {
+  return details.url.indexOf('pdfjs.action=download') >= 0;
+}
+
+chrome.webRequest.onBeforeRequest.addListener(
+  function(details) {
+    if (isPdfDownloadable(details))
+      return;
+
+    var viewerPage = 'content/web/viewer.html';
+    var url = chrome.extension.getURL(viewerPage) +
+      '?file=' + encodeURIComponent(details.url);
+    return { redirectUrl: url };
+  },
+  {
+    urls: [
+      'http://*/*.pdf',
+      'https://*/*.pdf',
+      'file://*/*.pdf'
+    ],
+    types: ['main_frame']
+  },
+  ['blocking']);
diff --git a/make.js b/make.js
index 88fec48cf..807b3dd7c 100755
--- a/make.js
+++ b/make.js
@@ -581,7 +581,9 @@ target.chrome = function() {
     defines: defines,
     copy: [
       [COMMON_WEB_FILES, CHROME_BUILD_CONTENT_DIR + '/web'],
-      [['extensions/chrome/*.json', 'extensions/chrome/*.html'],
+      [['extensions/chrome/*.json',
+        'extensions/chrome/*.html',
+        'extensions/chrome/*.js'],
        CHROME_BUILD_DIR],
       [BUILD_TARGET, CHROME_BUILD_CONTENT_DIR + BUILD_TARGET],
       ['external/webL10n/l10n.js', CHROME_BUILD_CONTENT_DIR + '/web']
@@ -593,6 +595,10 @@ target.chrome = function() {
   };
   builder.build(setup);
 
+  // Update the build version number
+  sed('-i', /PDFJSSCRIPT_VERSION/, EXTENSION_VERSION,
+      CHROME_BUILD_DIR + '/manifest.json');
+
   // Bundle the files to a Chrome extension file .crx if path to key is set
   var pem = env['PDFJS_CHROME_KEY'];
   if (!pem) {
diff --git a/web/viewer-snippet.html b/web/viewer-snippet.html
index 3d535169e..294ecc294 100644
--- a/web/viewer-snippet.html
+++ b/web/viewer-snippet.html
@@ -2,7 +2,3 @@
 <link rel="resource" type="application/l10n" href="locale.properties"/>
 <script type="text/javascript" src="l10n.js"></script>
 <script type="text/javascript" src="../build/pdf.js"></script>
-<script type="text/javascript">
-  // This specifies the location of the pdf.js file.
-  PDFJS.workerSrc = "../build/pdf.js";
-</script>
diff --git a/web/viewer.html b/web/viewer.html
index 0ad48703e..2b705b72f 100644
--- a/web/viewer.html
+++ b/web/viewer.html
@@ -29,7 +29,7 @@ limitations under the License.
     <link rel="resource" type="application/l10n" href="locale.properties"/>
 <!--#endif-->
 
-<!--#if !(FIREFOX || MOZCENTRAL)-->
+<!--#if !(FIREFOX || MOZCENTRAL || CHROME)-->
     <script type="text/javascript" src="compatibility.js"></script>
 <!--#endif-->
 
@@ -82,13 +82,13 @@ limitations under the License.
 
       <div id="sidebarContainer">
         <div id="toolbarSidebar" class="splitToolbarButton toggled">
-          <button id="viewThumbnail" class="toolbarButton group toggled" title="Show Thumbnails" onclick="PDFView.switchSidebarView('thumbs')" tabindex="1" data-l10n-id="thumbs">
+          <button id="viewThumbnail" class="toolbarButton group toggled" title="Show Thumbnails" tabindex="1" data-l10n-id="thumbs">
              <span data-l10n-id="thumbs_label">Thumbnails</span>
           </button>
-          <button id="viewOutline" class="toolbarButton group" title="Show Document Outline" onclick="PDFView.switchSidebarView('outline')" tabindex="2" data-l10n-id="outline">
+          <button id="viewOutline" class="toolbarButton group" title="Show Document Outline" tabindex="2" data-l10n-id="outline">
              <span data-l10n-id="outline_label">Document Outline</span>
           </button>
-          <button id="viewSearch" class="toolbarButton group hidden" title="Search Document" onclick="PDFView.switchSidebarView('search')" tabindex="3" data-l10n-id="search_panel">
+          <button id="viewSearch" class="toolbarButton group hidden" title="Search Document" tabindex="3" data-l10n-id="search_panel">
              <span data-l10n-id="search_panel_label">Search Document</span>
           </button>
         </div>
@@ -99,8 +99,8 @@ limitations under the License.
           </div>
           <div id="searchView" class="hidden">
             <div id="searchToolbar">
-              <input id="searchTermsInput" class="toolbarField" onkeydown='if (event.keyCode == 13) PDFView.search()'>
-              <button id="searchButton" class="textButton toolbarButton" onclick='PDFView.search()' data-l10n-id="search">Find</button>
+              <input id="searchTermsInput" class="toolbarField">
+              <button id="searchButton" class="textButton toolbarButton" data-l10n-id="search">Find</button>
             </div>
             <div id="searchResults"></div>
           </div>
@@ -118,16 +118,16 @@ limitations under the License.
                 </button>
                 <div class="toolbarButtonSpacer"></div>
                 <div class="splitToolbarButton">
-                  <button class="toolbarButton pageUp" title="Previous Page" onclick="PDFView.page--" id="previous" tabindex="5" data-l10n-id="previous">
+                  <button class="toolbarButton pageUp" title="Previous Page" id="previous" tabindex="5" data-l10n-id="previous">
                     <span data-l10n-id="previous_label">Previous</span>
                   </button>
                   <div class="splitToolbarButtonSeparator"></div>
-                  <button class="toolbarButton pageDown" title="Next Page" onclick="PDFView.page++" id="next" tabindex="6" data-l10n-id="next">
+                  <button class="toolbarButton pageDown" title="Next Page" id="next" tabindex="6" data-l10n-id="next">
                     <span data-l10n-id="next_label">Next</span>
                   </button>
                 </div>
                 <label id="pageNumberLabel" class="toolbarLabel" for="pageNumber" data-l10n-id="page_label">Page: </label>
-                <input type="number" id="pageNumber" class="toolbarField pageNumber" onchange="PDFView.page = this.value;" value="1" size="4" min="1" tabindex="7">
+                <input type="number" id="pageNumber" class="toolbarField pageNumber" value="1" size="4" min="1" tabindex="7">
                 </input>
                 <span id="numPages" class="toolbarLabel"></span>
               </div>
@@ -135,19 +135,19 @@ limitations under the License.
                 <input id="fileInput" class="fileInput" type="file" oncontextmenu="return false;" style="visibility: hidden; position: fixed; right: 0; top: 0" />
 
 
-                <button id="fullscreen" class="toolbarButton fullscreen" title="Fullscreen" tabindex="11" data-l10n-id="fullscreen" onclick="PDFView.fullscreen();">
+                <button id="fullscreen" class="toolbarButton fullscreen" title="Fullscreen" tabindex="11" data-l10n-id="fullscreen">
                   <span data-l10n-id="fullscreen_label">Fullscreen</span>
                 </button>
 
-                <button id="openFile" class="toolbarButton openFile" title="Open File" tabindex="12" data-l10n-id="open_file" onclick="document.getElementById('fileInput').click()">
+                <button id="openFile" class="toolbarButton openFile" title="Open File" tabindex="12" data-l10n-id="open_file">
                    <span data-l10n-id="open_file_label">Open</span>
                 </button>
 
-                <button id="print" class="toolbarButton print" title="Print" tabindex="13" data-l10n-id="print" onclick="window.print()">
+                <button id="print" class="toolbarButton print" title="Print" tabindex="13" data-l10n-id="print">
                   <span data-l10n-id="print_label">Print</span>
                 </button>
 
-                <button id="download" class="toolbarButton download" title="Download" onclick="PDFView.download();" tabindex="14" data-l10n-id="download">
+                <button id="download" class="toolbarButton download" title="Download" tabindex="14" data-l10n-id="download">
                   <span data-l10n-id="download_label">Download</span>
                 </button>
                 <!-- <div class="toolbarButtonSpacer"></div> -->
@@ -156,16 +156,16 @@ limitations under the License.
               <div class="outerCenter">
                 <div class="innerCenter" id="toolbarViewerMiddle">
                   <div class="splitToolbarButton">
-                    <button class="toolbarButton zoomOut" title="Zoom Out" onclick="PDFView.zoomOut();" tabindex="8" data-l10n-id="zoom_out">
+                    <button class="toolbarButton zoomOut" title="Zoom Out" tabindex="8" data-l10n-id="zoom_out">
                       <span data-l10n-id="zoom_out_label">Zoom Out</span>
                     </button>
                     <div class="splitToolbarButtonSeparator"></div>
-                    <button class="toolbarButton zoomIn" title="Zoom In" onclick="PDFView.zoomIn();" tabindex="9" data-l10n-id="zoom_in">
+                    <button class="toolbarButton zoomIn" title="Zoom In" tabindex="9" data-l10n-id="zoom_in">
                       <span data-l10n-id="zoom_in_label">Zoom In</span>
                      </button>
                   </div>
                   <span id="scaleSelectContainer" class="dropdownToolbarButton">
-                     <select id="scaleSelect" onchange="PDFView.parseScale(this.value);" title="Zoom" oncontextmenu="return false;" tabindex="10" data-l10n-id="zoom">
+                     <select id="scaleSelect" title="Zoom" oncontextmenu="return false;" tabindex="10" data-l10n-id="zoom">
                       <option id="pageAutoOption" value="auto" selected="selected" data-l10n-id="page_scale_auto">Automatic Zoom</option>
                       <option id="pageActualOption" value="page-actual" data-l10n-id="page_scale_actual">Actual Size</option>
                       <option id="pageFitOption" value="page-fit" data-l10n-id="page_scale_fit">Fit Page</option>
diff --git a/web/viewer.js b/web/viewer.js
index 31d15f31d..27002fabf 100644
--- a/web/viewer.js
+++ b/web/viewer.js
@@ -35,6 +35,7 @@ var RenderingStates = {
   FINISHED: 3
 };
 
+PDFJS.workerSrc = '../build/pdf.js';
 
 var mozL10n = document.mozL10n || document.webL10n;
 
@@ -1938,6 +1939,84 @@ document.addEventListener('DOMContentLoaded', function webViewerLoad(evt) {
       PDFView.renderHighestPriority();
     });
 
+  document.getElementById('viewThumbnail').addEventListener('click',
+    function() {
+      PDFView.switchSidebarView('thumbs');
+    });
+
+  document.getElementById('viewOutline').addEventListener('click',
+    function() {
+      PDFView.switchSidebarView('outline');
+    });
+
+  document.getElementById('viewSearch').addEventListener('click',
+    function() {
+      PDFView.switchSidebarView('search');
+    });
+
+  document.getElementById('searchButton').addEventListener('click',
+    function() {
+      PDFView.search();
+    });
+
+  document.getElementById('previous').addEventListener('click',
+    function() {
+      PDFView.page--;
+    });
+
+  document.getElementById('next').addEventListener('click',
+    function() {
+      PDFView.page++;
+    });
+
+  document.querySelector('.zoomIn').addEventListener('click',
+    function() {
+      PDFView.zoomIn();
+    });
+
+  document.querySelector('.zoomOut').addEventListener('click',
+    function() {
+      PDFView.zoomOut();
+    });
+
+  document.getElementById('fullscreen').addEventListener('click',
+    function() {
+      PDFView.fullscreen();
+    });
+
+  document.getElementById('openFile').addEventListener('click',
+    function() {
+      document.getElementById('fileInput').click();
+    });
+
+  document.getElementById('print').addEventListener('click',
+    function() {
+      window.print();
+    });
+
+  document.getElementById('download').addEventListener('click',
+    function() {
+      PDFView.download();
+    });
+
+  document.getElementById('searchTermsInput').addEventListener('keydown',
+    function() {
+      if (event.keyCode == 13) {
+        PDFView.search();
+      }
+    });
+
+  document.getElementById('pageNumber').addEventListener('change',
+    function() {
+      PDFView.page = this.value;
+    });
+
+  document.getElementById('scaleSelect').addEventListener('change',
+    function() {
+      PDFView.parseScale(this.value);
+    });
+
+
 //#if (FIREFOX || MOZCENTRAL)
 //if (FirefoxCom.requestSync('getLoadingType') == 'passive') {
 //  PDFView.setTitleUsingUrl(file);