From 66dae0ccbc23f4df612711a2e61fadd9b15feb91 Mon Sep 17 00:00:00 2001 From: Daniel Narvaez Date: Wed, 06 Feb 2013 16:36:20 +0000 Subject: Empty the system plugin --- (limited to 'apps/system/js/payment.js') diff --git a/apps/system/js/payment.js b/apps/system/js/payment.js deleted file mode 100644 index a953f5c..0000000 --- a/apps/system/js/payment.js +++ /dev/null @@ -1,151 +0,0 @@ -/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- / -/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */ - -// TODO: Blocked by [Payment] UX and visuals for the payment request -// confirmation screen https://github.com/mozilla-b2g/gaia/issues/2692 - -'use strict'; - -const kPaymentConfirmationScreen = '../payment.html'; - -var Payment = { - chromeEventId: null, - trustedUILayers: {}, - - init: function init() { - window.addEventListener('mozChromeEvent', this); - }, - - handleEvent: function onMozChromeEvent(e) { - // We save the mozChromeEvent identifiers to send replies back from content - // with this exact value. - this.chromeEventId = e.detail.id; - if (!this.chromeEventId) - return; - - var requestId = e.detail.requestId; - - switch (e.detail.type) { - // Chrome asks Gaia to show the payment request confirmation dialog. - case 'open-payment-confirmation-dialog': - var requests = e.detail.paymentRequests; - if (!requests) - return; - - var returnSelection = (function returnSelection(selection) { - if (!selection) - return; - - this._dispatchEvent({ - id: this.chromeEventId, - userSelection: selection - }); - }).bind(this); - - // If there is only one request, we skip the confirmation dialog and - // send the request type back to the chrome as a user selection, so - // the payment flow can continue. - if (requests.length == 1) { - returnSelection(requests[0].type); - return; - } - - var frame = document.createElement('iframe'); - frame.setAttribute('mozbrowser', 'true'); - frame.setAttribute('remote', true); - frame.classList.add('screen'); - frame.src = kPaymentConfirmationScreen; - frame.addEventListener('mozbrowserloadend', function addReqs(evt) { - var frame = evt.target; - if (!frame || !requests) - return; - - // TODO: Temp layout until issue #2692 is solved. - var frameDocument = frame.contentWindow.document; - var requestsList = frameDocument.getElementById('requests') - .getElementsByTagName('ul')[0]; - for (var i in requests) { - var requestElement = frameDocument.createElement('li'); - var button = frameDocument.createElement('button'); - button.setAttribute('value', requests[i].type); - var requestText = 'Pay with ' + requests[i].providerName + '\n' + - requests[i].productName + '\n' + - requests[i].productDescription + '\n' + - requests[i].productPrice[0].amount + ' ' + - requests[i].productPrice[0].currency; - button.appendChild(frameDocument.createTextNode(requestText)); - button.onclick = function selectRequest() { - // We send the selected request back to Chrome so it can start - // the appropriate payment flow. - returnSelection(this.getAttribute('value')); - }; - requestElement.appendChild(button); - requestsList.appendChild(requestElement); - } - }); - - this._openTrustedUI(frame); - break; - - // Chrome asks Gaia to show the payment flow according to the - // payment request selected by the user. - case 'open-payment-flow-dialog': - if (!e.detail.uri) - return; - - // TODO: For now, known payment providers (BlueVia and Mozilla Market) - // only accepts the JWT by GET, so we just add it to the URI. - e.detail.uri += e.detail.jwt; - - this.trustedUILayers[requestId] = this.chromeEventId; - - var frame = document.createElement('iframe'); - frame.setAttribute('mozbrowser', 'true'); - frame.classList.add('screen'); - frame.src = e.detail.uri; - frame.addEventListener('mozbrowserloadstart', (function loadStart(evt) { - // After creating the new frame containing the payment provider buy - // flow, we send it back to chrome so the payment callbacks can be - // injected. - this._dispatchEvent({ - id: this.chromeEventId, - frame: evt.target - }); - }).bind(this)); - - // The payment flow is shown within the trusted UI - this._openTrustedUI(frame); - break; - - case 'close-payment-flow-dialog': - TrustedUIManager.close(this.trustedUILayers[requestId], - (function dialogClosed() { - this._dispatchEvent({ id: this.chromeEventId }); - delete this.trustedUILayers[requestId]; - }).bind(this)); - break; - } - }, - - _openTrustedUI: function _openTrustedUI(frame) { - // The payment flow is shown within the trusted UI with the name of - // the mozPay caller application as title. - var title = WindowManager.getCurrentDisplayedApp().name; - title = title ? title : navigator.mozL10n.get('payment-flow'); - TrustedUIManager.open(title, frame, this.chromeEventId); - }, - - _dispatchEvent: function _dispatchEvent(obj) { - var event = document.createEvent('CustomEvent'); - event.initCustomEvent('mozContentEvent', true, true, obj); - window.dispatchEvent(event); - } -}; - -// Make sure L10n is ready before init -if (navigator.mozL10n.readyState == 'complete' || - navigator.mozL10n.readyState == 'interactive') { - Payment.init(); -} else { - window.addEventListener('localized', Payment.init.bind(Payment)); -} -- cgit v0.9.1