Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(299)

Side by Side Diff: components/autofill/core/browser/webdata/autocomplete_sync_bridge.cc

Issue 2508263003: [sync] skeleton implementation of AutocompleteSyncBridge (Closed)
Patch Set: Max's comments; merged chrome_sync_client Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "components/autofill/core/browser/webdata/autocomplete_sync_bridge.h"
6
7 #include "base/bind.h"
8 #include "base/memory/ptr_util.h"
9 #include "components/autofill/core/browser/webdata/autofill_table.h"
10 #include "components/autofill/core/browser/webdata/autofill_webdata_backend.h"
11 #include "components/autofill/core/browser/webdata/autofill_webdata_service.h"
12 #include "components/sync/model/entity_data.h"
13 #include "components/sync/model/model_type_change_processor.h"
14 #include "components/sync/model/sync_error.h"
15 #include "net/base/escape.h"
16
17 namespace {
18
19 const char kAutocompleteEntryNamespaceTag[] = "autofill_entry|";
20
21 void* UserDataKey() {
22 // Use the address of a static that COMDAT folding won't ever collide
23 // with something else.
24 static int user_data_key = 0;
25 return reinterpret_cast<void*>(&user_data_key);
26 }
27
28 const std::string FormatStorageKey(const std::string name,
29 const std::string value) {
30 return net::EscapePath(name) + "|" + net::EscapePath(value);
31 }
32
33 } // namespace
34
35 namespace autofill {
36
37 // static
38 void AutocompleteSyncBridge::CreateForWebDataServiceAndBackend(
39 AutofillWebDataService* web_data_service,
40 AutofillWebDataBackend* web_data_backend) {
41 web_data_service->GetDBUserData()->SetUserData(
42 UserDataKey(),
43 new AutocompleteSyncBridge(
44 web_data_backend,
45 base::Bind(&syncer::ModelTypeChangeProcessor::Create)));
46 }
47
48 // static
49 AutocompleteSyncBridge* AutocompleteSyncBridge::FromWebDataService(
50 AutofillWebDataService* web_data_service) {
51 return static_cast<AutocompleteSyncBridge*>(
52 web_data_service->GetDBUserData()->GetUserData(UserDataKey()));
53 }
54
55 AutocompleteSyncBridge::AutocompleteSyncBridge(
56 AutofillWebDataBackend* backend,
57 const ChangeProcessorFactory& change_processor_factory)
58 : ModelTypeSyncBridge(change_processor_factory, syncer::AUTOFILL),
59 web_data_backend_(backend),
60 scoped_observer_(this) {
61 DCHECK(web_data_backend_);
62
63 scoped_observer_.Add(web_data_backend_);
64 }
65
66 AutocompleteSyncBridge::~AutocompleteSyncBridge() {
67 DCHECK(thread_checker_.CalledOnValidThread());
68 }
69
70 // syncer::ModelTypeService implementation.
71 std::unique_ptr<syncer::MetadataChangeList>
72 AutocompleteSyncBridge::CreateMetadataChangeList() {
73 DCHECK(thread_checker_.CalledOnValidThread());
74 NOTIMPLEMENTED();
75 return nullptr;
76 }
77
78 syncer::SyncError AutocompleteSyncBridge::MergeSyncData(
79 std::unique_ptr<syncer::MetadataChangeList> metadata_change_list,
80 syncer::EntityDataMap entity_data_map) {
81 DCHECK(thread_checker_.CalledOnValidThread());
82 NOTIMPLEMENTED();
83 return syncer::SyncError();
84 }
85
86 syncer::SyncError AutocompleteSyncBridge::ApplySyncChanges(
87 std::unique_ptr<syncer::MetadataChangeList> metadata_change_list,
88 syncer::EntityChangeList entity_changes) {
89 DCHECK(thread_checker_.CalledOnValidThread());
90 NOTIMPLEMENTED();
91 return syncer::SyncError();
92 }
93 void AutocompleteSyncBridge::AutocompleteSyncBridge::GetData(
94 StorageKeyList storage_keys,
95 DataCallback callback) {
96 DCHECK(thread_checker_.CalledOnValidThread());
97 NOTIMPLEMENTED();
98 }
99
100 void AutocompleteSyncBridge::GetAllData(DataCallback callback) {
101 DCHECK(thread_checker_.CalledOnValidThread());
102 NOTIMPLEMENTED();
103 }
104
105 std::string AutocompleteSyncBridge::GetClientTag(
106 const syncer::EntityData& entity_data) {
107 DCHECK(entity_data.specifics.has_autofill());
108
109 const sync_pb::AutofillSpecifics specifics = entity_data.specifics.autofill();
110 std::string storage_key =
111 FormatStorageKey(specifics.name(), specifics.value());
112 std::string prefix(kAutocompleteEntryNamespaceTag);
113 return prefix + storage_key;
114 }
115
116 std::string AutocompleteSyncBridge::GetStorageKey(
117 const syncer::EntityData& entity_data) {
118 const sync_pb::AutofillSpecifics specifics = entity_data.specifics.autofill();
119 return FormatStorageKey(specifics.name(), specifics.value());
120 }
121
122 // AutofillWebDataServiceObserverOnDBThread implementation.
123 void AutocompleteSyncBridge::AutofillEntriesChanged(
124 const AutofillChangeList& changes) {
125 DCHECK(thread_checker_.CalledOnValidThread());
126 }
127
128 } // namespace autofill
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698