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

Unified Diff: chrome/browser/sync/engine/syncapi.h

Issue 6537027: Revert 75287 - [Sync] Initial support for encrypting any datatype (no UI hook... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 9 years, 10 months 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/sync/engine/change_reorder_buffer.h ('k') | chrome/browser/sync/engine/syncapi.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/sync/engine/syncapi.h
===================================================================
--- chrome/browser/sync/engine/syncapi.h (revision 75295)
+++ chrome/browser/sync/engine/syncapi.h (working copy)
@@ -266,26 +266,14 @@
// Determines whether part of the entry is encrypted, and if so attempts to
// decrypt it. Unless decryption is necessary and fails, this will always
- // return |true|. If the contents are encrypted, the decrypted data will be
- // stored in |unencrypted_data_|.
- // This method is invoked once when the BaseNode is initialized.
+ // return |true|.
bool DecryptIfNecessary(syncable::Entry* entry);
- // Returns the unencrypted specifics associated with |entry|. If |entry| was
- // not encrypted, it directly returns |entry|'s EntitySpecifics. Otherwise,
- // returns |unencrypted_data_|.
- // This method is invoked by the datatype specific Get<datatype>Specifics
- // methods.
- const sync_pb::EntitySpecifics& GetUnencryptedSpecifics(
- const syncable::Entry* entry) const;
-
private:
void* operator new(size_t size); // Node is meant for stack use only.
- // A holder for the unencrypted data stored in an encrypted node.
- sync_pb::EntitySpecifics unencrypted_data_;
-
- // Same as |unencrypted_data_|, but for legacy password encryption.
+ // If this node represents a password, this field will hold the actual
+ // decrypted password data.
scoped_ptr<sync_pb::PasswordSpecificsData> password_data_;
friend class SyncApiTest;
@@ -400,10 +388,6 @@
// Should only be called if GetModelType() == SESSIONS.
void SetSessionSpecifics(const sync_pb::SessionSpecifics& specifics);
- // Resets the EntitySpecifics for this node based on the unencrypted data.
- // Will encrypt if necessary.
- void ResetFromSpecifics();
-
// Implementation of BaseNode's abstract virtual accessors.
virtual const syncable::Entry* GetEntry() const;
@@ -452,9 +436,6 @@
// upcoming commit pass.
void MarkForSyncing();
- // Encrypt the specifics if the datatype requries it.
- void EncryptIfNecessary(sync_pb::EntitySpecifics* new_value);
-
// The underlying syncable object which this class wraps.
syncable::MutableEntry* entry_;
@@ -606,21 +587,15 @@
// internal types from clients of the interface.
class SyncInternal;
- // TODO(zea): One day get passwords playing nicely with the rest of encryption
- // and get rid of this.
- class ExtraPasswordChangeRecordData {
+ // TODO(tim): Depending on how multi-type encryption pans out, maybe we
+ // should turn ChangeRecord itself into a class. Or we could template this
+ // wrapper / add a templated method to return unencrypted protobufs.
+ class ExtraChangeRecordData {
public:
- ExtraPasswordChangeRecordData();
- explicit ExtraPasswordChangeRecordData(
- const sync_pb::PasswordSpecificsData& data);
- virtual ~ExtraPasswordChangeRecordData();
+ virtual ~ExtraChangeRecordData();
// Transfers ownership of the DictionaryValue to the caller.
- virtual DictionaryValue* ToValue() const;
-
- const sync_pb::PasswordSpecificsData& unencrypted() const;
- private:
- sync_pb::PasswordSpecificsData unencrypted_;
+ virtual DictionaryValue* ToValue() const = 0;
};
// ChangeRecord indicates a single item that changed as a result of a sync
@@ -642,9 +617,26 @@
int64 id;
Action action;
sync_pb::EntitySpecifics specifics;
- linked_ptr<ExtraPasswordChangeRecordData> extra;
+ linked_ptr<ExtraChangeRecordData> extra;
};
+ // Since PasswordSpecifics is just an encrypted blob, we extend to provide
+ // access to unencrypted bits.
+ class ExtraPasswordChangeRecordData : public ExtraChangeRecordData {
+ public:
+ explicit ExtraPasswordChangeRecordData(
+ const sync_pb::PasswordSpecificsData& data);
+ virtual ~ExtraPasswordChangeRecordData();
+
+ // Transfers ownership of the DictionaryValue to the caller.
+ virtual DictionaryValue* ToValue() const;
+
+ const sync_pb::PasswordSpecificsData& unencrypted() const;
+
+ private:
+ sync_pb::PasswordSpecificsData unencrypted_;
+ };
+
// Status encapsulates detailed state about the internals of the SyncManager.
struct Status {
// Summary is a distilled set of important information that the end-user may
@@ -809,14 +801,10 @@
virtual void OnStopSyncingPermanently() = 0;
// After a request to clear server data, these callbacks are invoked to
- // indicate success or failure.
+ // indicate success or failure
virtual void OnClearServerDataSucceeded() = 0;
virtual void OnClearServerDataFailed() = 0;
- // Called after we finish encrypting all appropriate datatypes.
- virtual void OnEncryptionComplete(
- const syncable::ModelTypeSet& encrypted_types) = 0;
-
protected:
virtual ~Observer();
};
@@ -897,9 +885,6 @@
// *not* override an explicit passphrase set previously.
void SetPassphrase(const std::string& passphrase, bool is_explicit);
- // Set the datatypes we want to encrypt and encrypt any nodes as necessary.
- void EncryptDataTypes(const syncable::ModelTypeSet& encrypted_types);
-
// Requests the syncer thread to pause. The observer's OnPause
// method will be called when the syncer thread is paused. Returns
// false if the syncer thread can not be paused (e.g. if it is not
« no previous file with comments | « chrome/browser/sync/engine/change_reorder_buffer.h ('k') | chrome/browser/sync/engine/syncapi.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698