Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 package org.chromium.chrome.browser.suggestions; | 5 package org.chromium.chrome.browser.suggestions; |
| 6 | 6 |
| 7 import static org.chromium.base.ContextUtils.getApplicationContext; | |
|
dgn
2017/05/25 10:33:33
just use a regular import here, and call ContextUt
fhorschig
2017/05/30 10:25:21
Done.
| |
| 8 | |
| 7 import org.chromium.base.annotations.JNIAdditionalImport; | 9 import org.chromium.base.annotations.JNIAdditionalImport; |
| 10 import org.chromium.chrome.browser.ChromeFeatureList; | |
| 11 import org.chromium.chrome.browser.UrlConstants; | |
| 12 import org.chromium.chrome.browser.partnercustomizations.HomepageManager; | |
| 8 import org.chromium.chrome.browser.profiles.Profile; | 13 import org.chromium.chrome.browser.profiles.Profile; |
| 9 | 14 |
| 10 /** | 15 /** |
| 11 * Methods to bridge into native history to provide most recent urls, titles and thumbnails. | 16 * Methods to bridge into native history to provide most recent urls, titles and thumbnails. |
| 12 */ | 17 */ |
| 13 @JNIAdditionalImport(MostVisitedSites.class) // Needed for the Observer usage in the native calls. | 18 @JNIAdditionalImport(MostVisitedSites.class) // Needed for the Observer usage in the native calls. |
| 14 public class MostVisitedSitesBridge implements MostVisitedSites { | 19 public class MostVisitedSitesBridge |
| 20 implements MostVisitedSites, HomepageManager.HomepageStateListener { | |
| 15 private long mNativeMostVisitedSitesBridge; | 21 private long mNativeMostVisitedSitesBridge; |
| 16 | 22 |
| 17 /** | 23 /** |
| 18 * MostVisitedSites constructor requires a valid user profile object. | 24 * MostVisitedSites constructor requires a valid user profile object. |
| 19 * | 25 * |
| 20 * @param profile The profile for which to fetch most visited sites. | 26 * @param profile The profile for which to fetch most visited sites. |
| 21 */ | 27 */ |
| 22 public MostVisitedSitesBridge(Profile profile) { | 28 public MostVisitedSitesBridge(Profile profile) { |
| 23 mNativeMostVisitedSitesBridge = nativeInit(profile); | 29 mNativeMostVisitedSitesBridge = nativeInit(profile); |
| 30 // The first tile replaces the home page button (only) in Chrome Home. | |
| 31 if (ChromeFeatureList.isEnabled(ChromeFeatureList.CHROME_HOME)) { | |
| 32 initializeClient(); | |
| 33 HomepageManager.getInstance(getApplicationContext()).addListener(thi s); | |
|
dgn
2017/05/25 10:33:33
when should the listener be removed? destroy() ?
fhorschig
2017/05/30 10:25:21
Yes. Done.
| |
| 34 } | |
| 24 } | 35 } |
| 25 | 36 |
| 26 /** | 37 /** |
| 27 * Cleans up the C++ side of this class. This instance must not be used afte r calling destroy(). | 38 * Cleans up the C++ side of this class. This instance must not be used afte r calling destroy(). |
| 28 */ | 39 */ |
| 29 @Override | 40 @Override |
| 30 public void destroy() { | 41 public void destroy() { |
| 31 assert mNativeMostVisitedSitesBridge != 0; | 42 assert mNativeMostVisitedSitesBridge != 0; |
| 32 nativeDestroy(mNativeMostVisitedSitesBridge); | 43 nativeDestroy(mNativeMostVisitedSitesBridge); |
| 33 mNativeMostVisitedSitesBridge = 0; | 44 mNativeMostVisitedSitesBridge = 0; |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 69 public void recordPageImpression(int[] tileTypes, int[] sources, String[] ti leUrls) { | 80 public void recordPageImpression(int[] tileTypes, int[] sources, String[] ti leUrls) { |
| 70 nativeRecordPageImpression(mNativeMostVisitedSitesBridge, tileTypes, sou rces, tileUrls); | 81 nativeRecordPageImpression(mNativeMostVisitedSitesBridge, tileTypes, sou rces, tileUrls); |
| 71 } | 82 } |
| 72 | 83 |
| 73 @Override | 84 @Override |
| 74 public void recordOpenedMostVisitedItem( | 85 public void recordOpenedMostVisitedItem( |
| 75 int index, @TileVisualType int type, @TileSource int source) { | 86 int index, @TileVisualType int type, @TileSource int source) { |
| 76 nativeRecordOpenedMostVisitedItem(mNativeMostVisitedSitesBridge, index, type, source); | 87 nativeRecordOpenedMostVisitedItem(mNativeMostVisitedSitesBridge, index, type, source); |
| 77 } | 88 } |
| 78 | 89 |
| 90 @Override | |
| 91 public void onHomepageStateUpdated() { | |
| 92 if (mNativeMostVisitedSitesBridge == 0) { | |
|
dgn
2017/05/25 10:33:33
can it happen in the normal functioning of the cla
fhorschig
2017/05/30 10:25:21
Changed to assert.
This can not happen anymore (be
| |
| 93 return; // Calling the blacklist only works if the native side of th e bridge is alive. | |
| 94 } | |
| 95 // Ensure the home page is set as first tile if (re-)enabled - even if b lacklisted before. | |
|
dgn
2017/05/25 10:33:33
how does that set the tile as first? to me it only
fhorschig
2017/05/30 10:25:21
Absolutely. Gone.
| |
| 96 if (HomepageManager.isHomepageEnabled(getApplicationContext())) { | |
| 97 removeBlacklistedUrl(HomepageManager.getHomepageUri(getApplicationCo ntext())); | |
| 98 } | |
| 99 } | |
| 100 | |
| 101 private void initializeClient() { | |
| 102 nativeSetClient(mNativeMostVisitedSitesBridge, new Client() { | |
| 103 @Override | |
| 104 public boolean isHomePageEnabled() { | |
| 105 return HomepageManager.isHomepageEnabled(getApplicationContext() ); | |
| 106 } | |
| 107 | |
| 108 @Override | |
| 109 public boolean isNewTabPageUsedAsHomePage() { | |
| 110 return HomepageManager.getHomepageUri(getApplicationContext()) | |
|
dgn
2017/05/25 10:33:33
compare strings with TextUtils.equals(s1, s2), the
fhorschig
2017/05/30 10:25:21
Thanks, done and used.
(This code used to work bec
| |
| 111 .equals(UrlConstants.NTP_URL); | |
| 112 } | |
| 113 | |
| 114 @Override | |
| 115 public String getHomePageUrl() { | |
|
dgn
2017/05/25 10:33:33
this can return null, mark @Nullable? also, does t
fhorschig
2017/05/30 10:25:21
@Nullable added.
The backend handles null values n
| |
| 116 return HomepageManager.getHomepageUri(getApplicationContext()); | |
| 117 } | |
| 118 }); | |
| 119 } | |
| 120 | |
| 79 private native long nativeInit(Profile profile); | 121 private native long nativeInit(Profile profile); |
| 80 private native void nativeDestroy(long nativeMostVisitedSitesBridge); | 122 private native void nativeDestroy(long nativeMostVisitedSitesBridge); |
| 81 private native void nativeSetObserver( | 123 private native void nativeSetObserver( |
| 82 long nativeMostVisitedSitesBridge, MostVisitedSites.Observer observe r, int numSites); | 124 long nativeMostVisitedSitesBridge, MostVisitedSites.Observer observe r, int numSites); |
| 125 private native void nativeSetClient( | |
| 126 long nativeMostVisitedSitesBridge, MostVisitedSites.Client client); | |
| 83 private native void nativeAddOrRemoveBlacklistedUrl( | 127 private native void nativeAddOrRemoveBlacklistedUrl( |
| 84 long nativeMostVisitedSitesBridge, String url, boolean addUrl); | 128 long nativeMostVisitedSitesBridge, String url, boolean addUrl); |
| 85 private native void nativeRecordPageImpression( | 129 private native void nativeRecordPageImpression( |
| 86 long nativeMostVisitedSitesBridge, int[] tileTypes, int[] sources, S tring[] tileUrls); | 130 long nativeMostVisitedSitesBridge, int[] tileTypes, int[] sources, S tring[] tileUrls); |
| 87 private native void nativeRecordOpenedMostVisitedItem( | 131 private native void nativeRecordOpenedMostVisitedItem( |
| 88 long nativeMostVisitedSitesBridge, int index, int tileType, int sour ce); | 132 long nativeMostVisitedSitesBridge, int index, int tileType, int sour ce); |
| 89 } | 133 } |
| OLD | NEW |