parent
c498814470
commit
c814f0a2b8
@ -1,4 +1,2 @@ |
||||
allFiredEvents |
||||
coverage.json |
||||
coverage/ |
||||
node_modules/ |
||||
|
File diff suppressed because one or more lines are too long
@ -0,0 +1,213 @@ |
||||
body, html { |
||||
margin:0; padding: 0; |
||||
height: 100%; |
||||
} |
||||
body { |
||||
font-family: Helvetica Neue, Helvetica, Arial; |
||||
font-size: 14px; |
||||
color:#333; |
||||
} |
||||
.small { font-size: 12px; } |
||||
*, *:after, *:before { |
||||
-webkit-box-sizing:border-box; |
||||
-moz-box-sizing:border-box; |
||||
box-sizing:border-box; |
||||
} |
||||
h1 { font-size: 20px; margin: 0;} |
||||
h2 { font-size: 14px; } |
||||
pre { |
||||
font: 12px/1.4 Consolas, "Liberation Mono", Menlo, Courier, monospace; |
||||
margin: 0; |
||||
padding: 0; |
||||
-moz-tab-size: 2; |
||||
-o-tab-size: 2; |
||||
tab-size: 2; |
||||
} |
||||
a { color:#0074D9; text-decoration:none; } |
||||
a:hover { text-decoration:underline; } |
||||
.strong { font-weight: bold; } |
||||
.space-top1 { padding: 10px 0 0 0; } |
||||
.pad2y { padding: 20px 0; } |
||||
.pad1y { padding: 10px 0; } |
||||
.pad2x { padding: 0 20px; } |
||||
.pad2 { padding: 20px; } |
||||
.pad1 { padding: 10px; } |
||||
.space-left2 { padding-left:55px; } |
||||
.space-right2 { padding-right:20px; } |
||||
.center { text-align:center; } |
||||
.clearfix { display:block; } |
||||
.clearfix:after { |
||||
content:''; |
||||
display:block; |
||||
height:0; |
||||
clear:both; |
||||
visibility:hidden; |
||||
} |
||||
.fl { float: left; } |
||||
@media only screen and (max-width:640px) { |
||||
.col3 { width:100%; max-width:100%; } |
||||
.hide-mobile { display:none!important; } |
||||
} |
||||
|
||||
.quiet { |
||||
color: #7f7f7f; |
||||
color: rgba(0,0,0,0.5); |
||||
} |
||||
.quiet a { opacity: 0.7; } |
||||
|
||||
.fraction { |
||||
font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; |
||||
font-size: 10px; |
||||
color: #555; |
||||
background: #E8E8E8; |
||||
padding: 4px 5px; |
||||
border-radius: 3px; |
||||
vertical-align: middle; |
||||
} |
||||
|
||||
div.path a:link, div.path a:visited { color: #333; } |
||||
table.coverage { |
||||
border-collapse: collapse; |
||||
margin: 10px 0 0 0; |
||||
padding: 0; |
||||
} |
||||
|
||||
table.coverage td { |
||||
margin: 0; |
||||
padding: 0; |
||||
vertical-align: top; |
||||
} |
||||
table.coverage td.line-count { |
||||
text-align: right; |
||||
padding: 0 5px 0 20px; |
||||
} |
||||
table.coverage td.line-coverage { |
||||
text-align: right; |
||||
padding-right: 10px; |
||||
min-width:20px; |
||||
} |
||||
|
||||
table.coverage td span.cline-any { |
||||
display: inline-block; |
||||
padding: 0 5px; |
||||
width: 100%; |
||||
} |
||||
.missing-if-branch { |
||||
display: inline-block; |
||||
margin-right: 5px; |
||||
border-radius: 3px; |
||||
position: relative; |
||||
padding: 0 4px; |
||||
background: #333; |
||||
color: yellow; |
||||
} |
||||
|
||||
.skip-if-branch { |
||||
display: none; |
||||
margin-right: 10px; |
||||
position: relative; |
||||
padding: 0 4px; |
||||
background: #ccc; |
||||
color: white; |
||||
} |
||||
.missing-if-branch .typ, .skip-if-branch .typ { |
||||
color: inherit !important; |
||||
} |
||||
.coverage-summary { |
||||
border-collapse: collapse; |
||||
width: 100%; |
||||
} |
||||
.coverage-summary tr { border-bottom: 1px solid #bbb; } |
||||
.keyline-all { border: 1px solid #ddd; } |
||||
.coverage-summary td, .coverage-summary th { padding: 10px; } |
||||
.coverage-summary tbody { border: 1px solid #bbb; } |
||||
.coverage-summary td { border-right: 1px solid #bbb; } |
||||
.coverage-summary td:last-child { border-right: none; } |
||||
.coverage-summary th { |
||||
text-align: left; |
||||
font-weight: normal; |
||||
white-space: nowrap; |
||||
} |
||||
.coverage-summary th.file { border-right: none !important; } |
||||
.coverage-summary th.pct { } |
||||
.coverage-summary th.pic, |
||||
.coverage-summary th.abs, |
||||
.coverage-summary td.pct, |
||||
.coverage-summary td.abs { text-align: right; } |
||||
.coverage-summary td.file { white-space: nowrap; } |
||||
.coverage-summary td.pic { min-width: 120px !important; } |
||||
.coverage-summary tfoot td { } |
||||
|
||||
.coverage-summary .sorter { |
||||
height: 10px; |
||||
width: 7px; |
||||
display: inline-block; |
||||
margin-left: 0.5em; |
||||
background: url(sort-arrow-sprite.png) no-repeat scroll 0 0 transparent; |
||||
} |
||||
.coverage-summary .sorted .sorter { |
||||
background-position: 0 -20px; |
||||
} |
||||
.coverage-summary .sorted-desc .sorter { |
||||
background-position: 0 -10px; |
||||
} |
||||
.status-line { height: 10px; } |
||||
/* dark red */ |
||||
.red.solid, .status-line.low, .low .cover-fill { background:#C21F39 } |
||||
.low .chart { border:1px solid #C21F39 } |
||||
/* medium red */ |
||||
.cstat-no, .fstat-no, .cbranch-no, .cbranch-no { background:#F6C6CE } |
||||
/* light red */ |
||||
.low, .cline-no { background:#FCE1E5 } |
||||
/* light green */ |
||||
.high, .cline-yes { background:rgb(230,245,208) } |
||||
/* medium green */ |
||||
.cstat-yes { background:rgb(161,215,106) } |
||||
/* dark green */ |
||||
.status-line.high, .high .cover-fill { background:rgb(77,146,33) } |
||||
.high .chart { border:1px solid rgb(77,146,33) } |
||||
/* dark yellow (gold) */ |
||||
.medium .chart { border:1px solid #f9cd0b; } |
||||
.status-line.medium, .medium .cover-fill { background: #f9cd0b; } |
||||
/* light yellow */ |
||||
.medium { background: #fff4c2; } |
||||
/* light gray */ |
||||
span.cline-neutral { background: #eaeaea; } |
||||
|
||||
.cbranch-no { background: yellow !important; color: #111; } |
||||
|
||||
.cstat-skip { background: #ddd; color: #111; } |
||||
.fstat-skip { background: #ddd; color: #111 !important; } |
||||
.cbranch-skip { background: #ddd !important; color: #111; } |
||||
|
||||
|
||||
.cover-fill, .cover-empty { |
||||
display:inline-block; |
||||
height: 12px; |
||||
} |
||||
.chart { |
||||
line-height: 0; |
||||
} |
||||
.cover-empty { |
||||
background: white; |
||||
} |
||||
.cover-full { |
||||
border-right: none !important; |
||||
} |
||||
pre.prettyprint { |
||||
border: none !important; |
||||
padding: 0 !important; |
||||
margin: 0 !important; |
||||
} |
||||
.com { color: #999 !important; } |
||||
.ignore-none { color: #999; font-weight: normal; } |
||||
|
||||
.wrapper { |
||||
min-height: 100%; |
||||
height: auto !important; |
||||
height: 100%; |
||||
margin: 0 auto -48px; |
||||
} |
||||
.footer, .push { |
||||
height: 48px; |
||||
} |
@ -0,0 +1,93 @@ |
||||
<!doctype html> |
||||
<html lang="en"> |
||||
<head> |
||||
<title>Code coverage report for All files</title> |
||||
<meta charset="utf-8" /> |
||||
<link rel="stylesheet" href="prettify.css" /> |
||||
<link rel="stylesheet" href="base.css" /> |
||||
<meta name="viewport" content="width=device-width, initial-scale=1"> |
||||
<style type='text/css'> |
||||
.coverage-summary .sorter { |
||||
background-image: url(sort-arrow-sprite.png); |
||||
} |
||||
</style> |
||||
</head> |
||||
<body> |
||||
<div class='wrapper'> |
||||
<div class='pad1'> |
||||
<h1> |
||||
/ |
||||
</h1> |
||||
<div class='clearfix'> |
||||
<div class='fl pad1y space-right2'> |
||||
<span class="strong">80.33% </span> |
||||
<span class="quiet">Statements</span> |
||||
<span class='fraction'>98/122</span> |
||||
</div> |
||||
<div class='fl pad1y space-right2'> |
||||
<span class="strong">71.74% </span> |
||||
<span class="quiet">Branches</span> |
||||
<span class='fraction'>33/46</span> |
||||
</div> |
||||
<div class='fl pad1y space-right2'> |
||||
<span class="strong">74.51% </span> |
||||
<span class="quiet">Functions</span> |
||||
<span class='fraction'>38/51</span> |
||||
</div> |
||||
<div class='fl pad1y space-right2'> |
||||
<span class="strong">84.21% </span> |
||||
<span class="quiet">Lines</span> |
||||
<span class='fraction'>96/114</span> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<div class='status-line high'></div> |
||||
<div class="pad1"> |
||||
<table class="coverage-summary"> |
||||
<thead> |
||||
<tr> |
||||
<th data-col="file" data-fmt="html" data-html="true" class="file">File</th> |
||||
<th data-col="pic" data-type="number" data-fmt="html" data-html="true" class="pic"></th> |
||||
<th data-col="statements" data-type="number" data-fmt="pct" class="pct">Statements</th> |
||||
<th data-col="statements_raw" data-type="number" data-fmt="html" class="abs"></th> |
||||
<th data-col="branches" data-type="number" data-fmt="pct" class="pct">Branches</th> |
||||
<th data-col="branches_raw" data-type="number" data-fmt="html" class="abs"></th> |
||||
<th data-col="functions" data-type="number" data-fmt="pct" class="pct">Functions</th> |
||||
<th data-col="functions_raw" data-type="number" data-fmt="html" class="abs"></th> |
||||
<th data-col="lines" data-type="number" data-fmt="pct" class="pct">Lines</th> |
||||
<th data-col="lines_raw" data-type="number" data-fmt="html" class="abs"></th> |
||||
</tr> |
||||
</thead> |
||||
<tbody><tr> |
||||
<td class="file high" data-value="originalContracts/"><a href="originalContracts/index.html">originalContracts/</a></td> |
||||
<td data-value="80.33" class="pic high"><div class="chart"><div class="cover-fill" style="width: 80%;"></div><div class="cover-empty" style="width:20%;"></div></div></td> |
||||
<td data-value="80.33" class="pct high">80.33%</td> |
||||
<td data-value="122" class="abs high">98/122</td> |
||||
<td data-value="71.74" class="pct medium">71.74%</td> |
||||
<td data-value="46" class="abs medium">33/46</td> |
||||
<td data-value="74.51" class="pct medium">74.51%</td> |
||||
<td data-value="51" class="abs medium">38/51</td> |
||||
<td data-value="84.21" class="pct high">84.21%</td> |
||||
<td data-value="114" class="abs high">96/114</td> |
||||
</tr> |
||||
|
||||
</tbody> |
||||
</table> |
||||
</div><div class='push'></div><!-- for sticky footer --> |
||||
</div><!-- /wrapper --> |
||||
<div class='footer quiet pad2 space-top1 center small'> |
||||
Code coverage |
||||
generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Mon Mar 27 2017 16:25:45 GMT-0700 (PDT) |
||||
</div> |
||||
</div> |
||||
<script src="prettify.js"></script> |
||||
<script> |
||||
window.onload = function () { |
||||
if (typeof prettyPrint === 'function') { |
||||
prettyPrint(); |
||||
} |
||||
}; |
||||
</script> |
||||
<script src="sorter.js"></script> |
||||
</body> |
||||
</html> |
@ -0,0 +1,137 @@ |
||||
<!doctype html> |
||||
<html lang="en"> |
||||
<head> |
||||
<title>Code coverage report for originalContracts/IdentityFactory.sol</title> |
||||
<meta charset="utf-8" /> |
||||
<link rel="stylesheet" href="../prettify.css" /> |
||||
<link rel="stylesheet" href="../base.css" /> |
||||
<meta name="viewport" content="width=device-width, initial-scale=1"> |
||||
<style type='text/css'> |
||||
.coverage-summary .sorter { |
||||
background-image: url(../sort-arrow-sprite.png); |
||||
} |
||||
</style> |
||||
</head> |
||||
<body> |
||||
<div class='wrapper'> |
||||
<div class='pad1'> |
||||
<h1> |
||||
<a href="../index.html">all files</a> / <a href="index.html">originalContracts/</a> IdentityFactory.sol |
||||
</h1> |
||||
<div class='clearfix'> |
||||
<div class='fl pad1y space-right2'> |
||||
<span class="strong">100% </span> |
||||
<span class="quiet">Statements</span> |
||||
<span class='fraction'>7/7</span> |
||||
</div> |
||||
<div class='fl pad1y space-right2'> |
||||
<span class="strong">100% </span> |
||||
<span class="quiet">Branches</span> |
||||
<span class='fraction'>0/0</span> |
||||
</div> |
||||
<div class='fl pad1y space-right2'> |
||||
<span class="strong">100% </span> |
||||
<span class="quiet">Functions</span> |
||||
<span class='fraction'>1/1</span> |
||||
</div> |
||||
<div class='fl pad1y space-right2'> |
||||
<span class="strong">100% </span> |
||||
<span class="quiet">Lines</span> |
||||
<span class='fraction'>7/7</span> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<div class='status-line high'></div> |
||||
<pre><table class="coverage"> |
||||
<tr><td class="line-count quiet">1 |
||||
2 |
||||
3 |
||||
4 |
||||
5 |
||||
6 |
||||
7 |
||||
8 |
||||
9 |
||||
10 |
||||
11 |
||||
12 |
||||
13 |
||||
14 |
||||
15 |
||||
16 |
||||
17 |
||||
18 |
||||
19 |
||||
20 |
||||
21 |
||||
22 |
||||
23 |
||||
24 |
||||
25</td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-yes">4×</span> |
||||
<span class="cline-any cline-yes">4×</span> |
||||
<span class="cline-any cline-yes">4×</span> |
||||
<span class="cline-any cline-yes">4×</span> |
||||
<span class="cline-any cline-yes">4×</span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-yes">4×</span> |
||||
<span class="cline-any cline-yes">4×</span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">pragma solidity ^0.4.4; |
||||
import "./RecoveryQuorum.sol"; |
||||
|
||||
contract IdentityFactory { |
||||
event IdentityCreated( |
||||
address indexed userKey, |
||||
address proxy, |
||||
address controller, |
||||
address recoveryQuorum); |
||||
|
||||
mapping(address => address) public senderToProxy; |
||||
|
||||
//cost ~2.4M gas |
||||
function CreateProxyWithControllerAndRecovery(address userKey, address[] delegates, uint longTimeLock, uint shortTimeLock) { |
||||
Proxy proxy = new Proxy(); |
||||
RecoverableController controller = new RecoverableController(proxy, userKey, longTimeLock, shortTimeLock); |
||||
proxy.transfer(controller); |
||||
RecoveryQuorum recoveryQuorum = new RecoveryQuorum(controller, delegates); |
||||
controller.changeRecoveryFromRecovery(recoveryQuorum); |
||||
|
||||
IdentityCreated(userKey, proxy, controller, recoveryQuorum); |
||||
senderToProxy[msg.sender] = proxy; |
||||
} |
||||
} |
||||
</pre></td></tr> |
||||
</table></pre> |
||||
<div class='push'></div><!-- for sticky footer --> |
||||
</div><!-- /wrapper --> |
||||
<div class='footer quiet pad2 space-top1 center small'> |
||||
Code coverage |
||||
generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Mon Mar 27 2017 16:25:45 GMT-0700 (PDT) |
||||
</div> |
||||
</div> |
||||
<script src="../prettify.js"></script> |
||||
<script> |
||||
window.onload = function () { |
||||
if (typeof prettyPrint === 'function') { |
||||
prettyPrint(); |
||||
} |
||||
}; |
||||
</script> |
||||
<script src="../sorter.js"></script> |
||||
</body> |
||||
</html> |
@ -0,0 +1,134 @@ |
||||
<!doctype html> |
||||
<html lang="en"> |
||||
<head> |
||||
<title>Code coverage report for originalContracts/IdentityFactoryWithRecoveryKey.sol</title> |
||||
<meta charset="utf-8" /> |
||||
<link rel="stylesheet" href="../prettify.css" /> |
||||
<link rel="stylesheet" href="../base.css" /> |
||||
<meta name="viewport" content="width=device-width, initial-scale=1"> |
||||
<style type='text/css'> |
||||
.coverage-summary .sorter { |
||||
background-image: url(../sort-arrow-sprite.png); |
||||
} |
||||
</style> |
||||
</head> |
||||
<body> |
||||
<div class='wrapper'> |
||||
<div class='pad1'> |
||||
<h1> |
||||
<a href="../index.html">all files</a> / <a href="index.html">originalContracts/</a> IdentityFactoryWithRecoveryKey.sol |
||||
</h1> |
||||
<div class='clearfix'> |
||||
<div class='fl pad1y space-right2'> |
||||
<span class="strong">100% </span> |
||||
<span class="quiet">Statements</span> |
||||
<span class='fraction'>6/6</span> |
||||
</div> |
||||
<div class='fl pad1y space-right2'> |
||||
<span class="strong">100% </span> |
||||
<span class="quiet">Branches</span> |
||||
<span class='fraction'>0/0</span> |
||||
</div> |
||||
<div class='fl pad1y space-right2'> |
||||
<span class="strong">100% </span> |
||||
<span class="quiet">Functions</span> |
||||
<span class='fraction'>1/1</span> |
||||
</div> |
||||
<div class='fl pad1y space-right2'> |
||||
<span class="strong">100% </span> |
||||
<span class="quiet">Lines</span> |
||||
<span class='fraction'>6/6</span> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<div class='status-line high'></div> |
||||
<pre><table class="coverage"> |
||||
<tr><td class="line-count quiet">1 |
||||
2 |
||||
3 |
||||
4 |
||||
5 |
||||
6 |
||||
7 |
||||
8 |
||||
9 |
||||
10 |
||||
11 |
||||
12 |
||||
13 |
||||
14 |
||||
15 |
||||
16 |
||||
17 |
||||
18 |
||||
19 |
||||
20 |
||||
21 |
||||
22 |
||||
23 |
||||
24</td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-yes">1×</span> |
||||
<span class="cline-any cline-yes">1×</span> |
||||
<span class="cline-any cline-yes">1×</span> |
||||
<span class="cline-any cline-yes">1×</span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-yes">1×</span> |
||||
<span class="cline-any cline-yes">1×</span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">pragma solidity ^0.4.4; |
||||
import "./RecoverableController.sol"; |
||||
|
||||
contract IdentityFactoryWithRecoveryKey { |
||||
event IdentityCreated( |
||||
address indexed userKey, |
||||
address proxy, |
||||
address controller, |
||||
address recoveryKey); |
||||
|
||||
mapping(address => address) public senderToProxy; |
||||
|
||||
//cost ~2.4M gas |
||||
function CreateProxyWithControllerAndRecoveryKey(address userKey, address _recoveryKey, uint longTimeLock, uint shortTimeLock) { |
||||
Proxy proxy = new Proxy(); |
||||
RecoverableController controller = new RecoverableController(proxy, userKey, longTimeLock, shortTimeLock); |
||||
proxy.transfer(controller); |
||||
controller.changeRecoveryFromRecovery(_recoveryKey); |
||||
|
||||
IdentityCreated(userKey, proxy, controller, _recoveryKey); |
||||
senderToProxy[msg.sender] = proxy; |
||||
} |
||||
} |
||||
</pre></td></tr> |
||||
</table></pre> |
||||
<div class='push'></div><!-- for sticky footer --> |
||||
</div><!-- /wrapper --> |
||||
<div class='footer quiet pad2 space-top1 center small'> |
||||
Code coverage |
||||
generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Mon Mar 27 2017 16:25:45 GMT-0700 (PDT) |
||||
</div> |
||||
</div> |
||||
<script src="../prettify.js"></script> |
||||
<script> |
||||
window.onload = function () { |
||||
if (typeof prettyPrint === 'function') { |
||||
prettyPrint(); |
||||
} |
||||
}; |
||||
</script> |
||||
<script src="../sorter.js"></script> |
||||
</body> |
||||
</html> |
@ -0,0 +1,110 @@ |
||||
<!doctype html> |
||||
<html lang="en"> |
||||
<head> |
||||
<title>Code coverage report for originalContracts/Lib1.sol</title> |
||||
<meta charset="utf-8" /> |
||||
<link rel="stylesheet" href="../prettify.css" /> |
||||
<link rel="stylesheet" href="../base.css" /> |
||||
<meta name="viewport" content="width=device-width, initial-scale=1"> |
||||
<style type='text/css'> |
||||
.coverage-summary .sorter { |
||||
background-image: url(../sort-arrow-sprite.png); |
||||
} |
||||
</style> |
||||
</head> |
||||
<body> |
||||
<div class='wrapper'> |
||||
<div class='pad1'> |
||||
<h1> |
||||
<a href="../index.html">all files</a> / <a href="index.html">originalContracts/</a> Lib1.sol |
||||
</h1> |
||||
<div class='clearfix'> |
||||
<div class='fl pad1y space-right2'> |
||||
<span class="strong">42.86% </span> |
||||
<span class="quiet">Statements</span> |
||||
<span class='fraction'>3/7</span> |
||||
</div> |
||||
<div class='fl pad1y space-right2'> |
||||
<span class="strong">0% </span> |
||||
<span class="quiet">Branches</span> |
||||
<span class='fraction'>0/2</span> |
||||
</div> |
||||
<div class='fl pad1y space-right2'> |
||||
<span class="strong">50% </span> |
||||
<span class="quiet">Functions</span> |
||||
<span class='fraction'>1/2</span> |
||||
</div> |
||||
<div class='fl pad1y space-right2'> |
||||
<span class="strong">57.14% </span> |
||||
<span class="quiet">Lines</span> |
||||
<span class='fraction'>4/7</span> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<div class='status-line low'></div> |
||||
<pre><table class="coverage"> |
||||
<tr><td class="line-count quiet">1 |
||||
2 |
||||
3 |
||||
4 |
||||
5 |
||||
6 |
||||
7 |
||||
8 |
||||
9 |
||||
10 |
||||
11 |
||||
12 |
||||
13 |
||||
14 |
||||
15 |
||||
16</td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-no"> </span> |
||||
<span class="cline-any cline-no"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-no"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-yes">10×</span> |
||||
<span class="cline-any cline-yes">10×</span> |
||||
<span class="cline-any cline-yes">10×</span> |
||||
<span class="cline-any cline-yes">10×</span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">pragma solidity ^0.4.4; |
||||
library Lib1{ |
||||
<span class="fstat-no" title="function not covered" > function findAddress(address a, address[] storage arry) returns (int</span>){ |
||||
<span class="cstat-no" title="statement not covered" > for (uint i = 0 ; i < arry.length ; i++){</span> |
||||
<span class="cstat-no" title="statement not covered" > if(arry[i] == a){<span class="cstat-no" title="statement not covered" >return int(i);</span>}</span> |
||||
} |
||||
<span class="cstat-no" title="statement not covered" > return -1;</span> |
||||
} |
||||
function removeAddress(uint i, address[] storage arry){ |
||||
uint lengthMinusOne = arry.length - 1; |
||||
arry[i] = arry[lengthMinusOne]; |
||||
delete arry[lengthMinusOne]; |
||||
arry.length = lengthMinusOne; |
||||
} |
||||
} |
||||
</pre></td></tr> |
||||
</table></pre> |
||||
<div class='push'></div><!-- for sticky footer --> |
||||
</div><!-- /wrapper --> |
||||
<div class='footer quiet pad2 space-top1 center small'> |
||||
Code coverage |
||||
generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Mon Mar 27 2017 16:25:45 GMT-0700 (PDT) |
||||
</div> |
||||
</div> |
||||
<script src="../prettify.js"></script> |
||||
<script> |
||||
window.onload = function () { |
||||
if (typeof prettyPrint === 'function') { |
||||
prettyPrint(); |
||||
} |
||||
}; |
||||
</script> |
||||
<script src="../sorter.js"></script> |
||||
</body> |
||||
</html> |
@ -0,0 +1,206 @@ |
||||
<!doctype html> |
||||
<html lang="en"> |
||||
<head> |
||||
<title>Code coverage report for originalContracts/MetaTxController.sol</title> |
||||
<meta charset="utf-8" /> |
||||
<link rel="stylesheet" href="../prettify.css" /> |
||||
<link rel="stylesheet" href="../base.css" /> |
||||
<meta name="viewport" content="width=device-width, initial-scale=1"> |
||||
<style type='text/css'> |
||||
.coverage-summary .sorter { |
||||
background-image: url(../sort-arrow-sprite.png); |
||||
} |
||||
</style> |
||||
</head> |
||||
<body> |
||||
<div class='wrapper'> |
||||
<div class='pad1'> |
||||
<h1> |
||||
<a href="../index.html">all files</a> / <a href="index.html">originalContracts/</a> MetaTxController.sol |
||||
</h1> |
||||
<div class='clearfix'> |
||||
<div class='fl pad1y space-right2'> |
||||
<span class="strong">0% </span> |
||||
<span class="quiet">Statements</span> |
||||
<span class='fraction'>0/14</span> |
||||
</div> |
||||
<div class='fl pad1y space-right2'> |
||||
<span class="strong">0% </span> |
||||
<span class="quiet">Branches</span> |
||||
<span class='fraction'>0/4</span> |
||||
</div> |
||||
<div class='fl pad1y space-right2'> |
||||
<span class="strong">0% </span> |
||||
<span class="quiet">Functions</span> |
||||
<span class='fraction'>0/6</span> |
||||
</div> |
||||
<div class='fl pad1y space-right2'> |
||||
<span class="strong">0% </span> |
||||
<span class="quiet">Lines</span> |
||||
<span class='fraction'>0/13</span> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<div class='status-line low'></div> |
||||
<pre><table class="coverage"> |
||||
<tr><td class="line-count quiet">1 |
||||
2 |
||||
3 |
||||
4 |
||||
5 |
||||
6 |
||||
7 |
||||
8 |
||||
9 |
||||
10 |
||||
11 |
||||
12 |
||||
13 |
||||
14 |
||||
15 |
||||
16 |
||||
17 |
||||
18 |
||||
19 |
||||
20 |
||||
21 |
||||
22 |
||||
23 |
||||
24 |
||||
25 |
||||
26 |
||||
27 |
||||
28 |
||||
29 |
||||
30 |
||||
31 |
||||
32 |
||||
33 |
||||
34 |
||||
35 |
||||
36 |
||||
37 |
||||
38 |
||||
39 |
||||
40 |
||||
41 |
||||
42 |
||||
43 |
||||
44 |
||||
45 |
||||
46 |
||||
47 |
||||
48</td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-no"> </span> |
||||
<span class="cline-any cline-no"> </span> |
||||
<span class="cline-any cline-no"> </span> |
||||
<span class="cline-any cline-no"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-no"> </span> |
||||
<span class="cline-any cline-no"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-no"> </span> |
||||
<span class="cline-any cline-no"> </span> |
||||
<span class="cline-any cline-no"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-no"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-no"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-no"> </span> |
||||
<span class="cline-any cline-no"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">pragma solidity ^0.4.4; |
||||
import "./Proxy.sol"; |
||||
contract MetaTxController { |
||||
|
||||
Proxy public proxy; |
||||
address public userKey; |
||||
address public adminKey; |
||||
uint public referenceNonce; |
||||
|
||||
<span class="fstat-no" title="function not covered" > modifier only(address key) {</span> <span class="cstat-no" title="statement not covered" >if (msg.sender == key) _;</span>} |
||||
|
||||
<span class="fstat-no" title="function not covered" > function MetaTxController(address proxyAddress, address _userKey, address _adminKey) {</span> |
||||
<span class="cstat-no" title="statement not covered" > proxy = Proxy(proxyAddress)</span>; |
||||
<span class="cstat-no" title="statement not covered" > userKey = _userKey</span>; |
||||
<span class="cstat-no" title="statement not covered" > adminKey = _adminKey</span>; |
||||
<span class="cstat-no" title="statement not covered" > referenceNonce = 0</span>; |
||||
} |
||||
|
||||
<span class="fstat-no" title="function not covered" > function sendTx(address destination, uint value, bytes data, uint nonce, uint8 v, bytes32 r, bytes32 s) {</span> |
||||
|
||||
<span class="cstat-no" title="statement not covered" > var h = sha3(destination, bytes32(value), bytes32(nonce), data);</span> |
||||
<span class="cstat-no" title="statement not covered" > var addressFromSig = ecrecover(h,v,r,s);</span> |
||||
|
||||
<span class="cstat-no" title="statement not covered" > if (nonce == referenceNonce && addressFromSig == userKey) {</span> |
||||
<span class="cstat-no" title="statement not covered" > proxy.forward(destination, value, data)</span>; |
||||
<span class="cstat-no" title="statement not covered" > referenceNonce += 1</span>; |
||||
} |
||||
} |
||||
|
||||
<span class="fstat-no" title="function not covered" > function updateUserKey(address newUserKey) only(adminKey) {</span> |
||||
<span class="cstat-no" title="statement not covered" > userKey = newUserKey</span>; |
||||
} |
||||
|
||||
<span class="fstat-no" title="function not covered" > function updateAdminKey(address newAdminKey) only(adminKey) {</span> |
||||
<span class="cstat-no" title="statement not covered" > adminKey = newAdminKey</span>; |
||||
} |
||||
|
||||
<span class="fstat-no" title="function not covered" > function transferOwnership(address newOwner) only(adminKey) {</span> |
||||
// This will end the functionality of the Ownership contract |
||||
// since it's no longer allowed to forward transactions |
||||
// to the proxy |
||||
<span class="cstat-no" title="statement not covered" > proxy.transfer(newOwner)</span>; |
||||
<span class="cstat-no" title="statement not covered" > suicide(newOwner)</span>; |
||||
} |
||||
|
||||
} |
||||
|
||||
</pre></td></tr> |
||||
</table></pre> |
||||
<div class='push'></div><!-- for sticky footer --> |
||||
</div><!-- /wrapper --> |
||||
<div class='footer quiet pad2 space-top1 center small'> |
||||
Code coverage |
||||
generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Mon Mar 27 2017 16:25:45 GMT-0700 (PDT) |
||||
</div> |
||||
</div> |
||||
<script src="../prettify.js"></script> |
||||
<script> |
||||
window.onload = function () { |
||||
if (typeof prettyPrint === 'function') { |
||||
prettyPrint(); |
||||
} |
||||
}; |
||||
</script> |
||||
<script src="../sorter.js"></script> |
||||
</body> |
||||
</html> |
@ -0,0 +1,116 @@ |
||||
<!doctype html> |
||||
<html lang="en"> |
||||
<head> |
||||
<title>Code coverage report for originalContracts/Owned.sol</title> |
||||
<meta charset="utf-8" /> |
||||
<link rel="stylesheet" href="../prettify.css" /> |
||||
<link rel="stylesheet" href="../base.css" /> |
||||
<meta name="viewport" content="width=device-width, initial-scale=1"> |
||||
<style type='text/css'> |
||||
.coverage-summary .sorter { |
||||
background-image: url(../sort-arrow-sprite.png); |
||||
} |
||||
</style> |
||||
</head> |
||||
<body> |
||||
<div class='wrapper'> |
||||
<div class='pad1'> |
||||
<h1> |
||||
<a href="../index.html">all files</a> / <a href="index.html">originalContracts/</a> Owned.sol |
||||
</h1> |
||||
<div class='clearfix'> |
||||
<div class='fl pad1y space-right2'> |
||||
<span class="strong">0% </span> |
||||
<span class="quiet">Statements</span> |
||||
<span class='fraction'>0/5</span> |
||||
</div> |
||||
<div class='fl pad1y space-right2'> |
||||
<span class="strong">0% </span> |
||||
<span class="quiet">Branches</span> |
||||
<span class='fraction'>0/4</span> |
||||
</div> |
||||
<div class='fl pad1y space-right2'> |
||||
<span class="strong">0% </span> |
||||
<span class="quiet">Functions</span> |
||||
<span class='fraction'>0/5</span> |
||||
</div> |
||||
<div class='fl pad1y space-right2'> |
||||
<span class="strong">0% </span> |
||||
<span class="quiet">Lines</span> |
||||
<span class='fraction'>0/2</span> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<div class='status-line low'></div> |
||||
<pre><table class="coverage"> |
||||
<tr><td class="line-count quiet">1 |
||||
2 |
||||
3 |
||||
4 |
||||
5 |
||||
6 |
||||
7 |
||||
8 |
||||
9 |
||||
10 |
||||
11 |
||||
12 |
||||
13 |
||||
14 |
||||
15 |
||||
16 |
||||
17 |
||||
18</td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-no"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-no"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">// A base Owned contract |
||||
pragma solidity ^0.4.4; |
||||
contract Owned { |
||||
address public owner; |
||||
<span class="fstat-no" title="function not covered" > modifier onlyOwner(</span>){ <span class="cstat-no" title="statement not covered" >if (isOwner(msg.sender)) _;</span> } |
||||
<span class="fstat-no" title="function not covered" > modifier ifOwner(address sender)</span> { <span class="cstat-no" title="statement not covered" >if(isOwner(sender)) _;</span> } |
||||
|
||||
<span class="fstat-no" title="function not covered" > function Owned(</span>){ |
||||
<span class="cstat-no" title="statement not covered" > owner = msg.sender</span>; |
||||
} |
||||
|
||||
<span class="fstat-no" title="function not covered" > function isOwner(address addr) public returns(bool)</span> { <span class="cstat-no" title="statement not covered" >return addr == owner;</span> } |
||||
|
||||
<span class="fstat-no" title="function not covered" > function transfer(address _owner) onlyOwner</span> { |
||||
<span class="cstat-no" title="statement not covered" > owner = _owner</span>; |
||||
} |
||||
} |
||||
</pre></td></tr> |
||||
</table></pre> |
||||
<div class='push'></div><!-- for sticky footer --> |
||||
</div><!-- /wrapper --> |
||||
<div class='footer quiet pad2 space-top1 center small'> |
||||
Code coverage |
||||
generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Mon Mar 27 2017 16:25:45 GMT-0700 (PDT) |
||||
</div> |
||||
</div> |
||||
<script src="../prettify.js"></script> |
||||
<script> |
||||
window.onload = function () { |
||||
if (typeof prettyPrint === 'function') { |
||||
prettyPrint(); |
||||
} |
||||
}; |
||||
</script> |
||||
<script src="../sorter.js"></script> |
||||
</body> |
||||
</html> |
@ -0,0 +1,200 @@ |
||||
<!doctype html> |
||||
<html lang="en"> |
||||
<head> |
||||
<title>Code coverage report for originalContracts/Proxy.sol</title> |
||||
<meta charset="utf-8" /> |
||||
<link rel="stylesheet" href="../prettify.css" /> |
||||
<link rel="stylesheet" href="../base.css" /> |
||||
<meta name="viewport" content="width=device-width, initial-scale=1"> |
||||
<style type='text/css'> |
||||
.coverage-summary .sorter { |
||||
background-image: url(../sort-arrow-sprite.png); |
||||
} |
||||
</style> |
||||
</head> |
||||
<body> |
||||
<div class='wrapper'> |
||||
<div class='pad1'> |
||||
<h1> |
||||
<a href="../index.html">all files</a> / <a href="index.html">originalContracts/</a> Proxy.sol |
||||
</h1> |
||||
<div class='clearfix'> |
||||
<div class='fl pad1y space-right2'> |
||||
<span class="strong">88.89% </span> |
||||
<span class="quiet">Statements</span> |
||||
<span class='fraction'>8/9</span> |
||||
</div> |
||||
<div class='fl pad1y space-right2'> |
||||
<span class="strong">66.67% </span> |
||||
<span class="quiet">Branches</span> |
||||
<span class='fraction'>4/6</span> |
||||
</div> |
||||
<div class='fl pad1y space-right2'> |
||||
<span class="strong">85.71% </span> |
||||
<span class="quiet">Functions</span> |
||||
<span class='fraction'>6/7</span> |
||||
</div> |
||||
<div class='fl pad1y space-right2'> |
||||
<span class="strong">100% </span> |
||||
<span class="quiet">Lines</span> |
||||
<span class='fraction'>6/6</span> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<div class='status-line high'></div> |
||||
<pre><table class="coverage"> |
||||
<tr><td class="line-count quiet">1 |
||||
2 |
||||
3 |
||||
4 |
||||
5 |
||||
6 |
||||
7 |
||||
8 |
||||
9 |
||||
10 |
||||
11 |
||||
12 |
||||
13 |
||||
14 |
||||
15 |
||||
16 |
||||
17 |
||||
18 |
||||
19 |
||||
20 |
||||
21 |
||||
22 |
||||
23 |
||||
24 |
||||
25 |
||||
26 |
||||
27 |
||||
28 |
||||
29 |
||||
30 |
||||
31 |
||||
32 |
||||
33 |
||||
34 |
||||
35 |
||||
36 |
||||
37 |
||||
38 |
||||
39 |
||||
40 |
||||
41 |
||||
42 |
||||
43 |
||||
44 |
||||
45 |
||||
46</td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-yes">2×</span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-yes">7×</span> |
||||
<span class="cline-any cline-yes">1×</span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-yes">6×</span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-yes">10×</span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-yes">12×</span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">// The core proxy facade |
||||
// - is owned by a user or implementation contract |
||||
// - only forwards transactions for its owner |
||||
pragma solidity ^0.4.4; |
||||
|
||||
contract Proxy { |
||||
event Forwarded ( |
||||
address indexed destination, |
||||
uint value, |
||||
bytes data |
||||
); |
||||
event Received ( |
||||
address indexed sender, |
||||
uint value |
||||
); |
||||
|
||||
function () payable { |
||||
Received(msg.sender, msg.value); |
||||
} |
||||
|
||||
function forward(address destination, uint value, bytes data) onlyOwner { |
||||
// If a contract tries to CALL or CREATE a contract with either |
||||
// (i) insufficient balance, or (ii) stack depth already at maximum (1024), |
||||
// the sub-execution and transfer do not occur at all, no gas gets consumed, and 0 is added to the stack. |
||||
// see: https://github.com/ethereum/wiki/wiki/Subtleties#exceptional-conditions |
||||
if (!destination.call.value(value)(data)) { |
||||
throw; |
||||
} |
||||
Forwarded(destination, value, data); |
||||
} |
||||
|
||||
address public owner; |
||||
modifier onlyOwner(){ if (isOwner(msg.sender)) _; } |
||||
<span class="fstat-no" title="function not covered" > modifier ifOwner(address sender)</span> { <span class="cstat-no" title="statement not covered" >if(isOwner(sender)) _;</span> } |
||||
|
||||
function Proxy(){ |
||||
owner = msg.sender; |
||||
} |
||||
|
||||
function isOwner(address addr) public returns(bool) { return addr == owner; } |
||||
|
||||
function transfer(address _owner) onlyOwner { |
||||
owner = _owner; |
||||
} |
||||
} |
||||
</pre></td></tr> |
||||
</table></pre> |
||||
<div class='push'></div><!-- for sticky footer --> |
||||
</div><!-- /wrapper --> |
||||
<div class='footer quiet pad2 space-top1 center small'> |
||||
Code coverage |
||||
generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Mon Mar 27 2017 16:25:45 GMT-0700 (PDT) |
||||
</div> |
||||
</div> |
||||
<script src="../prettify.js"></script> |
||||
<script> |
||||
window.onload = function () { |
||||
if (typeof prettyPrint === 'function') { |
||||
prettyPrint(); |
||||
} |
||||
}; |
||||
</script> |
||||
<script src="../sorter.js"></script> |
||||
</body> |
||||
</html> |
@ -0,0 +1,314 @@ |
||||
<!doctype html> |
||||
<html lang="en"> |
||||
<head> |
||||
<title>Code coverage report for originalContracts/RecoverableController.sol</title> |
||||
<meta charset="utf-8" /> |
||||
<link rel="stylesheet" href="../prettify.css" /> |
||||
<link rel="stylesheet" href="../base.css" /> |
||||
<meta name="viewport" content="width=device-width, initial-scale=1"> |
||||
<style type='text/css'> |
||||
.coverage-summary .sorter { |
||||
background-image: url(../sort-arrow-sprite.png); |
||||
} |
||||
</style> |
||||
</head> |
||||
<body> |
||||
<div class='wrapper'> |
||||
<div class='pad1'> |
||||
<h1> |
||||
<a href="../index.html">all files</a> / <a href="index.html">originalContracts/</a> RecoverableController.sol |
||||
</h1> |
||||
<div class='clearfix'> |
||||
<div class='fl pad1y space-right2'> |
||||
<span class="strong">100% </span> |
||||
<span class="quiet">Statements</span> |
||||
<span class='fraction'>28/28</span> |
||||
</div> |
||||
<div class='fl pad1y space-right2'> |
||||
<span class="strong">100% </span> |
||||
<span class="quiet">Branches</span> |
||||
<span class='fraction'>10/10</span> |
||||
</div> |
||||
<div class='fl pad1y space-right2'> |
||||
<span class="strong">100% </span> |
||||
<span class="quiet">Functions</span> |
||||
<span class='fraction'>12/12</span> |
||||
</div> |
||||
<div class='fl pad1y space-right2'> |
||||
<span class="strong">100% </span> |
||||
<span class="quiet">Lines</span> |
||||
<span class='fraction'>28/28</span> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<div class='status-line high'></div> |
||||
<pre><table class="coverage"> |
||||
<tr><td class="line-count quiet">1 |
||||
2 |
||||
3 |
||||
4 |
||||
5 |
||||
6 |
||||
7 |
||||
8 |
||||
9 |
||||
10 |
||||
11 |
||||
12 |
||||
13 |
||||
14 |
||||
15 |
||||
16 |
||||
17 |
||||
18 |
||||
19 |
||||
20 |
||||
21 |
||||
22 |
||||
23 |
||||
24 |
||||
25 |
||||
26 |
||||
27 |
||||
28 |
||||
29 |
||||
30 |
||||
31 |
||||
32 |
||||
33 |
||||
34 |
||||
35 |
||||
36 |
||||
37 |
||||
38 |
||||
39 |
||||
40 |
||||
41 |
||||
42 |
||||
43 |
||||
44 |
||||
45 |
||||
46 |
||||
47 |
||||
48 |
||||
49 |
||||
50 |
||||
51 |
||||
52 |
||||
53 |
||||
54 |
||||
55 |
||||
56 |
||||
57 |
||||
58 |
||||
59 |
||||
60 |
||||
61 |
||||
62 |
||||
63 |
||||
64 |
||||
65 |
||||
66 |
||||
67 |
||||
68 |
||||
69 |
||||
70 |
||||
71 |
||||
72 |
||||
73 |
||||
74 |
||||
75 |
||||
76 |
||||
77 |
||||
78 |
||||
79 |
||||
80 |
||||
81 |
||||
82 |
||||
83 |
||||
84</td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-yes">12×</span> |
||||
<span class="cline-any cline-yes">12×</span> |
||||
<span class="cline-any cline-yes">12×</span> |
||||
<span class="cline-any cline-yes">12×</span> |
||||
<span class="cline-any cline-yes">12×</span> |
||||
<span class="cline-any cline-yes">12×</span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-yes">4×</span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-yes">1×</span> |
||||
<span class="cline-any cline-yes">1×</span> |
||||
<span class="cline-any cline-yes">1×</span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-yes">2×</span> |
||||
<span class="cline-any cline-yes">1×</span> |
||||
<span class="cline-any cline-yes">1×</span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-yes">1×</span> |
||||
<span class="cline-any cline-yes">1×</span> |
||||
<span class="cline-any cline-yes">1×</span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-yes">2×</span> |
||||
<span class="cline-any cline-yes">1×</span> |
||||
<span class="cline-any cline-yes">1×</span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-yes">1×</span> |
||||
<span class="cline-any cline-yes">1×</span> |
||||
<span class="cline-any cline-yes">1×</span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-yes">2×</span> |
||||
<span class="cline-any cline-yes">1×</span> |
||||
<span class="cline-any cline-yes">1×</span> |
||||
<span class="cline-any cline-yes">1×</span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-yes">7×</span> |
||||
<span class="cline-any cline-yes">7×</span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">pragma solidity ^0.4.4; |
||||
import "./Proxy.sol"; |
||||
|
||||
contract RecoverableController { |
||||
uint public version; |
||||
Proxy public proxy; |
||||
|
||||
address public userKey; |
||||
address public proposedUserKey; |
||||
uint public proposedUserKeyPendingUntil; |
||||
|
||||
address public recoveryKey; |
||||
address public proposedRecoveryKey; |
||||
uint public proposedRecoveryKeyPendingUntil; |
||||
|
||||
address public proposedController; |
||||
uint public proposedControllerPendingUntil; |
||||
|
||||
uint public shortTimeLock;// use 900 for 15 minutes |
||||
uint public longTimeLock; // use 259200 for 3 days |
||||
|
||||
event RecoveryEvent(string action, address initiatedBy); |
||||
|
||||
modifier onlyUserKey() { if (msg.sender == userKey) _; } |
||||
modifier onlyRecoveryKey() { if (msg.sender == recoveryKey) _; } |
||||
|
||||
function RecoverableController(address proxyAddress, address _userKey, uint _longTimeLock, uint _shortTimeLock) { |
||||
version = 1; |
||||
proxy = Proxy(proxyAddress); |
||||
userKey = _userKey; |
||||
shortTimeLock = _shortTimeLock; |
||||
longTimeLock = _longTimeLock; |
||||
recoveryKey = msg.sender; |
||||
} |
||||
|
||||
function forward(address destination, uint value, bytes data) onlyUserKey { |
||||
proxy.forward(destination, value, data); |
||||
} |
||||
//pass 0x0 to cancel |
||||
function signRecoveryChange(address _proposedRecoveryKey) onlyUserKey{ |
||||
proposedRecoveryKeyPendingUntil = now + longTimeLock; |
||||
proposedRecoveryKey = _proposedRecoveryKey; |
||||
RecoveryEvent("signRecoveryChange", msg.sender); |
||||
} |
||||
function changeRecovery() { |
||||
if(proposedRecoveryKeyPendingUntil < now && proposedRecoveryKey != 0x0){ |
||||
recoveryKey = proposedRecoveryKey; |
||||
delete proposedRecoveryKey; |
||||
} |
||||
} |
||||
//pass 0x0 to cancel |
||||
function signControllerChange(address _proposedController) onlyUserKey{ |
||||
proposedControllerPendingUntil = now + longTimeLock; |
||||
proposedController = _proposedController; |
||||
RecoveryEvent("signControllerChange", msg.sender); |
||||
} |
||||
function changeController() { |
||||
if(proposedControllerPendingUntil < now && proposedController != 0x0){ |
||||
proxy.transfer(proposedController); |
||||
suicide(proposedController); |
||||
} |
||||
} |
||||
//pass 0x0 to cancel |
||||
function signUserKeyChange(address _proposedUserKey) onlyUserKey{ |
||||
proposedUserKeyPendingUntil = now + shortTimeLock; |
||||
proposedUserKey = _proposedUserKey; |
||||
RecoveryEvent("signUserKeyChange", msg.sender); |
||||
} |
||||
function changeUserKey(){ |
||||
if(proposedUserKeyPendingUntil < now && proposedUserKey != 0x0){ |
||||
userKey = proposedUserKey; |
||||
delete proposedUserKey; |
||||
RecoveryEvent("changeUserKey", msg.sender); |
||||
} |
||||
} |
||||
|
||||
function changeRecoveryFromRecovery(address _recoveryKey) onlyRecoveryKey{ recoveryKey = _recoveryKey; } |
||||
function changeUserKeyFromRecovery(address _userKey) onlyRecoveryKey{ |
||||
delete proposedUserKey; |
||||
userKey = _userKey; |
||||
} |
||||
} |
||||
|
||||
</pre></td></tr> |
||||
</table></pre> |
||||
<div class='push'></div><!-- for sticky footer --> |
||||
</div><!-- /wrapper --> |
||||
<div class='footer quiet pad2 space-top1 center small'> |
||||
Code coverage |
||||
generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Mon Mar 27 2017 16:25:45 GMT-0700 (PDT) |
||||
</div> |
||||
</div> |
||||
<script src="../prettify.js"></script> |
||||
<script> |
||||
window.onload = function () { |
||||
if (typeof prettyPrint === 'function') { |
||||
prettyPrint(); |
||||
} |
||||
}; |
||||
</script> |
||||
<script src="../sorter.js"></script> |
||||
</body> |
||||
</html> |
@ -0,0 +1,407 @@ |
||||
<!doctype html> |
||||
<html lang="en"> |
||||
<head> |
||||
<title>Code coverage report for originalContracts/RecoveryQuorum.sol</title> |
||||
<meta charset="utf-8" /> |
||||
<link rel="stylesheet" href="../prettify.css" /> |
||||
<link rel="stylesheet" href="../base.css" /> |
||||
<meta name="viewport" content="width=device-width, initial-scale=1"> |
||||
<style type='text/css'> |
||||
.coverage-summary .sorter { |
||||
background-image: url(../sort-arrow-sprite.png); |
||||
} |
||||
</style> |
||||
</head> |
||||
<body> |
||||
<div class='wrapper'> |
||||
<div class='pad1'> |
||||
<h1> |
||||
<a href="../index.html">all files</a> / <a href="index.html">originalContracts/</a> RecoveryQuorum.sol |
||||
</h1> |
||||
<div class='clearfix'> |
||||
<div class='fl pad1y space-right2'> |
||||
<span class="strong">100% </span> |
||||
<span class="quiet">Statements</span> |
||||
<span class='fraction'>44/44</span> |
||||
</div> |
||||
<div class='fl pad1y space-right2'> |
||||
<span class="strong">95% </span> |
||||
<span class="quiet">Branches</span> |
||||
<span class='fraction'>19/20</span> |
||||
</div> |
||||
<div class='fl pad1y space-right2'> |
||||
<span class="strong">100% </span> |
||||
<span class="quiet">Functions</span> |
||||
<span class='fraction'>15/15</span> |
||||
</div> |
||||
<div class='fl pad1y space-right2'> |
||||
<span class="strong">100% </span> |
||||
<span class="quiet">Lines</span> |
||||
<span class='fraction'>43/43</span> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<div class='status-line high'></div> |
||||
<pre><table class="coverage"> |
||||
<tr><td class="line-count quiet">1 |
||||
2 |
||||
3 |
||||
4 |
||||
5 |
||||
6 |
||||
7 |
||||
8 |
||||
9 |
||||
10 |
||||
11 |
||||
12 |
||||
13 |
||||
14 |
||||
15 |
||||
16 |
||||
17 |
||||
18 |
||||
19 |
||||
20 |
||||
21 |
||||
22 |
||||
23 |
||||
24 |
||||
25 |
||||
26 |
||||
27 |
||||
28 |
||||
29 |
||||
30 |
||||
31 |
||||
32 |
||||
33 |
||||
34 |
||||
35 |
||||
36 |
||||
37 |
||||
38 |
||||
39 |
||||
40 |
||||
41 |
||||
42 |
||||
43 |
||||
44 |
||||
45 |
||||
46 |
||||
47 |
||||
48 |
||||
49 |
||||
50 |
||||
51 |
||||
52 |
||||
53 |
||||
54 |
||||
55 |
||||
56 |
||||
57 |
||||
58 |
||||
59 |
||||
60 |
||||
61 |
||||
62 |
||||
63 |
||||
64 |
||||
65 |
||||
66 |
||||
67 |
||||
68 |
||||
69 |
||||
70 |
||||
71 |
||||
72 |
||||
73 |
||||
74 |
||||
75 |
||||
76 |
||||
77 |
||||
78 |
||||
79 |
||||
80 |
||||
81 |
||||
82 |
||||
83 |
||||
84 |
||||
85 |
||||
86 |
||||
87 |
||||
88 |
||||
89 |
||||
90 |
||||
91 |
||||
92 |
||||
93 |
||||
94 |
||||
95 |
||||
96 |
||||
97 |
||||
98 |
||||
99 |
||||
100 |
||||
101 |
||||
102 |
||||
103 |
||||
104 |
||||
105 |
||||
106 |
||||
107 |
||||
108 |
||||
109 |
||||
110 |
||||
111 |
||||
112 |
||||
113 |
||||
114 |
||||
115</td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-yes">10×</span> |
||||
<span class="cline-any cline-yes">10×</span> |
||||
<span class="cline-any cline-yes">40×</span> |
||||
<span class="cline-any cline-yes">40×</span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-yes">50×</span> |
||||
<span class="cline-any cline-yes">48×</span> |
||||
<span class="cline-any cline-yes">48×</span> |
||||
<span class="cline-any cline-yes">48×</span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-yes">52×</span> |
||||
<span class="cline-any cline-yes">6×</span> |
||||
<span class="cline-any cline-yes">6×</span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-yes">45×</span> |
||||
<span class="cline-any cline-yes">14×</span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-yes">45×</span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-yes">16×</span> |
||||
<span class="cline-any cline-yes">11×</span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-yes">16×</span> |
||||
<span class="cline-any cline-yes">16×</span> |
||||
<span class="cline-any cline-yes">45×</span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-yes">16×</span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-yes">71×</span> |
||||
<span class="cline-any cline-yes">638×</span> |
||||
<span class="cline-any cline-yes">82×</span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-yes">52×</span> |
||||
<span class="cline-any cline-yes">554×</span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-yes">52×</span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-yes">45×</span> |
||||
<span class="cline-any cline-yes">39×</span> |
||||
<span class="cline-any cline-yes">39×</span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-yes">11×</span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-yes">11×</span> |
||||
<span class="cline-any cline-yes">4×</span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-yes">7×</span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-yes">16×</span> |
||||
<span class="cline-any cline-yes">16×</span> |
||||
<span class="cline-any cline-yes">66×</span> |
||||
<span class="cline-any cline-yes">10×</span> |
||||
<span class="cline-any cline-yes">10×</span> |
||||
<span class="cline-any cline-yes">10×</span> |
||||
<span class="cline-any cline-yes">10×</span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-yes">1287×</span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-yes">1192×</span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-yes">638×</span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">pragma solidity ^0.4.4; |
||||
import "./RecoverableController.sol"; |
||||
import "./Lib1.sol"; |
||||
|
||||
contract RecoveryQuorum { |
||||
RecoverableController public controller; |
||||
|
||||
address[] public delegateAddresses; // needed for iteration of mapping |
||||
mapping (address => Delegate) public delegates; |
||||
struct Delegate{ |
||||
uint deletedAfter; // delegate exists if not 0 |
||||
uint pendingUntil; |
||||
address proposedUserKey; |
||||
} |
||||
|
||||
event RecoveryEvent(string action, address initiatedBy); |
||||
|
||||
modifier onlyUserKey(){ if (msg.sender == controller.userKey()) _; } |
||||
|
||||
function RecoveryQuorum(address _controller, address[] _delegates){ |
||||
controller = RecoverableController(_controller); |
||||
for(uint i = 0; i < _delegates.length; i++){ |
||||
delegateAddresses.push(_delegates[i]); |
||||
delegates[_delegates[i]] = Delegate({proposedUserKey: 0x0, pendingUntil: 0, deletedAfter: 31536000000000}); |
||||
} |
||||
} |
||||
function signUserChange(address proposedUserKey) { |
||||
if(delegateRecordExists(delegates[msg.sender])) { |
||||
delegates[msg.sender].proposedUserKey = proposedUserKey; |
||||
changeUserKey(proposedUserKey); |
||||
RecoveryEvent("signUserChange", msg.sender); |
||||
} |
||||
} |
||||
function changeUserKey(address newUserKey) { |
||||
if(collectedSignatures(newUserKey) >= neededSignatures()){ |
||||
controller.changeUserKeyFromRecovery(newUserKey); |
||||
for(uint i = 0 ; i < delegateAddresses.length ; i++){ |
||||
//remove any pending delegates after a recovery |
||||
if(delegates[delegateAddresses[i]].pendingUntil > now){ |
||||
delegates[delegateAddresses[i]].deletedAfter = now; |
||||
} |
||||
delete delegates[delegateAddresses[i]].proposedUserKey; |
||||
} |
||||
} |
||||
} |
||||
|
||||
function replaceDelegates(address[] delegatesToRemove, address[] delegatesToAdd) onlyUserKey{ |
||||
for(uint i = 0 ; i < delegatesToRemove.length ; i++){ |
||||
removeDelegate(delegatesToRemove[i]); |
||||
} |
||||
garbageCollect(); |
||||
for(uint j = 0 ; j < delegatesToAdd.length ; j++){ |
||||
addDelegate(delegatesToAdd[j]); |
||||
} |
||||
RecoveryEvent("replaceDelegates", msg.sender); |
||||
} |
||||
function collectedSignatures(address _proposedUserKey) returns (uint signatures){ |
||||
for(uint i = 0 ; i < delegateAddresses.length ; i++){ |
||||
if (delegateHasValidSignature(delegates[delegateAddresses[i]]) && delegates[delegateAddresses[i]].proposedUserKey == _proposedUserKey){ |
||||
signatures++; |
||||
} |
||||
} |
||||
} |
||||
|
||||
function getAddresses() constant returns (address[]){ return delegateAddresses; } |
||||
|
||||
function neededSignatures() returns (uint){ |
||||
uint currentDelegateCount; //always 0 at this point |
||||
for(uint i = 0 ; i < delegateAddresses.length ; i++){ |
||||
if(delegateIsCurrent(delegates[delegateAddresses[i]])){ currentDelegateCount++; } |
||||
} |
||||
return currentDelegateCount/2 + 1; |
||||
} |
||||
function addDelegate(address delegate) private { |
||||
if(!delegateRecordExists(delegates[delegate]) && delegateAddresses.length < 15) { |
||||
delegates[delegate] = Delegate({proposedUserKey: 0x0, pendingUntil: now + controller.longTimeLock(), deletedAfter: 31536000000000}); |
||||
delegateAddresses.push(delegate); |
||||
} |
||||
} |
||||
function removeDelegate(address delegate) private { |
||||
<span class="missing-if-branch" title="else path not taken" >E</span>if(delegates[delegate].deletedAfter > controller.longTimeLock() + now){ |
||||
//remove right away if they are still pending |
||||
if(delegates[delegate].pendingUntil > now){ |
||||
delegates[delegate].deletedAfter = now; |
||||
} else{ |
||||
delegates[delegate].deletedAfter = controller.longTimeLock() + now; |
||||
} |
||||
} |
||||
} |
||||
|
||||
function garbageCollect() private{ |
||||
uint i = 0; |
||||
while(i < delegateAddresses.length){ |
||||
if(delegateIsDeleted(delegates[delegateAddresses[i]])){ |
||||
delegates[delegateAddresses[i]].deletedAfter = 0; |
||||
delegates[delegateAddresses[i]].pendingUntil = 0; |
||||
delegates[delegateAddresses[i]].proposedUserKey = 0; |
||||
Lib1.removeAddress(i, delegateAddresses); |
||||
}else{i++;} |
||||
} |
||||
} |
||||
function delegateRecordExists(Delegate d) private returns (bool){ |
||||
return d.deletedAfter != 0; |
||||
} |
||||
function delegateIsDeleted(Delegate d) private returns (bool){ |
||||
return d.deletedAfter <= now; //doesnt check record existence |
||||
} |
||||
function delegateIsCurrent(Delegate d) private returns (bool){ |
||||
return delegateRecordExists(d) && !delegateIsDeleted(d) && now > d.pendingUntil; |
||||
} |
||||
function delegateHasValidSignature(Delegate d) private returns (bool){ |
||||
return delegateIsCurrent(d) && d.proposedUserKey != 0x0; |
||||
} |
||||
} |
||||
</pre></td></tr> |
||||
</table></pre> |
||||
<div class='push'></div><!-- for sticky footer --> |
||||
</div><!-- /wrapper --> |
||||
<div class='footer quiet pad2 space-top1 center small'> |
||||
Code coverage |
||||
generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Mon Mar 27 2017 16:25:45 GMT-0700 (PDT) |
||||
</div> |
||||
</div> |
||||
<script src="../prettify.js"></script> |
||||
<script> |
||||
window.onload = function () { |
||||
if (typeof prettyPrint === 'function') { |
||||
prettyPrint(); |
||||
} |
||||
}; |
||||
</script> |
||||
<script src="../sorter.js"></script> |
||||
</body> |
||||
</html> |
@ -0,0 +1,107 @@ |
||||
<!doctype html> |
||||
<html lang="en"> |
||||
<head> |
||||
<title>Code coverage report for originalContracts/TestRegistry.sol</title> |
||||
<meta charset="utf-8" /> |
||||
<link rel="stylesheet" href="../prettify.css" /> |
||||
<link rel="stylesheet" href="../base.css" /> |
||||
<meta name="viewport" content="width=device-width, initial-scale=1"> |
||||
<style type='text/css'> |
||||
.coverage-summary .sorter { |
||||
background-image: url(../sort-arrow-sprite.png); |
||||
} |
||||
</style> |
||||
</head> |
||||
<body> |
||||
<div class='wrapper'> |
||||
<div class='pad1'> |
||||
<h1> |
||||
<a href="../index.html">all files</a> / <a href="index.html">originalContracts/</a> TestRegistry.sol |
||||
</h1> |
||||
<div class='clearfix'> |
||||
<div class='fl pad1y space-right2'> |
||||
<span class="strong">100% </span> |
||||
<span class="quiet">Statements</span> |
||||
<span class='fraction'>2/2</span> |
||||
</div> |
||||
<div class='fl pad1y space-right2'> |
||||
<span class="strong">100% </span> |
||||
<span class="quiet">Branches</span> |
||||
<span class='fraction'>0/0</span> |
||||
</div> |
||||
<div class='fl pad1y space-right2'> |
||||
<span class="strong">100% </span> |
||||
<span class="quiet">Functions</span> |
||||
<span class='fraction'>2/2</span> |
||||
</div> |
||||
<div class='fl pad1y space-right2'> |
||||
<span class="strong">100% </span> |
||||
<span class="quiet">Lines</span> |
||||
<span class='fraction'>2/2</span> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<div class='status-line high'></div> |
||||
<pre><table class="coverage"> |
||||
<tr><td class="line-count quiet">1 |
||||
2 |
||||
3 |
||||
4 |
||||
5 |
||||
6 |
||||
7 |
||||
8 |
||||
9 |
||||
10 |
||||
11 |
||||
12 |
||||
13 |
||||
14 |
||||
15</td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-yes">6×</span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-yes">1×</span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span> |
||||
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">pragma solidity ^0.4.4; |
||||
contract TestRegistry { |
||||
|
||||
mapping(address => uint) public registry; |
||||
|
||||
function register(uint x) { |
||||
registry[msg.sender] = x; |
||||
} |
||||
|
||||
function testThrow() { |
||||
throw; |
||||
} |
||||
|
||||
} |
||||
</pre></td></tr> |
||||
</table></pre> |
||||
<div class='push'></div><!-- for sticky footer --> |
||||
</div><!-- /wrapper --> |
||||
<div class='footer quiet pad2 space-top1 center small'> |
||||
Code coverage |
||||
generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Mon Mar 27 2017 16:25:45 GMT-0700 (PDT) |
||||
</div> |
||||
</div> |
||||
<script src="../prettify.js"></script> |
||||
<script> |
||||
window.onload = function () { |
||||
if (typeof prettyPrint === 'function') { |
||||
prettyPrint(); |
||||
} |
||||
}; |
||||
</script> |
||||
<script src="../sorter.js"></script> |
||||
</body> |
||||
</html> |
@ -0,0 +1,197 @@ |
||||
<!doctype html> |
||||
<html lang="en"> |
||||
<head> |
||||
<title>Code coverage report for originalContracts/</title> |
||||
<meta charset="utf-8" /> |
||||
<link rel="stylesheet" href="../prettify.css" /> |
||||
<link rel="stylesheet" href="../base.css" /> |
||||
<meta name="viewport" content="width=device-width, initial-scale=1"> |
||||
<style type='text/css'> |
||||
.coverage-summary .sorter { |
||||
background-image: url(../sort-arrow-sprite.png); |
||||
} |
||||
</style> |
||||
</head> |
||||
<body> |
||||
<div class='wrapper'> |
||||
<div class='pad1'> |
||||
<h1> |
||||
<a href="../index.html">all files</a> originalContracts/ |
||||
</h1> |
||||
<div class='clearfix'> |
||||
<div class='fl pad1y space-right2'> |
||||
<span class="strong">80.33% </span> |
||||
<span class="quiet">Statements</span> |
||||
<span class='fraction'>98/122</span> |
||||
</div> |
||||
<div class='fl pad1y space-right2'> |
||||
<span class="strong">71.74% </span> |
||||
<span class="quiet">Branches</span> |
||||
<span class='fraction'>33/46</span> |
||||
</div> |
||||
<div class='fl pad1y space-right2'> |
||||
<span class="strong">74.51% </span> |
||||
<span class="quiet">Functions</span> |
||||
<span class='fraction'>38/51</span> |
||||
</div> |
||||
<div class='fl pad1y space-right2'> |
||||
<span class="strong">84.21% </span> |
||||
<span class="quiet">Lines</span> |
||||
<span class='fraction'>96/114</span> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<div class='status-line high'></div> |
||||
<div class="pad1"> |
||||
<table class="coverage-summary"> |
||||
<thead> |
||||
<tr> |
||||
<th data-col="file" data-fmt="html" data-html="true" class="file">File</th> |
||||
<th data-col="pic" data-type="number" data-fmt="html" data-html="true" class="pic"></th> |
||||
<th data-col="statements" data-type="number" data-fmt="pct" class="pct">Statements</th> |
||||
<th data-col="statements_raw" data-type="number" data-fmt="html" class="abs"></th> |
||||
<th data-col="branches" data-type="number" data-fmt="pct" class="pct">Branches</th> |
||||
<th data-col="branches_raw" data-type="number" data-fmt="html" class="abs"></th> |
||||
<th data-col="functions" data-type="number" data-fmt="pct" class="pct">Functions</th> |
||||
<th data-col="functions_raw" data-type="number" data-fmt="html" class="abs"></th> |
||||
<th data-col="lines" data-type="number" data-fmt="pct" class="pct">Lines</th> |
||||
<th data-col="lines_raw" data-type="number" data-fmt="html" class="abs"></th> |
||||
</tr> |
||||
</thead> |
||||
<tbody><tr> |
||||
<td class="file high" data-value="IdentityFactory.sol"><a href="IdentityFactory.sol.html">IdentityFactory.sol</a></td> |
||||
<td data-value="100" class="pic high"><div class="chart"><div class="cover-fill cover-full" style="width: 100%;"></div><div class="cover-empty" style="width:0%;"></div></div></td> |
||||
<td data-value="100" class="pct high">100%</td> |
||||
<td data-value="7" class="abs high">7/7</td> |
||||
<td data-value="100" class="pct high">100%</td> |
||||
<td data-value="0" class="abs high">0/0</td> |
||||
<td data-value="100" class="pct high">100%</td> |
||||
<td data-value="1" class="abs high">1/1</td> |
||||
<td data-value="100" class="pct high">100%</td> |
||||
<td data-value="7" class="abs high">7/7</td> |
||||
</tr> |
||||
|
||||
<tr> |
||||
<td class="file high" data-value="IdentityFactoryWithRecoveryKey.sol"><a href="IdentityFactoryWithRecoveryKey.sol.html">IdentityFactoryWithRecoveryKey.sol</a></td> |
||||
<td data-value="100" class="pic high"><div class="chart"><div class="cover-fill cover-full" style="width: 100%;"></div><div class="cover-empty" style="width:0%;"></div></div></td> |
||||
<td data-value="100" class="pct high">100%</td> |
||||
<td data-value="6" class="abs high">6/6</td> |
||||
<td data-value="100" class="pct high">100%</td> |
||||
<td data-value="0" class="abs high">0/0</td> |
||||
<td data-value="100" class="pct high">100%</td> |
||||
<td data-value="1" class="abs high">1/1</td> |
||||
<td data-value="100" class="pct high">100%</td> |
||||
<td data-value="6" class="abs high">6/6</td> |
||||
</tr> |
||||
|
||||
<tr> |
||||
<td class="file low" data-value="Lib1.sol"><a href="Lib1.sol.html">Lib1.sol</a></td> |
||||
<td data-value="42.86" class="pic low"><div class="chart"><div class="cover-fill" style="width: 42%;"></div><div class="cover-empty" style="width:58%;"></div></div></td> |
||||
<td data-value="42.86" class="pct low">42.86%</td> |
||||
<td data-value="7" class="abs low">3/7</td> |
||||
<td data-value="0" class="pct low">0%</td> |
||||
<td data-value="2" class="abs low">0/2</td> |
||||
<td data-value="50" class="pct medium">50%</td> |
||||
<td data-value="2" class="abs medium">1/2</td> |
||||
<td data-value="57.14" class="pct medium">57.14%</td> |
||||
<td data-value="7" class="abs medium">4/7</td> |
||||
</tr> |
||||
|
||||
<tr> |
||||
<td class="file low" data-value="MetaTxController.sol"><a href="MetaTxController.sol.html">MetaTxController.sol</a></td> |
||||
<td data-value="0" class="pic low"><div class="chart"><div class="cover-fill" style="width: 0%;"></div><div class="cover-empty" style="width:100%;"></div></div></td> |
||||
<td data-value="0" class="pct low">0%</td> |
||||
<td data-value="14" class="abs low">0/14</td> |
||||
<td data-value="0" class="pct low">0%</td> |
||||
<td data-value="4" class="abs low">0/4</td> |
||||
<td data-value="0" class="pct low">0%</td> |
||||
<td data-value="6" class="abs low">0/6</td> |
||||
<td data-value="0" class="pct low">0%</td> |
||||
<td data-value="13" class="abs low">0/13</td> |
||||
</tr> |
||||
|
||||
<tr> |
||||
<td class="file low" data-value="Owned.sol"><a href="Owned.sol.html">Owned.sol</a></td> |
||||
<td data-value="0" class="pic low"><div class="chart"><div class="cover-fill" style="width: 0%;"></div><div class="cover-empty" style="width:100%;"></div></div></td> |
||||
<td data-value="0" class="pct low">0%</td> |
||||
<td data-value="5" class="abs low">0/5</td> |
||||
<td data-value="0" class="pct low">0%</td> |
||||
<td data-value="4" class="abs low">0/4</td> |
||||
<td data-value="0" class="pct low">0%</td> |
||||
<td data-value="5" class="abs low">0/5</td> |
||||
<td data-value="0" class="pct low">0%</td> |
||||
<td data-value="2" class="abs low">0/2</td> |
||||
</tr> |
||||
|
||||
<tr> |
||||
<td class="file high" data-value="Proxy.sol"><a href="Proxy.sol.html">Proxy.sol</a></td> |
||||
<td data-value="88.89" class="pic high"><div class="chart"><div class="cover-fill" style="width: 88%;"></div><div class="cover-empty" style="width:12%;"></div></div></td> |
||||
<td data-value="88.89" class="pct high">88.89%</td> |
||||
<td data-value="9" class="abs high">8/9</td> |
||||
<td data-value="66.67" class="pct medium">66.67%</td> |
||||
<td data-value="6" class="abs medium">4/6</td> |
||||
<td data-value="85.71" class="pct high">85.71%</td> |
||||
<td data-value="7" class="abs high">6/7</td> |
||||
<td data-value="100" class="pct high">100%</td> |
||||
<td data-value="6" class="abs high">6/6</td> |
||||
</tr> |
||||
|
||||
<tr> |
||||
<td class="file high" data-value="RecoverableController.sol"><a href="RecoverableController.sol.html">RecoverableController.sol</a></td> |
||||
<td data-value="100" class="pic high"><div class="chart"><div class="cover-fill cover-full" style="width: 100%;"></div><div class="cover-empty" style="width:0%;"></div></div></td> |
||||
<td data-value="100" class="pct high">100%</td> |
||||
<td data-value="28" class="abs high">28/28</td> |
||||
<td data-value="100" class="pct high">100%</td> |
||||
<td data-value="10" class="abs high">10/10</td> |
||||
<td data-value="100" class="pct high">100%</td> |
||||
<td data-value="12" class="abs high">12/12</td> |
||||
<td data-value="100" class="pct high">100%</td> |
||||
<td data-value="28" class="abs high">28/28</td> |
||||
</tr> |
||||
|
||||
<tr> |
||||
<td class="file high" data-value="RecoveryQuorum.sol"><a href="RecoveryQuorum.sol.html">RecoveryQuorum.sol</a></td> |
||||
<td data-value="100" class="pic high"><div class="chart"><div class="cover-fill cover-full" style="width: 100%;"></div><div class="cover-empty" style="width:0%;"></div></div></td> |
||||
<td data-value="100" class="pct high">100%</td> |
||||
<td data-value="44" class="abs high">44/44</td> |
||||
<td data-value="95" class="pct high">95%</td> |
||||
<td data-value="20" class="abs high">19/20</td> |
||||
<td data-value="100" class="pct high">100%</td> |
||||
<td data-value="15" class="abs high">15/15</td> |
||||
<td data-value="100" class="pct high">100%</td> |
||||
<td data-value="43" class="abs high">43/43</td> |
||||
</tr> |
||||
|
||||
<tr> |
||||
<td class="file high" data-value="TestRegistry.sol"><a href="TestRegistry.sol.html">TestRegistry.sol</a></td> |
||||
<td data-value="100" class="pic high"><div class="chart"><div class="cover-fill cover-full" style="width: 100%;"></div><div class="cover-empty" style="width:0%;"></div></div></td> |
||||
<td data-value="100" class="pct high">100%</td> |
||||
<td data-value="2" class="abs high">2/2</td> |
||||
<td data-value="100" class="pct high">100%</td> |
||||
<td data-value="0" class="abs high">0/0</td> |
||||
<td data-value="100" class="pct high">100%</td> |
||||
<td data-value="2" class="abs high">2/2</td> |
||||
<td data-value="100" class="pct high">100%</td> |
||||
<td data-value="2" class="abs high">2/2</td> |
||||
</tr> |
||||
|
||||
</tbody> |
||||
</table> |
||||
</div><div class='push'></div><!-- for sticky footer --> |
||||
</div><!-- /wrapper --> |
||||
<div class='footer quiet pad2 space-top1 center small'> |
||||
Code coverage |
||||
generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Mon Mar 27 2017 16:25:45 GMT-0700 (PDT) |
||||
</div> |
||||
</div> |
||||
<script src="../prettify.js"></script> |
||||
<script> |
||||
window.onload = function () { |
||||
if (typeof prettyPrint === 'function') { |
||||
prettyPrint(); |
||||
} |
||||
}; |
||||
</script> |
||||
<script src="../sorter.js"></script> |
||||
</body> |
||||
</html> |
@ -0,0 +1 @@ |
||||
.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee} |
File diff suppressed because one or more lines are too long
After Width: | Height: | Size: 209 B |
@ -0,0 +1,158 @@ |
||||
var addSorting = (function () { |
||||
"use strict"; |
||||
var cols, |
||||
currentSort = { |
||||
index: 0, |
||||
desc: false |
||||
}; |
||||
|
||||
// returns the summary table element
|
||||
function getTable() { return document.querySelector('.coverage-summary'); } |
||||
// returns the thead element of the summary table
|
||||
function getTableHeader() { return getTable().querySelector('thead tr'); } |
||||
// returns the tbody element of the summary table
|
||||
function getTableBody() { return getTable().querySelector('tbody'); } |
||||
// returns the th element for nth column
|
||||
function getNthColumn(n) { return getTableHeader().querySelectorAll('th')[n]; } |
||||
|
||||
// loads all columns
|
||||
function loadColumns() { |
||||
var colNodes = getTableHeader().querySelectorAll('th'), |
||||
colNode, |
||||
cols = [], |
||||
col, |
||||
i; |
||||
|
||||
for (i = 0; i < colNodes.length; i += 1) { |
||||
colNode = colNodes[i]; |
||||
col = { |
||||
key: colNode.getAttribute('data-col'), |
||||
sortable: !colNode.getAttribute('data-nosort'), |
||||
type: colNode.getAttribute('data-type') || 'string' |
||||
}; |
||||
cols.push(col); |
||||
if (col.sortable) { |
||||
col.defaultDescSort = col.type === 'number'; |
||||
colNode.innerHTML = colNode.innerHTML + '<span class="sorter"></span>'; |
||||
} |
||||
} |
||||
return cols; |
||||
} |
||||
// attaches a data attribute to every tr element with an object
|
||||
// of data values keyed by column name
|
||||
function loadRowData(tableRow) { |
||||
var tableCols = tableRow.querySelectorAll('td'), |
||||
colNode, |
||||
col, |
||||
data = {}, |
||||
i, |
||||
val; |
||||
for (i = 0; i < tableCols.length; i += 1) { |
||||
colNode = tableCols[i]; |
||||
col = cols[i]; |
||||
val = colNode.getAttribute('data-value'); |
||||
if (col.type === 'number') { |
||||
val = Number(val); |
||||
} |
||||
data[col.key] = val; |
||||
} |
||||
return data; |
||||
} |
||||
// loads all row data
|
||||
function loadData() { |
||||
var rows = getTableBody().querySelectorAll('tr'), |
||||
i; |
||||
|
||||
for (i = 0; i < rows.length; i += 1) { |
||||
rows[i].data = loadRowData(rows[i]); |
||||
} |
||||
} |
||||
// sorts the table using the data for the ith column
|
||||
function sortByIndex(index, desc) { |
||||
var key = cols[index].key, |
||||
sorter = function (a, b) { |
||||
a = a.data[key]; |
||||
b = b.data[key]; |
||||
return a < b ? -1 : a > b ? 1 : 0; |
||||
}, |
||||
finalSorter = sorter, |
||||
tableBody = document.querySelector('.coverage-summary tbody'), |
||||
rowNodes = tableBody.querySelectorAll('tr'), |
||||
rows = [], |
||||
i; |
||||
|
||||
if (desc) { |
||||
finalSorter = function (a, b) { |
||||
return -1 * sorter(a, b); |
||||
}; |
||||
} |
||||
|
||||
for (i = 0; i < rowNodes.length; i += 1) { |
||||
rows.push(rowNodes[i]); |
||||
tableBody.removeChild(rowNodes[i]); |
||||
} |
||||
|
||||
rows.sort(finalSorter); |
||||
|
||||
for (i = 0; i < rows.length; i += 1) { |
||||
tableBody.appendChild(rows[i]); |
||||
} |
||||
} |
||||
// removes sort indicators for current column being sorted
|
||||
function removeSortIndicators() { |
||||
var col = getNthColumn(currentSort.index), |
||||
cls = col.className; |
||||
|
||||
cls = cls.replace(/ sorted$/, '').replace(/ sorted-desc$/, ''); |
||||
col.className = cls; |
||||
} |
||||
// adds sort indicators for current column being sorted
|
||||
function addSortIndicators() { |
||||
getNthColumn(currentSort.index).className += currentSort.desc ? ' sorted-desc' : ' sorted'; |
||||
} |
||||
// adds event listeners for all sorter widgets
|
||||
function enableUI() { |
||||
var i, |
||||
el, |
||||
ithSorter = function ithSorter(i) { |
||||
var col = cols[i]; |
||||
|
||||
return function () { |
||||
var desc = col.defaultDescSort; |
||||
|
||||
if (currentSort.index === i) { |
||||
desc = !currentSort.desc; |
||||
} |
||||
sortByIndex(i, desc); |
||||
removeSortIndicators(); |
||||
currentSort.index = i; |
||||
currentSort.desc = desc; |
||||
addSortIndicators(); |
||||
}; |
||||
}; |
||||
for (i =0 ; i < cols.length; i += 1) { |
||||
if (cols[i].sortable) { |
||||
// add the click event handler on the th so users
|
||||
// dont have to click on those tiny arrows
|
||||
el = getNthColumn(i).querySelector('.sorter').parentElement; |
||||
if (el.addEventListener) { |
||||
el.addEventListener('click', ithSorter(i)); |
||||
} else { |
||||
el.attachEvent('onclick', ithSorter(i)); |
||||
} |
||||
} |
||||
} |
||||
} |
||||
// adds sorting functionality to the UI
|
||||
return function () { |
||||
if (!getTable()) { |
||||
return; |
||||
} |
||||
cols = loadColumns(); |
||||
loadData(cols); |
||||
addSortIndicators(); |
||||
enableUI(); |
||||
}; |
||||
})(); |
||||
|
||||
window.addEventListener('load', addSorting); |
@ -0,0 +1,343 @@ |
||||
TN: |
||||
SF:/Users/user/Sites/uport-proxy/originalContracts/IdentityFactory.sol |
||||
FN:14,CreateProxyWithControllerAndRecovery |
||||
FNF:1 |
||||
FNH:1 |
||||
FNDA:4,CreateProxyWithControllerAndRecovery |
||||
DA:15,4 |
||||
DA:16,4 |
||||
DA:17,4 |
||||
DA:18,4 |
||||
DA:19,4 |
||||
DA:21,4 |
||||
DA:22,4 |
||||
LF:7 |
||||
LH:7 |
||||
BRF:0 |
||||
BRH:0 |
||||
end_of_record |
||||
TN: |
||||
SF:/Users/user/Sites/uport-proxy/originalContracts/IdentityFactoryWithRecoveryKey.sol |
||||
FN:14,CreateProxyWithControllerAndRecoveryKey |
||||
FNF:1 |
||||
FNH:1 |
||||
FNDA:1,CreateProxyWithControllerAndRecoveryKey |
||||
DA:15,1 |
||||
DA:16,1 |
||||
DA:17,1 |
||||
DA:18,1 |
||||
DA:20,1 |
||||
DA:21,1 |
||||
LF:6 |
||||
LH:6 |
||||
BRF:0 |
||||
BRH:0 |
||||
end_of_record |
||||
TN: |
||||
SF:/Users/user/Sites/uport-proxy/originalContracts/Lib1.sol |
||||
FN:3,findAddress |
||||
FN:9,removeAddress |
||||
FNF:2 |
||||
FNH:1 |
||||
FNDA:0,findAddress |
||||
FNDA:10,removeAddress |
||||
DA:4,0 |
||||
DA:5,0 |
||||
DA:7,0 |
||||
DA:10,10 |
||||
DA:11,10 |
||||
DA:12,10 |
||||
DA:13,10 |
||||
LF:7 |
||||
LH:4 |
||||
BRDA:5,1,0,0 |
||||
BRDA:5,1,1,0 |
||||
BRF:2 |
||||
BRH:0 |
||||
end_of_record |
||||
TN: |
||||
SF:/Users/user/Sites/uport-proxy/originalContracts/MetaTxController.sol |
||||
FN:10,only |
||||
FN:12,MetaTxController |
||||
FN:19,sendTx |
||||
FN:30,updateUserKey |
||||
FN:34,updateAdminKey |
||||
FN:38,transferOwnership |
||||
FNF:6 |
||||
FNH:0 |
||||
FNDA:0,only |
||||
FNDA:0,MetaTxController |
||||
FNDA:0,sendTx |
||||
FNDA:0,updateUserKey |
||||
FNDA:0,updateAdminKey |
||||
FNDA:0,transferOwnership |
||||
DA:13,0 |
||||
DA:14,0 |
||||
DA:15,0 |
||||
DA:16,0 |
||||
DA:21,0 |
||||
DA:22,0 |
||||
DA:24,0 |
||||
DA:25,0 |
||||
DA:26,0 |
||||
DA:31,0 |
||||
DA:35,0 |
||||
DA:42,0 |
||||
DA:43,0 |
||||
LF:13 |
||||
LH:0 |
||||
BRDA:10,1,0,0 |
||||
BRDA:10,1,1,0 |
||||
BRDA:24,2,0,0 |
||||
BRDA:24,2,1,0 |
||||
BRF:4 |
||||
BRH:0 |
||||
end_of_record |
||||
TN: |
||||
SF:/Users/user/Sites/uport-proxy/originalContracts/Owned.sol |
||||
FN:5,onlyOwner |
||||
FN:6,ifOwner |
||||
FN:8,Owned |
||||
FN:12,isOwner |
||||
FN:14,transfer |
||||
FNF:5 |
||||
FNH:0 |
||||
FNDA:0,onlyOwner |
||||
FNDA:0,ifOwner |
||||
FNDA:0,Owned |
||||
FNDA:0,isOwner |
||||
FNDA:0,transfer |
||||
DA:9,0 |
||||
DA:15,0 |
||||
LF:2 |
||||
LH:0 |
||||
BRDA:5,1,0,0 |
||||
BRDA:5,1,1,0 |
||||
BRDA:6,2,0,0 |
||||
BRDA:6,2,1,0 |
||||
BRF:4 |
||||
BRH:0 |
||||
end_of_record |
||||
TN: |
||||
SF:/Users/user/Sites/uport-proxy/originalContracts/Proxy.sol |
||||
FN:17, |
||||
FN:21,forward |
||||
FN:33,onlyOwner |
||||
FN:34,ifOwner |
||||
FN:36,Proxy |
||||
FN:40,isOwner |
||||
FN:42,transfer |
||||
FNF:7 |
||||
FNH:6 |
||||
FNDA:2, |
||||
FNDA:7,forward |
||||
FNDA:20,onlyOwner |
||||
FNDA:0,ifOwner |
||||
FNDA:10,Proxy |
||||
FNDA:20,isOwner |
||||
FNDA:12,transfer |
||||
DA:18,2 |
||||
DA:26,7 |
||||
DA:27,1 |
||||
DA:29,6 |
||||
DA:37,10 |
||||
DA:43,12 |
||||
LF:6 |
||||
LH:6 |
||||
BRDA:26,1,0,1 |
||||
BRDA:26,1,1,6 |
||||
BRDA:33,2,0,19 |
||||
BRDA:33,2,1,1 |
||||
BRDA:34,3,0,0 |
||||
BRDA:34,3,1,0 |
||||
BRF:6 |
||||
BRH:4 |
||||
end_of_record |
||||
TN: |
||||
SF:/Users/user/Sites/uport-proxy/originalContracts/RecoverableController.sol |
||||
FN:24,onlyUserKey |
||||
FN:25,onlyRecoveryKey |
||||
FN:27,RecoverableController |
||||
FN:36,forward |
||||
FN:40,signRecoveryChange |
||||
FN:45,changeRecovery |
||||
FN:52,signControllerChange |
||||
FN:57,changeController |
||||
FN:64,signUserKeyChange |
||||
FN:69,changeUserKey |
||||
FN:77,changeRecoveryFromRecovery |
||||
FN:78,changeUserKeyFromRecovery |
||||
FNF:12 |
||||
FNH:12 |
||||
FNDA:11,onlyUserKey |
||||
FNDA:22,onlyRecoveryKey |
||||
FNDA:12,RecoverableController |
||||
FNDA:4,forward |
||||
FNDA:1,signRecoveryChange |
||||
FNDA:2,changeRecovery |
||||
FNDA:1,signControllerChange |
||||
FNDA:2,changeController |
||||
FNDA:1,signUserKeyChange |
||||
FNDA:2,changeUserKey |
||||
FNDA:12,changeRecoveryFromRecovery |
||||
FNDA:7,changeUserKeyFromRecovery |
||||
DA:28,12 |
||||
DA:29,12 |
||||
DA:30,12 |
||||
DA:31,12 |
||||
DA:32,12 |
||||
DA:33,12 |
||||
DA:37,4 |
||||
DA:41,1 |
||||
DA:42,1 |
||||
DA:43,1 |
||||
DA:46,2 |
||||
DA:47,1 |
||||
DA:48,1 |
||||
DA:53,1 |
||||
DA:54,1 |
||||
DA:55,1 |
||||
DA:58,2 |
||||
DA:59,1 |
||||
DA:60,1 |
||||
DA:65,1 |
||||
DA:66,1 |
||||
DA:67,1 |
||||
DA:70,2 |
||||
DA:71,1 |
||||
DA:72,1 |
||||
DA:73,1 |
||||
DA:79,7 |
||||
DA:80,7 |
||||
LF:28 |
||||
LH:28 |
||||
BRDA:24,1,0,7 |
||||
BRDA:24,1,1,4 |
||||
BRDA:25,2,0,19 |
||||
BRDA:25,2,1,3 |
||||
BRDA:46,3,0,1 |
||||
BRDA:46,3,1,1 |
||||
BRDA:58,4,0,1 |
||||
BRDA:58,4,1,1 |
||||
BRDA:70,5,0,1 |
||||
BRDA:70,5,1,1 |
||||
BRF:10 |
||||
BRH:10 |
||||
end_of_record |
||||
TN: |
||||
SF:/Users/user/Sites/uport-proxy/originalContracts/RecoveryQuorum.sol |
||||
FN:18,onlyUserKey |
||||
FN:20,RecoveryQuorum |
||||
FN:27,signUserChange |
||||
FN:34,changeUserKey |
||||
FN:47,replaceDelegates |
||||
FN:57,collectedSignatures |
||||
FN:65,getAddresses |
||||
FN:67,neededSignatures |
||||
FN:74,addDelegate |
||||
FN:80,removeDelegate |
||||
FN:91,garbageCollect |
||||
FN:102,delegateRecordExists |
||||
FN:105,delegateIsDeleted |
||||
FN:108,delegateIsCurrent |
||||
FN:111,delegateHasValidSignature |
||||
FNF:15 |
||||
FNH:15 |
||||
FNDA:17,onlyUserKey |
||||
FNDA:10,RecoveryQuorum |
||||
FNDA:50,signUserChange |
||||
FNDA:52,changeUserKey |
||||
FNDA:16,replaceDelegates |
||||
FNDA:71,collectedSignatures |
||||
FNDA:14,getAddresses |
||||
FNDA:52,neededSignatures |
||||
FNDA:45,addDelegate |
||||
FNDA:11,removeDelegate |
||||
FNDA:16,garbageCollect |
||||
FNDA:1287,delegateRecordExists |
||||
FNDA:1258,delegateIsDeleted |
||||
FNDA:1192,delegateIsCurrent |
||||
FNDA:638,delegateHasValidSignature |
||||
DA:21,10 |
||||
DA:22,10 |
||||
DA:23,40 |
||||
DA:24,40 |
||||
DA:28,50 |
||||
DA:29,48 |
||||
DA:30,48 |
||||
DA:31,48 |
||||
DA:35,52 |
||||
DA:36,6 |
||||
DA:37,6 |
||||
DA:39,45 |
||||
DA:40,14 |
||||
DA:42,45 |
||||
DA:48,16 |
||||
DA:49,11 |
||||
DA:51,16 |
||||
DA:52,16 |
||||
DA:53,45 |
||||
DA:55,16 |
||||
DA:58,71 |
||||
DA:59,638 |
||||
DA:60,82 |
||||
DA:69,52 |
||||
DA:70,554 |
||||
DA:72,52 |
||||
DA:75,45 |
||||
DA:76,39 |
||||
DA:77,39 |
||||
DA:81,11 |
||||
DA:83,11 |
||||
DA:84,4 |
||||
DA:86,7 |
||||
DA:92,16 |
||||
DA:93,16 |
||||
DA:94,66 |
||||
DA:95,10 |
||||
DA:96,10 |
||||
DA:97,10 |
||||
DA:98,10 |
||||
DA:103,1287 |
||||
DA:109,1192 |
||||
DA:112,638 |
||||
LF:43 |
||||
LH:43 |
||||
BRDA:18,1,0,16 |
||||
BRDA:18,1,1,1 |
||||
BRDA:28,2,0,48 |
||||
BRDA:28,2,1,2 |
||||
BRDA:35,3,0,6 |
||||
BRDA:35,3,1,46 |
||||
BRDA:39,4,0,14 |
||||
BRDA:39,4,1,31 |
||||
BRDA:59,5,0,82 |
||||
BRDA:59,5,1,556 |
||||
BRDA:70,6,0,324 |
||||
BRDA:70,6,1,230 |
||||
BRDA:75,7,0,39 |
||||
BRDA:75,7,1,6 |
||||
BRDA:81,8,0,11 |
||||
BRDA:81,8,1,0 |
||||
BRDA:83,9,0,4 |
||||
BRDA:83,9,1,7 |
||||
BRDA:94,10,0,10 |
||||
BRDA:94,10,1,56 |
||||
BRF:20 |
||||
BRH:19 |
||||
end_of_record |
||||
TN: |
||||
SF:/Users/user/Sites/uport-proxy/originalContracts/TestRegistry.sol |
||||
FN:6,register |
||||
FN:10,testThrow |
||||
FNF:2 |
||||
FNH:2 |
||||
FNDA:6,register |
||||
FNDA:1,testThrow |
||||
DA:7,6 |
||||
DA:11,1 |
||||
LF:2 |
||||
LH:2 |
||||
BRF:0 |
||||
BRH:0 |
||||
end_of_record |
Loading…
Reference in new issue