OLD | NEW |
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; |
28 import org.chromium.chrome.R; | 29 import org.chromium.chrome.R; |
29 import org.chromium.chrome.browser.ChromeFeatureList; | 30 import org.chromium.chrome.browser.ChromeFeatureList; |
30 import org.chromium.chrome.browser.favicon.LargeIconBridge.LargeIconCallback; | 31 import org.chromium.chrome.browser.favicon.LargeIconBridge.LargeIconCallback; |
31 import org.chromium.chrome.browser.ntp.ContextMenuManager; | 32 import org.chromium.chrome.browser.ntp.ContextMenuManager; |
32 import org.chromium.chrome.browser.ntp.ContextMenuManager.ContextMenuItemId; | 33 import org.chromium.chrome.browser.ntp.ContextMenuManager.ContextMenuItemId; |
33 import org.chromium.chrome.browser.offlinepages.OfflinePageBridge; | 34 import org.chromium.chrome.browser.offlinepages.OfflinePageBridge; |
34 import org.chromium.chrome.browser.widget.RoundedIconGenerator; | 35 import org.chromium.chrome.browser.widget.RoundedIconGenerator; |
35 import org.chromium.ui.mojom.WindowOpenDisposition; | 36 import org.chromium.ui.mojom.WindowOpenDisposition; |
36 | 37 |
37 import java.util.ArrayList; | 38 import java.util.ArrayList; |
(...skipping 441 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
479 public void onCreateContextMenu( | 480 public void onCreateContextMenu( |
480 ContextMenu contextMenu, View view, ContextMenuInfo contextMenuI
nfo) { | 481 ContextMenu contextMenu, View view, ContextMenuInfo contextMenuI
nfo) { |
481 mContextMenuManager.createContextMenu(contextMenu, view, this); | 482 mContextMenuManager.createContextMenu(contextMenu, view, this); |
482 } | 483 } |
483 } | 484 } |
484 | 485 |
485 private class RemovalUndoneCallback extends Callback<String> { | 486 private class RemovalUndoneCallback extends Callback<String> { |
486 @Override | 487 @Override |
487 public void onResult(String restoredUrl) { | 488 public void onResult(String restoredUrl) { |
488 mPendingInsertionUrl = restoredUrl; | 489 mPendingInsertionUrl = restoredUrl; |
| 490 |
| 491 RecordUserAction.record("Suggestions.Tile.RemovalUndone"); |
489 } | 492 } |
490 } | 493 } |
491 | 494 |
492 private class OfflineModelObserver extends SuggestionsOfflineModelObserver<T
ile> { | 495 private class OfflineModelObserver extends SuggestionsOfflineModelObserver<T
ile> { |
493 public OfflineModelObserver(OfflinePageBridge bridge) { | 496 public OfflineModelObserver(OfflinePageBridge bridge) { |
494 super(bridge); | 497 super(bridge); |
495 } | 498 } |
496 | 499 |
497 @Override | 500 @Override |
498 public void onSuggestionOfflineIdChanged(Tile suggestion, @Nullable Long
id) { | 501 public void onSuggestionOfflineIdChanged(Tile suggestion, @Nullable Long
id) { |
499 // Retrieve a tile from the internal data, to make sure we don't upd
ate a stale object. | 502 // Retrieve a tile from the internal data, to make sure we don't upd
ate a stale object. |
500 Tile tile = getTile(suggestion.getUrl()); | 503 Tile tile = getTile(suggestion.getUrl()); |
501 if (tile == null) return; | 504 if (tile == null) return; |
502 | 505 |
503 boolean oldOfflineAvailable = tile.isOfflineAvailable(); | 506 boolean oldOfflineAvailable = tile.isOfflineAvailable(); |
504 tile.setOfflinePageOfflineId(id); | 507 tile.setOfflinePageOfflineId(id); |
505 | 508 |
506 // Only notify to update the view if there will be a visible change. | 509 // Only notify to update the view if there will be a visible change. |
507 if (oldOfflineAvailable == tile.isOfflineAvailable()) return; | 510 if (oldOfflineAvailable == tile.isOfflineAvailable()) return; |
508 mObserver.onTileOfflineBadgeVisibilityChanged(tile); | 511 mObserver.onTileOfflineBadgeVisibilityChanged(tile); |
509 } | 512 } |
510 | 513 |
511 @Override | 514 @Override |
512 public Iterable<Tile> getOfflinableSuggestions() { | 515 public Iterable<Tile> getOfflinableSuggestions() { |
513 return Arrays.asList(mTiles); | 516 return Arrays.asList(mTiles); |
514 } | 517 } |
515 } | 518 } |
516 } | 519 } |
OLD | NEW |