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

Unified Diff: remoting/client/ios/session/remoting_client.mm

Issue 2846603002: Updating Pin Entry View and creating Connection Status View. (Closed)
Patch Set: Use viewWillLayoutSubviews. 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « remoting/client/ios/session/remoting_client.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
index be20f85bff5b6377615c12335329ffb36aa267ea..bf0ce370f951d0705bd673a90cac4679ad8eb289 100644
--- a/remoting/client/ios/session/remoting_client.mm
+++ b/remoting/client/ios/session/remoting_client.mm
@@ -9,17 +9,33 @@
#import "remoting/client/ios/session/remoting_client.h"
#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/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;
}
@end
@@ -32,12 +48,44 @@
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:(const remoting::ConnectToHostInfo&)info {
- remoting::ConnectToHostInfo hostInfo(info);
+- (void)connectToHost:(HostInfo*)hostInfo
+ username:(NSString*)username
+ accessToken:(NSString*)accessToken {
+ 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;
@@ -46,9 +94,14 @@
client_auth_config.fetch_secret_callback = base::BindBlockArc(
^(bool pairing_supported, const remoting::protocol::SecretFetchedCallback&
secret_fetched_callback) {
- NSLog(@"TODO(nicholss): Implement the FetchSecretCallback.");
- // TODO(nicholss): For now we pass back a junk number.
- secret_fetched_callback.Run("000000");
+ _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.
@@ -61,18 +114,69 @@
_session.reset(new remoting::ChromotingSession(
_sessonDelegate->GetWeakPtr(),
[_displayHandler CreateCursorShapeStub],
- [_displayHandler CreateVideoRenderer], audioPlayer, hostInfo,
+ [_displayHandler CreateVideoRenderer], audioPlayer, info,
client_auth_config));
_session->Connect();
}));
}
+#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;
+}
+
#pragma mark - ChromotingSession::Delegate
- (void)onConnectionState:(remoting::protocol::ConnectionToHost::State)state
error:(remoting::protocol::ErrorCode)error {
- NSLog(@"TODO(nicholss): implement this, onConnectionState: %d %d.", state,
- 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
« no previous file with comments | « remoting/client/ios/session/remoting_client.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698