OLD | NEW |
(Empty) | |
| 1 // Copyright 2015 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 package org.chromium.chrome.browser.bookmarkswidget; |
| 6 |
| 7 import android.content.ContentResolver; |
| 8 import android.content.Context; |
| 9 import android.database.ContentObserver; |
| 10 import android.os.Handler; |
| 11 |
| 12 import org.chromium.chrome.browser.ChromeBrowserProvider; |
| 13 import org.chromium.sync.AndroidSyncSettings; |
| 14 |
| 15 /** |
| 16 * Encapsulates the different observers that can cause a widget update. |
| 17 */ |
| 18 public class BookmarkWidgetUpdateListener { |
| 19 private static final String TAG = "BookmarkWidgetUpdateListener"; |
| 20 |
| 21 /** |
| 22 * Notifies about the different kinds of updates that affect the bookmarks w
idget. |
| 23 */ |
| 24 public interface UpdateListener { |
| 25 /** |
| 26 * Called when the was a change in the bookmark model. |
| 27 */ |
| 28 public void onBookmarkModelUpdated(); |
| 29 |
| 30 /** |
| 31 * Called when the app sync enabled status has changed. |
| 32 * |
| 33 * @param enabled New state of the sync setting after the change. |
| 34 */ |
| 35 public void onSyncEnabledStatusUpdated(boolean enabled); |
| 36 |
| 37 /** |
| 38 * Called when a page thumbnail has been updated or created. |
| 39 */ |
| 40 public void onThumbnailUpdated(String url); |
| 41 } |
| 42 |
| 43 /** |
| 44 * Handles changes in the bookmarks. |
| 45 */ |
| 46 private class BookmarkUpdateObserver extends ContentObserver { |
| 47 public BookmarkUpdateObserver() { |
| 48 super(new Handler()); |
| 49 } |
| 50 |
| 51 @Override |
| 52 public void onChange(boolean selfChange) { |
| 53 if (mListener != null) mListener.onBookmarkModelUpdated(); |
| 54 } |
| 55 } |
| 56 |
| 57 /** |
| 58 * Handles changes in the sync settings. |
| 59 */ |
| 60 private class SyncUpdateObserver implements AndroidSyncSettings.AndroidSyncS
ettingsObserver { |
| 61 private boolean mIsSyncEnabled; |
| 62 |
| 63 public SyncUpdateObserver() { |
| 64 AndroidSyncSettings.registerObserver(mContext, this); |
| 65 mIsSyncEnabled = AndroidSyncSettings.isSyncEnabled(mContext); |
| 66 } |
| 67 |
| 68 @Override |
| 69 public void androidSyncSettingsChanged() { |
| 70 boolean newSyncStatus = AndroidSyncSettings.isSyncEnabled(mContext); |
| 71 if (mIsSyncEnabled != newSyncStatus) { |
| 72 mIsSyncEnabled = newSyncStatus; |
| 73 if (mListener != null) mListener.onSyncEnabledStatusUpdated(newS
yncStatus); |
| 74 } |
| 75 } |
| 76 } |
| 77 |
| 78 private final Context mContext; |
| 79 private UpdateListener mListener; |
| 80 private BookmarkUpdateObserver mBookmarkUpdateObserver; |
| 81 private AndroidSyncSettings.AndroidSyncSettingsObserver mSyncObserver; |
| 82 |
| 83 public BookmarkWidgetUpdateListener(Context context, UpdateListener listener
) { |
| 84 mContext = context; |
| 85 |
| 86 if (listener == null) return; |
| 87 mListener = listener; |
| 88 |
| 89 // Register observers for bookmark and sync state updates. |
| 90 ContentResolver contentResolver = mContext.getContentResolver(); |
| 91 mBookmarkUpdateObserver = new BookmarkUpdateObserver(); |
| 92 contentResolver.registerContentObserver( |
| 93 ChromeBrowserProvider.getBookmarksApiUri(mContext), true, |
| 94 mBookmarkUpdateObserver); |
| 95 |
| 96 mSyncObserver = new SyncUpdateObserver(); |
| 97 } |
| 98 |
| 99 public void destroy() { |
| 100 if (mListener == null) return; |
| 101 |
| 102 // Unregister observers. |
| 103 ContentResolver contentResolver = mContext.getContentResolver(); |
| 104 contentResolver.unregisterContentObserver(mBookmarkUpdateObserver); |
| 105 AndroidSyncSettings.unregisterObserver(mContext, mSyncObserver); |
| 106 mListener = null; |
| 107 } |
| 108 } |
OLD | NEW |