| // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| function ChromeOSValidator() { |
| } |
| |
| ChromeOSValidator.getInstance = function() { |
| if (!ChromeOSValidator.instance_) { |
| ChromeOSValidator.instance_ = new ChromeOSValidator(); |
| } |
| return ChromeOSValidator.instance_; |
| }; |
| |
| ChromeOSValidator.prototype = { |
| LOADER_ORIGIN: 'chrome-extension://nbicjcbcmclhihdkigkjgkgafckdfcom', |
| LOADER_PAGE: '/background.html', |
| callback_: undefined, |
| |
| validate: function(callback) { |
| this.callback_ = callback; |
| var msg = { method: 'validate' }; |
| window.parent.postMessage(msg, |
| this.LOADER_ORIGIN + this.LOADER_PAGE); |
| }, |
| |
| initialize: function() { |
| window.addEventListener('message', this.onMessage.bind(this), false); |
| }, |
| |
| isValidMessage_: function(msg) { |
| return msg.origin == this.LOADER_ORIGIN; |
| }, |
| |
| onMessage: function(e) { |
| var msg = e.data; |
| if (msg.method == 'validationResults' && this.isValidMessage_(e)) { |
| if (this.callback_) |
| this.callback_(msg.os == 'ChromeOS'); |
| } else { |
| console.log('#### ChromeOSValidator.onMessage: unknown message'); |
| if (this.callback_) |
| this.callback_(false); |
| } |
| } |
| }; |
| |
| ChromeOSValidator.getInstance().initialize(); |