[Sync] Rip out overly-complicated ExtensionData class

Rip out sync code that took great pains to update client/server only when needed.  We now rely on the underlying layers to handle redundant updates intelligently (which both the extension service and syncapi do).

Add ExtensionSyncData::Merge() method.

Clean up now-unneeded code in extension_util.{h,cc} and
extension_sync.{h,cc}.

BUG=72659
TEST=

Review URL: http://codereview.chromium.org/6902054

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@83221 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/chrome/browser/extensions/extension_sync_data.cc b/chrome/browser/extensions/extension_sync_data.cc
index 0ef75b62..f315552 100644
--- a/chrome/browser/extensions/extension_sync_data.cc
+++ b/chrome/browser/extensions/extension_sync_data.cc
@@ -4,7 +4,26 @@
 
 #include "chrome/browser/extensions/extension_sync_data.h"
 
+#include "base/logging.h"
+
 ExtensionSyncData::ExtensionSyncData()
     : uninstalled(false), enabled(false), incognito_enabled(false) {}
 
 ExtensionSyncData::~ExtensionSyncData() {}
+
+void ExtensionSyncData::Merge(const ExtensionSyncData& new_data) {
+  CHECK_EQ(id, new_data.id);
+  CHECK(!uninstalled);
+  CHECK(!new_data.uninstalled);
+
+  // Copy version-independent properties.
+  enabled = new_data.enabled;
+  incognito_enabled = new_data.incognito_enabled;
+
+  // Copy version-dependent properties if version <= new_data.version.
+  if (version.CompareTo(new_data.version) <= 0) {
+    version = new_data.version;
+    update_url = new_data.update_url;
+    name = new_data.name;
+  }
+}