summaryrefslogtreecommitdiff
path: root/CyteKit/WebViewController.mm
diff options
context:
space:
mode:
authorJay Freeman (saurik) <saurik@saurik.com>2014-05-20 00:59:32 -0700
committerJay Freeman (saurik) <saurik@saurik.com>2014-05-20 00:59:32 -0700
commit754456f50dfc16895f42e9e6db4c22297e8ada2e (patch)
tree3fb8d0bbd123b7fdfbe41ac390439b98c5a2e5a7 /CyteKit/WebViewController.mm
parent946c4377084df6bc7eef81ab02ec31ce09f09a43 (diff)
Recover BrowserView authentication challenge logic.
Diffstat (limited to 'CyteKit/WebViewController.mm')
-rw-r--r--CyteKit/WebViewController.mm63
1 files changed, 50 insertions, 13 deletions
diff --git a/CyteKit/WebViewController.mm b/CyteKit/WebViewController.mm
index c4931cb..f047ed3 100644
--- a/CyteKit/WebViewController.mm
+++ b/CyteKit/WebViewController.mm
@@ -636,6 +636,49 @@ float CYScrollViewDecelerationRateNormal;
[self _didStartLoading];
}
+- (void) webView:(WebView *)view resource:(id)identifier didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge fromDataSource:(WebDataSource *)source {
+ challenge_ = [challenge retain];
+
+ NSURLProtectionSpace *space([challenge protectionSpace]);
+ NSString *realm([space realm]);
+ if (realm == nil)
+ realm = @"";
+
+ UIAlertView *alert = [[[UIAlertView alloc]
+ initWithTitle:realm
+ message:nil
+ delegate:self
+ cancelButtonTitle:UCLocalize("CANCEL")
+ otherButtonTitles:UCLocalize("LOGIN"), nil
+ ] autorelease];
+
+ [alert setContext:@"challenge"];
+ [alert setNumberOfRows:1];
+
+ [alert addTextFieldWithValue:@"" label:UCLocalize("USERNAME")];
+ [alert addTextFieldWithValue:@"" label:UCLocalize("PASSWORD")];
+
+ UITextField *username([alert textFieldAtIndex:0]); {
+ UITextInputTraits *traits([username textInputTraits]);
+ [traits setAutocapitalizationType:UITextAutocapitalizationTypeNone];
+ [traits setAutocorrectionType:UITextAutocorrectionTypeNo];
+ [traits setKeyboardType:UIKeyboardTypeASCIICapable];
+ [traits setReturnKeyType:UIReturnKeyNext];
+ }
+
+ UITextField *password([alert textFieldAtIndex:1]); {
+ UITextInputTraits *traits([password textInputTraits]);
+ [traits setAutocapitalizationType:UITextAutocapitalizationTypeNone];
+ [traits setAutocorrectionType:UITextAutocorrectionTypeNo];
+ [traits setKeyboardType:UIKeyboardTypeASCIICapable];
+ // XXX: UIReturnKeyDone
+ [traits setReturnKeyType:UIReturnKeyNext];
+ [traits setSecureTextEntry:YES];
+ }
+
+ [alert show];
+}
+
- (NSURLRequest *) webView:(WebView *)view resource:(id)identifier willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)response fromDataSource:(WebDataSource *)source {
#if LogBrowser
NSLog(@"resource:%@ willSendRequest:%@ redirectResponse:%@ fromDataSource:%@", identifier, request, response, source);
@@ -683,21 +726,15 @@ float CYScrollViewDecelerationRateNormal;
} else if ([context isEqualToString:@"challenge"]) {
id<NSURLAuthenticationChallengeSender> sender([challenge_ sender]);
- switch (button) {
- case 1: {
- NSString *username([[alert textFieldAtIndex:0] text]);
- NSString *password([[alert textFieldAtIndex:1] text]);
-
- NSURLCredential *credential([NSURLCredential credentialWithUser:username password:password persistence:NSURLCredentialPersistenceForSession]);
+ if (button == [alert cancelButtonIndex])
+ [sender cancelAuthenticationChallenge:challenge_];
+ else if (button == [alert firstOtherButtonIndex]) {
+ NSString *username([[alert textFieldAtIndex:0] text]);
+ NSString *password([[alert textFieldAtIndex:1] text]);
- [sender useCredential:credential forAuthenticationChallenge:challenge_];
- } break;
-
- case 2:
- [sender cancelAuthenticationChallenge:challenge_];
- break;
+ NSURLCredential *credential([NSURLCredential credentialWithUser:username password:password persistence:NSURLCredentialPersistenceForSession]);
- _nodefault
+ [sender useCredential:credential forAuthenticationChallenge:challenge_];
}
challenge_ = nil;