Skip to content

Commit

Permalink
Eth 02 fixes (ethereum#1483)
Browse files Browse the repository at this point in the history
* updated package elemeents

* fixed max callstack error

* remove URL from error page

* remove URL from error page

* improved url updating

* fix ETH-02-003

* added Blaze._escape to the url.protocol

* use shorthand for `url: url`

* remove function connotation with string.

* updated signatures

* reverted url shorthand

* made preloaders more secure, moved mistAPI

* move pinch zoom blocking

* changed ipc -> ipcRenderer in wrapper

* fixes ETH03-001

* fixes ethereum#1489

* Adding mistMode on the preloader

* fixed mistMode

* fixed sound playing
  • Loading branch information
frozeman authored and alexvansande committed Dec 6, 2016
1 parent 58825a9 commit bf517a6
Show file tree
Hide file tree
Showing 25 changed files with 175 additions and 157 deletions.
14 changes: 8 additions & 6 deletions interface/client/appStart.js
Original file line number Diff line number Diff line change
Expand Up @@ -30,12 +30,14 @@ mistInit = function(){
});
}

Tabs.upsert({_id: 'wallet'}, {
url: 'https://wallet.ethereum.org',
redirect: 'https://wallet.ethereum.org',
position: 1,
permissions: {
admin: true
// overwrite wallet on start again, but use $set to dont remove titles
Tabs.upsert({_id: 'wallet'}, {$set: {
url: 'https://wallet.ethereum.org',
redirect: 'https://wallet.ethereum.org',
position: 1,
permissions: {
admin: true
}
}
});

Expand Down
8 changes: 8 additions & 0 deletions interface/client/lib/helpers/helperFunctions.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,14 @@ The Helpers class containing helper functions
**/
Helpers = {};

/**
The preloader dirname
@property preloaderDirname
**/
Helpers.preloaderDirname = window.dirname + '/modules/preloader';


/**
Reruns functions reactively, based on an interval. Use it like so:
Expand Down
16 changes: 4 additions & 12 deletions interface/client/lib/helpers/templateHelpers.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,14 +29,6 @@ Template.registerHelper('CurrentBlock', function(){
return EthBlocks.latest;
});

/**
Return the preload modules dirname.
@method (preload_dirname)
**/
Template.registerHelper('preload_dirname', function(){
return window.dirname + '/modules/preloader';
});

/**
Return the dirname.
Expand All @@ -63,7 +55,7 @@ Return the app mode.
@method (mode)
**/
Template.registerHelper('mode', function(){
return window.mist.mode;
return window.mistMode;
});

/**
Expand All @@ -72,7 +64,7 @@ Return the friendly app name.
@method (appName)
**/
Template.registerHelper('appName', function(){
return window.mist.mode === 'mist' ? 'Mist' : 'Ethereum Wallet';
return window.mistMode === 'mist' ? 'Mist' : 'Ethereum Wallet';
});

/**
Expand All @@ -81,7 +73,7 @@ Return the app icon path.
@method (iconPath)
**/
Template.registerHelper('appIconPath', function(){
return 'file://'+ window.dirname +'/icons/'+ window.mist.mode +'/icon2x.png';
return 'file://'+ window.dirname +'/icons/'+ window.mistMode +'/icon2x.png';
});

/**
Expand All @@ -90,7 +82,7 @@ Get the current user agent
@method (useragent)
**/
Template.registerHelper('useragent', function(){
return navigator.userAgent + ' Ethereum ' + (window.mist.mode === 'mist' ? 'Mist' : 'Wallet');
return navigator.userAgent + ' Ethereum ' + (window.mistMode === 'mist' ? 'Mist' : 'Wallet');
});

/**
Expand Down
11 changes: 8 additions & 3 deletions interface/client/mistAPIBackend.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
*/


var allowedBrowserBarStyles = ['transparent'];


/**
Filters a id the id to only contain a-z A-Z 0-9 _ -.
Expand Down Expand Up @@ -47,19 +49,22 @@ mistAPIBackend = function(event) {
// SET FAVICON
if(event.channel === 'favicon') {
Tabs.update(template.data._id, {$set:{
icon: arg
icon: Blaze._escape(arg || '')
}});
}

// SET APPBAR
if(event.channel === 'appBar') {
var appBarClass = Blaze._escape(arg || '');

Tabs.update(template.data._id, {$set:{
appBar: arg
appBar: (_.contains(allowedBrowserBarStyles, appBarClass) ? appBarClass : null)
}});
}

if(event.channel === 'mistAPI_sound') {
sound.src = arg;
sound.pause();
sound.src = Blaze._escape(arg);
sound.play();
}

Expand Down
5 changes: 4 additions & 1 deletion interface/client/templates/popupWindows/connectAccount.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,8 @@ var pinToSidebar = function() {
position: Tabs.find().count() + 1
});
LocalStore.set('selectedTab', newTabId);
} else {

} else if(existingUserTab) {
LocalStore.set('selectedTab', existingUserTab);
}

Expand Down Expand Up @@ -150,6 +151,8 @@ Template['popupWindows_connectAccount'].events({
pinToSidebar();
}

accounts = _.unique(_.flatten(accounts));

// reload the webview
ipc.send('backendAction_windowMessageToOwner', null, accounts);
setTimeout(function(){
Expand Down
4 changes: 2 additions & 2 deletions interface/client/templates/popupWindows/splashScreen.js
Original file line number Diff line number Diff line change
Expand Up @@ -155,15 +155,15 @@ Template['popupWindows_splashScreen'].helpers({
@method mode
*/
'mode': function(){
return window.mist.mode;
return window.mistMode;
},
/**
Returns the icon path
@method iconPath
*/
'iconPath': function(){
return 'file://'+ window.dirname +'/icons/'+ window.mist.mode +'/icon2x.png';
return 'file://'+ window.dirname +'/icons/'+ window.mistMode +'/icon2x.png';
},
/**
Updates the Sync Message live
Expand Down
10 changes: 3 additions & 7 deletions interface/client/templates/views/webview.html
Original file line number Diff line number Diff line change
@@ -1,13 +1,9 @@
<template name="views_webview">
<div class="webview {{isVisible}} {{#if appBar}}app-bar-{{appBar}}{{/if}}">
{{#if $eq _id "browser"}}
<webview src="{{checkedUrl}}" useragent="{{useragent}}" data-id="{{_id}}" preload="file://{{preload_dirname}}/browser.js" autosize="on"></webview>
{{#if $eq _id "tests"}}
<webview src="file://{{dirname}}/tests/mocha-in-browser/runner.html" useragent="{{useragent}}" data-id="{{_id}}" preload="{{preloaderFile}}" autosize="on"></webview>
{{else}}
{{#if $eq _id "tests"}}
<webview src="file://{{dirname}}/tests/mocha-in-browser/runner.html" useragent="{{useragent}}" data-id="{{_id}}" preload="file://{{preload_dirname}}/tests.js" autosize="on"></webview>
{{else}}
<webview src="{{checkedUrl}}" useragent="{{useragent}}" data-id="{{_id}}" preload="file://{{preload_dirname}}/dapps.js" autosize="on"></webview>
{{/if}}
<webview src="{{checkedUrl}}" useragent="{{useragent}}" data-id="{{_id}}" preload="{{preloaderFile}}" autosize="on"></webview>
{{/if}}
</div>
</template>
17 changes: 17 additions & 0 deletions interface/client/templates/views/webview.js
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,23 @@ Template['views_webview'].onRendered(function(){


Template['views_webview'].helpers({
/**
Gets the correct preloader file
@method (preloaderFile)
*/
'preloaderFile': function(){
switch(this._id) {
case 'browser':
return 'file://'+ Helpers.preloaderDirname +'/browser.js';
case 'wallet':
return 'file://'+ Helpers.preloaderDirname +'/wallet.js';
case 'tests':
return 'file://'+ Helpers.preloaderDirname +'/tests.js';
default:
return 'file://'+ Helpers.preloaderDirname +'/dapps.js';
}
},
/**
Determines if the current tab is visible
Expand Down
1 change: 0 additions & 1 deletion interface/client/windowEvents.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,6 @@ $(window).on('dragenter', function(e) {


$(window).on('keydown', function (e) {
console.log(e);

// Select tab with index when number is 1-8
if (e.metaKey && e.keyCode >= 49 && e.keyCode <= 56) {
Expand Down
2 changes: 1 addition & 1 deletion main.js
Original file line number Diff line number Diff line change
Expand Up @@ -218,7 +218,7 @@ let onReady = () => {
width: 1100,
height: 720,
webPreferences: {
preload: `${__dirname}/modules/preloader/wallet.js`,
preload: `${__dirname}/modules/preloader/walletMain.js`,
'overlay-fullscreen-video': true,
'overlay-scrollbars': true,
},
Expand Down
26 changes: 13 additions & 13 deletions modules/ipc/ipcProviderWrapper.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,15 @@ The IPC provider wrapper to communicate to the backend
@constructor
*/

const { ipcRenderer: ipc } = require('electron');
const { ipcRenderer } = require('electron');


/**
Gets the writable property.
@method on('ipcProvider-setWritable')
*/
ipc.on('ipcProvider-setWritable', (e, writable) => {
ipcRenderer.on('ipcProvider-setWritable', (e, writable) => {
// console.debug('ipcProvider-setWritable', writable);

ipcProviderWrapper.writable = writable;
Expand All @@ -38,7 +38,7 @@ const ipcProviderWrapper = {
connect(path) {
// console.debug('ipcProviderWrapper: connect');

ipc.send('ipcProvider-create', path);
ipcRenderer.send('ipcProvider-create', path);

return this;
},
Expand All @@ -52,7 +52,7 @@ const ipcProviderWrapper = {
on(name, callback) {
// console.debug('ipcProviderWrapper: add listener', name);

ipc.on(`ipcProvider-${name}`, (e, result) => {
ipcRenderer.on(`ipcProvider-${name}`, (e, result) => {
callback(result);
});
},
Expand All @@ -66,7 +66,7 @@ const ipcProviderWrapper = {
once(name, callback) {
// console.debug('ipcProviderWrapper: add listener', name);

ipc.once(`ipcProvider-${name}`, (e, result) => {
ipcRenderer.once(`ipcProvider-${name}`, (e, result) => {
callback(result);
});
},
Expand All @@ -78,7 +78,7 @@ const ipcProviderWrapper = {
removeListener(name, callback) {
// console.debug('ipcProviderWrapper: remove listener', name);

ipc.removeListener(`ipcProvider-${name}`, callback);
ipcRenderer.removeListener(`ipcProvider-${name}`, callback);
},

/**
Expand All @@ -90,12 +90,12 @@ const ipcProviderWrapper = {
// console.debug('ipcProviderWrapper: remove all listeners', name);

if (name) {
ipc.removeAllListeners(`ipcProvider-${name}`);
ipcRenderer.removeAllListeners(`ipcProvider-${name}`);
} else {
ipc.removeAllListeners('ipcProvider-error');
ipc.removeAllListeners('ipcProvider-end');
ipc.removeAllListeners('ipcProvider-timeout');
ipc.removeAllListeners('ipcProvider-connect');
ipcRenderer.removeAllListeners('ipcProvider-error');
ipcRenderer.removeAllListeners('ipcProvider-end');
ipcRenderer.removeAllListeners('ipcProvider-timeout');
ipcRenderer.removeAllListeners('ipcProvider-connect');
}
},
/**
Expand All @@ -106,7 +106,7 @@ const ipcProviderWrapper = {
write(payload) {
// console.debug('ipcProviderWrapper: write payload');

ipc.send('ipcProvider-write', payload);
ipcRenderer.send('ipcProvider-write', payload);
},
/**
Write synchronous to the IPC connection through the backend
Expand All @@ -116,7 +116,7 @@ const ipcProviderWrapper = {
writeSync(payload) {
// console.debug('ipcProviderWrapper: write payload (sync)');

return ipc.sendSync('ipcProvider-writeSync', payload);
return ipcRenderer.sendSync('ipcProvider-writeSync', payload);
},

};
Expand Down
4 changes: 2 additions & 2 deletions modules/ipcCommunicator.js
Original file line number Diff line number Diff line change
Expand Up @@ -71,15 +71,15 @@ ipc.on('backendAction_windowMessageToOwner', (e, error, value) => {
const windowId = e.sender.getId();
const senderWindow = Windows.getById(windowId);

const mainWindow = Windows.getByType('main');

if (senderWindow.ownerId) {
const ownerWindow = Windows.getById(senderWindow.ownerId);
const mainWindow = Windows.getByType('main');

if (ownerWindow) {
ownerWindow.send('uiAction_windowMessage', senderWindow.type, error, value);
}

// send through the mainWindow to the webviews
if (mainWindow) {
mainWindow.send('uiAction_windowMessage', senderWindow.type, senderWindow.ownerId, error, value);
}
Expand Down
18 changes: 14 additions & 4 deletions modules/preloader/browser.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
@module preloader browser
*/
require('./include/common')('browser');
const { ipcRenderer: ipc, shell } = require('electron');
const mist = require('../mistAPI.js');
const { ipcRenderer } = require('electron');
const mist = require('./include/mistAPI.js');
const BigNumber = require('bignumber.js');
const ipcProviderWrapper = require('../ipc/ipcProviderWrapper.js');
const Web3 = require('web3');
Expand All @@ -12,10 +12,20 @@ require('./include/getMetaTags.js');
require('./include/setBasePath')('interface');

// notifiy the tab to store the webview id
ipc.sendToHost('setWebviewId');
ipcRenderer.sendToHost('setWebviewId');

// destroy the old socket
ipc.send('ipcProvider-destroy');
ipcRenderer.send('ipcProvider-destroy');

// Security
process.on('loaded',function () {
Object.freeze(window.JSON);
// Object.freeze(window.Function);
// Object.freeze(window.Function.prototype);
// Object.freeze(window.Array);
// Object.freeze(window.Array.prototype);
});


window.mist = mist();
window.BigNumber = BigNumber;
Expand Down
8 changes: 5 additions & 3 deletions modules/preloader/include/common.js
Original file line number Diff line number Diff line change
@@ -1,14 +1,16 @@
module.exports = (windowType) => {
const { ipcRenderer: ipc } = require('electron');
const { ipcRenderer, webFrame } = require('electron');

if (process.env.TEST_MODE) {
window.electronRequire = require;
}

require('./consoleLogCapture')(windowType);
// disable pinch zoom
webFrame.setZoomLevelLimits(1, 1);

require('./consoleLogCapture')(windowType); // !!!
require('./suppressWindowPrompt')();

// register with window manager
ipc.send('backendAction_setWindowId');
ipcRenderer.send('backendAction_setWindowId');
};
4 changes: 2 additions & 2 deletions modules/preloader/include/consoleLogCapture.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const { ipcRenderer: ipc } = require('electron');
const { ipcRenderer } = require('electron');


const extractLineNumberFromStack = function (stack) {
Expand Down Expand Up @@ -44,7 +44,7 @@ module.exports = function (windowId) {
origMethod.apply(console, args.concat([suffix]));

try {
ipc.send(
ipcRenderer.send(
'console_log',
windowId,
(method === 'log' ? 'info' : method),
Expand Down
Loading

0 comments on commit bf517a6

Please sign in to comment.