From 77d4e15b55ce321bc3aff3641889f4cf5043c367 Mon Sep 17 00:00:00 2001 From: "Jay Freeman (saurik)" Date: Sat, 26 Mar 2011 07:37:25 -0700 Subject: Improve state machine that protects against automatic fail-directs. --- CyteKit/WebViewController.mm | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/CyteKit/WebViewController.mm b/CyteKit/WebViewController.mm index 580a9ca..2d489b3 100644 --- a/CyteKit/WebViewController.mm +++ b/CyteKit/WebViewController.mm @@ -453,10 +453,26 @@ float CYScrollViewDecelerationRateNormal; } - (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_) - request_ = request; +#if LogBrowser + NSLog(@"didDecidePolicy:%u forNavigationAction:%@ request:%@ frame:%@", decision, action, request, [request allHTTPHeaderFields], frame); +#endif + + if ([frame parentFrame] == nil) { + switch (decision) { + case CYWebPolicyDecisionIgnore: + if ([[request_ URL] isEqual:[request URL]]) + request_ = nil; + break; + + case CYWebPolicyDecisionUse: + if (!error_) + request_ = request; + break; + + default: + break; + } + } } - (void) webView:(WebView *)view decidePolicyForNewWindowAction:(NSDictionary *)action request:(NSURLRequest *)request newFrameName:(NSString *)name decisionListener:(id)listener { -- cgit v1.2.3