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

Side by Side Diff: ios/chrome/browser/ui/history/history_collection_view_controller.mm

Issue 2592843002: [ios] Adds history user action metrics (Closed)
Patch Set: Created 4 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
« no previous file with comments | « no previous file | ios/chrome/browser/ui/history/history_panel_view_controller.mm » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 #include "ios/chrome/browser/ui/history/history_collection_view_controller.h" 5 #include "ios/chrome/browser/ui/history/history_collection_view_controller.h"
6 6
7 #import <MobileCoreServices/MobileCoreServices.h> 7 #import <MobileCoreServices/MobileCoreServices.h>
8 8
9 #include <memory> 9 #include <memory>
10 10
11 #import "base/ios/weak_nsobject.h" 11 #import "base/ios/weak_nsobject.h"
12 #include "base/mac/foundation_util.h" 12 #include "base/mac/foundation_util.h"
13 #import "base/mac/objc_property_releaser.h" 13 #import "base/mac/objc_property_releaser.h"
14 #include "base/mac/scoped_nsobject.h" 14 #include "base/mac/scoped_nsobject.h"
15 #include "base/metrics/user_metrics.h"
16 #include "base/metrics/user_metrics_action.h"
15 #include "base/strings/sys_string_conversions.h" 17 #include "base/strings/sys_string_conversions.h"
16 #include "base/strings/utf_string_conversions.h" 18 #include "base/strings/utf_string_conversions.h"
17 #include "components/browsing_data/core/history_notice_utils.h" 19 #include "components/browsing_data/core/history_notice_utils.h"
18 #include "components/strings/grit/components_strings.h" 20 #include "components/strings/grit/components_strings.h"
19 #include "components/url_formatter/url_formatter.h" 21 #include "components/url_formatter/url_formatter.h"
20 #include "ios/chrome/browser/browser_state/chrome_browser_state.h" 22 #include "ios/chrome/browser/browser_state/chrome_browser_state.h"
21 #include "ios/chrome/browser/chrome_url_constants.h" 23 #include "ios/chrome/browser/chrome_url_constants.h"
22 #import "ios/chrome/browser/signin/authentication_service.h" 24 #import "ios/chrome/browser/signin/authentication_service.h"
23 #include "ios/chrome/browser/signin/authentication_service_factory.h" 25 #include "ios/chrome/browser/signin/authentication_service_factory.h"
24 #import "ios/chrome/browser/ui/collection_view/cells/MDCCollectionViewCell+Chrom e.h" 26 #import "ios/chrome/browser/ui/collection_view/cells/MDCCollectionViewCell+Chrom e.h"
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
103 // displayed history entries. 105 // displayed history entries.
104 - (void)updateEntriesStatusMessage; 106 - (void)updateEntriesStatusMessage;
105 // Removes selected items from the visible collection, but does not delete them 107 // Removes selected items from the visible collection, but does not delete them
106 // from browser history. 108 // from browser history.
107 - (void)removeSelectedItemsFromCollection; 109 - (void)removeSelectedItemsFromCollection;
108 // Removes all items in the collection that are not included in entries. 110 // Removes all items in the collection that are not included in entries.
109 - (void)filterForHistoryEntries:(NSArray*)entries; 111 - (void)filterForHistoryEntries:(NSArray*)entries;
110 // Displays context menu on cell pressed with gestureRecognizer. 112 // Displays context menu on cell pressed with gestureRecognizer.
111 - (void)displayContextMenuInvokedByGestureRecognizer: 113 - (void)displayContextMenuInvokedByGestureRecognizer:
112 (UILongPressGestureRecognizer*)gestureRecognizer; 114 (UILongPressGestureRecognizer*)gestureRecognizer;
115 // Helper method for opening URL's and recording metrics.
116 - (void)openURLWithCompletion:(ProceduralBlock)completionHandler;
113 // Opens URL in the current tab and dismisses the history view. 117 // Opens URL in the current tab and dismisses the history view.
114 - (void)openURL:(const GURL&)URL; 118 - (void)openURL:(const GURL&)URL;
115 // Opens URL in a new non-incognito tab and dismisses the history view. 119 // Opens URL in a new non-incognito tab and dismisses the history view.
116 - (void)openURLInNewTab:(const GURL&)URL; 120 - (void)openURLInNewTab:(const GURL&)URL;
117 // Opens URL in a new incognito tab and dismisses the history view. 121 // Opens URL in a new incognito tab and dismisses the history view.
118 - (void)openURLInNewIncognitoTab:(const GURL&)URL; 122 - (void)openURLInNewIncognitoTab:(const GURL&)URL;
119 // Copies URL to the clipboard. 123 // Copies URL to the clipboard.
120 - (void)copyURL:(const GURL&)URL; 124 - (void)copyURL:(const GURL&)URL;
121 @end 125 @end
122 126
(...skipping 15 matching lines...) Expand all
138 delegate:(id<HistoryCollectionViewControllerDelegate>) 142 delegate:(id<HistoryCollectionViewControllerDelegate>)
139 delegate { 143 delegate {
140 self = [super initWithStyle:CollectionViewControllerStyleDefault]; 144 self = [super initWithStyle:CollectionViewControllerStyleDefault];
141 if (self) { 145 if (self) {
142 _propertyReleaser_HistoryCollectionViewController.Init( 146 _propertyReleaser_HistoryCollectionViewController.Init(
143 self, [HistoryCollectionViewController class]); 147 self, [HistoryCollectionViewController class]);
144 _historyServiceFacade.reset(new HistoryServiceFacade(browserState, self)); 148 _historyServiceFacade.reset(new HistoryServiceFacade(browserState, self));
145 _browserState = browserState; 149 _browserState = browserState;
146 _delegate.reset(delegate); 150 _delegate.reset(delegate);
147 _URLLoader.reset(loader); 151 _URLLoader.reset(loader);
152 base::RecordAction(base::UserMetricsAction("HistoryPage_EntryLinkClick"));
lpromero 2016/12/20 23:37:30 Feels weird to have it here. Idem than what Jackie
sczs 2016/12/21 04:24:26 You're right, the "Click" part of the name makes i
Jackie Quinn 2016/12/21 17:18:19 Also I think this is for when you tap on a history
sczs 2016/12/21 19:41:51 Ooooh, that makes everything different! Couldn't f
148 [self loadModel]; 153 [self loadModel];
149 // Add initial info section as header. 154 // Add initial info section as header.
150 [self.collectionViewModel 155 [self.collectionViewModel
151 addSectionWithIdentifier:kEntriesStatusSectionIdentifier]; 156 addSectionWithIdentifier:kEntriesStatusSectionIdentifier];
152 _entryInserter = 157 _entryInserter =
153 [[HistoryEntryInserter alloc] initWithModel:self.collectionViewModel]; 158 [[HistoryEntryInserter alloc] initWithModel:self.collectionViewModel];
154 _entryInserter.delegate = self; 159 _entryInserter.delegate = self;
155 _entriesType = NO_ENTRIES; 160 _entriesType = NO_ENTRIES;
156 [self showHistoryMatchingQuery:nil]; 161 [self showHistoryMatchingQuery:nil];
157 } 162 }
(...skipping 574 matching lines...) Expand 10 before | Expand all | Expand 10 after
732 l10n_util::GetNSStringWithFixup(IDS_IOS_CONTENT_CONTEXT_COPY); 737 l10n_util::GetNSStringWithFixup(IDS_IOS_CONTENT_CONTEXT_COPY);
733 ProceduralBlock copyURLAction = ^{ 738 ProceduralBlock copyURLAction = ^{
734 [weakSelf copyURL:entry.URL]; 739 [weakSelf copyURL:entry.URL];
735 }; 740 };
736 [self.contextMenuCoordinator addItemWithTitle:copyURLTitle 741 [self.contextMenuCoordinator addItemWithTitle:copyURLTitle
737 action:copyURLAction]; 742 action:copyURLAction];
738 [self.parentViewController.view endEditing:YES]; 743 [self.parentViewController.view endEditing:YES];
739 [self.contextMenuCoordinator start]; 744 [self.contextMenuCoordinator start];
740 } 745 }
741 746
747 - (void)openURLWithCompletion:(ProceduralBlock)completionHandler {
Jackie Quinn 2016/12/20 23:15:54 Shouldn't this be closeHistoryWithCompletion?
sczs 2016/12/21 04:24:26 You're right I think it would be clearer.
748 if ([self.currentQuery length]) {
lpromero 2016/12/20 23:37:30 Is this always cleared when exiting search? Feels
sczs 2016/12/21 04:24:26 Yes it should (from what I've seen) It was the bes
Jackie Quinn 2016/12/21 17:18:19 There's also self.isSearching.
749 base::RecordAction(
750 base::UserMetricsAction("HistoryPage_SearchResultClick"));
Jackie Quinn 2016/12/20 23:15:54 Is this always going to be invoked from a click? I
sczs 2016/12/21 04:24:26 I was trying record this action everytime an item
Jackie Quinn 2016/12/21 17:18:19 I feel like it may be better to just have a separa
751 }
752 [self.delegate historyCollectionViewController:self
753 shouldCloseWithCompletion:completionHandler];
754 }
755
742 - (void)openURL:(const GURL&)URL { 756 - (void)openURL:(const GURL&)URL {
743 GURL copiedURL(URL); 757 GURL copiedURL(URL);
744 [self.delegate historyCollectionViewController:self 758 ProceduralBlock completionHandler = ^{
745 shouldCloseWithCompletion:^{ 759 [self.URLLoader loadURL:copiedURL
746 [self.URLLoader 760 referrer:web::Referrer()
747 loadURL:copiedURL 761 transition:ui::PAGE_TRANSITION_AUTO_BOOKMARK
748 referrer:web::Referrer() 762 rendererInitiated:NO];
749 transition:ui::PAGE_TRANSITION_AUTO_BOOKMARK 763 };
750 rendererInitiated:NO]; 764 [self openURLWithCompletion:completionHandler];
751 }];
752 } 765 }
753 766
754 - (void)openURLInNewTab:(const GURL&)URL { 767 - (void)openURLInNewTab:(const GURL&)URL {
755 GURL copiedURL(URL); 768 GURL copiedURL(URL);
756 [self.delegate historyCollectionViewController:self 769 ProceduralBlock completionHandler = ^{
757 shouldCloseWithCompletion:^{ 770 [self.URLLoader webPageOrderedOpen:copiedURL
758 [self.URLLoader webPageOrderedOpen:copiedURL 771 referrer:web::Referrer()
759 referrer:web::Referrer() 772 windowName:nil
760 windowName:nil 773 inIncognito:NO
761 inIncognito:NO 774 inBackground:NO
762 inBackground:NO 775 appendTo:kLastTab];
763 appendTo:kLastTab]; 776 };
764 }]; 777 [self openURLWithCompletion:completionHandler];
765 } 778 }
766 779
767 - (void)openURLInNewIncognitoTab:(const GURL&)URL { 780 - (void)openURLInNewIncognitoTab:(const GURL&)URL {
768 GURL copiedURL(URL); 781 GURL copiedURL(URL);
769 [self.delegate historyCollectionViewController:self 782 ProceduralBlock completionHandler = ^{
770 shouldCloseWithCompletion:^{ 783 [self.URLLoader webPageOrderedOpen:copiedURL
771 [self.URLLoader webPageOrderedOpen:copiedURL 784 referrer:web::Referrer()
772 referrer:web::Referrer() 785 windowName:nil
773 windowName:nil 786 inIncognito:YES
774 inIncognito:YES 787 inBackground:NO
775 inBackground:NO 788 appendTo:kLastTab];
776 appendTo:kLastTab]; 789 };
777 }]; 790 [self openURLWithCompletion:completionHandler];
778 } 791 }
779 792
780 - (void)copyURL:(const GURL&)URL { 793 - (void)copyURL:(const GURL&)URL {
781 DCHECK(URL.is_valid()); 794 DCHECK(URL.is_valid());
782 NSData* plainText = [base::SysUTF8ToNSString(URL.spec()) 795 NSData* plainText = [base::SysUTF8ToNSString(URL.spec())
783 dataUsingEncoding:NSUTF8StringEncoding]; 796 dataUsingEncoding:NSUTF8StringEncoding];
784 NSDictionary* copiedItem = @{ 797 NSDictionary* copiedItem = @{
785 (NSString*)kUTTypeURL : net::NSURLWithGURL(URL), 798 (NSString*)kUTTypeURL : net::NSURLWithGURL(URL),
786 (NSString*)kUTTypeUTF8PlainText : plainText, 799 (NSString*)kUTTypeUTF8PlainText : plainText,
787 }; 800 };
788 [[UIPasteboard generalPasteboard] setItems:@[ copiedItem ]]; 801 [[UIPasteboard generalPasteboard] setItems:@[ copiedItem ]];
789 } 802 }
790 803
791 @end 804 @end
OLDNEW
« no previous file with comments | « no previous file | ios/chrome/browser/ui/history/history_panel_view_controller.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698