• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
5var DocumentNatives = requireNative('document_natives');
6
7// Output error message to console when using the <webview> tag with no
8// permission.
9var 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.
13function 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
31var useCapture = true;
32window.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