OLD | NEW |
1 # Copyright 2013 The Chromium Authors. All rights reserved. | 1 # Copyright 2013 The Chromium Authors. All rights reserved. |
2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
4 | 4 |
5 # This module's classes provide an interface to mojo modules. Modules are | 5 # This module's classes provide an interface to mojo modules. Modules are |
6 # collections of interfaces and structs to be used by mojo ipc clients and | 6 # collections of interfaces and structs to be used by mojo ipc clients and |
7 # servers. | 7 # servers. |
8 # | 8 # |
9 # A simple interface would be created this way: | 9 # A simple interface would be created this way: |
10 # module = mojom.generate.module.Module('Foo') | 10 # module = mojom.generate.module.Module('Foo') |
(...skipping 585 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
596 def _IsCloneable(kind, visited_kinds): | 596 def _IsCloneable(kind, visited_kinds): |
597 if kind in visited_kinds: | 597 if kind in visited_kinds: |
598 # No need to examine the kind again. | 598 # No need to examine the kind again. |
599 return True | 599 return True |
600 visited_kinds.add(kind) | 600 visited_kinds.add(kind) |
601 if IsAnyHandleKind(kind) or IsInterfaceKind(kind) or IsAssociatedKind(kind): | 601 if IsAnyHandleKind(kind) or IsInterfaceKind(kind) or IsAssociatedKind(kind): |
602 return False | 602 return False |
603 if IsArrayKind(kind): | 603 if IsArrayKind(kind): |
604 return _IsCloneable(kind.kind, visited_kinds) | 604 return _IsCloneable(kind.kind, visited_kinds) |
605 if IsStructKind(kind) or IsUnionKind(kind): | 605 if IsStructKind(kind) or IsUnionKind(kind): |
| 606 if IsStructKind(kind) and kind.native_only: |
| 607 return False |
606 for field in kind.fields: | 608 for field in kind.fields: |
607 if not _IsCloneable(field.kind, visited_kinds): | 609 if not _IsCloneable(field.kind, visited_kinds): |
608 return False | 610 return False |
609 if IsMapKind(kind): | 611 if IsMapKind(kind): |
610 # No need to examine the key kind, only primitive kinds and non-nullable | 612 # No need to examine the key kind, only primitive kinds and non-nullable |
611 # string are allowed to be key kinds. | 613 # string are allowed to be key kinds. |
612 return _IsCloneable(kind.value_kind, visited_kinds) | 614 return _IsCloneable(kind.value_kind, visited_kinds) |
613 return True | 615 return True |
614 | 616 |
615 return _IsCloneable(kind, set()) | 617 return _IsCloneable(kind, set()) |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
647 visited_kinds = set() | 649 visited_kinds = set() |
648 for method in interface.methods: | 650 for method in interface.methods: |
649 for param in method.parameters: | 651 for param in method.parameters: |
650 if _ContainsAssociatedKinds(param.kind, visited_kinds): | 652 if _ContainsAssociatedKinds(param.kind, visited_kinds): |
651 return True | 653 return True |
652 if method.response_parameters != None: | 654 if method.response_parameters != None: |
653 for param in method.response_parameters: | 655 for param in method.response_parameters: |
654 if _ContainsAssociatedKinds(param.kind, visited_kinds): | 656 if _ContainsAssociatedKinds(param.kind, visited_kinds): |
655 return True | 657 return True |
656 return False | 658 return False |
OLD | NEW |