]> git.saurik.com Git - cydia.git/commitdiff
Implement chpwn's lazy-loading API for BrowserController.
authorJay Freeman (saurik) <saurik@saurik.com>
Mon, 14 Feb 2011 09:10:41 +0000 (01:10 -0800)
committerJay Freeman (saurik) <saurik@saurik.com>
Mon, 14 Feb 2011 09:10:41 +0000 (01:10 -0800)
MobileCydia.mm
UICaboodle/BrowserView.h
UICaboodle/BrowserView.mm

index aae8dd530b96d54b3d3b9cd20113765ae3bd1281..5f6fb36fba1cc5f94066a92a605aa9c30ed2bd73 100644 (file)
@@ -8894,8 +8894,7 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
     if ([base isEqualToString:@"url"]) {
         // This kind of URL can contain slashes in the argument, so we can't parse them below.
         NSString *destination = [[url absoluteString] substringFromIndex:([scheme length] + [@"://" length] + [base length] + [@"/" length])];
-        controller = [[[CYBrowserController alloc] init] autorelease];
-        [(CYBrowserController *)controller loadURL:[NSURL URLWithString:destination]];
+        controller = [[[CYBrowserController alloc] initWithURL:[NSURL URLWithString:destination]] autorelease];
     } else if ([components count] == 1) {
         if ([base isEqualToString:@"manage"]) {
             controller = [[[ManageController alloc] init] autorelease];
index efc1e6ca59a14ec22f1ad0a39fdef4f17d4d238a..79652f3887161ae811840e7f6bd0b8775d0af053 100644 (file)
@@ -91,6 +91,8 @@
 
 + (void) _initialize;
 
+- (void) setURL:(NSURL *)url;
+
 - (void) loadURL:(NSURL *)url cachePolicy:(NSURLRequestCachePolicy)policy;
 - (void) loadURL:(NSURL *)url;
 
 - (bool) isLoading;
 
 - (id) init;
+- (id) initWithURL:(NSURL *)url;
 - (id) initWithWidth:(float)width;
 - (id) initWithWidth:(float)width ofClass:(Class)_class;
 
index 2abc02ecc607b3c968bbf2c656260fb490b10b70..c4e4b36541f341cc7a87ac3a2d832aed2bd01369 100644 (file)
@@ -27,6 +27,7 @@ extern NSString * const kCAFilterNearest;
 #include "substrate.h"
 
 #define ForSaurik 0
+#define DefaultTimeout_ 120.0
 
 template <typename Type_>
 static inline void CYRelease(Type_ &value) {
@@ -463,11 +464,21 @@ static void $UIWebViewWebViewDelegate$webViewClose$(UIWebViewWebViewDelegate *se
     [super dealloc];
 }
 
+- (void) setURL:(NSURL *)url {
+    _assert(request_ == nil);
+
+    request_ = [[NSURLRequest
+        requestWithURL:url
+        cachePolicy:NSURLRequestUseProtocolCachePolicy
+        timeoutInterval:DefaultTimeout_
+    ] retain];
+}
+
 - (void) loadURL:(NSURL *)url cachePolicy:(NSURLRequestCachePolicy)policy {
     [self loadRequest:[NSURLRequest
         requestWithURL:url
         cachePolicy:policy
-        timeoutInterval:120.0
+        timeoutInterval:DefaultTimeout_
     ]];
 }
 
@@ -507,6 +518,11 @@ static void $UIWebViewWebViewDelegate$webViewClose$(UIWebViewWebViewDelegate *se
     }
 }
 
+- (void) reloadData {
+    [super reloadData];
+    [self reloadURL];
+}
+
 - (void) setButtonImage:(NSString *)button withStyle:(NSString *)style toFunction:(id)function {
     if (custom_ != nil)
         [custom_ autorelease];
@@ -1035,6 +1051,12 @@ static void $UIWebViewWebViewDelegate$webViewClose$(UIWebViewWebViewDelegate *se
     return [self initWithWidth:0];
 }
 
+- (id) initWithURL:(NSURL *)url {
+    if ((self = [self init]) != nil) {
+        [self setURL:url];
+    } return self;
+}
+
 - (void) didDismissModalViewController {
     if (closer_ != nil)
         [self callFunction:closer_];