| Index: chrome/browser/sync/syncable/model_type.cc
 | 
| diff --git a/chrome/browser/sync/syncable/model_type.cc b/chrome/browser/sync/syncable/model_type.cc
 | 
| index 8d4227d6d72c40c8a24ec45330d5ed946c309c9d..9c186ebd74769305b6bc88e3ba62064e5731e1c6 100644
 | 
| --- a/chrome/browser/sync/syncable/model_type.cc
 | 
| +++ b/chrome/browser/sync/syncable/model_type.cc
 | 
| @@ -11,6 +11,7 @@
 | 
|  #include "chrome/browser/sync/protocol/app_specifics.pb.h"
 | 
|  #include "chrome/browser/sync/protocol/autofill_specifics.pb.h"
 | 
|  #include "chrome/browser/sync/protocol/bookmark_specifics.pb.h"
 | 
| +#include "chrome/browser/sync/protocol/extension_setting_specifics.pb.h"
 | 
|  #include "chrome/browser/sync/protocol/extension_specifics.pb.h"
 | 
|  #include "chrome/browser/sync/protocol/nigori_specifics.pb.h"
 | 
|  #include "chrome/browser/sync/protocol/password_specifics.pb.h"
 | 
| @@ -62,6 +63,9 @@ void AddDefaultExtensionValue(syncable::ModelType datatype,
 | 
|      case APPS:
 | 
|        specifics->MutableExtension(sync_pb::app);
 | 
|        break;
 | 
| +    case EXTENSION_SETTINGS:
 | 
| +      specifics->MutableExtension(sync_pb::extension_setting);
 | 
| +      break;
 | 
|      default:
 | 
|        NOTREACHED() << "No known extension for model type.";
 | 
|    }
 | 
| @@ -115,6 +119,9 @@ int GetExtensionFieldNumberFromModelType(ModelType model_type) {
 | 
|      case APPS:
 | 
|        return sync_pb::kAppFieldNumber;
 | 
|        break;
 | 
| +    case EXTENSION_SETTINGS:
 | 
| +      return sync_pb::kExtensionSettingFieldNumber;
 | 
| +      break;
 | 
|      default:
 | 
|        NOTREACHED() << "No known extension for model type.";
 | 
|        return 0;
 | 
| @@ -192,6 +199,9 @@ ModelType GetModelTypeFromSpecifics(const sync_pb::EntitySpecifics& specifics) {
 | 
|    if (specifics.HasExtension(sync_pb::session))
 | 
|      return SESSIONS;
 | 
|  
 | 
| +  if (specifics.HasExtension(sync_pb::extension_setting))
 | 
| +    return EXTENSION_SETTINGS;
 | 
| +
 | 
|    return UNSPECIFIED;
 | 
|  }
 | 
|  
 | 
| @@ -225,6 +235,8 @@ std::string ModelTypeToString(ModelType model_type) {
 | 
|        return "Apps";
 | 
|      case AUTOFILL_PROFILE:
 | 
|        return "Autofill Profiles";
 | 
| +    case EXTENSION_SETTINGS:
 | 
| +      return "Extension settings";
 | 
|      default:
 | 
|        break;
 | 
|    }
 | 
| @@ -295,6 +307,8 @@ ModelType ModelTypeFromString(const std::string& model_type_string) {
 | 
|      return SESSIONS;
 | 
|    else if (model_type_string == "Apps")
 | 
|      return APPS;
 | 
| +  else if (model_type_string == "Extension settings")
 | 
| +    return EXTENSION_SETTINGS;
 | 
|    else
 | 
|      NOTREACHED() << "No known model type corresponding to "
 | 
|                   << model_type_string << ".";
 | 
| @@ -387,6 +401,8 @@ std::string ModelTypeToRootTag(ModelType type) {
 | 
|        return "google_chrome_apps";
 | 
|      case AUTOFILL_PROFILE:
 | 
|        return "google_chrome_autofill_profiles";
 | 
| +    case EXTENSION_SETTINGS:
 | 
| +      return "google_chrome_extension_settings";
 | 
|      default:
 | 
|        break;
 | 
|    }
 | 
| @@ -450,6 +466,10 @@ void PostTimeToTypeHistogram(ModelType model_type, base::TimeDelta time) {
 | 
|          SYNC_FREQ_HISTOGRAM("Sync.FreqApps", time);
 | 
|          return;
 | 
|      }
 | 
| +    case EXTENSION_SETTINGS: {
 | 
| +        SYNC_FREQ_HISTOGRAM("Sync.FreqExtensionSettings", time);
 | 
| +        return;
 | 
| +    }
 | 
|      default:
 | 
|        LOG(ERROR) << "No known extension for model type.";
 | 
|    }
 | 
| @@ -467,6 +487,7 @@ const char kAutofillNotificationType[] = "AUTOFILL";
 | 
|  const char kThemeNotificationType[] = "THEME";
 | 
|  const char kTypedUrlNotificationType[] = "TYPED_URL";
 | 
|  const char kExtensionNotificationType[] = "EXTENSION";
 | 
| +const char kExtensionSettingNotificationType[] = "EXTENSION_SETTING";
 | 
|  const char kNigoriNotificationType[] = "NIGORI";
 | 
|  const char kAppNotificationType[] = "APP";
 | 
|  const char kSearchEngineNotificationType[] = "SEARCH_ENGINE";
 | 
| @@ -513,6 +534,9 @@ bool RealModelTypeToNotificationType(ModelType model_type,
 | 
|      case AUTOFILL_PROFILE:
 | 
|        *notification_type = kAutofillProfileNotificationType;
 | 
|        return true;
 | 
| +    case EXTENSION_SETTINGS:
 | 
| +      *notification_type = kExtensionSettingNotificationType;
 | 
| +      return true;
 | 
|      default:
 | 
|        break;
 | 
|    }
 | 
| @@ -558,6 +582,9 @@ bool NotificationTypeToRealModelType(const std::string& notification_type,
 | 
|    } else if (notification_type == kAutofillProfileNotificationType) {
 | 
|      *model_type = AUTOFILL_PROFILE;
 | 
|      return true;
 | 
| +  } else if (notification_type == kExtensionSettingNotificationType) {
 | 
| +    *model_type = EXTENSION_SETTINGS;
 | 
| +    return true;
 | 
|    }
 | 
|    *model_type = UNSPECIFIED;
 | 
|    return false;
 | 
| 
 |