| Index: chrome/browser/notifications/notification_ui_manager_android.cc
 | 
| diff --git a/chrome/browser/notifications/notification_ui_manager_android.cc b/chrome/browser/notifications/notification_ui_manager_android.cc
 | 
| index d4b2f6f360dd683508045d5915d641e887dcb678..0b4408ef17f84ab2b1889ad172e3756800e2138d 100644
 | 
| --- a/chrome/browser/notifications/notification_ui_manager_android.cc
 | 
| +++ b/chrome/browser/notifications/notification_ui_manager_android.cc
 | 
| @@ -66,16 +66,10 @@ static void InitializeNotificationUIManager(JNIEnv* env,
 | 
|  }
 | 
|  
 | 
|  // static
 | 
| -NotificationUIManager* NotificationUIManager::Create(PrefService* local_state) {
 | 
| +NotificationPlatformBridge* NotificationPlatformBridge::Create() {
 | 
|    return new NotificationUIManagerAndroid();
 | 
|  }
 | 
|  
 | 
| -// static
 | 
| -NotificationUIManager*
 | 
| -NotificationUIManager::CreateNativeNotificationManager() {
 | 
| -  return nullptr;
 | 
| -}
 | 
| -
 | 
|  NotificationUIManagerAndroid::NotificationUIManagerAndroid() {
 | 
|    java_object_.Reset(
 | 
|        Java_NotificationUIManager_create(
 | 
| @@ -132,9 +126,10 @@ void NotificationUIManagerAndroid::OnNotificationClosed(
 | 
|            incognito, origin, persistent_notification_id, -1);
 | 
|  }
 | 
|  
 | 
| -void NotificationUIManagerAndroid::Add(const Notification& notification,
 | 
| -                                       Profile* profile) {
 | 
| -  DCHECK(profile);
 | 
| +void NotificationUIManagerAndroid::Display(const std::string& notification_id,
 | 
| +                                           const std::string& profile_id,
 | 
| +                                           bool incognito,
 | 
| +                                           const Notification& notification) {
 | 
|    JNIEnv* env = AttachCurrentThread();
 | 
|  
 | 
|    // The Android notification UI manager only supports Web Notifications, which
 | 
| @@ -182,13 +177,13 @@ void NotificationUIManagerAndroid::Add(const Notification& notification,
 | 
|    ScopedJavaLocalRef<jintArray> vibration_pattern =
 | 
|        base::android::ToJavaIntArray(env, notification.vibration_pattern());
 | 
|  
 | 
| -  ScopedJavaLocalRef<jstring> profile_id =
 | 
| -      ConvertUTF8ToJavaString(env, profile->GetPath().BaseName().value());
 | 
| +  ScopedJavaLocalRef<jstring> j_profile_id =
 | 
| +      ConvertUTF8ToJavaString(env, profile_id);
 | 
|  
 | 
|    Java_NotificationUIManager_displayNotification(
 | 
|        env, java_object_.obj(), persistent_notification_id, origin.obj(),
 | 
| -      profile_id.obj(), profile->IsOffTheRecord(), tag.obj(), title.obj(),
 | 
| -      body.obj(), notification_icon.obj(), badge.obj(), vibration_pattern.obj(),
 | 
| +      j_profile_id.obj(), incognito, tag.obj(), title.obj(), body.obj(),
 | 
| +      notification_icon.obj(), badge.obj(), vibration_pattern.obj(),
 | 
|        notification.timestamp().ToJavaTime(), notification.renotify(),
 | 
|        notification.silent(), action_titles.obj(), action_icons.obj());
 | 
|  
 | 
| @@ -198,32 +193,21 @@ void NotificationUIManagerAndroid::Add(const Notification& notification,
 | 
|    notification.delegate()->Display();
 | 
|  }
 | 
|  
 | 
| -bool NotificationUIManagerAndroid::Update(const Notification& notification,
 | 
| -                                          Profile* profile) {
 | 
| -  NOTREACHED();
 | 
| -  return false;
 | 
| -}
 | 
| -
 | 
| -const Notification* NotificationUIManagerAndroid::FindById(
 | 
| -    const std::string& delegate_id,
 | 
| -    ProfileID profile_id) const {
 | 
| -  NOTREACHED();
 | 
| -  return nullptr;
 | 
| -}
 | 
| -
 | 
| -bool NotificationUIManagerAndroid::CancelById(const std::string& delegate_id,
 | 
| -                                              ProfileID profile_id) {
 | 
| +void NotificationUIManagerAndroid::Close(const std::string& profile_id,
 | 
| +                                         const std::string& notification_id) {
 | 
|    int64_t persistent_notification_id = 0;
 | 
|  
 | 
|    // TODO(peter): Use the |delegate_id| directly when notification ids are being
 | 
|    // generated by content/ instead of us.
 | 
| -  if (!base::StringToInt64(delegate_id, &persistent_notification_id))
 | 
| -    return false;
 | 
| +  if (!base::StringToInt64(notification_id, &persistent_notification_id)) {
 | 
| +    LOG(WARNING) << "Unable to decode notification_id " << notification_id;
 | 
| +    return;
 | 
| +  }
 | 
|  
 | 
|    const auto iterator =
 | 
|        regenerated_notification_infos_.find(persistent_notification_id);
 | 
|    if (iterator == regenerated_notification_infos_.end())
 | 
| -    return false;
 | 
| +    return;
 | 
|  
 | 
|    const RegeneratedNotificationInfo& notification_info = iterator->second;
 | 
|  
 | 
| @@ -233,46 +217,29 @@ bool NotificationUIManagerAndroid::CancelById(const std::string& delegate_id,
 | 
|        ConvertUTF8ToJavaString(env, notification_info.first);
 | 
|    ScopedJavaLocalRef<jstring> tag =
 | 
|        ConvertUTF8ToJavaString(env, notification_info.second);
 | 
| +  ScopedJavaLocalRef<jstring> j_profile_id =
 | 
| +      ConvertUTF8ToJavaString(env, profile_id);
 | 
|  
 | 
|    regenerated_notification_infos_.erase(iterator);
 | 
|  
 | 
| -  Java_NotificationUIManager_closeNotification(env,
 | 
| -                                               java_object_.obj(),
 | 
| -                                               persistent_notification_id,
 | 
| -                                               origin.obj(),
 | 
| -                                               tag.obj());
 | 
| -  return true;
 | 
| -}
 | 
| -
 | 
| -std::set<std::string>
 | 
| -NotificationUIManagerAndroid::GetAllIdsByProfileAndSourceOrigin(
 | 
| -    ProfileID profile_id,
 | 
| -    const GURL& source) {
 | 
| -  NOTREACHED();
 | 
| -  return std::set<std::string>();
 | 
| -}
 | 
| -
 | 
| -std::set<std::string> NotificationUIManagerAndroid::GetAllIdsByProfile(
 | 
| -    ProfileID profile_id) {
 | 
| -  NOTREACHED();
 | 
| -  return std::set<std::string>();
 | 
| +  Java_NotificationUIManager_closeNotification(
 | 
| +      env, java_object_.obj(), j_profile_id.obj(), persistent_notification_id,
 | 
| +      origin.obj(), tag.obj());
 | 
|  }
 | 
|  
 | 
| -bool NotificationUIManagerAndroid::CancelAllBySourceOrigin(
 | 
| -    const GURL& source_origin) {
 | 
| -  NOTREACHED();
 | 
| +bool NotificationUIManagerAndroid::GetDisplayed(
 | 
| +    const std::string& profile_id,
 | 
| +    bool incognito,
 | 
| +    std::set<std::string>* notifications) const {
 | 
| +  // TODO(miguelg): This can actually be implemented for M+
 | 
|    return false;
 | 
|  }
 | 
|  
 | 
| -bool NotificationUIManagerAndroid::CancelAllByProfile(ProfileID profile_id) {
 | 
| -  NOTREACHED();
 | 
| -  return false;
 | 
| -}
 | 
| -
 | 
| -void NotificationUIManagerAndroid::CancelAll() {
 | 
| -  NOTREACHED();
 | 
| +bool NotificationUIManagerAndroid::SupportsNotificationCenter() const {
 | 
| +  return true;
 | 
|  }
 | 
|  
 | 
| -bool NotificationUIManagerAndroid::RegisterNotificationUIManager(JNIEnv* env) {
 | 
| +bool NotificationUIManagerAndroid::RegisterNotificationPlatformBridge(
 | 
| +    JNIEnv* env) {
 | 
|    return RegisterNativesImpl(env);
 | 
|  }
 | 
| 
 |