| OLD | NEW |
| 1 #!/usr/bin/python2.4 | 1 #!/usr/bin/python2.4 |
| 2 # Copyright (c) 2011 The Chromium Authors. All rights reserved. | 2 # Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
| 4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
| 5 | 5 |
| 6 """An implementation of the server side of the Chromium sync protocol. | 6 """An implementation of the server side of the Chromium sync protocol. |
| 7 | 7 |
| 8 The details of the protocol are described mostly by comments in the protocol | 8 The details of the protocol are described mostly by comments in the protocol |
| 9 buffer definition at chrome/browser/sync/protocol/sync.proto. | 9 buffer definition at chrome/browser/sync/protocol/sync.proto. |
| 10 """ | 10 """ |
| (...skipping 845 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 856 all_entries = self._entries.values() | 856 all_entries = self._entries.values() |
| 857 self._entries.clear() | 857 self._entries.clear() |
| 858 for entry in all_entries: | 858 for entry in all_entries: |
| 859 new_id = self._RewriteVersionInId(entry.id_string) | 859 new_id = self._RewriteVersionInId(entry.id_string) |
| 860 entry.id_string = new_id | 860 entry.id_string = new_id |
| 861 if entry.HasField('parent_id_string'): | 861 if entry.HasField('parent_id_string'): |
| 862 entry.parent_id_string = self._RewriteVersionInId( | 862 entry.parent_id_string = self._RewriteVersionInId( |
| 863 entry.parent_id_string) | 863 entry.parent_id_string) |
| 864 self._entries[entry.id_string] = entry | 864 self._entries[entry.id_string] = entry |
| 865 | 865 |
| 866 def TriggerSyncTabs(self): |
| 867 """Set the 'sync_tabs' field to this account's nigori node. |
| 868 |
| 869 If the field is not currently set, will write a new nigori node entry |
| 870 with the field set. Else does nothing. |
| 871 """ |
| 872 |
| 873 nigori_tag = "google_chrome_nigori" |
| 874 nigori_original = self._entries.get(self._ServerTagToId(nigori_tag)) |
| 875 if (nigori_original.specifics.Extensions[nigori_specifics_pb2.nigori]. |
| 876 sync_tabs): |
| 877 return |
| 878 nigori_new = copy.deepcopy(nigori_original) |
| 879 nigori_new.specifics.Extensions[nigori_specifics_pb2.nigori].sync_tabs = ( |
| 880 True) |
| 881 self._SaveEntry(nigori_new) |
| 882 |
| 866 | 883 |
| 867 class TestServer(object): | 884 class TestServer(object): |
| 868 """An object to handle requests for one (and only one) Chrome Sync account. | 885 """An object to handle requests for one (and only one) Chrome Sync account. |
| 869 | 886 |
| 870 TestServer consumes the sync command messages that are the outermost | 887 TestServer consumes the sync command messages that are the outermost |
| 871 layers of the protocol, performs the corresponding actions on its | 888 layers of the protocol, performs the corresponding actions on its |
| 872 SyncDataModel, and constructs an appropropriate response message. | 889 SyncDataModel, and constructs an appropropriate response message. |
| 873 """ | 890 """ |
| 874 | 891 |
| 875 def __init__(self): | 892 def __init__(self): |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 932 return ( | 949 return ( |
| 933 200, | 950 200, |
| 934 '<html><title>Birthday error</title><H1>Birthday error</H1></html>') | 951 '<html><title>Birthday error</title><H1>Birthday error</H1></html>') |
| 935 | 952 |
| 936 def HandleSetTransientError(self): | 953 def HandleSetTransientError(self): |
| 937 self.transient_error = True | 954 self.transient_error = True |
| 938 return ( | 955 return ( |
| 939 200, | 956 200, |
| 940 '<html><title>Transient error</title><H1>Transient error</H1></html>') | 957 '<html><title>Transient error</title><H1>Transient error</H1></html>') |
| 941 | 958 |
| 959 def HandleSetSyncTabs(self): |
| 960 """Set the 'sync_tab' field of the nigori node for this account.""" |
| 961 self.account.TriggerSyncTabs() |
| 962 return ( |
| 963 200, |
| 964 '<html><title>Sync Tabs</title><H1>Sync Tabs</H1></html>') |
| 965 |
| 942 def HandleCommand(self, query, raw_request): | 966 def HandleCommand(self, query, raw_request): |
| 943 """Decode and handle a sync command from a raw input of bytes. | 967 """Decode and handle a sync command from a raw input of bytes. |
| 944 | 968 |
| 945 This is the main entry point for this class. It is safe to call this | 969 This is the main entry point for this class. It is safe to call this |
| 946 method from multiple threads. | 970 method from multiple threads. |
| 947 | 971 |
| 948 Args: | 972 Args: |
| 949 raw_request: An iterable byte sequence to be interpreted as a sync | 973 raw_request: An iterable byte sequence to be interpreted as a sync |
| 950 protocol command. | 974 protocol command. |
| 951 Returns: | 975 Returns: |
| (...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1078 | 1102 |
| 1079 update_sieve.CheckMigrationState() | 1103 update_sieve.CheckMigrationState() |
| 1080 | 1104 |
| 1081 new_timestamp, entries, remaining = self.account.GetChanges(update_sieve) | 1105 new_timestamp, entries, remaining = self.account.GetChanges(update_sieve) |
| 1082 | 1106 |
| 1083 update_response.changes_remaining = remaining | 1107 update_response.changes_remaining = remaining |
| 1084 for entry in entries: | 1108 for entry in entries: |
| 1085 reply = update_response.entries.add() | 1109 reply = update_response.entries.add() |
| 1086 reply.CopyFrom(entry) | 1110 reply.CopyFrom(entry) |
| 1087 update_sieve.SaveProgress(new_timestamp, update_response) | 1111 update_sieve.SaveProgress(new_timestamp, update_response) |
| OLD | NEW |