/* * Copyright 2017 Google * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #import "FIRAuthWebView.h" NS_ASSUME_NONNULL_BEGIN @implementation FIRAuthWebView - (instancetype)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { self.backgroundColor = [UIColor whiteColor]; [self initializeSubviews]; } return self; } /** @fn initializeSubviews @brief Initializes the subviews of this view. */ - (void)initializeSubviews { UIWebView *webView = [self createWebView]; UIActivityIndicatorView *spinner = [self createSpinner]; // The order of the following controls z-order. [self addSubview:webView]; [self addSubview:spinner]; [self layoutSubviews]; _webView = webView; _spinner = spinner; } - (void)layoutSubviews { CGFloat height = self.bounds.size.height; CGFloat width = self.bounds.size.width; _webView.frame = CGRectMake(0, 0, width, height); _spinner.center = _webView.center; } /** @fn createWebView @brief Creates a web view to be used by this view. @return The newly created web view. */ - (UIWebView *)createWebView { UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectZero]; // Trickery to make the web view not do weird things (like showing a black background when // the prompt in the navigation bar animates changes.) webView.opaque = NO; webView.backgroundColor = [UIColor clearColor]; webView.scrollView.opaque = NO; webView.scrollView.backgroundColor = [UIColor clearColor]; webView.scrollView.bounces = NO; webView.scrollView.alwaysBounceVertical = NO; webView.scrollView.alwaysBounceHorizontal = NO; return webView; } /** @fn createSpinner @brief Creates a spinner to be used by this view. @return The newly created spinner. */ - (UIActivityIndicatorView *)createSpinner { UIActivityIndicatorViewStyle spinnerStyle = UIActivityIndicatorViewStyleGray; UIActivityIndicatorView *spinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:spinnerStyle]; return spinner; } @end NS_ASSUME_NONNULL_END