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

Side by Side Diff: ios/chrome/browser/ui/fullscreen_controller.mm

Issue 2804703002: [ObjC ARC] Converts ios/chrome/browser/ui:ui_internal_arc to ARC. (Closed)
Patch Set: comments Created 3 years, 8 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 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/fullscreen_controller.h" 5 #import "ios/chrome/browser/ui/fullscreen_controller.h"
6 6
7 #include <cmath> 7 #include <cmath>
8 8
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/mac/objc_property_releaser.h" 10
11 #import "ios/chrome/browser/ui/browser_view_controller.h" 11 #import "ios/chrome/browser/ui/browser_view_controller.h"
12 #import "ios/chrome/browser/ui/overscroll_actions/overscroll_actions_controller. h" 12 #import "ios/chrome/browser/ui/overscroll_actions/overscroll_actions_controller. h"
13 #import "ios/chrome/browser/ui/tabs/tab_strip_controller.h" 13 #import "ios/chrome/browser/ui/tabs/tab_strip_controller.h"
14 #import "ios/chrome/browser/ui/toolbar/toolbar_controller.h" 14 #import "ios/chrome/browser/ui/toolbar/toolbar_controller.h"
15 #import "ios/chrome/browser/ui/toolbar/web_toolbar_controller.h" 15 #import "ios/chrome/browser/ui/toolbar/web_toolbar_controller.h"
16 #import "ios/chrome/browser/ui/voice/voice_search_notification_names.h" 16 #import "ios/chrome/browser/ui/voice/voice_search_notification_names.h"
17 #include "ios/web/public/navigation_item.h" 17 #include "ios/web/public/navigation_item.h"
18 #import "ios/web/public/navigation_manager.h" 18 #import "ios/web/public/navigation_manager.h"
19 #include "ios/web/public/ssl_status.h" 19 #include "ios/web/public/ssl_status.h"
20 #import "ios/web/public/web_state/ui/crw_web_view_proxy.h" 20 #import "ios/web/public/web_state/ui/crw_web_view_proxy.h"
21 #import "ios/web/web_state/ui/crw_web_controller.h" 21 #import "ios/web/web_state/ui/crw_web_controller.h"
22 22
23 #if !defined(__has_feature) || !__has_feature(objc_arc)
24 #error "This file requires ARC support."
25 #endif
26
23 NSString* const kSetupForTestingWillCloseAllTabsNotification = 27 NSString* const kSetupForTestingWillCloseAllTabsNotification =
24 @"kSetupForTestingWillCloseAllTabsNotification"; 28 @"kSetupForTestingWillCloseAllTabsNotification";
25 29
26 using web::NavigationManager; 30 using web::NavigationManager;
27 31
28 namespace { 32 namespace {
29 33
30 class ScopedIncrementer { 34 class ScopedIncrementer {
31 public: 35 public:
32 explicit ScopedIncrementer(int* value) : value_(value) { ++(*value_); } 36 explicit ScopedIncrementer(int* value) : value_(value) { ++(*value_); }
(...skipping 27 matching lines...) Expand all
60 // Used to detect if the keyboard is visible. 64 // Used to detect if the keyboard is visible.
61 BOOL keyboardIsVisible_; 65 BOOL keyboardIsVisible_;
62 // Used to detect that the OverscrollActionsController is displaying its UI. 66 // Used to detect that the OverscrollActionsController is displaying its UI.
63 // The FullScreenController is disabled when the OverscrollActionsController's 67 // The FullScreenController is disabled when the OverscrollActionsController's
64 // UI is displayed. 68 // UI is displayed.
65 BOOL overscrollActionsInProgress_; 69 BOOL overscrollActionsInProgress_;
66 // Counter used to keep track of the number of actions currently disabling 70 // Counter used to keep track of the number of actions currently disabling
67 // full screen. 71 // full screen.
68 uint fullScreenLock_; 72 uint fullScreenLock_;
69 // CRWWebViewProxy object allows web view manipulations. 73 // CRWWebViewProxy object allows web view manipulations.
70 base::scoped_nsprotocol<id<CRWWebViewProxy>> webViewProxy_; 74 id<CRWWebViewProxy> webViewProxy_;
71 base::mac::ObjCPropertyReleaser propertyReleaser_FullScreenController_;
72 } 75 }
73 76
74 // Access to the UIWebView's UIScrollView. 77 // Access to the UIWebView's UIScrollView.
75 @property(nonatomic, readonly) CRWWebViewScrollViewProxy* scrollViewProxy; 78 @property(weak, nonatomic, readonly) CRWWebViewScrollViewProxy* scrollViewProxy;
76 // The navigation controller of the page. 79 // The navigation controller of the page.
77 @property(nonatomic, readonly, assign) NavigationManager* navigationManager; 80 @property(nonatomic, readonly, assign) NavigationManager* navigationManager;
78 // The gesture recognizer set on the scrollview to detect tap. Must be readwrite 81 // The gesture recognizer set on the scrollview to detect tap. Must be readwrite
79 // for property releaser to work. 82 // for property releaser to work.
80 @property(nonatomic, readwrite, retain) 83 @property(nonatomic, readwrite, strong)
81 UITapGestureRecognizer* userInteractionGestureRecognizer; 84 UITapGestureRecognizer* userInteractionGestureRecognizer;
82 // The delegate responsible for providing the header height and moving the 85 // The delegate responsible for providing the header height and moving the
83 // header. 86 // header.
84 @property(nonatomic, readonly) id<FullScreenControllerDelegate> delegate; 87 @property(weak, nonatomic, readonly) id<FullScreenControllerDelegate> delegate;
85 // Current height of the header, in points. This is a pass-through method that 88 // Current height of the header, in points. This is a pass-through method that
86 // fetches the header height from the FullScreenControllerDelegate. 89 // fetches the header height from the FullScreenControllerDelegate.
87 @property(nonatomic, readonly) CGFloat headerHeight; 90 @property(nonatomic, readonly) CGFloat headerHeight;
88 // |top| field of UIScrollView.contentInset value caused by header. 91 // |top| field of UIScrollView.contentInset value caused by header.
89 // Always 0 for WKWebView, as it does not support contentInset. 92 // Always 0 for WKWebView, as it does not support contentInset.
90 @property(nonatomic, readonly) CGFloat topContentInsetCausedByHeader; 93 @property(nonatomic, readonly) CGFloat topContentInsetCausedByHeader;
91 // Last known y offset of the content in the scroll view during a scroll. Used 94 // Last known y offset of the content in the scroll view during a scroll. Used
92 // to infer the direction of the current scroll. 95 // to infer the direction of the current scroll.
93 @property(nonatomic, assign) CGFloat previousContentOffset; 96 @property(nonatomic, assign) CGFloat previousContentOffset;
94 // Last known y offset requested on the scroll view. In general the same value 97 // Last known y offset requested on the scroll view. In general the same value
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
183 @synthesize isFullScreenDisabledForLoading = isFullScreenDisabledForLoading_; 186 @synthesize isFullScreenDisabledForLoading = isFullScreenDisabledForLoading_;
184 @synthesize skipNextScrollOffsetForHeader = skipNextScrollOffsetForHeader_; 187 @synthesize skipNextScrollOffsetForHeader = skipNextScrollOffsetForHeader_;
185 @synthesize delayedHideHeaderCount = delayedHideHeaderCount_; 188 @synthesize delayedHideHeaderCount = delayedHideHeaderCount_;
186 @synthesize sessionID = sessionID_; 189 @synthesize sessionID = sessionID_;
187 @synthesize userInteractionGestureRecognizer = 190 @synthesize userInteractionGestureRecognizer =
188 userInteractionGestureRecognizer_; 191 userInteractionGestureRecognizer_;
189 192
190 - (id)initWithDelegate:(id<FullScreenControllerDelegate>)delegate 193 - (id)initWithDelegate:(id<FullScreenControllerDelegate>)delegate
191 navigationManager:(NavigationManager*)navigationManager 194 navigationManager:(NavigationManager*)navigationManager
192 sessionID:(NSString*)sessionID { 195 sessionID:(NSString*)sessionID {
193 if (!gEnabledForTests) { 196 if (!gEnabledForTests)
194 propertyReleaser_FullScreenController_.Init(self,
195 [FullScreenController class]);
196 [self release];
197 return nil; 197 return nil;
198 }
199 if ((self = [super init])) { 198 if ((self = [super init])) {
200 propertyReleaser_FullScreenController_.Init(self,
201 [FullScreenController class]);
202 DCHECK(sessionID); 199 DCHECK(sessionID);
203 DCHECK(delegate); 200 DCHECK(delegate);
204 delegate_ = delegate; 201 delegate_ = delegate;
205 sessionID_ = [sessionID copy]; 202 sessionID_ = [sessionID copy];
206 navigationManager_ = navigationManager; 203 navigationManager_ = navigationManager;
207 204
208 NSNotificationCenter* center = [NSNotificationCenter defaultCenter]; 205 NSNotificationCenter* center = [NSNotificationCenter defaultCenter];
209 [center addObserver:self 206 [center addObserver:self
210 selector:@selector(keyboardStart:) 207 selector:@selector(keyboardStart:)
211 name:UIKeyboardWillShowNotification 208 name:UIKeyboardWillShowNotification
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
309 306
310 - (void)invalidate { 307 - (void)invalidate {
311 delegate_ = nil; 308 delegate_ = nil;
312 navigationManager_ = NULL; 309 navigationManager_ = NULL;
313 [self.scrollViewProxy removeObserver:self]; 310 [self.scrollViewProxy removeObserver:self];
314 [[NSNotificationCenter defaultCenter] removeObserver:self]; 311 [[NSNotificationCenter defaultCenter] removeObserver:self];
315 } 312 }
316 313
317 - (void)dealloc { 314 - (void)dealloc {
318 [[NSNotificationCenter defaultCenter] removeObserver:self]; 315 [[NSNotificationCenter defaultCenter] removeObserver:self];
319 [super dealloc];
320 } 316 }
321 317
322 - (CRWWebViewScrollViewProxy*)scrollViewProxy { 318 - (CRWWebViewScrollViewProxy*)scrollViewProxy {
323 return [webViewProxy_ scrollViewProxy]; 319 return [webViewProxy_ scrollViewProxy];
324 } 320 }
325 321
326 - (CGFloat)headerHeight { 322 - (CGFloat)headerHeight {
327 return [self.delegate headerHeight]; 323 return [self.delegate headerHeight];
328 } 324 }
329 325
(...skipping 363 matching lines...) Expand 10 before | Expand all | Expand 10 after
693 689
694 [self setContentViewTopContentPadding:topInset]; 690 [self setContentViewTopContentPadding:topInset];
695 } 691 }
696 692
697 #pragma mark - 693 #pragma mark -
698 #pragma mark CRWWebControllerObserver methods 694 #pragma mark CRWWebControllerObserver methods
699 695
700 - (void)setWebViewProxy:(id<CRWWebViewProxy>)webViewProxy 696 - (void)setWebViewProxy:(id<CRWWebViewProxy>)webViewProxy
701 controller:(CRWWebController*)webController { 697 controller:(CRWWebController*)webController {
702 DCHECK([webViewProxy scrollViewProxy]); 698 DCHECK([webViewProxy scrollViewProxy]);
703 webViewProxy_.reset([webViewProxy retain]); 699 webViewProxy_ = webViewProxy;
704 [[webViewProxy scrollViewProxy] addObserver:self]; 700 [[webViewProxy scrollViewProxy] addObserver:self];
705 } 701 }
706 702
707 - (void)pageLoaded:(CRWWebController*)webController { 703 - (void)pageLoaded:(CRWWebController*)webController {
708 [self enableFullScreen]; 704 [self enableFullScreen];
709 web::WebState* webState = webController.webState; 705 web::WebState* webState = webController.webState;
710 if (webState) { 706 if (webState) {
711 BOOL MIMETypeIsPDF = webState->GetContentsMimeType() == "application/pdf"; 707 BOOL MIMETypeIsPDF = webState->GetContentsMimeType() == "application/pdf";
712 [webViewProxy_ setShouldUseInsetForTopPadding:MIMETypeIsPDF]; 708 [webViewProxy_ setShouldUseInsetForTopPadding:MIMETypeIsPDF];
713 } 709 }
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
813 overscrollActionsInProgress_ = NO; 809 overscrollActionsInProgress_ = NO;
814 } 810 }
815 811
816 #pragma mark - Used for testing 812 #pragma mark - Used for testing
817 813
818 + (void)setEnabledForTests:(BOOL)enabled { 814 + (void)setEnabledForTests:(BOOL)enabled {
819 gEnabledForTests = enabled; 815 gEnabledForTests = enabled;
820 } 816 }
821 817
822 @end 818 @end
OLDNEW
« no previous file with comments | « ios/chrome/browser/ui/fade_truncated_label.mm ('k') | ios/chrome/browser/ui/key_commands_provider.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698