X-Git-Url: https://git.saurik.com/cydia.git/blobdiff_plain/275d8115c11cc7a0f1fc20271a9b0e545014faf3..8c1bfa15252a894ab1aeab031e5179d03cbf9829:/UICaboodle/BrowserView.mm diff --git a/UICaboodle/BrowserView.mm b/UICaboodle/BrowserView.mm index fee3cf0c..e08c291f 100644 --- a/UICaboodle/BrowserView.mm +++ b/UICaboodle/BrowserView.mm @@ -6,6 +6,7 @@ extern NSString * const kCAFilterNearest; #include +#include #include "substrate.h" @@ -209,12 +210,28 @@ UIActionSheet *mailAlertSheet = [[UIActionSheet alloc] initWithTitle:UCLocalize( /* }}} */ #endif +#define ShowInternals 0 +#define LogBrowser 0 + +#define lprintf(args...) fprintf(stderr, args) + @implementation BrowserView #if ShowInternals -#include "Internals.h" +#include "UICaboodle/UCInternal.h" #endif ++ (void) _initialize { + NSLog(@"INITIALIZING"); + [WebView enableWebThread]; + + WebPreferences *preferences([WebPreferences standardPreferences]); + [preferences setCacheModel:WebCacheModelDocumentBrowser]; + [preferences setOfflineWebApplicationCacheEnabled:YES]; + + [WebPreferences _setInitialDefaultTextEncodingToSystemEncoding]; +} + - (void) dealloc { #if LogBrowser NSLog(@"[BrowserView dealloc]"); @@ -232,9 +249,8 @@ UIActionSheet *mailAlertSheet = [[UIActionSheet alloc] initWithTitle:UCLocalize( [webview setScriptDebugDelegate:nil]; [webview setPolicyDelegate:nil]; - [webview setDownloadDelegate:nil]; - /* XXX: these are set by UIWebDocumentView + [webview setDownloadDelegate:nil]; [webview _setFormDelegate:nil]; [webview _setUIKitDelegate:nil]; [webview setEditingDelegate:nil];*/ @@ -425,6 +441,13 @@ UIActionSheet *mailAlertSheet = [[UIActionSheet alloc] initWithTitle:UCLocalize( return false; } +- (void) formAssistant:(id)sender didBeginEditingFormNode:(id)node { +} + +- (void) formAssistant:(id)sender didEndEditingFormNode:(id)node { + [self fixScroller]; +} + - (void) webViewShow:(WebView *)sender { /* XXX: this is where I cry myself to sleep */ } @@ -643,7 +666,7 @@ UIActionSheet *mailAlertSheet = [[UIActionSheet alloc] initWithTitle:UCLocalize( [self setBackButtonTitle:title_]; - BrowserView *browser([[[BrowserView alloc] initWithBook:book] autorelease]); + BrowserView *browser([[[class_ alloc] initWithBook:book] autorelease]); [browser loadURL:url]; page = browser; } @@ -896,7 +919,7 @@ UIActionSheet *mailAlertSheet = [[UIActionSheet alloc] initWithTitle:UCLocalize( RVBook *book(!popup_ ? book_ : [[[RVPopUpBook alloc] initWithFrame:[delegate_ popUpBounds]] autorelease]); /* XXX: deal with cydia:// pages */ - BrowserView *browser([[[BrowserView alloc] initWithBook:book forWidth:width] autorelease]); + BrowserView *browser([[[class_ alloc] initWithBook:book forWidth:width] autorelease]); if (features != nil && popup_) { [book setDelegate:delegate_]; @@ -1158,8 +1181,9 @@ UIActionSheet *mailAlertSheet = [[UIActionSheet alloc] initWithTitle:UCLocalize( [self _setTileDrawingEnabled:YES]; } -- (id) initWithBook:(RVBook *)book forWidth:(float)width { +- (id) initWithBook:(RVBook *)book forWidth:(float)width ofClass:(Class)_class { if ((self = [super initWithBook:book]) != nil) { + class_ = _class; loading_ = [[NSMutableSet alloc] initWithCapacity:3]; popup_ = false; @@ -1213,17 +1237,25 @@ UIActionSheet *mailAlertSheet = [[UIActionSheet alloc] initWithTitle:UCLocalize( [webview_ setTileSize:CGSizeMake(webrect.size.width, 500)]; + if ([webview_ respondsToSelector:@selector(enableReachability)]) + [webview_ enableReachability]; + [webview_ setAllowsMessaging:YES]; + if ([webview_ respondsToSelector:@selector(useSelectionAssistantWithMode:)]) + [webview_ useSelectionAssistantWithMode:0]; + [webview_ setTilingEnabled:YES]; [webview_ setDrawsGrid:NO]; [webview_ setLogsTilingChanges:NO]; [webview_ setTileMinificationFilter:kCAFilterNearest]; + if ([webview_ respondsToSelector:@selector(setDataDetectorTypes:)]) /* XXX: abstractify */ [webview_ setDataDetectorTypes:0x80000000]; else [webview_ setDetectsPhoneNumbers:NO]; + [webview_ setAutoresizes:YES]; [webview_ setMinimumScale:0.25f forDocumentTypes:0x10]; @@ -1251,8 +1283,13 @@ UIActionSheet *mailAlertSheet = [[UIActionSheet alloc] initWithTitle:UCLocalize( [webview _setUsesLoaderCache:YES]; [webview setGroupName:@"CydiaGroup"]; + + WebPreferences *preferences([webview preferences]); + if ([webview respondsToSelector:@selector(_setLayoutInterval:)]) [webview _setLayoutInterval:0]; + else + [preferences _setLayoutInterval:0]; } [self setViewportWidth:width]; @@ -1269,10 +1306,12 @@ UIActionSheet *mailAlertSheet = [[UIActionSheet alloc] initWithTitle:UCLocalize( indirect_ = [[IndirectDelegate alloc] initWithDelegate:self]; [webview setFrameLoadDelegate:indirect_]; + [webview setPolicyDelegate:indirect_]; [webview setResourceLoadDelegate:indirect_]; [webview setUIDelegate:indirect_]; - [webview setScriptDebugDelegate:indirect_]; - [webview setPolicyDelegate:indirect_]; + + /* XXX: do not turn this on under penalty of extreme pain */ + [webview setScriptDebugDelegate:nil]; WebThreadUnlock(); @@ -1289,6 +1328,10 @@ UIActionSheet *mailAlertSheet = [[UIActionSheet alloc] initWithTitle:UCLocalize( } return self; } +- (id) initWithBook:(RVBook *)book forWidth:(float)width { + return [self initWithBook:book forWidth:width ofClass:[self class]]; +} + - (id) initWithBook:(RVBook *)book { return [self initWithBook:book forWidth:0]; }