| Index: remoting/client/ios/session/remoting_client.mm
|
| diff --git a/remoting/client/ios/session/remoting_client.mm b/remoting/client/ios/session/remoting_client.mm
|
| deleted file mode 100644
|
| index 3338641dd05570114f7838f6be232c2789727f7d..0000000000000000000000000000000000000000
|
| --- a/remoting/client/ios/session/remoting_client.mm
|
| +++ /dev/null
|
| @@ -1,238 +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/session/remoting_client.h"
|
| -
|
| -#include <memory>
|
| -
|
| -#import "base/mac/bind_objc_block.h"
|
| -#import "ios/third_party/material_components_ios/src/components/Dialogs/src/MaterialDialogs.h"
|
| -#import "remoting/client/ios/display/gl_display_handler.h"
|
| -#import "remoting/client/ios/domain/client_session_details.h"
|
| -#import "remoting/client/ios/domain/host_info.h"
|
| -
|
| -#include "base/strings/sys_string_conversions.h"
|
| -#include "remoting/client/chromoting_client_runtime.h"
|
| -#include "remoting/client/chromoting_session.h"
|
| -#include "remoting/client/connect_to_host_info.h"
|
| -#include "remoting/client/gesture_interpreter.h"
|
| -#include "remoting/client/ios/session/remoting_client_session_delegate.h"
|
| -#include "remoting/protocol/session.h"
|
| -#include "remoting/protocol/video_renderer.h"
|
| -
|
| -NSString* const kHostSessionStatusChanged = @"kHostSessionStatusChanged";
|
| -NSString* const kHostSessionPinProvided = @"kHostSessionPinProvided";
|
| -
|
| -NSString* const kSessionDetails = @"kSessionDetails";
|
| -NSString* const kSessonStateErrorCode = @"kSessonStateErrorCode";
|
| -NSString* const kHostSessionPin = @"kHostSessionPin";
|
| -
|
| -@interface RemotingClient () {
|
| - remoting::ChromotingClientRuntime* _runtime;
|
| - std::unique_ptr<remoting::ChromotingSession> _session;
|
| - remoting::RemotingClientSessonDelegate* _sessonDelegate;
|
| - ClientSessionDetails* _sessionDetails;
|
| - // Call _secretFetchedCallback on the network thread.
|
| - remoting::protocol::SecretFetchedCallback _secretFetchedCallback;
|
| - std::unique_ptr<remoting::GestureInterpreter> _gestureInterpreter;
|
| -}
|
| -@end
|
| -
|
| -@implementation RemotingClient
|
| -
|
| -@synthesize displayHandler = _displayHandler;
|
| -
|
| -- (instancetype)init {
|
| - self = [super init];
|
| - if (self) {
|
| - _runtime = remoting::ChromotingClientRuntime::GetInstance();
|
| - _sessonDelegate = new remoting::RemotingClientSessonDelegate(self);
|
| - _sessionDetails = [[ClientSessionDetails alloc] init];
|
| -
|
| - [[NSNotificationCenter defaultCenter]
|
| - addObserver:self
|
| - selector:@selector(hostSessionPinProvided:)
|
| - name:kHostSessionPinProvided
|
| - object:nil];
|
| - }
|
| - return self;
|
| -}
|
| -
|
| -- (void)connectToHost:(HostInfo*)hostInfo
|
| - username:(NSString*)username
|
| - accessToken:(NSString*)accessToken {
|
| - DCHECK(_runtime->ui_task_runner()->BelongsToCurrentThread());
|
| - DCHECK(hostInfo);
|
| - DCHECK(hostInfo.jabberId);
|
| - DCHECK(hostInfo.hostId);
|
| - DCHECK(hostInfo.publicKey);
|
| -
|
| - _sessionDetails.hostInfo = hostInfo;
|
| -
|
| - remoting::ConnectToHostInfo info;
|
| - info.username = base::SysNSStringToUTF8(username);
|
| - info.auth_token = base::SysNSStringToUTF8(accessToken);
|
| - info.host_jid = base::SysNSStringToUTF8(hostInfo.jabberId);
|
| - info.host_id = base::SysNSStringToUTF8(hostInfo.hostId);
|
| - info.host_pubkey = base::SysNSStringToUTF8(hostInfo.publicKey);
|
| - // TODO(nicholss): If iOS supports pairing, pull the stored data and
|
| - // insert it here.
|
| - info.pairing_id = "";
|
| - info.pairing_secret = "";
|
| -
|
| - // TODO(nicholss): I am not sure about the following fields yet.
|
| - // info.capabilities =
|
| - // info.flags =
|
| - // info.host_version =
|
| - // info.host_os =
|
| - // info.host_os_version =
|
| -
|
| - remoting::protocol::ClientAuthenticationConfig client_auth_config;
|
| - client_auth_config.host_id = info.host_id;
|
| - client_auth_config.pairing_client_id = info.pairing_id;
|
| - client_auth_config.pairing_secret = info.pairing_secret;
|
| - client_auth_config.fetch_secret_callback = base::BindBlockArc(
|
| - ^(bool pairing_supported, const remoting::protocol::SecretFetchedCallback&
|
| - secret_fetched_callback) {
|
| - _secretFetchedCallback = secret_fetched_callback;
|
| - _sessionDetails.state = SessionPinPrompt;
|
| - [[NSNotificationCenter defaultCenter]
|
| - postNotificationName:kHostSessionStatusChanged
|
| - object:self
|
| - userInfo:[NSDictionary
|
| - dictionaryWithObject:_sessionDetails
|
| - forKey:kSessionDetails]];
|
| - });
|
| -
|
| - // TODO(nicholss): Add audio support to iOS.
|
| - base::WeakPtr<remoting::protocol::AudioStub> audioPlayer = nullptr;
|
| -
|
| - _displayHandler = [[GlDisplayHandler alloc] init];
|
| - _displayHandler.delegate = self;
|
| -
|
| - _session.reset(new remoting::ChromotingSession(
|
| - _sessonDelegate->GetWeakPtr(), [_displayHandler CreateCursorShapeStub],
|
| - [_displayHandler CreateVideoRenderer], audioPlayer, info,
|
| - client_auth_config));
|
| - _session->Connect();
|
| -
|
| - __weak GlDisplayHandler* weakDisplayHandler = _displayHandler;
|
| - _gestureInterpreter.reset(new remoting::GestureInterpreter(
|
| - base::BindBlockArc(^(const remoting::ViewMatrix& matrix) {
|
| - [weakDisplayHandler onPixelTransformationChanged:matrix];
|
| - }),
|
| - _session.get()));
|
| -}
|
| -
|
| -- (void)disconnectFromHost {
|
| - if (_session) {
|
| - _session->Disconnect();
|
| - }
|
| - // TODO(nicholss): Do we need to cleanup more?
|
| -}
|
| -
|
| -#pragma mark - Eventing
|
| -
|
| -- (void)hostSessionPinProvided:(NSNotification*)notification {
|
| - NSString* pin = [[notification userInfo] objectForKey:kHostSessionPin];
|
| - if (_secretFetchedCallback) {
|
| - _runtime->network_task_runner()->PostTask(
|
| - FROM_HERE, base::BindBlockArc(^{
|
| - _secretFetchedCallback.Run(base::SysNSStringToUTF8(pin));
|
| - }));
|
| - }
|
| -}
|
| -
|
| -#pragma mark - Properties
|
| -
|
| -- (HostInfo*)hostInfo {
|
| - return _sessionDetails.hostInfo;
|
| -}
|
| -
|
| -- (remoting::GestureInterpreter*)gestureInterpreter {
|
| - return _gestureInterpreter.get();
|
| -}
|
| -
|
| -#pragma mark - ChromotingSession::Delegate
|
| -
|
| -- (void)onConnectionState:(remoting::protocol::ConnectionToHost::State)state
|
| - error:(remoting::protocol::ErrorCode)error {
|
| - switch (state) {
|
| - case remoting::protocol::ConnectionToHost::INITIALIZING:
|
| - NSLog(@"State --> INITIALIZING");
|
| - _sessionDetails.state = SessionInitializing;
|
| - break;
|
| - case remoting::protocol::ConnectionToHost::CONNECTING:
|
| - NSLog(@"State --> CONNECTING");
|
| - _sessionDetails.state = SessionConnecting;
|
| - break;
|
| - case remoting::protocol::ConnectionToHost::AUTHENTICATED:
|
| - NSLog(@"State --> AUTHENTICATED");
|
| - _sessionDetails.state = SessionAuthenticated;
|
| - break;
|
| - case remoting::protocol::ConnectionToHost::CONNECTED:
|
| - NSLog(@"State --> CONNECTED");
|
| - _sessionDetails.state = SessionConnected;
|
| - break;
|
| - case remoting::protocol::ConnectionToHost::FAILED:
|
| - NSLog(@"State --> FAILED");
|
| - _sessionDetails.state = SessionFailed;
|
| - break;
|
| - case remoting::protocol::ConnectionToHost::CLOSED:
|
| - NSLog(@"State --> CLOSED");
|
| - _sessionDetails.state = SessionClosed;
|
| - break;
|
| - default:
|
| - LOG(ERROR) << "onConnectionState, unknown state: " << state;
|
| - }
|
| -
|
| - // TODO(nicholss): Send along the error code when we know what to do about it.
|
| - [[NSNotificationCenter defaultCenter]
|
| - postNotificationName:kHostSessionStatusChanged
|
| - object:self
|
| - userInfo:[NSDictionary dictionaryWithObject:_sessionDetails
|
| - forKey:kSessionDetails]];
|
| -}
|
| -
|
| -- (void)commitPairingCredentialsForHost:(NSString*)host
|
| - id:(NSString*)id
|
| - secret:(NSString*)secret {
|
| - NSLog(@"TODO(nicholss): implement this, commitPairingCredentialsForHost.");
|
| -}
|
| -
|
| -- (void)fetchThirdPartyTokenForUrl:(NSString*)tokenUrl
|
| - clientId:(NSString*)clientId
|
| - scope:(NSString*)scope {
|
| - NSLog(@"TODO(nicholss): implement this, fetchThirdPartyTokenForUrl.");
|
| -}
|
| -
|
| -- (void)setCapabilities:(NSString*)capabilities {
|
| - NSLog(@"TODO(nicholss): implement this, setCapabilities.");
|
| -}
|
| -
|
| -- (void)handleExtensionMessageOfType:(NSString*)type
|
| - message:(NSString*)message {
|
| - NSLog(@"TODO(nicholss): implement this, handleExtensionMessageOfType %@:%@.",
|
| - type, message);
|
| -}
|
| -
|
| -- (void)surfaceChanged:(const CGRect&)frame {
|
| - [_displayHandler onSurfaceChanged:frame];
|
| - _gestureInterpreter->OnSurfaceSizeChanged(frame.size.width,
|
| - frame.size.height);
|
| -}
|
| -
|
| -#pragma mark - GlDisplayHandlerDelegate
|
| -
|
| -- (void)canvasSizeChanged:(CGSize)size {
|
| - if (_gestureInterpreter) {
|
| - _gestureInterpreter->OnDesktopSizeChanged(size.width, size.height);
|
| - }
|
| -}
|
| -
|
| -@end
|
|
|