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)) |
+ |