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

Side by Side Diff: chrome/android/java/src/org/chromium/chrome/browser/suggestions/TileGroup.java

Issue 2846233003: 📰 Record user actions on the NTP and Home sheet (Closed)
Patch Set: Address bauerb@'s comment Created 3 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
1 // Copyright 2017 The Chromium Authors. All rights reserved. 1 // Copyright 2017 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 android.content.Context; 7 import android.content.Context;
8 import android.content.res.Resources; 8 import android.content.res.Resources;
9 import android.graphics.Bitmap; 9 import android.graphics.Bitmap;
10 import android.graphics.BitmapFactory; 10 import android.graphics.BitmapFactory;
11 import android.graphics.Color; 11 import android.graphics.Color;
12 import android.graphics.drawable.BitmapDrawable; 12 import android.graphics.drawable.BitmapDrawable;
13 import android.support.annotation.Nullable; 13 import android.support.annotation.Nullable;
14 import android.support.v4.graphics.drawable.RoundedBitmapDrawable; 14 import android.support.v4.graphics.drawable.RoundedBitmapDrawable;
15 import android.support.v4.graphics.drawable.RoundedBitmapDrawableFactory; 15 import android.support.v4.graphics.drawable.RoundedBitmapDrawableFactory;
16 import android.view.ContextMenu; 16 import android.view.ContextMenu;
17 import android.view.ContextMenu.ContextMenuInfo; 17 import android.view.ContextMenu.ContextMenuInfo;
18 import android.view.LayoutInflater; 18 import android.view.LayoutInflater;
19 import android.view.View; 19 import android.view.View;
20 import android.view.View.OnClickListener; 20 import android.view.View.OnClickListener;
21 import android.view.View.OnCreateContextMenuListener; 21 import android.view.View.OnCreateContextMenuListener;
22 import android.view.ViewGroup; 22 import android.view.ViewGroup;
23 23
24 import org.chromium.base.ApiCompatibilityUtils; 24 import org.chromium.base.ApiCompatibilityUtils;
25 import org.chromium.base.Callback; 25 import org.chromium.base.Callback;
26 import org.chromium.base.Log; 26 import org.chromium.base.Log;
27 import org.chromium.base.VisibleForTesting; 27 import org.chromium.base.VisibleForTesting;
28 import org.chromium.base.metrics.RecordUserAction;
29 import org.chromium.chrome.R; 28 import org.chromium.chrome.R;
30 import org.chromium.chrome.browser.ChromeFeatureList; 29 import org.chromium.chrome.browser.ChromeFeatureList;
31 import org.chromium.chrome.browser.favicon.LargeIconBridge.LargeIconCallback; 30 import org.chromium.chrome.browser.favicon.LargeIconBridge.LargeIconCallback;
32 import org.chromium.chrome.browser.ntp.ContextMenuManager; 31 import org.chromium.chrome.browser.ntp.ContextMenuManager;
33 import org.chromium.chrome.browser.ntp.ContextMenuManager.ContextMenuItemId; 32 import org.chromium.chrome.browser.ntp.ContextMenuManager.ContextMenuItemId;
34 import org.chromium.chrome.browser.offlinepages.OfflinePageBridge; 33 import org.chromium.chrome.browser.offlinepages.OfflinePageBridge;
35 import org.chromium.chrome.browser.widget.RoundedIconGenerator; 34 import org.chromium.chrome.browser.widget.RoundedIconGenerator;
36 import org.chromium.ui.mojom.WindowOpenDisposition; 35 import org.chromium.ui.mojom.WindowOpenDisposition;
37 36
38 import java.util.ArrayList; 37 import java.util.ArrayList;
(...skipping 395 matching lines...) Expand 10 before | Expand all | Expand 10 after
434 433
435 public TileInteractionDelegate(String url) { 434 public TileInteractionDelegate(String url) {
436 mUrl = url; 435 mUrl = url;
437 } 436 }
438 437
439 @Override 438 @Override
440 public void onClick(View view) { 439 public void onClick(View view) {
441 Tile tile = getTile(mUrl); 440 Tile tile = getTile(mUrl);
442 if (tile == null) return; 441 if (tile == null) return;
443 442
443 SuggestionsMetrics.recordTileTapped();
444 mTileGroupDelegate.openMostVisitedItem(WindowOpenDisposition.CURRENT _TAB, tile); 444 mTileGroupDelegate.openMostVisitedItem(WindowOpenDisposition.CURRENT _TAB, tile);
445 } 445 }
446 446
447 @Override 447 @Override
448 public void openItem(int windowDisposition) { 448 public void openItem(int windowDisposition) {
449 Tile tile = getTile(mUrl); 449 Tile tile = getTile(mUrl);
450 if (tile == null) return; 450 if (tile == null) return;
451 451
452 mTileGroupDelegate.openMostVisitedItem(windowDisposition, tile); 452 mTileGroupDelegate.openMostVisitedItem(windowDisposition, tile);
453 } 453 }
(...skipping 26 matching lines...) Expand all
480 public void onCreateContextMenu( 480 public void onCreateContextMenu(
481 ContextMenu contextMenu, View view, ContextMenuInfo contextMenuI nfo) { 481 ContextMenu contextMenu, View view, ContextMenuInfo contextMenuI nfo) {
482 mContextMenuManager.createContextMenu(contextMenu, view, this); 482 mContextMenuManager.createContextMenu(contextMenu, view, this);
483 } 483 }
484 } 484 }
485 485
486 private class RemovalUndoneCallback extends Callback<String> { 486 private class RemovalUndoneCallback extends Callback<String> {
487 @Override 487 @Override
488 public void onResult(String restoredUrl) { 488 public void onResult(String restoredUrl) {
489 mPendingInsertionUrl = restoredUrl; 489 mPendingInsertionUrl = restoredUrl;
490
491 RecordUserAction.record("Suggestions.Tile.RemovalUndone");
492 } 490 }
493 } 491 }
494 492
495 private class OfflineModelObserver extends SuggestionsOfflineModelObserver<T ile> { 493 private class OfflineModelObserver extends SuggestionsOfflineModelObserver<T ile> {
496 public OfflineModelObserver(OfflinePageBridge bridge) { 494 public OfflineModelObserver(OfflinePageBridge bridge) {
497 super(bridge); 495 super(bridge);
498 } 496 }
499 497
500 @Override 498 @Override
501 public void onSuggestionOfflineIdChanged(Tile suggestion, @Nullable Long id) { 499 public void onSuggestionOfflineIdChanged(Tile suggestion, @Nullable Long id) {
502 // Retrieve a tile from the internal data, to make sure we don't upd ate a stale object. 500 // Retrieve a tile from the internal data, to make sure we don't upd ate a stale object.
503 Tile tile = getTile(suggestion.getUrl()); 501 Tile tile = getTile(suggestion.getUrl());
504 if (tile == null) return; 502 if (tile == null) return;
505 503
506 boolean oldOfflineAvailable = tile.isOfflineAvailable(); 504 boolean oldOfflineAvailable = tile.isOfflineAvailable();
507 tile.setOfflinePageOfflineId(id); 505 tile.setOfflinePageOfflineId(id);
508 506
509 // Only notify to update the view if there will be a visible change. 507 // Only notify to update the view if there will be a visible change.
510 if (oldOfflineAvailable == tile.isOfflineAvailable()) return; 508 if (oldOfflineAvailable == tile.isOfflineAvailable()) return;
511 mObserver.onTileOfflineBadgeVisibilityChanged(tile); 509 mObserver.onTileOfflineBadgeVisibilityChanged(tile);
512 } 510 }
513 511
514 @Override 512 @Override
515 public Iterable<Tile> getOfflinableSuggestions() { 513 public Iterable<Tile> getOfflinableSuggestions() {
516 return Arrays.asList(mTiles); 514 return Arrays.asList(mTiles);
517 } 515 }
518 } 516 }
519 } 517 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698