diff options
author | obscuren <geffobscura@gmail.com> | 2015-02-12 02:22:38 +0800 |
---|---|---|
committer | obscuren <geffobscura@gmail.com> | 2015-02-12 02:22:38 +0800 |
commit | 1fc3524e40ced2e780f6b90fa4ca7725c839976f (patch) | |
tree | 1d3508d967c9269fd89b0fa2d45313e4c821c170 | |
parent | df49c609a0fd055a4f0dac89db6863ad5532228f (diff) | |
parent | ebc506dae8a15e5dcce4e4369e21d04e3b8f9aa4 (diff) | |
download | dexon-1fc3524e40ced2e780f6b90fa4ca7725c839976f.tar dexon-1fc3524e40ced2e780f6b90fa4ca7725c839976f.tar.gz dexon-1fc3524e40ced2e780f6b90fa4ca7725c839976f.tar.bz2 dexon-1fc3524e40ced2e780f6b90fa4ca7725c839976f.tar.lz dexon-1fc3524e40ced2e780f6b90fa4ca7725c839976f.tar.xz dexon-1fc3524e40ced2e780f6b90fa4ca7725c839976f.tar.zst dexon-1fc3524e40ced2e780f6b90fa4ca7725c839976f.zip |
Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop
-rw-r--r-- | .travis.yml | 8 | ||||
-rw-r--r-- | Dockerfile | 9 | ||||
-rw-r--r-- | cmd/mist/assets/qml/main.qml | 54 | ||||
-rw-r--r-- | cmd/mist/assets/qml/views/browser.qml | 19 | ||||
-rw-r--r-- | cmd/mist/assets/qml/views/catalog.qml | 142 | ||||
-rw-r--r-- | eth/block_pool_test.go | 1 | ||||
-rw-r--r-- | rpc/http/server.go | 2 | ||||
-rw-r--r-- | rpc/message.go | 6 | ||||
-rw-r--r-- | rpc/util.go | 2 | ||||
-rw-r--r-- | rpc/ws/server.go | 5 |
10 files changed, 113 insertions, 135 deletions
diff --git a/.travis.yml b/.travis.yml index 4659503e9..0084bf9c2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -11,8 +11,8 @@ install: # - go get golang.org/x/tools/cmd/vet - if ! go get code.google.com/p/go.tools/cmd/cover; then go get golang.org/x/tools/cmd/cover; fi - go get github.com/mattn/goveralls - - go get -d github.com/obscuren/qml && cd $HOME/gopath/src/github.com/obscuren/qml && git checkout v1 && cd $TRAVIS_BUILD_DIR - - ETH_DEPS=$(go list -f '{{.Imports}} {{.TestImports}} {{.XTestImports}}' github.com/ethereum/go-ethereum/... | sed -e 's/\[//g' | sed -e 's/\]//g' | sed -e 's/C //g'); if [ "$ETH_DEPS" ]; then go get -d $ETH_DEPS; fi + - go get gopkg.in/check.v1 + - DEPS=$(go list -f '{{.Imports}}' ./... | sed -e 's/\[//g' | sed -e 's/\]//g' | sed -e 's/C //g'); if [ "$DEPS" ]; then go get -d -v $DEPS; fi before_script: - gofmt -l -w . - goimports -l -w . @@ -20,7 +20,9 @@ before_script: # - go vet ./... # - go test -race ./... script: - - ./gocoverage.sh && if [ "$COVERALLS_TOKEN" ]; then goveralls -coverprofile=profile.cov -service=travis-ci -repotoken $COVERALLS_TOKEN; fi + - ./gocoverage.sh +after_success: + - if [ "$COVERALLS_TOKEN" ]; then goveralls -coverprofile=profile.cov -service=travis-ci -repotoken $COVERALLS_TOKEN; fi env: global: - PKG_CONFIG_PATH=/opt/qt54/lib/pkgconfig diff --git a/Dockerfile b/Dockerfile index 771d19746..6e29a638d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -21,13 +21,10 @@ RUN apt-get install -y qt54quickcontrols qt54webengine ## Build and install latest Go RUN git clone https://go.googlesource.com/go golang RUN cd golang && git checkout go1.4.1 -RUN cd golang/src && ./all.bash && go version +RUN cd golang/src && ./make.bash && go version -## Fetch and install QML -RUN go get -u -v -d github.com/obscuren/qml -WORKDIR $GOPATH/src/github.com/obscuren/qml -RUN git checkout v1 -RUN go install -v +# this is a workaround, to make sure that docker's cache is invalidated whenever the git repo changes +ADD https://api.github.com/repos/ethereum/go-ethereum/git/refs/heads/develop file_does_not_exist ## Fetch and install go-ethereum RUN go get -u -v -d github.com/ethereum/go-ethereum/... diff --git a/cmd/mist/assets/qml/main.qml b/cmd/mist/assets/qml/main.qml index e169f54ec..d03ef43d9 100644 --- a/cmd/mist/assets/qml/main.qml +++ b/cmd/mist/assets/qml/main.qml @@ -39,7 +39,7 @@ ApplicationWindow { // Takes care of loading all default plugins Component.onCompleted: { - addPlugin("./views/catalog.qml", {noAdd: true, close: false, section: "begin"}); + var catalog = addPlugin("./views/catalog.qml", {noAdd: true, close: false, section: "begin"}); var wallet = addPlugin("./views/wallet.qml", {noAdd: true, close: false, section: "ethereum", active: true}); addPlugin("./views/miner.qml", {noAdd: true, close: false, section: "ethereum", active: true}); @@ -49,9 +49,9 @@ ApplicationWindow { addPlugin("./views/pending_tx.qml", {noAdd: true, close: false, section: "legacy"}); addPlugin("./views/info.qml", {noAdd: true, close: false, section: "legacy"}); - mainSplit.setView(wallet.view, wallet.menuItem); + mainSplit.setView(catalog.view, catalog.menuItem); - newBrowserTab("http://ethereum-dapp-whisper-client.meteor.com/chat/amsteam"); + //newBrowserTab("http://ethereum-dapp-catalog.meteor.com"); // Command setup gui.sendCommand(0) @@ -114,10 +114,33 @@ ApplicationWindow { } function newBrowserTab(url) { - var window = addPlugin("./views/browser.qml", {noAdd: true, close: true, section: "apps", active: true}); - window.view.url = url; - window.menuItem.title = "Mist"; - activeView(window.view, window.menuItem); + + var urlMatches = url.toString().match(/^[a-z]*\:\/\/([^\/?#]+)(?:[\/?#]|$)/i); + var requestedDomain = urlMatches && urlMatches[1]; + + var domainAlreadyOpen = false; + + console.log("requested: " + requestedDomain ) + + for(var i = 0; i < mainSplit.views.length; i++) { + if (mainSplit.views[i].view.url) { + var matches = mainSplit.views[i].view.url.toString().match(/^[a-z]*\:\/\/(?:www\.)?([^\/?#]+)(?:[\/?#]|$)/i); + var existingDomain = matches && matches[1]; + console.log("exists: " + existingDomain); + if (requestedDomain == existingDomain) { + domainAlreadyOpen = true; + mainSplit.views[i].view.url = url; + activeView(mainSplit.views[i].view, mainSplit.views[i].menuItem); + } + } + } + + if (!domainAlreadyOpen) { + var window = addPlugin("./views/browser.qml", {noAdd: true, close: true, section: "apps", active: true}); + window.view.url = url; + window.menuItem.title = "Mist"; + activeView(window.view, window.menuItem); + } } @@ -332,8 +355,9 @@ ApplicationWindow { id: mainSplit anchors.fill: parent - resizing: false + //resizing: false // this is NOT where we remove that damning resizing handle.. handleDelegate: Item { + //This handle is a way to remove the line between the split views Rectangle { anchors.fill: parent } @@ -497,7 +521,7 @@ ApplicationWindow { anchors.fill: parent border.width: 0 radius: 5 - color: "#FFFFFFFF" + color: "#FAFAFA" } Rectangle { anchors { @@ -506,7 +530,7 @@ ApplicationWindow { right: r.right } width: 10 - color: "#FFFFFFFF" + color: "#FAFAFA" border.width:0 Rectangle { @@ -517,7 +541,7 @@ ApplicationWindow { top: parent.top } height: 1 - color: "#FFFFFF" + color: "#FAFAFA" } Rectangle { @@ -528,7 +552,7 @@ ApplicationWindow { bottom: parent.bottom } height: 1 - color: "#FFFFFF" + color: "#FAFAFA" } } } @@ -800,7 +824,7 @@ ApplicationWindow { anchors.top: parent.top color: "#00000000" - Rectangle { + /*Rectangle { id: urlPane height: 40 color: "#00000000" @@ -847,7 +871,7 @@ ApplicationWindow { z: -1 height: 1 color: "#CCCCCC" - } + }*/ Rectangle { id: mainView @@ -855,7 +879,7 @@ ApplicationWindow { anchors.right: parent.right anchors.left: parent.left anchors.bottom: parent.bottom - anchors.top: divider.bottom + anchors.top: parent.top function createView(component) { var view = component.createObject(mainView) diff --git a/cmd/mist/assets/qml/views/browser.qml b/cmd/mist/assets/qml/views/browser.qml index db89c6837..04b2229ec 100644 --- a/cmd/mist/assets/qml/views/browser.qml +++ b/cmd/mist/assets/qml/views/browser.qml @@ -345,14 +345,21 @@ Rectangle { if (topBarStyle=="transparent") { // Adjust for a transparent sidebar Dapp - navBarBackground.visible = false; - back.visible = false; - appInfoPane.anchors.leftMargin = -16; - appInfoPaneShadow.anchors.leftMargin = -16; - webview.anchors.topMargin = -74; + navBarBackground.visible = false; + back.visible = false; + appInfoPane.anchors.leftMargin = -16; + appInfoPaneShadow.anchors.leftMargin = -16; + webview.anchors.topMargin = -74; webview.runJavaScript("document.querySelector('body').classList.add('ethereum-dapp-url-bar-style-transparent')") - }; + } else { + navBarBackground.visible = true; + back.visible = true; + appInfoPane.anchors.leftMargin = 0; + appInfoPaneShadow.anchors.leftMargin = 0; + webview.anchors.topMargin = 0; + + }; }); diff --git a/cmd/mist/assets/qml/views/catalog.qml b/cmd/mist/assets/qml/views/catalog.qml index 7f42c25dc..a7832e9fa 100644 --- a/cmd/mist/assets/qml/views/catalog.qml +++ b/cmd/mist/assets/qml/views/catalog.qml @@ -12,7 +12,7 @@ Rectangle { anchors.fill: parent color: "#00000000" - property var title: "" + property var title: "Catalog" property var iconSource: "" property var menuItem property var hideUrl: true @@ -75,111 +75,57 @@ Rectangle { anchors.fill: parent state: "inspectorShown" - RowLayout { - id: navBar - height: 184 - z: 20 - - anchors { - left: parent.left - right: parent.right - } - - Rectangle { - id: appInfoPane - height: 28 - color: "#efefef" - radius: 6 - z:25 - - MouseArea { - anchors.fill: parent - z: 10 - hoverEnabled: true - onEntered: { - uriNav.visible = true - appTitle.visible = false - appDomain.visible = false - } - } - - anchors { - left: parent.left - right: parent.right - leftMargin: 10 - rightMargin: 10 - top: parent.verticalCenter - topMargin: 23 - } - - TextField { - id: uriNav - anchors { - left: parent.left - right: parent.right - leftMargin: 16 - top: parent.verticalCenter - topMargin: -10 - } - - horizontalAlignment: Text.AlignHCenter - - style: TextFieldStyle { - textColor: "#928484" - background: Rectangle { - border.width: 0 - color: "transparent" - } - } - text: "Type the address of a new Dapp"; - y: parent.height / 2 - this.height / 2 - z: 30 - activeFocusOnPress: true - Keys.onReturnPressed: { - newBrowserTab(this.text); - this.text = "Type the address of a new Dapp"; - } - - } - } - - Rectangle { - id: appInfoPaneShadow - width: 10 - height: 30 - color: "#BDB6B6" - radius: 6 - z: 15 - - anchors { - left: parent.left - right: parent.right - leftMargin:10 - rightMargin:10 - top: parent.verticalCenter - topMargin: 23 - } - - - } - - } - - WebEngineView { objectName: "webView" id: webview anchors.fill: parent - onLoadingChanged: { - if (loadRequest.status == WebEngineView.LoadSucceededStatus) { - webview.runJavaScript(eth.readFile("bignumber.min.js")); - webview.runJavaScript(eth.readFile("ethereum.js/dist/ethereum.js")); - } - } + property var protocol: "http://" + //property var domain: "localhost:3000" + property var domain: "ethereum-dapp-catalog.meteor.com" + url: protocol + domain + + //navigationRequest: WebEngineView.IgnoreRequest + // onLoadingChanged: { + // if (loadRequest.status == WebEngineView.LoadSucceededStatus) { + // webview.runJavaScript(eth.readFile("bignumber.min.js")); + // webview.runJavaScript(eth.readFile("ethereum.js/dist/ethereum.js")); + // } + // } + + //onNavigationRequested: { + // detect URL scheme prefix, most likely an external link + //var schemaRE = /^\w+:/; + //if (schemaRE.test(request.url)) { + // request.action = WebView.AcceptRequest; + //} else { + //request.action = WebView.IgnoreRequest; + // delegate request.url here + //} + //} + onJavaScriptConsoleMessage: { console.log(sourceID + ":" + lineNumber + ":" + JSON.stringify(message)); } + + onNavigationRequested: { + var cleanTitle = request.url.toString() + var matches = cleanTitle.match(/^[a-z]*\:\/\/([^\/?#]+)(?:[\/?#]|$)/i); + var requestedDomain = matches && matches[1]; + + console.debug ("NavigationRequested: " + request.url + " navigationType=" + request.navigationType) + + if(request.navigationType==0){ + + if (requestedDomain === this.domain){ + request.action = WebEngineView.AcceptRequest; + } else { + request.action = WebEngineView.IgnoreRequest; + newBrowserTab(request.url); + } + + } + } } diff --git a/eth/block_pool_test.go b/eth/block_pool_test.go index 94c3b43d2..331dbe504 100644 --- a/eth/block_pool_test.go +++ b/eth/block_pool_test.go @@ -613,6 +613,7 @@ func TestInvalidBlock(t *testing.T) { } func TestVerifyPoW(t *testing.T) { + t.Skip("***FIX*** This test is broken") logInit() _, blockPool, blockPoolTester := newTestBlockPool(t) blockPoolTester.blockChain[0] = nil diff --git a/rpc/http/server.go b/rpc/http/server.go index a34400a77..10c8fa813 100644 --- a/rpc/http/server.go +++ b/rpc/http/server.go @@ -102,7 +102,7 @@ func (s *RpcHttpServer) apiHandler(api *rpc.EthereumApi) http.Handler { if reserr != nil { rpchttplogger.Warnln(reserr) jsonerr := &rpc.RpcErrorObject{-32603, reserr.Error()} - JSON.Send(w, &rpc.RpcErrorResponse{JsonRpc: jsonrpcver, ID: &reqParsed.ID, Error: jsonerr}) + JSON.Send(w, &rpc.RpcErrorResponse{JsonRpc: jsonrpcver, ID: reqParsed.ID, Error: jsonerr}) return } diff --git a/rpc/message.go b/rpc/message.go index 78dc6e2ff..7983e003d 100644 --- a/rpc/message.go +++ b/rpc/message.go @@ -34,20 +34,20 @@ const ( ) type RpcRequest struct { + ID interface{} `json:"id"` JsonRpc string `json:"jsonrpc"` - ID int `json:"id"` Method string `json:"method"` Params []json.RawMessage `json:"params"` } type RpcSuccessResponse struct { - ID int `json:"id"` + ID interface{} `json:"id"` JsonRpc string `json:"jsonrpc"` Result interface{} `json:"result"` } type RpcErrorResponse struct { - ID *int `json:"id"` + ID interface{} `json:"id"` JsonRpc string `json:"jsonrpc"` Error *RpcErrorObject `json:"error"` } diff --git a/rpc/util.go b/rpc/util.go index 509d9a17d..679d83754 100644 --- a/rpc/util.go +++ b/rpc/util.go @@ -47,7 +47,6 @@ func (self JsonWrapper) ParseRequestBody(req *http.Request) (RpcRequest, error) // Convert JSON to native types d := json.NewDecoder(req.Body) - // d.UseNumber() defer req.Body.Close() err := d.Decode(&reqParsed) @@ -55,6 +54,7 @@ func (self JsonWrapper) ParseRequestBody(req *http.Request) (RpcRequest, error) rpclogger.Errorln("Error decoding JSON: ", err) return reqParsed, err } + rpclogger.DebugDetailf("Parsed request: %s", reqParsed) return reqParsed, nil diff --git a/rpc/ws/server.go b/rpc/ws/server.go index 6be4e8ce9..100713c10 100644 --- a/rpc/ws/server.go +++ b/rpc/ws/server.go @@ -94,9 +94,10 @@ func sockHandler(api *rpc.EthereumApi) websocket.Handler { var jsonrpcver string = "2.0" fn := func(conn *websocket.Conn) { for { - wslogger.Debugln("Handling request") + wslogger.Debugln("Handling connection") var reqParsed rpc.RpcRequest + // reqParsed, reqerr := JSON.ParseRequestBody(conn.Request()) if err := websocket.JSON.Receive(conn, &reqParsed); err != nil { jsonerr := &rpc.RpcErrorObject{-32700, rpc.ErrorParseRequest} JSON.Send(conn, &rpc.RpcErrorResponse{JsonRpc: jsonrpcver, ID: nil, Error: jsonerr}) @@ -108,7 +109,7 @@ func sockHandler(api *rpc.EthereumApi) websocket.Handler { if reserr != nil { wslogger.Warnln(reserr) jsonerr := &rpc.RpcErrorObject{-32603, reserr.Error()} - JSON.Send(conn, &rpc.RpcErrorResponse{JsonRpc: jsonrpcver, ID: &reqParsed.ID, Error: jsonerr}) + JSON.Send(conn, &rpc.RpcErrorResponse{JsonRpc: jsonrpcver, ID: reqParsed.ID, Error: jsonerr}) continue } |