| Index: third_party/grpc/tools/buildgen/bunch.py
|
| diff --git a/third_party/WebKit/LayoutTests/http/tests/websocket/close_wsh.py b/third_party/grpc/tools/buildgen/bunch.py
|
| similarity index 60%
|
| copy from third_party/WebKit/LayoutTests/http/tests/websocket/close_wsh.py
|
| copy to third_party/grpc/tools/buildgen/bunch.py
|
| index 1b02d66267e294ce83977dac64f075981705647c..3f5af53778f1445407baaac53a1b01443a1369ba 100644
|
| --- a/third_party/WebKit/LayoutTests/http/tests/websocket/close_wsh.py
|
| +++ b/third_party/grpc/tools/buildgen/bunch.py
|
| @@ -1,4 +1,4 @@
|
| -# Copyright 2011, Google Inc.
|
| +# Copyright 2015-2016, Google Inc.
|
| # All rights reserved.
|
| #
|
| # Redistribution and use in source and binary forms, with or without
|
| @@ -27,27 +27,42 @@
|
| # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
| # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
| +"""Allows dot-accessible dictionaries."""
|
|
|
| -import logging
|
| -_GOODBYE_MESSAGE = u'Goodbye'
|
|
|
| +class Bunch(dict):
|
|
|
| -def web_socket_do_extra_handshake(request):
|
| - pass # Always accept.
|
| + def __init__(self, d):
|
| + dict.__init__(self, d)
|
| + self.__dict__.update(d)
|
|
|
|
|
| -def web_socket_transfer_data(request):
|
| - while True:
|
| - line = request.ws_stream.receive_message()
|
| - if line is None:
|
| - return
|
| - if isinstance(line, unicode):
|
| - request.ws_stream.send_message(line, binary=False)
|
| - if line == _GOODBYE_MESSAGE:
|
| - return
|
| - else:
|
| - request.ws_stream.send_message(line, binary=True)
|
| +# Converts any kind of variable to a Bunch
|
| +def to_bunch(var):
|
| + if isinstance(var, list):
|
| + return [to_bunch(i) for i in var]
|
| + if isinstance(var, dict):
|
| + ret = {}
|
| + for k, v in var.items():
|
| + if isinstance(v, (list, dict)):
|
| + v = to_bunch(v)
|
| + ret[k] = v
|
| + return Bunch(ret)
|
| + else:
|
| + return var
|
|
|
|
|
| -def web_socket_passive_closing_handshake(request):
|
| - return request.ws_close_code, request.ws_close_reason
|
| +# Merges JSON 'add' into JSON 'dst'
|
| +def merge_json(dst, add):
|
| + if isinstance(dst, dict) and isinstance(add, dict):
|
| + for k, v in add.items():
|
| + if k in dst:
|
| + if k == '#': continue
|
| + merge_json(dst[k], v)
|
| + else:
|
| + dst[k] = v
|
| + elif isinstance(dst, list) and isinstance(add, list):
|
| + dst.extend(add)
|
| + else:
|
| + raise Exception('Tried to merge incompatible objects %s %s\n\n%r\n\n%r' % (type(dst).__name__, type(add).__name__, dst, add))
|
| +
|
|
|