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

Side by Side Diff: chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java

Issue 1459593002: Added a UI for the Interests Prototype. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years 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
1 // Copyright 2015 The Chromium Authors. All rights reserved. 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 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.ntp; 5 package org.chromium.chrome.browser.ntp;
6 6
7 import android.app.Activity; 7 import android.app.Activity;
8 import android.app.Dialog; 8 import android.app.Dialog;
9 import android.content.Context; 9 import android.content.Context;
10 import android.graphics.Bitmap; 10 import android.graphics.Bitmap;
(...skipping 18 matching lines...) Expand all
29 import org.chromium.chrome.browser.compositor.layouts.content.InvalidationAwareT humbnailProvider; 29 import org.chromium.chrome.browser.compositor.layouts.content.InvalidationAwareT humbnailProvider;
30 import org.chromium.chrome.browser.document.DocumentMetricIds; 30 import org.chromium.chrome.browser.document.DocumentMetricIds;
31 import org.chromium.chrome.browser.enhancedbookmarks.EnhancedBookmarkUtils; 31 import org.chromium.chrome.browser.enhancedbookmarks.EnhancedBookmarkUtils;
32 import org.chromium.chrome.browser.favicon.FaviconHelper; 32 import org.chromium.chrome.browser.favicon.FaviconHelper;
33 import org.chromium.chrome.browser.favicon.FaviconHelper.FaviconImageCallback; 33 import org.chromium.chrome.browser.favicon.FaviconHelper.FaviconImageCallback;
34 import org.chromium.chrome.browser.favicon.FaviconHelper.IconAvailabilityCallbac k; 34 import org.chromium.chrome.browser.favicon.FaviconHelper.IconAvailabilityCallbac k;
35 import org.chromium.chrome.browser.favicon.LargeIconBridge; 35 import org.chromium.chrome.browser.favicon.LargeIconBridge;
36 import org.chromium.chrome.browser.favicon.LargeIconBridge.LargeIconCallback; 36 import org.chromium.chrome.browser.favicon.LargeIconBridge.LargeIconCallback;
37 import org.chromium.chrome.browser.metrics.StartupMetrics; 37 import org.chromium.chrome.browser.metrics.StartupMetrics;
38 import org.chromium.chrome.browser.ntp.BookmarksPage.BookmarkSelectedListener; 38 import org.chromium.chrome.browser.ntp.BookmarksPage.BookmarkSelectedListener;
39 import org.chromium.chrome.browser.ntp.InterestsPage.InterestsClickListener;
39 import org.chromium.chrome.browser.ntp.LogoBridge.Logo; 40 import org.chromium.chrome.browser.ntp.LogoBridge.Logo;
40 import org.chromium.chrome.browser.ntp.LogoBridge.LogoObserver; 41 import org.chromium.chrome.browser.ntp.LogoBridge.LogoObserver;
41 import org.chromium.chrome.browser.ntp.NewTabPageView.NewTabPageManager; 42 import org.chromium.chrome.browser.ntp.NewTabPageView.NewTabPageManager;
42 import org.chromium.chrome.browser.preferences.DocumentModeManager; 43 import org.chromium.chrome.browser.preferences.DocumentModeManager;
43 import org.chromium.chrome.browser.preferences.DocumentModePreference; 44 import org.chromium.chrome.browser.preferences.DocumentModePreference;
44 import org.chromium.chrome.browser.preferences.PrefServiceBridge; 45 import org.chromium.chrome.browser.preferences.PrefServiceBridge;
45 import org.chromium.chrome.browser.preferences.PreferencesLauncher; 46 import org.chromium.chrome.browser.preferences.PreferencesLauncher;
46 import org.chromium.chrome.browser.profiles.MostVisitedSites; 47 import org.chromium.chrome.browser.profiles.MostVisitedSites;
47 import org.chromium.chrome.browser.profiles.MostVisitedSites.MostVisitedURLsObse rver; 48 import org.chromium.chrome.browser.profiles.MostVisitedSites.MostVisitedURLsObse rver;
48 import org.chromium.chrome.browser.profiles.MostVisitedSites.ThumbnailCallback; 49 import org.chromium.chrome.browser.profiles.MostVisitedSites.ThumbnailCallback;
49 import org.chromium.chrome.browser.profiles.Profile; 50 import org.chromium.chrome.browser.profiles.Profile;
50 import org.chromium.chrome.browser.search_engines.TemplateUrlService; 51 import org.chromium.chrome.browser.search_engines.TemplateUrlService;
51 import org.chromium.chrome.browser.search_engines.TemplateUrlService.TemplateUrl ServiceObserver; 52 import org.chromium.chrome.browser.search_engines.TemplateUrlService.TemplateUrl ServiceObserver;
52 import org.chromium.chrome.browser.tab.EmptyTabObserver; 53 import org.chromium.chrome.browser.tab.EmptyTabObserver;
53 import org.chromium.chrome.browser.tab.Tab; 54 import org.chromium.chrome.browser.tab.Tab;
54 import org.chromium.chrome.browser.tab.TabObserver; 55 import org.chromium.chrome.browser.tab.TabObserver;
55 import org.chromium.chrome.browser.tabmodel.TabModel.TabLaunchType; 56 import org.chromium.chrome.browser.tabmodel.TabModel.TabLaunchType;
56 import org.chromium.chrome.browser.tabmodel.TabModelSelector; 57 import org.chromium.chrome.browser.tabmodel.TabModelSelector;
57 import org.chromium.chrome.browser.util.FeatureUtilities; 58 import org.chromium.chrome.browser.util.FeatureUtilities;
58 import org.chromium.content_public.browser.LoadUrlParams; 59 import org.chromium.content_public.browser.LoadUrlParams;
59 import org.chromium.net.NetworkChangeNotifier; 60 import org.chromium.net.NetworkChangeNotifier;
61 import org.chromium.sync.signin.ChromeSigninController;
60 import org.chromium.ui.base.DeviceFormFactor; 62 import org.chromium.ui.base.DeviceFormFactor;
61 import org.chromium.ui.base.PageTransition; 63 import org.chromium.ui.base.PageTransition;
62 64
63 import java.util.concurrent.TimeUnit; 65 import java.util.concurrent.TimeUnit;
64 66
65 import jp.tomorrowkey.android.gifplayer.BaseGifImage; 67 import jp.tomorrowkey.android.gifplayer.BaseGifImage;
66 68
67 /** 69 /**
68 * Provides functionality when the user interacts with the NTP. 70 * Provides functionality when the user interacts with the NTP.
69 */ 71 */
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
170 NativePage page = BookmarksPage.buildPageInDocumentMode( 172 NativePage page = BookmarksPage.buildPageInDocumentMode(
171 activity, tab, tabModelSelector, Profile.getLastUsedProfile( ), 173 activity, tab, tabModelSelector, Profile.getLastUsedProfile( ),
172 listener); 174 listener);
173 page.updateForUrl(UrlConstants.BOOKMARKS_URL); 175 page.updateForUrl(UrlConstants.BOOKMARKS_URL);
174 Dialog dialog = new NativePageDialog(activity, page); 176 Dialog dialog = new NativePageDialog(activity, page);
175 listener.setDialog(dialog); 177 listener.setDialog(dialog);
176 dialog.show(); 178 dialog.show();
177 } 179 }
178 } 180 }
179 181
182 public static void launchInterestsDialog(Activity activity, final Tab tab) {
183 InterestsPage page =
184 new InterestsPage(activity, tab, Profile.getLastUsedProfile());
185 final Dialog dialog = new NativePageDialog(activity, page);
186
187 InterestsClickListener listener = new InterestsClickListener() {
188 @Override
189 public void onInterestClicked(String name) {
190 tab.loadUrl(new LoadUrlParams(
191 TemplateUrlService.getInstance().getUrlForSearchQuery(na me)));
192 dialog.dismiss();
193 }
194 };
195
196 page.setListener(listener);
197 dialog.show();
198 }
199
180 public static void launchRecentTabsDialog(Activity activity, Tab tab) { 200 public static void launchRecentTabsDialog(Activity activity, Tab tab) {
181 DocumentRecentTabsManager manager = new DocumentRecentTabsManager(tab, a ctivity); 201 DocumentRecentTabsManager manager = new DocumentRecentTabsManager(tab, a ctivity);
182 NativePage page = new RecentTabsPage(activity, manager); 202 NativePage page = new RecentTabsPage(activity, manager);
183 page.updateForUrl(UrlConstants.RECENT_TABS_URL); 203 page.updateForUrl(UrlConstants.RECENT_TABS_URL);
184 Dialog dialog = new NativePageDialog(activity, page); 204 Dialog dialog = new NativePageDialog(activity, page);
185 manager.setDialog(dialog); 205 manager.setDialog(dialog);
186 dialog.show(); 206 dialog.show();
187 } 207 }
188 208
189 @VisibleForTesting 209 @VisibleForTesting
190 static void setMostVisitedSitesForTests(MostVisitedSites mostVisitedSitesFor Tests) { 210 static void setMostVisitedSitesForTests(MostVisitedSites mostVisitedSitesFor Tests) {
191 sMostVisitedSitesForTests = mostVisitedSitesForTests; 211 sMostVisitedSitesForTests = mostVisitedSitesForTests;
192 } 212 }
193 213
194 private final NewTabPageManager mNewTabPageManager = new NewTabPageManager() { 214 private final NewTabPageManager mNewTabPageManager = new NewTabPageManager() {
195 @Override 215 @Override
196 public boolean isLocationBarShownInNTP() { 216 public boolean isLocationBarShownInNTP() {
197 if (mIsDestroyed) return false; 217 if (mIsDestroyed) return false;
198 Context context = mNewTabPageView.getContext(); 218 Context context = mNewTabPageView.getContext();
199 return isInSingleUrlBarMode(context) 219 return isInSingleUrlBarMode(context)
200 && !mNewTabPageView.urlFocusAnimationsDisabled(); 220 && !mNewTabPageView.urlFocusAnimationsDisabled();
201 } 221 }
202 222
203 @Override 223 @Override
204 public boolean isVoiceSearchEnabled() { 224 public boolean isVoiceSearchEnabled() {
205 return mFakeboxDelegate != null && mFakeboxDelegate.isVoiceSearchEna bled(); 225 return mFakeboxDelegate != null && mFakeboxDelegate.isVoiceSearchEna bled();
206 } 226 }
207 227
228 @Override
229 public boolean isUserSignedIn() {
230 return ChromeSigninController.get(mActivity).isSignedIn();
231 }
232
208 private void recordOpenedMostVisitedItem(MostVisitedItem item) { 233 private void recordOpenedMostVisitedItem(MostVisitedItem item) {
209 if (mIsDestroyed) return; 234 if (mIsDestroyed) return;
210 NewTabPageUma.recordAction(NewTabPageUma.ACTION_OPENED_MOST_VISITED_ ENTRY); 235 NewTabPageUma.recordAction(NewTabPageUma.ACTION_OPENED_MOST_VISITED_ ENTRY);
211 NewTabPageUma.recordExplicitUserNavigation( 236 NewTabPageUma.recordExplicitUserNavigation(
212 item.getUrl(), NewTabPageUma.RAPPOR_ACTION_VISITED_SUGGESTED _TILE); 237 item.getUrl(), NewTabPageUma.RAPPOR_ACTION_VISITED_SUGGESTED _TILE);
213 RecordHistogram.recordMediumTimesHistogram("NewTabPage.MostVisitedTi me", 238 RecordHistogram.recordMediumTimesHistogram("NewTabPage.MostVisitedTi me",
214 System.nanoTime() - mLastShownTimeNs, TimeUnit.NANOSECONDS); 239 System.nanoTime() - mLastShownTimeNs, TimeUnit.NANOSECONDS);
215 mMostVisitedSites.recordOpenedMostVisitedItem(item.getIndex(), item. getTileType()); 240 mMostVisitedSites.recordOpenedMostVisitedItem(item.getIndex(), item. getTileType());
216 } 241 }
217 242
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
316 if (mIsDestroyed) return; 341 if (mIsDestroyed) return;
317 RecordUserAction.record("MobileNTPSwitchToOpenTabs"); 342 RecordUserAction.record("MobileNTPSwitchToOpenTabs");
318 if (FeatureUtilities.isDocumentMode(mActivity)) { 343 if (FeatureUtilities.isDocumentMode(mActivity)) {
319 launchRecentTabsDialog(mActivity, mTab); 344 launchRecentTabsDialog(mActivity, mTab);
320 } else { 345 } else {
321 mTab.loadUrl(new LoadUrlParams(UrlConstants.RECENT_TABS_URL)); 346 mTab.loadUrl(new LoadUrlParams(UrlConstants.RECENT_TABS_URL));
322 } 347 }
323 } 348 }
324 349
325 @Override 350 @Override
351 public void navigateToInterests() {
352 if (mIsDestroyed) return;
353 RecordUserAction.record("MobileNTP.Interests.OpenDialog");
354 // TODO(peconn): Make this load a native page on tablets.
355 launchInterestsDialog(mActivity, mTab);
356 }
357
358 @Override
326 public void focusSearchBox(boolean beginVoiceSearch, String pastedText) { 359 public void focusSearchBox(boolean beginVoiceSearch, String pastedText) {
327 if (mIsDestroyed) return; 360 if (mIsDestroyed) return;
328 if (mFakeboxDelegate != null) { 361 if (mFakeboxDelegate != null) {
329 if (beginVoiceSearch) { 362 if (beginVoiceSearch) {
330 mFakeboxDelegate.startVoiceRecognition(); 363 mFakeboxDelegate.startVoiceRecognition();
331 } else { 364 } else {
332 mFakeboxDelegate.requestUrlFocusFromFakebox(pastedText); 365 mFakeboxDelegate.requestUrlFocusFromFakebox(pastedText);
333 } 366 }
334 } 367 }
335 } 368 }
(...skipping 358 matching lines...) Expand 10 before | Expand all | Expand 10 after
694 public void onBookmarkSelected(String url, String title, Bitmap favicon) { 727 public void onBookmarkSelected(String url, String title, Bitmap favicon) {
695 if (mDialog != null) mDialog.dismiss(); 728 if (mDialog != null) mDialog.dismiss();
696 mTab.loadUrl(new LoadUrlParams(url)); 729 mTab.loadUrl(new LoadUrlParams(url));
697 } 730 }
698 731
699 public void setDialog(Dialog dialog) { 732 public void setDialog(Dialog dialog) {
700 mDialog = dialog; 733 mDialog = dialog;
701 } 734 }
702 } 735 }
703 } 736 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698