- (void) setOfflineWebApplicationCacheEnabled:(BOOL)enabled;
@end
+@implementation WebFrame (Cydia)
+
+- (NSString *) description {
+ return [NSString stringWithFormat:@"<%s: %p, %@>", class_getName([self class]), self, [[[([self provisionalDataSource] ?: [self dataSource]) request] URL] absoluteString]];
+}
+
+@end
+
/* Indirect Delegate {{{ */
@interface IndirectDelegate : NSObject {
_transient volatile id delegate_;
];
}
-- (void) setURL:(NSURL *)url {
+- (void) setRequest:(NSURLRequest *)request {
_assert(request_ == nil);
- request_ = [self requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy];
+ request_ = request;
+}
+
+- (void) setURL:(NSURL *)url {
+ [self setRequest:[self requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy]];
}
- (void) loadURL:(NSURL *)url cachePolicy:(NSURLRequestCachePolicy)policy {
return;
if ([[error domain] isEqualToString:WebKitErrorDomain] && [error code] == WebKitErrorFrameLoadInterruptedByPolicyChange) {
- request_ = stage2_;
- stage1_ = nil;
- stage2_ = nil;
+ request_ = nil;
return;
}
if (page == nil) {
CyteWebViewController *browser([[[class_ alloc] init] autorelease]);
- [browser loadRequest:request];
+ [browser setRequest:request];
page = browser;
}
- (void) webView:(WebView *)view didDecidePolicy:(CYWebPolicyDecision)decision forNavigationAction:(NSDictionary *)action request:(NSURLRequest *)request frame:(WebFrame *)frame {
if ([frame parentFrame] == nil)
if (decision == CYWebPolicyDecisionUse)
- if (!error_) {
- stage1_ = request_;
+ if (!error_)
request_ = request;
- }
}
- (void) webView:(WebView *)view decidePolicyForNewWindowAction:(NSDictionary *)action request:(NSURLRequest *)request newFrameName:(NSString *)frame decisionListener:(id<WebPolicyDecisionListener>)listener {
- (void) webView:(WebView *)view didClearWindowObject:(WebScriptObject *)window forFrame:(WebFrame *)frame {
}
+- (void) webView:(WebView *)view didCommitLoadForFrame:(WebFrame *)frame {
+#if LogBrowser
+ NSLog(@"didCommitLoadForFrame:%@", frame);
+#endif
+
+ if ([frame parentFrame] == nil) {
+ loaded_ = true;
+ }
+}
+
- (void) webView:(WebView *)view didFailLoadWithError:(NSError *)error forFrame:(WebFrame *)frame {
#if LogBrowser
NSLog(@"didFailLoadWithError:%@ forFrame:%@", error, frame);
[loading_ removeObject:[NSValue valueWithNonretainedObject:frame]];
if ([frame parentFrame] == nil) {
- stage1_ = nil;
- stage2_ = nil;
-
if (DOMDocument *document = [frame DOMDocument])
if (DOMNodeList<NSFastEnumeration> *bodies = [document getElementsByTagName:@"body"])
for (DOMHTMLBodyElement *body in (id) bodies) {
allowsNavigationAction_ = true;
- stage2_ = stage1_;
- stage1_ = nil;
-
[self setHidesNavigationBar:NO];
// XXX: do we still need to do this?
// }}}
- (void) close {
- [[self navigationController] dismissModalViewControllerAnimated:YES];
+ [[[self navigationController] parentViewController] dismissModalViewControllerAnimated:YES];
}
- (void) alertView:(UIAlertView *)alert clickedButtonAtIndex:(NSInteger)button {
[self setViewportWidth:width_];
UITableView *table([[[UITableView alloc] initWithFrame:[webview_ bounds] style:UITableViewStyleGrouped] autorelease]);
+ [table setScrollsToTop:NO];
[webview_ insertSubview:table atIndex:0];
[table setAutoresizingMask:(UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight)];