Index: remoting/client/ios/app/remoting_settings_view_controller.mm |
diff --git a/remoting/client/ios/app/remoting_settings_view_controller.mm b/remoting/client/ios/app/remoting_settings_view_controller.mm |
deleted file mode 100644 |
index 1db1db01c8c9dd0b913326d761e7b9d438107c1c..0000000000000000000000000000000000000000 |
--- a/remoting/client/ios/app/remoting_settings_view_controller.mm |
+++ /dev/null |
@@ -1,208 +0,0 @@ |
-// Copyright 2017 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#if !defined(__has_feature) || !__has_feature(objc_arc) |
-#error "This file requires ARC support." |
-#endif |
- |
-#import "remoting/client/ios/app/remoting_settings_view_controller.h" |
- |
-#import "ios/third_party/material_components_ios/src/components/AppBar/src/MaterialAppBar.h" |
-#import "ios/third_party/material_components_ios/src/components/Buttons/src/MaterialButtons.h" |
-#import "remoting/client/ios/facade/remoting_authentication.h" |
-#import "remoting/client/ios/facade/remoting_service.h" |
- |
-#include "base/strings/stringprintf.h" |
-#include "google_apis/google_api_keys.h" |
-#include "net/base/escape.h" |
- |
-// TODO(nicholss): This should be generated from a remoting/base class: |
- |
-static NSString* const kReusableIdentifierItem = |
- @"remotingSettingsViewControllerItem"; |
-static UIColor* kBackgroundColor = |
- [UIColor colorWithRed:0.f green:0.67f blue:0.55f alpha:1.f]; |
- |
-namespace { |
-const char kChromotingAuthScopeValues[] = |
- "https://www.googleapis.com/auth/chromoting " |
- "https://www.googleapis.com/auth/googletalk " |
- "https://www.googleapis.com/auth/userinfo.email"; |
- |
-std::string GetAuthorizationCodeUri() { |
- // Replace space characters with a '+' sign when formatting. |
- bool use_plus = true; |
- return base::StringPrintf( |
- "https://accounts.google.com/o/oauth2/auth" |
- "?scope=%s" |
- "&redirect_uri=https://chromoting-oauth.talkgadget.google.com/" |
- "talkgadget/oauth/chrome-remote-desktop/dev" |
- "&response_type=code" |
- "&client_id=%s" |
- "&access_type=offline" |
- "&approval_prompt=force", |
- net::EscapeUrlEncodedData(kChromotingAuthScopeValues, use_plus).c_str(), |
- net::EscapeUrlEncodedData( |
- google_apis::GetOAuth2ClientID(google_apis::CLIENT_REMOTING), |
- use_plus) |
- .c_str()); |
-} |
- |
-} // namespace |
- |
-@interface RemotingSettingsViewController () { |
- MDCAppBar* _appBar; |
- NSMutableArray* _content; |
-} |
-@end |
- |
-// This is the chromium version of the settings view controller. This will |
-// launch a web view to login and collect an oauth token to be able to login to |
-// the app without the standard google login flow. |
-// |
-// This class is majority boiler plate code to get a collection view. |
-// It will be replaced with a sidebar-like view in the future, but in |
-// chromium this is how we get an oauth token to login to the app. |
-// |
-// Note: this class is not localized, it will not be shipped to production. |
-// |
-// TODO(nicholss): This class needs to be split into a shareable view |
-// for chromium and prod to share. |
-// |
-@implementation RemotingSettingsViewController |
- |
-- (id)init { |
- self = [super init]; |
- if (self) { |
- self.title = @"Settings"; |
- |
- _appBar = [[MDCAppBar alloc] init]; |
- [self addChildViewController:_appBar.headerViewController]; |
- |
- _appBar.headerViewController.headerView.backgroundColor = kBackgroundColor; |
- _appBar.navigationBar.tintColor = [UIColor whiteColor]; |
- _appBar.navigationBar.titleTextAttributes = |
- @{NSForegroundColorAttributeName : [UIColor whiteColor]}; |
- } |
- return self; |
-} |
- |
-#pragma mark - UIViewController |
- |
-- (void)viewDidLoad { |
- [super viewDidLoad]; |
- |
- _appBar.headerViewController.headerView.trackingScrollView = |
- self.collectionView; |
- [_appBar addSubviewsToParent]; |
- |
- UIBarButtonItem* backButton = |
- [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"Back"] |
- style:UIBarButtonItemStyleDone |
- target:self |
- action:@selector(didTapBack:)]; |
- self.navigationItem.leftBarButtonItem = backButton; |
- self.navigationItem.rightBarButtonItem = nil; |
- |
- [self.collectionView registerClass:[MDCCollectionViewTextCell class] |
- forCellWithReuseIdentifier:kReusableIdentifierItem]; |
- |
- [self.collectionView registerClass:[MDCCollectionViewTextCell class] |
- forSupplementaryViewOfKind:UICollectionElementKindSectionHeader |
- withReuseIdentifier:UICollectionElementKindSectionHeader]; |
- |
- self.styler.cellStyle = MDCCollectionViewCellStyleCard; |
- |
- _content = [NSMutableArray array]; |
- [_content addObject:@[ @"Login", @"Logout" ]]; |
-} |
- |
-#pragma mark - UICollectionViewDataSource |
- |
-- (NSInteger)numberOfSectionsInCollectionView: |
- (UICollectionView*)collectionView { |
- return (NSInteger)[_content count]; |
-} |
- |
-- (NSInteger)collectionView:(UICollectionView*)collectionView |
- numberOfItemsInSection:(NSInteger)section { |
- return (NSInteger)[_content[(NSUInteger)section] count]; |
-} |
- |
-- (UICollectionViewCell*)collectionView:(UICollectionView*)collectionView |
- cellForItemAtIndexPath:(NSIndexPath*)indexPath { |
- MDCCollectionViewTextCell* cell = [collectionView |
- dequeueReusableCellWithReuseIdentifier:kReusableIdentifierItem |
- forIndexPath:indexPath]; |
- cell.textLabel.text = |
- _content[(NSUInteger)indexPath.section][(NSUInteger)indexPath.item]; |
- |
- if (indexPath.section == 0 && indexPath.item == 0) { |
- MDCRaisedButton* accessCodeButton = [[MDCRaisedButton alloc] init]; |
- [accessCodeButton setTitle:@"Get Access Code" |
- forState:UIControlStateNormal]; |
- [accessCodeButton sizeToFit]; |
- [accessCodeButton addTarget:self |
- action:@selector(didTapGetAccessCode:) |
- forControlEvents:UIControlEventTouchUpInside]; |
- accessCodeButton.translatesAutoresizingMaskIntoConstraints = NO; |
- cell.accessoryView = accessCodeButton; |
- } else if (indexPath.section == 0 && indexPath.item == 1) { |
- MDCRaisedButton* logoutButton = [[MDCRaisedButton alloc] init]; |
- [logoutButton setTitle:@"Logout" forState:UIControlStateNormal]; |
- [logoutButton sizeToFit]; |
- [logoutButton addTarget:self |
- action:@selector(didTapLogout:) |
- forControlEvents:UIControlEventTouchUpInside]; |
- logoutButton.translatesAutoresizingMaskIntoConstraints = NO; |
- cell.accessoryView = logoutButton; |
- } |
- |
- return cell; |
-} |
- |
-- (UICollectionReusableView*)collectionView:(UICollectionView*)collectionView |
- viewForSupplementaryElementOfKind:(NSString*)kind |
- atIndexPath:(NSIndexPath*)indexPath { |
- MDCCollectionViewTextCell* supplementaryView = |
- [collectionView dequeueReusableSupplementaryViewOfKind:kind |
- withReuseIdentifier:kind |
- forIndexPath:indexPath]; |
- if ([kind isEqualToString:UICollectionElementKindSectionHeader]) { |
- if (indexPath.section == 0) { |
- supplementaryView.textLabel.text = @"Account"; |
- } |
- supplementaryView.textLabel.textColor = kBackgroundColor; |
- } |
- return supplementaryView; |
-} |
- |
-#pragma mark - <UICollectionViewDelegateFlowLayout> |
- |
-- (CGSize)collectionView:(UICollectionView*)collectionView |
- layout: |
- (UICollectionViewLayout*)collectionViewLayout |
- referenceSizeForHeaderInSection:(NSInteger)section { |
- return CGSizeMake(collectionView.bounds.size.width, |
- MDCCellDefaultOneLineHeight); |
-} |
- |
-#pragma mark - Private |
- |
-- (void)didTapBack:(id)button { |
- [self dismissViewControllerAnimated:YES completion:nil]; |
-} |
- |
-- (void)didTapGetAccessCode:(id)sender { |
- NSString* authUri = |
- [NSString stringWithCString:GetAuthorizationCodeUri().c_str() |
- encoding:[NSString defaultCStringEncoding]]; |
- [[UIApplication sharedApplication] openURL:[NSURL URLWithString:authUri]]; |
-} |
- |
-- (void)didTapLogout:(id)sender { |
- [[RemotingService SharedInstance].authentication logout]; |
-} |
- |
-@end |