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

Side by Side Diff: chrome/android/java_staging/src/org/chromium/chrome/browser/bookmarkswidget/BookmarkWidgetUpdateListener.java

Issue 1141283003: Upstream oodles of Chrome for Android code into Chromium. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: final patch? Created 5 years, 7 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 unified diff | Download patch
OLDNEW
(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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698