Home | History | Annotate | Download | only in extensions
      1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 var DocumentNatives = requireNative('document_natives');
      6 
      7 // Output error message to console when using the <webview> tag with no
      8 // permission.
      9 var errorMessage = "You do not have permission to use the webview element." +
     10   " Be sure to declare the 'webview' permission in your manifest file.";
     11 
     12 // Registers <webview> custom element.
     13 function registerWebViewElement() {
     14   var proto = Object.create(HTMLElement.prototype);
     15 
     16   proto.createdCallback = function() {
     17     console.error(errorMessage);
     18   };
     19 
     20   window.WebView =
     21       DocumentNatives.RegisterElement('webview', {prototype: proto});
     22 
     23   // Delete the callbacks so developers cannot call them and produce unexpected
     24   // behavior.
     25   delete proto.createdCallback;
     26   delete proto.enteredDocumentCallback;
     27   delete proto.leftDocumentCallback;
     28   delete proto.attributeChangedCallback;
     29 }
     30 
     31 var useCapture = true;
     32 window.addEventListener('readystatechange', function listener(event) {
     33   if (document.readyState == 'loading')
     34     return;
     35 
     36   registerWebViewElement();
     37   window.removeEventListener(event.type, listener, useCapture);
     38 }, useCapture);
     39