| 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 #import "ios/chrome/browser/ui/ntp/google_landing_controller.h" | 5 #import "ios/chrome/browser/ui/ntp/google_landing_controller.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "base/mac/foundation_util.h" | 9 #include "base/mac/foundation_util.h" |
| 10 #include "base/metrics/user_metrics.h" | 10 #include "base/metrics/user_metrics.h" |
| 11 #include "base/strings/sys_string_conversions.h" | 11 #include "base/strings/sys_string_conversions.h" |
| 12 #include "components/strings/grit/components_strings.h" | 12 #include "components/strings/grit/components_strings.h" |
| 13 #import "ios/chrome/browser/ui/commands/UIKit+ChromeExecuteCommand.h" | 13 #import "ios/chrome/browser/ui/commands/UIKit+ChromeExecuteCommand.h" |
| 14 #import "ios/chrome/browser/ui/commands/generic_chrome_command.h" | 14 #import "ios/chrome/browser/ui/commands/generic_chrome_command.h" |
| 15 #include "ios/chrome/browser/ui/commands/ios_command_ids.h" | 15 #include "ios/chrome/browser/ui/commands/ios_command_ids.h" |
| 16 #import "ios/chrome/browser/ui/context_menu/context_menu_coordinator.h" | 16 #import "ios/chrome/browser/ui/context_menu/context_menu_coordinator.h" |
| 17 #import "ios/chrome/browser/ui/ntp/google_landing_data_source.h" | 17 #import "ios/chrome/browser/ui/ntp/google_landing_data_source.h" |
| 18 #import "ios/chrome/browser/ui/ntp/most_visited_cell.h" | 18 #import "ios/chrome/browser/ui/ntp/most_visited_cell.h" |
| 19 #import "ios/chrome/browser/ui/ntp/most_visited_layout.h" | 19 #import "ios/chrome/browser/ui/ntp/most_visited_layout.h" |
| 20 #import "ios/chrome/browser/ui/ntp/new_tab_page_header_constants.h" | 20 #import "ios/chrome/browser/ui/ntp/new_tab_page_header_constants.h" |
| 21 #import "ios/chrome/browser/ui/ntp/new_tab_page_header_view.h" | 21 #import "ios/chrome/browser/ui/ntp/new_tab_page_header_view.h" |
| 22 #import "ios/chrome/browser/ui/ntp/whats_new_header_view.h" | 22 #import "ios/chrome/browser/ui/ntp/whats_new_header_view.h" |
| 23 #import "ios/chrome/browser/ui/overscroll_actions/overscroll_actions_controller.
h" | 23 #import "ios/chrome/browser/ui/overscroll_actions/overscroll_actions_controller.
h" |
| 24 #import "ios/chrome/browser/ui/toolbar/web_toolbar_controller.h" |
| 24 #include "ios/chrome/browser/ui/ui_util.h" | 25 #include "ios/chrome/browser/ui/ui_util.h" |
| 25 #import "ios/chrome/browser/ui/uikit_ui_util.h" | 26 #import "ios/chrome/browser/ui/uikit_ui_util.h" |
| 27 #import "ios/chrome/browser/ui/url_loader.h" |
| 26 #include "ios/chrome/common/string_util.h" | 28 #include "ios/chrome/common/string_util.h" |
| 27 #include "ios/chrome/grit/ios_strings.h" | 29 #include "ios/chrome/grit/ios_strings.h" |
| 28 #import "ios/third_party/material_components_ios/src/components/Snackbar/src/Mat
erialSnackbar.h" | 30 #import "ios/third_party/material_components_ios/src/components/Snackbar/src/Mat
erialSnackbar.h" |
| 29 #import "ios/third_party/material_components_ios/src/components/Typography/src/M
aterialTypography.h" | 31 #import "ios/third_party/material_components_ios/src/components/Typography/src/M
aterialTypography.h" |
| 30 #import "ios/web/public/web_state/context_menu_params.h" | 32 #import "ios/web/public/web_state/context_menu_params.h" |
| 31 #import "net/base/mac/url_conversions.h" | 33 #import "net/base/mac/url_conversions.h" |
| 32 #include "ui/base/l10n/l10n_util.h" | 34 #include "ui/base/l10n/l10n_util.h" |
| 35 #include "ui/base/page_transition_types.h" |
| 33 | 36 |
| 34 using base::UserMetricsAction; | 37 using base::UserMetricsAction; |
| 35 | 38 |
| 36 namespace { | 39 namespace { |
| 37 | 40 |
| 38 enum { | 41 enum { |
| 39 SectionWithOmnibox, | 42 SectionWithOmnibox, |
| 40 SectionWithMostVisited, | 43 SectionWithMostVisited, |
| 41 NumberOfCollectionViewSections, | 44 NumberOfCollectionViewSections, |
| 42 }; | 45 }; |
| (...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 257 | 260 |
| 258 @end | 261 @end |
| 259 | 262 |
| 260 @implementation GoogleLandingController | 263 @implementation GoogleLandingController |
| 261 | 264 |
| 262 @dynamic view; | 265 @dynamic view; |
| 263 @synthesize logoVendor = _logoVendor; | 266 @synthesize logoVendor = _logoVendor; |
| 264 @synthesize dataSource = _dataSource; | 267 @synthesize dataSource = _dataSource; |
| 265 // Property declared in NewTabPagePanelProtocol. | 268 // Property declared in NewTabPagePanelProtocol. |
| 266 @synthesize delegate = _delegate; | 269 @synthesize delegate = _delegate; |
| 270 @synthesize dispatcher = _dispatcher; |
| 267 @synthesize isOffTheRecord = _isOffTheRecord; | 271 @synthesize isOffTheRecord = _isOffTheRecord; |
| 268 @synthesize logoIsShowing = _logoIsShowing; | 272 @synthesize logoIsShowing = _logoIsShowing; |
| 269 @synthesize promoText = _promoText; | 273 @synthesize promoText = _promoText; |
| 270 @synthesize promoIcon = _promoIcon; | 274 @synthesize promoIcon = _promoIcon; |
| 271 @synthesize promoCanShow = _promoCanShow; | 275 @synthesize promoCanShow = _promoCanShow; |
| 272 @synthesize maximumMostVisitedSitesShown = _maximumMostVisitedSitesShown; | 276 @synthesize maximumMostVisitedSitesShown = _maximumMostVisitedSitesShown; |
| 273 @synthesize tabCount = _tabCount; | 277 @synthesize tabCount = _tabCount; |
| 274 @synthesize canGoForward = _canGoForward; | 278 @synthesize canGoForward = _canGoForward; |
| 275 @synthesize canGoBack = _canGoBack; | 279 @synthesize canGoBack = _canGoBack; |
| 276 @synthesize voiceSearchIsEnabled = _voiceSearchIsEnabled; | 280 @synthesize voiceSearchIsEnabled = _voiceSearchIsEnabled; |
| (...skipping 508 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 785 [[_mostVisitedView collectionViewLayout] invalidateLayout]; | 789 [[_mostVisitedView collectionViewLayout] invalidateLayout]; |
| 786 } | 790 } |
| 787 } | 791 } |
| 788 completion:^(BOOL finished) { | 792 completion:^(BOOL finished) { |
| 789 // Check to see if we are still scrolled to the top -- it's possible | 793 // Check to see if we are still scrolled to the top -- it's possible |
| 790 // (and difficult) to resign the first responder and initiate a | 794 // (and difficult) to resign the first responder and initiate a |
| 791 // -shiftTilesDown before the animation here completes. | 795 // -shiftTilesDown before the animation here completes. |
| 792 if (_scrolledToTop) { | 796 if (_scrolledToTop) { |
| 793 _animateHeader = NO; | 797 _animateHeader = NO; |
| 794 if (!IsIPadIdiom()) { | 798 if (!IsIPadIdiom()) { |
| 795 [self.dataSource onFakeboxAnimationComplete]; | 799 [self.dispatcher onFakeboxAnimationComplete]; |
| 796 [_headerView fadeOutShadow]; | 800 [_headerView fadeOutShadow]; |
| 797 [_searchTapTarget setHidden:YES]; | 801 [_searchTapTarget setHidden:YES]; |
| 798 } | 802 } |
| 799 } | 803 } |
| 800 }]; | 804 }]; |
| 801 } | 805 } |
| 802 | 806 |
| 803 - (void)searchFieldTapped:(id)sender { | 807 - (void)searchFieldTapped:(id)sender { |
| 804 [self.dataSource focusFakebox]; | 808 [self.dispatcher focusFakebox]; |
| 805 } | 809 } |
| 806 | 810 |
| 807 - (void)blurOmnibox { | 811 - (void)blurOmnibox { |
| 808 if (_omniboxFocused) { | 812 if (_omniboxFocused) { |
| 809 [self.dataSource cancelOmniboxEdit]; | 813 [self.dispatcher cancelOmniboxEdit]; |
| 810 } else { | 814 } else { |
| 811 [self locationBarResignsFirstResponder]; | 815 [self locationBarResignsFirstResponder]; |
| 812 } | 816 } |
| 813 } | 817 } |
| 814 | 818 |
| 815 - (void)locationBarResignsFirstResponder { | 819 - (void)locationBarResignsFirstResponder { |
| 816 if (!_isShowing && !_scrolledToTop) | 820 if (!_isShowing && !_scrolledToTop) |
| 817 return; | 821 return; |
| 818 | 822 |
| 819 _omniboxFocused = NO; | 823 _omniboxFocused = NO; |
| 820 if ([_contextMenuCoordinator isVisible]) { | 824 if ([_contextMenuCoordinator isVisible]) { |
| 821 return; | 825 return; |
| 822 } | 826 } |
| 823 | 827 |
| 824 [self shiftTilesDown]; | 828 [self shiftTilesDown]; |
| 825 } | 829 } |
| 826 | 830 |
| 827 - (void)shiftTilesDown { | 831 - (void)shiftTilesDown { |
| 828 _animateHeader = YES; | 832 _animateHeader = YES; |
| 829 _scrolledToTop = NO; | 833 _scrolledToTop = NO; |
| 830 if (!IsIPadIdiom()) { | 834 if (!IsIPadIdiom()) { |
| 831 [_searchTapTarget setHidden:NO]; | 835 [_searchTapTarget setHidden:NO]; |
| 832 [self.dataSource onFakeboxBlur]; | 836 [self.dispatcher onFakeboxBlur]; |
| 833 } | 837 } |
| 834 | 838 |
| 835 // Reload most visited sites in case the number of placeholder cells needs to | 839 // Reload most visited sites in case the number of placeholder cells needs to |
| 836 // be updated after an orientation change. | 840 // be updated after an orientation change. |
| 837 [_mostVisitedView reloadData]; | 841 [_mostVisitedView reloadData]; |
| 838 | 842 |
| 839 // Reshow views that are within range of the most visited collection view | 843 // Reshow views that are within range of the most visited collection view |
| 840 // (if necessary). | 844 // (if necessary). |
| 841 [self.view removeGestureRecognizer:_tapGestureRecognizer]; | 845 [self.view removeGestureRecognizer:_tapGestureRecognizer]; |
| 842 [self.view removeGestureRecognizer:_swipeGestureRecognizer]; | 846 [self.view removeGestureRecognizer:_swipeGestureRecognizer]; |
| (...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 971 static_cast<int64_t>(1 * NSEC_PER_SEC)), | 975 static_cast<int64_t>(1 * NSEC_PER_SEC)), |
| 972 dispatch_get_main_queue(), ^{ | 976 dispatch_get_main_queue(), ^{ |
| 973 [blockView release]; | 977 [blockView release]; |
| 974 }); | 978 }); |
| 975 } | 979 } |
| 976 | 980 |
| 977 const NSUInteger visitedIndex = indexPath.row; | 981 const NSUInteger visitedIndex = indexPath.row; |
| 978 [self blurOmnibox]; | 982 [self blurOmnibox]; |
| 979 DCHECK(visitedIndex < [self numberOfItems]); | 983 DCHECK(visitedIndex < [self numberOfItems]); |
| 980 [self.dataSource logMostVisitedClick:visitedIndex tileType:cell.tileType]; | 984 [self.dataSource logMostVisitedClick:visitedIndex tileType:cell.tileType]; |
| 981 [self.dataSource loadURL:[self urlForIndex:visitedIndex] | 985 [self.dispatcher loadURL:[self urlForIndex:visitedIndex] |
| 982 referrer:web::Referrer() | 986 referrer:web::Referrer() |
| 983 transition:ui::PAGE_TRANSITION_AUTO_BOOKMARK | 987 transition:ui::PAGE_TRANSITION_AUTO_BOOKMARK |
| 984 rendererInitiated:NO]; | 988 rendererInitiated:NO]; |
| 985 } | 989 } |
| 986 | 990 |
| 987 #pragma mark - UICollectionViewDataSource | 991 #pragma mark - UICollectionViewDataSource |
| 988 | 992 |
| 989 - (UICollectionReusableView*)collectionView:(UICollectionView*)collectionView | 993 - (UICollectionReusableView*)collectionView:(UICollectionView*)collectionView |
| 990 viewForSupplementaryElementOfKind:(NSString*)kind | 994 viewForSupplementaryElementOfKind:(NSString*)kind |
| 991 atIndexPath:(NSIndexPath*)indexPath { | 995 atIndexPath:(NSIndexPath*)indexPath { |
| 992 DCHECK(kind == UICollectionElementKindSectionHeader); | 996 DCHECK(kind == UICollectionElementKindSectionHeader); |
| 993 | 997 |
| 994 if (!_supplementaryViews) | 998 if (!_supplementaryViews) |
| 995 _supplementaryViews.reset([[NSMutableArray alloc] init]); | 999 _supplementaryViews.reset([[NSMutableArray alloc] init]); |
| 996 | 1000 |
| 997 if (indexPath.section == SectionWithOmnibox) { | 1001 if (indexPath.section == SectionWithOmnibox) { |
| 998 if (!_headerView) { | 1002 if (!_headerView) { |
| 999 _headerView.reset([[collectionView | 1003 _headerView.reset([[collectionView |
| 1000 dequeueReusableSupplementaryViewOfKind: | 1004 dequeueReusableSupplementaryViewOfKind: |
| 1001 UICollectionElementKindSectionHeader | 1005 UICollectionElementKindSectionHeader |
| 1002 withReuseIdentifier:@"header" | 1006 withReuseIdentifier:@"header" |
| 1003 forIndexPath:indexPath] retain]); | 1007 forIndexPath:indexPath] retain]); |
| 1004 [_headerView addSubview:[self.logoVendor view]]; | 1008 [_headerView addSubview:[self.logoVendor view]]; |
| 1005 [_headerView addSubview:_searchTapTarget]; | 1009 [_headerView addSubview:_searchTapTarget]; |
| 1006 [_headerView addViewsToSearchField:_searchTapTarget]; | 1010 [_headerView addViewsToSearchField:_searchTapTarget]; |
| 1007 | 1011 |
| 1008 if (!IsIPadIdiom()) { | 1012 if (!IsIPadIdiom()) { |
| 1009 // iPhone header also contains a toolbar since the normal toolbar is | 1013 // iPhone header also contains a toolbar since the normal toolbar is |
| 1010 // hidden. | 1014 // hidden. |
| 1011 [_headerView addToolbarWithDataSource:self.dataSource]; | 1015 [_headerView addToolbarWithDataSource:self.dataSource |
| 1016 dispatcher:self.dispatcher]; |
| 1012 [_headerView setToolbarTabCount:self.tabCount]; | 1017 [_headerView setToolbarTabCount:self.tabCount]; |
| 1013 [_headerView setCanGoForward:self.canGoForward]; | 1018 [_headerView setCanGoForward:self.canGoForward]; |
| 1014 [_headerView setCanGoBack:self.canGoBack]; | 1019 [_headerView setCanGoBack:self.canGoBack]; |
| 1015 } | 1020 } |
| 1016 [_supplementaryViews addObject:_headerView]; | 1021 [_supplementaryViews addObject:_headerView]; |
| 1017 } | 1022 } |
| 1018 return _headerView; | 1023 return _headerView; |
| 1019 } | 1024 } |
| 1020 | 1025 |
| 1021 if (indexPath.section == SectionWithMostVisited) { | 1026 if (indexPath.section == SectionWithMostVisited) { |
| (...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1134 GURL url = [self urlForIndex:index]; | 1139 GURL url = [self urlForIndex:index]; |
| 1135 base::WeakNSObject<GoogleLandingController> weakSelf(self); | 1140 base::WeakNSObject<GoogleLandingController> weakSelf(self); |
| 1136 action = ^{ | 1141 action = ^{ |
| 1137 base::scoped_nsobject<GoogleLandingController> strongSelf( | 1142 base::scoped_nsobject<GoogleLandingController> strongSelf( |
| 1138 [weakSelf retain]); | 1143 [weakSelf retain]); |
| 1139 if (!strongSelf) | 1144 if (!strongSelf) |
| 1140 return; | 1145 return; |
| 1141 MostVisitedCell* cell = (MostVisitedCell*)sender.view; | 1146 MostVisitedCell* cell = (MostVisitedCell*)sender.view; |
| 1142 [[strongSelf dataSource] logMostVisitedClick:index | 1147 [[strongSelf dataSource] logMostVisitedClick:index |
| 1143 tileType:cell.tileType]; | 1148 tileType:cell.tileType]; |
| 1144 [[strongSelf dataSource] webPageOrderedOpen:url | 1149 [[strongSelf dispatcher] webPageOrderedOpen:url |
| 1145 referrer:web::Referrer() | 1150 referrer:web::Referrer() |
| 1146 inBackground:YES | 1151 inBackground:YES |
| 1147 appendTo:kCurrentTab]; | 1152 appendTo:kCurrentTab]; |
| 1148 }; | 1153 }; |
| 1149 [_contextMenuCoordinator | 1154 [_contextMenuCoordinator |
| 1150 addItemWithTitle:l10n_util::GetNSStringWithFixup( | 1155 addItemWithTitle:l10n_util::GetNSStringWithFixup( |
| 1151 IDS_IOS_CONTENT_CONTEXT_OPENLINKNEWTAB) | 1156 IDS_IOS_CONTENT_CONTEXT_OPENLINKNEWTAB) |
| 1152 action:action]; | 1157 action:action]; |
| 1153 | 1158 |
| 1154 if (!self.isOffTheRecord) { | 1159 if (!self.isOffTheRecord) { |
| 1155 // Open in Incognito Tab. | 1160 // Open in Incognito Tab. |
| 1156 action = ^{ | 1161 action = ^{ |
| 1157 base::scoped_nsobject<GoogleLandingController> strongSelf( | 1162 base::scoped_nsobject<GoogleLandingController> strongSelf( |
| 1158 [weakSelf retain]); | 1163 [weakSelf retain]); |
| 1159 if (!strongSelf) | 1164 if (!strongSelf) |
| 1160 return; | 1165 return; |
| 1161 MostVisitedCell* cell = (MostVisitedCell*)sender.view; | 1166 MostVisitedCell* cell = (MostVisitedCell*)sender.view; |
| 1162 [[strongSelf dataSource] logMostVisitedClick:index | 1167 [[strongSelf dataSource] logMostVisitedClick:index |
| 1163 tileType:cell.tileType]; | 1168 tileType:cell.tileType]; |
| 1164 [[strongSelf dataSource] webPageOrderedOpen:url | 1169 [[strongSelf dispatcher] webPageOrderedOpen:url |
| 1165 referrer:web::Referrer() | 1170 referrer:web::Referrer() |
| 1166 inIncognito:YES | 1171 inIncognito:YES |
| 1167 inBackground:NO | 1172 inBackground:NO |
| 1168 appendTo:kCurrentTab]; | 1173 appendTo:kCurrentTab]; |
| 1169 }; | 1174 }; |
| 1170 [_contextMenuCoordinator | 1175 [_contextMenuCoordinator |
| 1171 addItemWithTitle:l10n_util::GetNSStringWithFixup( | 1176 addItemWithTitle:l10n_util::GetNSStringWithFixup( |
| 1172 IDS_IOS_CONTENT_CONTEXT_OPENLINKNEWINCOGNITOTAB) | 1177 IDS_IOS_CONTENT_CONTEXT_OPENLINKNEWINCOGNITOTAB) |
| 1173 action:action]; | 1178 action:action]; |
| 1174 } | 1179 } |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1215 TriggerHapticFeedbackForNotification(UINotificationFeedbackTypeSuccess); | 1220 TriggerHapticFeedbackForNotification(UINotificationFeedbackTypeSuccess); |
| 1216 MDCSnackbarMessage* message = [MDCSnackbarMessage | 1221 MDCSnackbarMessage* message = [MDCSnackbarMessage |
| 1217 messageWithText:l10n_util::GetNSString( | 1222 messageWithText:l10n_util::GetNSString( |
| 1218 IDS_IOS_NEW_TAB_MOST_VISITED_ITEM_REMOVED)]; | 1223 IDS_IOS_NEW_TAB_MOST_VISITED_ITEM_REMOVED)]; |
| 1219 message.action = action; | 1224 message.action = action; |
| 1220 message.category = @"MostVisitedUndo"; | 1225 message.category = @"MostVisitedUndo"; |
| 1221 [MDCSnackbarManager showMessage:message]; | 1226 [MDCSnackbarManager showMessage:message]; |
| 1222 } | 1227 } |
| 1223 | 1228 |
| 1224 - (void)onPromoLabelTapped { | 1229 - (void)onPromoLabelTapped { |
| 1225 [self.dataSource cancelOmniboxEdit]; | 1230 [self.dispatcher cancelOmniboxEdit]; |
| 1226 [_promoHeaderView setHidden:YES]; | 1231 [_promoHeaderView setHidden:YES]; |
| 1227 [self.view setNeedsLayout]; | 1232 [self.view setNeedsLayout]; |
| 1228 [self.dataSource promoTapped]; | 1233 [self.dataSource promoTapped]; |
| 1229 } | 1234 } |
| 1230 | 1235 |
| 1231 // Returns the Y value to use for the scroll view's contentOffset when scrolling | 1236 // Returns the Y value to use for the scroll view's contentOffset when scrolling |
| 1232 // the omnibox to the top of the screen. | 1237 // the omnibox to the top of the screen. |
| 1233 - (CGFloat)pinnedOffsetY { | 1238 - (CGFloat)pinnedOffsetY { |
| 1234 CGFloat headerHeight = [_headerView frame].size.height; | 1239 CGFloat headerHeight = [_headerView frame].size.height; |
| 1235 CGFloat offsetY = | 1240 CGFloat offsetY = |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1312 #pragma mark - UIScrollViewDelegate Methods. | 1317 #pragma mark - UIScrollViewDelegate Methods. |
| 1313 | 1318 |
| 1314 - (void)scrollViewDidScroll:(UIScrollView*)scrollView { | 1319 - (void)scrollViewDidScroll:(UIScrollView*)scrollView { |
| 1315 [self.delegate updateNtpBarShadowForPanelController:self]; | 1320 [self.delegate updateNtpBarShadowForPanelController:self]; |
| 1316 [_overscrollActionsController scrollViewDidScroll:scrollView]; | 1321 [_overscrollActionsController scrollViewDidScroll:scrollView]; |
| 1317 | 1322 |
| 1318 // Blur the omnibox when the scroll view is scrolled below the pinned offset. | 1323 // Blur the omnibox when the scroll view is scrolled below the pinned offset. |
| 1319 CGFloat pinnedOffsetY = [self pinnedOffsetY]; | 1324 CGFloat pinnedOffsetY = [self pinnedOffsetY]; |
| 1320 if (_omniboxFocused && scrollView.dragging && | 1325 if (_omniboxFocused && scrollView.dragging && |
| 1321 scrollView.contentOffset.y < pinnedOffsetY) { | 1326 scrollView.contentOffset.y < pinnedOffsetY) { |
| 1322 [self.dataSource cancelOmniboxEdit]; | 1327 [self.dispatcher cancelOmniboxEdit]; |
| 1323 } | 1328 } |
| 1324 | 1329 |
| 1325 if (IsIPadIdiom()) { | 1330 if (IsIPadIdiom()) { |
| 1326 return; | 1331 return; |
| 1327 } | 1332 } |
| 1328 | 1333 |
| 1329 if (_animateHeader) { | 1334 if (_animateHeader) { |
| 1330 [self updateSearchField]; | 1335 [self updateSearchField]; |
| 1331 } | 1336 } |
| 1332 } | 1337 } |
| (...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1509 - (void)setCanGoForward:(BOOL)canGoForward { | 1514 - (void)setCanGoForward:(BOOL)canGoForward { |
| 1510 _canGoForward = canGoForward; | 1515 _canGoForward = canGoForward; |
| 1511 [_headerView setCanGoForward:self.canGoForward]; | 1516 [_headerView setCanGoForward:self.canGoForward]; |
| 1512 } | 1517 } |
| 1513 | 1518 |
| 1514 - (void)setCanGoBack:(BOOL)canGoBack { | 1519 - (void)setCanGoBack:(BOOL)canGoBack { |
| 1515 _canGoBack = canGoBack; | 1520 _canGoBack = canGoBack; |
| 1516 [_headerView setCanGoBack:self.canGoBack]; | 1521 [_headerView setCanGoBack:self.canGoBack]; |
| 1517 } | 1522 } |
| 1518 @end | 1523 @end |
| OLD | NEW |