+2006-10-26 Geoffrey Garen <ggaren@apple.com>
+
+ Reviewed by Darin, Maciej.
+
+ Removed many uses of NSString *.
+ Moved a few methods from WebCoreFrameBridge to FrameLoader, replacing
+ stringByCollapsingNonPrintingCharacters with a c++ equivalent.
+
+ PLT says no performance regression.
+
+ * WebCore.exp:
+ * bridge/mac/WebCoreFrameBridge.mm:
+ (-[WebCoreFrameBridge receivedData:textEncodingName:]):
+ * loader/mac/FrameLoader.h:
+ * loader/mac/FrameLoader.mm:
+ (WebCore::FrameLoader::setupForReplaceByMIMEType):
+ (WebCore::FrameLoader::load):
+ (WebCore::FrameLoader::canShowMIMEType):
+ (WebCore::FrameLoader::representationExistsForURLScheme):
+ (WebCore::FrameLoader::generatedMIMETypeForURLScheme):
+ (WebCore::FrameLoader::checkContentPolicy):
+ (WebCore::FrameLoader::reloadAllowingStaleData):
+ (WebCore::FrameLoader::invalidatePendingPolicyDecision):
+ (WebCore::FrameLoader::checkNewWindowPolicy):
+ (WebCore::FrameLoader::continueAfterNewWindowPolicy):
+ (WebCore::FrameLoader::transitionToCommitted):
+ (WebCore::FrameLoader::continueLoadRequestAfterNewWindowPolicy):
+ (WebCore::FrameLoader::post):
+ * loader/mac/WebDocumentLoader.h:
+ * loader/mac/WebDocumentLoader.mm:
+ (WebCore::DocumentLoader::doesProgressiveLoad):
+ (WebCore::DocumentLoader::setupForReplaceByMIMEType):
+ (WebCore::DocumentLoader::title):
+ (WebCore::DocumentLoader::setOverrideEncoding):
+ (WebCore::DocumentLoader::overrideEncoding):
+ (WebCore::DocumentLoader::setTitle):
+ * loader/mac/WebFrameLoaderClient.h:
+ * loader/mac/WebMainResourceLoader.mm:
+ (WebCore::MainResourceLoader::continueAfterContentPolicy):
+
2006-10-26 Timothy Hatcher <timothy@apple.com>
Reviewed by Adam.
__ZN7WebCore11FrameLoader21commitProvisionalLoadEP12NSDictionary
__ZN7WebCore11FrameLoader22defersCallbacksChangedEv
__ZN7WebCore11FrameLoader23addExtraFieldsToRequestEP19NSMutableURLRequestbb
-__ZN7WebCore11FrameLoader23reloadAllowingStaleDataEP8NSString
+__ZN7WebCore11FrameLoader23reloadAllowingStaleDataERKNS_6StringE
__ZN7WebCore11FrameLoader23timeOfLastCompletedLoadEv
__ZN7WebCore11FrameLoader24removePlugInStreamLoaderEPNS_17WebResourceLoaderE
__ZN7WebCore11FrameLoader25provisionalDocumentLoaderEv
__ZN7WebCore11FrameLoader4loadEP12NSURLRequest
__ZN7WebCore11FrameLoader4loadEP12NSURLRequestP12NSDictionaryNS_13FrameLoadTypeEN3WTF10PassRefPtrINS_9FormStateEEE
-__ZN7WebCore11FrameLoader4loadEP12NSURLRequestP8NSString
-__ZN7WebCore11FrameLoader4loadEP5NSURLP8NSStringNS_13FrameLoadTypeES4_P7NSEventPNS_7ElementEP12NSDictionary
+__ZN7WebCore11FrameLoader4loadEP12NSURLRequestRKNS_6StringE
+__ZN7WebCore11FrameLoader4loadEP5NSURLRKNS_6StringENS_13FrameLoadTypeES5_P7NSEventPNS_7ElementEP12NSDictionary
__ZN7WebCore11FrameLoader4loadEPNS_14DocumentLoaderE
__ZN7WebCore11FrameLoader4loadEPNS_14DocumentLoaderENS_13FrameLoadTypeEN3WTF10PassRefPtrINS_9FormStateEEE
__ZN7WebCore11FrameLoader6reloadEv
+__ZN7WebCore11FrameLoader7canLoadEP5NSURLRKNS_6StringERb
__ZN7WebCore11FrameLoader8safeLoadEP5NSURL
__ZN7WebCore11FrameLoader9setClientEPNS_17FrameLoaderClientE
__ZN7WebCore11RenderLayer18gAlignCenterAlwaysE
__ZN7WebCore14DocumentLoader13attachToFrameEv
__ZN7WebCore14DocumentLoader15detachFromFrameEv
__ZN7WebCore14DocumentLoader19prepareForLoadStartEv
-__ZN7WebCore14DocumentLoader19setOverrideEncodingEP8NSString
+__ZN7WebCore14DocumentLoader19setOverrideEncodingERKNS_6StringE
__ZN7WebCore14DocumentLoader32replaceRequestURLForAnchorScrollEP5NSURL
__ZN7WebCore14DocumentLoader7requestEv
__ZN7WebCore14DocumentLoaderC2EP12NSURLRequest
__ZN7WebCore5Frame7outdentEv
__ZN7WebCore5RangeD1Ev
__ZN7WebCore6StringC1EP8NSString
+__ZN7WebCore6StringC1EP8NSString
+__ZN7WebCore6StringC1EPKc
__ZN7WebCore8FrameMac10mouseMovedEP7NSEvent
__ZN7WebCore8FrameMac10wheelEventEP7NSEvent
__ZN7WebCore8FrameMac11mayDHTMLCutEv
__ZN7WebCore9FrameTree11appendChildEN3WTF10PassRefPtrINS_5FrameEEE
__ZN7WebCore9FrameTree7setNameERKNS_12AtomicStringE
__ZNK7WebCore10StringImplcvP8NSStringEv
+__ZNK7WebCore10StringImplcvP8NSStringEv
__ZNK7WebCore11FrameLoader14documentLoaderEv
__ZNK7WebCore11FrameLoader15defersCallbacksEv
__ZNK7WebCore11FrameLoader15firstLayoutDoneEv
0867D690FE84028FC02AAC07 /* Project object */ = {
isa = PBXProject;
buildConfigurationList = 149C284308902B11008A9EFC /* Build configuration list for PBXProject "WebCore" */;
- compatibilityVersion = "Xcode 2.4";
hasScannedForEncodings = 1;
knownRegions = (
English,
productRefGroup = 034768DFFF38A50411DB9C8B /* Products */;
projectDirPath = "";
projectRoot = "";
- shouldCheckCompatibility = 1;
targets = (
93F198A508245E59001E9ABC /* WebCore */,
DD041FBE09D9DDBE0010AF2A /* Derived Sources */,
const KURL& url = request.m_request.url();
- NSString *frameName = request.m_frameName.isEmpty() ? nil : (NSString*)request.m_frameName;
- if (frameName) {
- if (Frame* frame = m_frame->tree()->find(frameName)) {
+ if (!request.m_frameName.isEmpty()) {
+ if (Frame* frame = m_frame->tree()->find(request.m_frameName)) {
if (!url.isEmpty())
Mac(frame)->loadRequest(request, true, nil, nil, nil);
[Mac(frame)->bridge() activateWindow];
#import "Cache.h"
#import "ClipboardEvent.h"
#import "Cursor.h"
+#import "WebDocumentLoader.h"
#import "DOMInternal.h"
#import "DOMWindow.h"
#import "Decoder.h"
{
BEGIN_BLOCK_OBJC_EXCEPTIONS;
- NSString *referrer;
+ String referrer;
String argsReferrer = request.m_request.httpReferrer();
if (!argsReferrer.isEmpty())
referrer = argsReferrer;
else
referrer = FrameMac::referrer();
- BOOL hideReferrer;
- if (![_bridge canLoadURL:request.m_request.url().getNSURL() fromReferrer:referrer hideReferrer:&hideReferrer])
+ bool hideReferrer;
+ if (!loader()->canLoad(request.m_request.url().getNSURL(), referrer, hideReferrer))
return;
if (hideReferrer)
- referrer = nil;
+ referrer = String();
WebCoreFrameBridge *targetFrame = Mac(tree()->find(request.m_frameName))->bridge();
if (![_bridge canTargetLoadInFrame:targetFrame])
d->m_submittedFormURL = KURL();
}
+// FIXME: Remove this method; it's superfluous.
void FrameMac::setTitle(const String &title)
{
- String text = title;
- text.replace('\\', backslashAsCurrencySymbol());
-
- BEGIN_BLOCK_OBJC_EXCEPTIONS;
- [_bridge setTitle:text];
- END_BLOCK_OBJC_EXCEPTIONS;
+ loader()->documentLoader()->setTitle(title);
}
void FrameMac::setStatusBarText(const String& status)
class EditorClient;
class Element;
class FrameMac;
+ class String;
}
typedef WebCore::EditorClient WebCoreEditorClient;
- (void)invalidatePageCache:(NSDictionary *)pageCache;
-- (BOOL)canLoadURL:(NSURL *)URL fromReferrer:(NSString *)referrer hideReferrer:(BOOL *)hideReferrer;
- (BOOL)canTargetLoadInFrame:(WebCoreFrameBridge *)targetFrame;
- (void)saveDocumentState;
- (BOOL)canProvideDocumentSource;
- (BOOL)canSaveAsWebArchive;
-- (void)setTitle:(NSString *)title;
- (NSURL*)originalRequestURL;
- (void)frameDetached;
- (void)tokenizerProcessedData;
- (void)setStatusText:(NSString *)status;
-- (WebCoreFrameBridge *)createChildFrameNamed:(NSString *)frameName withURL:(NSURL *)URL
- referrer:(NSString *)referrer
- ownerElement:(WebCoreElement *)ownerElement
- allowsScrolling:(BOOL)allowsScrolling marginWidth:(int)width marginHeight:(int)height;
+- (WebCoreFrameBridge *)createChildFrameNamed:(NSString *)frameName withURL:(NSURL *)URL referrer:(const WebCore::String&)referrer ownerElement:(WebCoreElement *)ownerElement allowsScrolling:(BOOL)allowsScrolling marginWidth:(int)width marginHeight:(int)height;
- (BOOL)areToolbarsVisible;
- (void)setToolbarsVisible:(BOOL)visible;
doc->updateRendering();
}
-static BOOL hasCaseInsensitivePrefix(NSString *string, NSString *prefix)
-{
- return [string rangeOfString:prefix options:(NSCaseInsensitiveSearch | NSAnchoredSearch)].location !=
- NSNotFound;
-}
-
static BOOL isCaseSensitiveEqual(NSString *a, NSString *b)
{
return [a caseInsensitiveCompare:b] == NSOrderedSame;
[state invalidate];
}
-- (BOOL)canLoadURL:(NSURL *)URL fromReferrer:(NSString *)referrer hideReferrer:(BOOL *)hideReferrer
-{
- BOOL referrerIsWebURL = hasCaseInsensitivePrefix(referrer, @"http:") || hasCaseInsensitivePrefix(referrer, @"https:");
- BOOL referrerIsLocalURL = hasCaseInsensitivePrefix(referrer, @"file:") || hasCaseInsensitivePrefix(referrer, @"applewebdata:");
- BOOL URLIsFileURL = [URL scheme] != NULL && [[URL scheme] compare:@"file" options:(NSCaseInsensitiveSearch|NSLiteralSearch)] == NSOrderedSame;
- BOOL referrerIsSecureURL = hasCaseInsensitivePrefix(referrer, @"https:");
- BOOL URLIsSecureURL = [URL scheme] != NULL && [[URL scheme] compare:@"https" options:(NSCaseInsensitiveSearch|NSLiteralSearch)] == NSOrderedSame;
-
-
- *hideReferrer = !referrerIsWebURL || (referrerIsSecureURL && !URLIsSecureURL);
- return !URLIsFileURL || referrerIsLocalURL;
-}
-
- (void)saveDocumentState
{
Vector<String> stateVector;
return [self canProvideDocumentSource];
}
-static NSString *stringByCollapsingNonPrintingCharacters(NSString *string)
-{
- NSMutableString *result = [NSMutableString string];
- static NSCharacterSet *charactersToTurnIntoSpaces = nil;
- static NSCharacterSet *charactersToNotTurnIntoSpaces = nil;
-
- if (charactersToTurnIntoSpaces == nil) {
- NSMutableCharacterSet *set = [[NSMutableCharacterSet alloc] init];
- [set addCharactersInRange:NSMakeRange(0x00, 0x21)];
- [set addCharactersInRange:NSMakeRange(0x7F, 0x01)];
- charactersToTurnIntoSpaces = [set copy];
- [set release];
- charactersToNotTurnIntoSpaces = [[charactersToTurnIntoSpaces invertedSet] retain];
- }
-
- unsigned length = [string length];
- unsigned position = 0;
- while (position != length) {
- NSRange nonSpace = [string rangeOfCharacterFromSet:charactersToNotTurnIntoSpaces
- options:0 range:NSMakeRange(position, length - position)];
- if (nonSpace.location == NSNotFound)
- break;
-
- NSRange space = [string rangeOfCharacterFromSet:charactersToTurnIntoSpaces
- options:0 range:NSMakeRange(nonSpace.location, length - nonSpace.location)];
- if (space.location == NSNotFound)
- space.location = length;
-
- if (space.location > nonSpace.location) {
- if (position != 0)
- [result appendString:@" "];
- [result appendString:[string substringWithRange:
- NSMakeRange(nonSpace.location, space.location - nonSpace.location)]];
- }
-
- position = space.location;
- }
-
- return result;
-}
-
-- (void)setTitle:(NSString *)title
-{
- if (!m_frame)
- return;
- m_frame->loader()->documentLoader()->setTitle(stringByCollapsingNonPrintingCharacters(title));
-}
-
- (NSURL*)originalRequestURL
{
return [m_frame->loader()->activeDocumentLoader()->initialRequest() URL];
- (void)receivedData:(NSData *)data textEncodingName:(NSString *)textEncodingName
{
// Set the encoding. This only needs to be done once, but it's harmless to do it again later.
- NSString *encoding = m_frame ? m_frame->loader()->documentLoader()->overrideEncoding() : nil;
- bool userChosen = encoding != nil;
- if (!encoding)
+ String encoding;
+ if (m_frame)
+ encoding = m_frame->loader()->documentLoader()->overrideEncoding();
+ bool userChosen = !encoding.isNull();
+ if (encoding.isNull())
encoding = textEncodingName;
m_frame->setEncoding(encoding, userChosen);
[self addData:data];
// Since this is a subresource, we can load any URL (we ignore the return value).
// But we still want to know whether we should hide the referrer or not, so we call the canLoadURL method.
- NSString *referrer = m_frame->referrer();
- BOOL hideReferrer;
- [self canLoadURL:URL fromReferrer:referrer hideReferrer:&hideReferrer];
+ String referrer = m_frame->referrer();
+ bool hideReferrer;
+ m_frame->loader()->canLoad(URL, referrer, hideReferrer);
if (hideReferrer)
- referrer = nil;
+ referrer = String();
return SubresourceLoader::create(m_frame, resourceLoader, method, URL, customHeaders, referrer);
}
// Since this is a subresource, we can load any URL (we ignore the return value).
// But we still want to know whether we should hide the referrer or not, so we call the canLoadURL method.
- NSString *referrer = m_frame->referrer();
- BOOL hideReferrer;
- [self canLoadURL:URL fromReferrer:referrer hideReferrer:&hideReferrer];
+ String referrer = m_frame->referrer();
+ bool hideReferrer;
+ m_frame->loader()->canLoad(URL, referrer, hideReferrer);
if (hideReferrer)
- referrer = nil;
+ referrer = String();
return SubresourceLoader::create(m_frame, resourceLoader, method, URL, customHeaders, postData, referrer);
}
{
// Since this is a subresource, we can load any URL (we ignore the return value).
// But we still want to know whether we should hide the referrer or not, so we call the canLoadURL method.
- NSString *referrer = m_frame->referrer();
- BOOL hideReferrer;
- [self canLoadURL:URL fromReferrer:referrer hideReferrer:&hideReferrer];
+ String referrer = m_frame->referrer();
+ bool hideReferrer;
+ m_frame->loader()->canLoad(URL, referrer, hideReferrer);
if (hideReferrer)
- referrer = nil;
+ referrer = String();
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:URL];
[request setTimeoutInterval:10];
else
[request setCachePolicy:[m_frame->loader()->documentLoader()->request() cachePolicy]];
- if (referrer)
+ if (!referrer.isNull())
setHTTPReferrer(request, referrer);
[request setMainDocumentURL:[m_frame->page()->mainFrame()->loader()->documentLoader()->request() URL]];
*/
#import "FrameLoaderTypes.h"
+#import <WebCore/PlatformString.h>
#import <wtf/Forward.h>
#import <wtf/HashSet.h>
#import <wtf/Noncopyable.h>
class Frame;
class FrameLoaderClient;
class MainResourceLoader;
+ class String;
class WebResourceLoader;
bool isBackForwardLoadType(FrameLoadType);
// FIXME: This is not cool, people.
void prepareForLoadStart();
void setupForReplace();
- void setupForReplaceByMIMEType(NSString *newMIMEType);
+ void setupForReplaceByMIMEType(const String& newMIMEType);
void finalSetupForReplace(DocumentLoader*);
void safeLoad(NSURL *);
void load(NSURLRequest *);
- void load(NSURLRequest *, NSString *frameName);
+ void load(NSURLRequest *, const String& frameName);
void load(NSURLRequest *, NSDictionary *triggeringAaction, FrameLoadType, PassRefPtr<FormState>);
void load(DocumentLoader*);
void load(DocumentLoader*, FrameLoadType, PassRefPtr<FormState>);
- void load(NSURL *, NSString *referrer, FrameLoadType, NSString *target, NSEvent *event, Element* form, NSDictionary *formValues);
+ void load(NSURL *, const String& referrer, FrameLoadType, const String& target,
+ NSEvent *event, Element* form, NSDictionary *formValues);
+
+ bool canLoad(NSURL *, const String& referrer, bool& hideReferrer);
// Also not cool.
void stopLoadingPlugIns();
void stopLoading();
void cancelMainResourceLoad();
void cancelPendingArchiveLoad(WebResourceLoader*);
-
+
void addPlugInStreamLoader(WebResourceLoader*);
void removePlugInStreamLoader(WebResourceLoader*);
bool isLoadingMainResource() const;
NSError *interruptionForPolicyChangeError(NSURLRequest *);
bool isHostedByObjectElement() const;
bool isLoadingMainFrame() const;
- bool canShowMIMEType(NSString *MIMEType) const;
- bool representationExistsForURLScheme(NSString *URLScheme);
- NSString *generatedMIMETypeForURLScheme(NSString *URLScheme);
+ bool canShowMIMEType(const String& MIMEType) const;
+ bool representationExistsForURLScheme(const String& URLScheme);
+ String generatedMIMETypeForURLScheme(const String& URLScheme);
void notifyIconChanged(NSURL *iconURL);
void checkNavigationPolicy(NSURLRequest *newRequest, id continuationObject, SEL continuationSelector);
- void checkContentPolicy(NSString *MIMEType, id continuationObject, SEL continuationSelector);
+ void checkContentPolicy(const String& MIMEType, id continuationObject, SEL continuationSelector);
void cancelContentPolicyCheck();
void reload();
- void reloadAllowingStaleData(NSString *overrideEncoding);
+ void reloadAllowingStaleData(const String& overrideEncoding);
void didReceiveServerRedirectForProvisionalLoadForFrame();
void finishedLoadingDocument(DocumentLoader*);
void sendRemainingDelegateMessages(id identifier, NSURLResponse *, unsigned length, NSError *);
NSURLRequest *requestFromDelegate(NSURLRequest *, id& identifier, NSError *& error);
- void post(NSURL *, NSString *referrer, NSString *target, NSArray *postData, NSString *contentType, NSEvent *, Element* form, NSDictionary *formValues);
+ void post(NSURL *, const String& referrer, const String& target, NSArray *postData, const String& contentType, NSEvent *, Element* form, NSDictionary *formValues);
void checkLoadComplete();
void detachFromParent();
void continueAfterNavigationPolicy(PolicyAction);
void continueLoadRequestAfterNavigationPolicy(NSURLRequest *, FormState*);
void continueFragmentScrollAfterNavigationPolicy(NSURLRequest *);
- void continueLoadRequestAfterNewWindowPolicy(NSURLRequest *, NSString *frameName, FormState*);
+ void continueLoadRequestAfterNewWindowPolicy(NSURLRequest *, const String& frameName, FormState*);
#endif
private:
void setLoadType(FrameLoadType);
void invalidatePendingPolicyDecision(bool callDefaultAction);
- void checkNewWindowPolicy(NSURLRequest *, NSDictionary *, NSString *frameName, PassRefPtr<FormState>);
+ void checkNewWindowPolicy(NSURLRequest *, NSDictionary *, const String& frameName, PassRefPtr<FormState>);
void checkNavigationPolicy(NSURLRequest *, DocumentLoader*, PassRefPtr<FormState>, id continuationObject, SEL continuationSelector);
void transitionToCommitted(NSDictionary *pageCache);
RetainPtr<WebPolicyDecider> m_policyDecider;
RetainPtr<NSURLRequest> m_policyRequest;
- RetainPtr<NSString> m_policyFrameName;
+ String m_policyFrameName;
RetainPtr<id> m_policyTarget;
SEL m_policySelector;
RefPtr<FormState> m_policyFormState;
detachChildren();
}
-void FrameLoader::setupForReplaceByMIMEType(NSString *newMIMEType)
+void FrameLoader::setupForReplaceByMIMEType(const String& newMIMEType)
{
activeDocumentLoader()->setupForReplaceByMIMEType(newMIMEType);
}
load(m_client->createDocumentLoader(request).get());
}
-void FrameLoader::load(NSURLRequest *request, NSString *frameName)
+void FrameLoader::load(NSURLRequest *request, const String& frameName)
{
- if (!frameName) {
+ if (frameName.isNull()) {
load(request);
return;
}
load(loader.get(), type, formState);
}
-void FrameLoader::load(NSURL *URL, NSString *referrer, FrameLoadType newLoadType, NSString *target, NSEvent *event, Element* form, NSDictionary *values)
+void FrameLoader::load(NSURL *URL, const String& referrer, FrameLoadType newLoadType, const String& target, NSEvent *event, Element* form, NSDictionary *values)
{
bool isFormSubmission = values != nil;
if (form && values)
formState = FormState::create(form, values, bridge());
- if (target) {
+ if (!target.isNull()) {
Frame* targetFrame = m_frame->tree()->find(target);
if (targetFrame)
- targetFrame->loader()->load(URL, referrer, newLoadType, nil, event, form, values);
+ targetFrame->loader()->load(URL, referrer, newLoadType, String(), event, form, values);
else
checkNewWindowPolicy(request, action, target, formState.release());
[request release];
asDelegate(), @selector(continueLoadRequestAfterNavigationPolicy:formState:));
}
+bool FrameLoader::canLoad(NSURL *URL, const String& referrer, bool& hideReferrer)
+{
+ bool referrerIsWebURL = referrer.startsWith("http:", false) || referrer.startsWith("https:", false);
+ bool referrerIsLocalURL = referrer.startsWith("file:", false) || referrer.startsWith("applewebdata:");
+ bool URLIsFileURL = [URL scheme] && [[URL scheme] compare:@"file" options:(NSCaseInsensitiveSearch|NSLiteralSearch)] == NSOrderedSame;
+ bool referrerIsSecureURL = referrer.startsWith("https:", false);
+ bool URLIsSecureURL = [URL scheme] && [[URL scheme] compare:@"https" options:(NSCaseInsensitiveSearch|NSLiteralSearch)] == NSOrderedSame;
+
+ hideReferrer = !referrerIsWebURL || (referrerIsSecureURL && !URLIsSecureURL);
+ return !URLIsFileURL || referrerIsLocalURL;
+}
+
bool FrameLoader::startLoadingMainResource(NSMutableURLRequest *request, id identifier)
{
ASSERT(!m_mainResourceLoader);
return page && m_frame == page->mainFrame();
}
-bool FrameLoader::canShowMIMEType(NSString *MIMEType) const
+bool FrameLoader::canShowMIMEType(const String& MIMEType) const
{
return m_client->canShowMIMEType(MIMEType);
}
-bool FrameLoader::representationExistsForURLScheme(NSString *URLScheme)
+bool FrameLoader::representationExistsForURLScheme(const String& URLScheme)
{
return m_client->representationExistsForURLScheme(URLScheme);
}
-NSString *FrameLoader::generatedMIMETypeForURLScheme(NSString *URLScheme)
+String FrameLoader::generatedMIMETypeForURLScheme(const String& URLScheme)
{
return m_client->generatedMIMETypeForURLScheme(URLScheme);
}
checkNavigationPolicy(newRequest, activeDocumentLoader(), 0, obj, sel);
}
-void FrameLoader::checkContentPolicy(NSString *MIMEType, id obj, SEL sel)
+void FrameLoader::checkContentPolicy(const String& MIMEType, id obj, SEL sel)
{
WebPolicyDecider *d = m_client->createPolicyDecider(obj, sel);
m_policyDecider = d;
return compareDocumentLoader && [unreachableURL isEqual:[compareDocumentLoader->request() URL]];
}
-void FrameLoader::reloadAllowingStaleData(NSString *encoding)
+void FrameLoader::reloadAllowingStaleData(const String& encoding)
{
if (!m_documentLoader)
return;
[m_policyDecider.get() invalidate];
m_policyDecider = nil;
- bool hadFrameName = m_policyFrameName;
+ bool hadFrameName = !m_policyFrameName.isNull();
RetainPtr<id> target = m_policyTarget;
SEL selector = m_policySelector;
m_policyRequest = nil;
- m_policyFrameName = nil;
+ m_policyFrameName = String();
m_policyTarget = nil;
m_policyFormState = 0;
}
}
-void FrameLoader::checkNewWindowPolicy(NSURLRequest *request, NSDictionary *action,
- NSString *frameName, PassRefPtr<FormState> formState)
+void FrameLoader::checkNewWindowPolicy(NSURLRequest *request, NSDictionary *action, const String& frameName, PassRefPtr<FormState> formState)
{
WebPolicyDecider *decider = m_client->createPolicyDecider(asDelegate(),
@selector(continueAfterNewWindowPolicy:));
void FrameLoader::continueAfterNewWindowPolicy(PolicyAction policy)
{
RetainPtr<NSURLRequest> request = m_policyRequest;
- RetainPtr<NSString> frameName = m_policyFrameName;
+ String frameName = m_policyFrameName;
RetainPtr<id> target = m_policyTarget;
SEL selector = m_policySelector;
RefPtr<FormState> formState = m_policyFormState;
break;
}
- objc_msgSend(target.get(), selector, request.get(), frameName.get(), formState.get());
+ NSString *frameNameAsNSString = frameName;
+ objc_msgSend(target.get(), selector, request.get(), frameNameAsNSString, formState.get());
}
void FrameLoader::checkNavigationPolicy(NSURLRequest *request, DocumentLoader* loader,
// Handle adding the URL to the back/forward list.
DocumentLoader* dl = m_documentLoader.get();
- NSString *ptitle = dl->title();
+ String ptitle = dl->title();
switch (m_loadType) {
case FrameLoadTypeForward:
m_client->dispatchDidCommitLoad();
// If we have a title let the WebView know about it.
- if (ptitle)
+ if (!ptitle.isNull())
m_client->dispatchDidReceiveTitle(ptitle);
}
ASSERT_NOT_REACHED();
}
-void FrameLoader::continueLoadRequestAfterNewWindowPolicy(NSURLRequest *request, NSString *frameName, FormState* formState)
+void FrameLoader::continueLoadRequestAfterNewWindowPolicy(NSURLRequest *request, const String& frameName, FormState* formState)
{
if (!request)
return;
return newRequest;
}
-void FrameLoader::post(NSURL *URL, NSString *referrer, NSString *target, NSArray *postData,
- NSString *contentType, NSEvent *event, Element* form, NSDictionary *formValues)
+void FrameLoader::post(NSURL *URL, const String& referrer, const String& target, NSArray *postData,
+ const String& contentType, NSEvent *event, Element* form, NSDictionary *formValues)
{
// When posting, use the NSURLRequestReloadIgnoringCacheData load flag.
// This prevents a potential bug which may cause a page with a form that uses itself
#define WebReferrer (@"Referer")
-void setHTTPReferrer(NSMutableURLRequest *request, NSString *theReferrer)
+void setHTTPReferrer(NSMutableURLRequest *request, NSString *referrer)
{
// Do not set the referrer to a string that refers to a file URL.
// That is a potential security hole.
- if (stringIsFileURL(theReferrer))
+ if (stringIsFileURL(referrer))
return;
// Don't allow empty Referer: headers; some servers refuse them
- if([theReferrer length] == 0)
- theReferrer = nil;
+ if([referrer length] == 0)
+ referrer = nil;
- [request setValue:theReferrer forHTTPHeaderField:WebReferrer];
+ [request setValue:referrer forHTTPHeaderField:WebReferrer];
}
#include "RetainPtr.h"
#include "Shared.h"
+#include "PlatformString.h"
#include <wtf/Vector.h>
@class WebCoreFrameBridge;
void setLoading(bool);
void updateLoading();
void receivedData(NSData *);
- void setupForReplaceByMIMEType(NSString *newMIMEType);
+ void setupForReplaceByMIMEType(const String& newMIMEType);
void finishedLoading();
NSURLResponse *response() const;
NSError *mainDocumentError() const;
void setIsClientRedirect(bool);
bool isLoadingInAPISense() const;
void setPrimaryLoadComplete(bool);
- void setTitle(NSString *);
- NSString *overrideEncoding() const;
+ void setTitle(const String&);
+ String overrideEncoding() const;
void addResponse(NSURLResponse *);
const ResponseVector& responses() const;
NSDictionary *triggeringAction() const;
void setTriggeringAction(NSDictionary *);
- void setOverrideEncoding(NSString *);
+ void setOverrideEncoding(const String&);
void setLastCheckedRequest(NSURLRequest *request);
NSURLRequest *lastCheckedRequest() const;
void stopRecordingResponses();
- NSString *title() const;
+ String title() const;
NSURL *URLForHistory() const;
private:
WebCoreFrameBridge *bridge() const;
void setMainDocumentError(NSError *);
void commitLoad(NSData *);
- bool doesProgressiveLoad(NSString *MIMEType) const;
+ bool doesProgressiveLoad(const String& MIMEType) const;
Frame* m_frame;
bool m_primaryLoadComplete;
bool m_isClientRedirect;
- RetainPtr<NSString> m_pageTitle;
+ String m_pageTitle;
- RetainPtr<NSString> m_encoding;
- RetainPtr<NSString> m_overrideEncoding;
+ String m_overrideEncoding;
// The action that triggered loading - we keep this around for the
// benefit of the various policy handlers.
#import "FrameLoader.h"
#import "FrameMac.h"
+#import "PlatformString.h"
#import "WebCoreFrameBridge.h"
#import "WebCoreSystemInterface.h"
#import "WebDataProtocol.h"
namespace WebCore {
+/*
+ * Performs three operations:
+ * 1. Convert backslashes to currency symbols
+ * 2. Convert control characters to spaces
+ * 3. Trim leading and trailing spaces
+ */
+static inline String canonicalizedTitle(const String& title, Frame* frame)
+{
+ ASSERT(!title.isEmpty());
+
+ const UChar* characters = title.characters();
+ unsigned length = title.length();
+ unsigned i;
+
+ // Find the first non-canonical character
+ for (i = 0; i < length; ++i) {
+ UChar c = characters[i];
+ if (c < 0x20 || c == 0x7F || c == '\\')
+ break;
+ }
+
+ // Optimization for titles that have no non-canonical characters and no leading or trailing spaces
+ if (i == length && characters[0] != ' ' && characters[length - 1] != ' ')
+ return title;
+
+ Vector<UChar> stringBuilder(length);
+ unsigned builderIndex = 0;
+
+ // Skip leading spaces and leading characters that would convert to spaces
+ for (i = 0; i < length; ++i) {
+ UChar c = characters[i];
+ if (!(c <= 0x20 || c == 0x7F))
+ break;
+ }
+
+ // Replace control characters with spaces, and backslashes with currency symbols
+ for (; i < length; ++i) {
+ UChar c = characters[i];
+ if (c < 0x20 || c == 0x7F)
+ c = ' ';
+ else if (c == '\\')
+ c = frame->backslashAsCurrencySymbol();
+ stringBuilder[builderIndex++] = c;
+ }
+
+ // Strip trailing spaces
+ while (--builderIndex > 0)
+ if (stringBuilder[builderIndex] != ' ')
+ break;
+
+ if (builderIndex == 0 && stringBuilder[builderIndex] == ' ')
+ return "";
+
+ stringBuilder.resize(builderIndex + 1);
+ return String::adopt(stringBuilder);
+}
+
DocumentLoader::DocumentLoader(NSURLRequest *req)
: m_frame(0)
, m_originalRequest(req)
frameLoader->committedLoad(this, data);
}
-bool DocumentLoader::doesProgressiveLoad(NSString *MIMEType) const
+bool DocumentLoader::doesProgressiveLoad(const String& MIMEType) const
{
- return !frameLoader()->isReplacing() || [MIMEType isEqualToString:@"text/html"];
+ return !frameLoader()->isReplacing() || MIMEType == "text/html";
}
void DocumentLoader::receivedData(NSData *data)
commitLoad(data);
}
-void DocumentLoader::setupForReplaceByMIMEType(NSString *newMIMEType)
+void DocumentLoader::setupForReplaceByMIMEType(const String& newMIMEType)
{
if (!m_gotFirstByte)
return;
- NSString *oldMIMEType = [m_response.get() MIMEType];
+ String oldMIMEType = [m_response.get() MIMEType];
if (!doesProgressiveLoad(oldMIMEType)) {
frameLoader()->revertToProvisional(this);
m_stopRecordingResponses = true;
}
-NSString *DocumentLoader::title() const
+String DocumentLoader::title() const
{
- return [[m_pageTitle.get() retain] autorelease];
+ return m_pageTitle;
}
void DocumentLoader::setLastCheckedRequest(NSURLRequest *req)
return m_responses;
}
-void DocumentLoader::setOverrideEncoding(NSString *enc)
+void DocumentLoader::setOverrideEncoding(const String& enc)
{
- NSString *copy = [enc copy];
- m_overrideEncoding = copy;
- [copy release];
+ m_overrideEncoding = enc;
}
-NSString *DocumentLoader::overrideEncoding() const
+String DocumentLoader::overrideEncoding() const
{
- return [[m_overrideEncoding.get() copy] autorelease];
+ return m_overrideEncoding;
}
-void DocumentLoader::setTitle(NSString *title)
+void DocumentLoader::setTitle(const String& title)
{
- if (!title)
+ if (title.isEmpty())
return;
- NSString *trimmed = [title mutableCopy];
- CFStringTrimWhitespace((CFMutableStringRef)trimmed);
-
- if ([trimmed length] != 0 && ![m_pageTitle.get() isEqualToString:trimmed]) {
- NSString *copy = [trimmed copy];
+ String trimmed = canonicalizedTitle(title, m_frame);
+ if (!trimmed.isEmpty() && m_pageTitle != trimmed) {
frameLoader()->willChangeTitle(this);
- m_pageTitle = copy;
+ m_pageTitle = trimmed;
frameLoader()->didChangeTitle(this);
- [copy release];
}
-
- [trimmed release];
}
NSURL *DocumentLoader::URLForHistory() const
class DocumentLoader;
class Element;
class Frame;
+ class String;
class WebResourceLoader;
struct LoadErrorResetToken;
virtual void dispatchWillClose() = 0;
virtual void dispatchDidReceiveIcon(NSImage *) = 0;
virtual void dispatchDidStartProvisionalLoad() = 0;
- virtual void dispatchDidReceiveTitle(NSString *title) = 0;
+ virtual void dispatchDidReceiveTitle(const String& title) = 0;
virtual void dispatchDidCommitLoad() = 0;
virtual void dispatchDidFailProvisionalLoad(NSError *) = 0;
virtual void dispatchDidFailLoad(NSError *) = 0;
virtual Frame* dispatchCreatePage(NSURLRequest *) = 0;
virtual void dispatchShow() = 0;
- virtual void dispatchDecidePolicyForMIMEType(WebPolicyDecider *, NSString *MIMEType, NSURLRequest *) = 0;
- virtual void dispatchDecidePolicyForNewWindowAction(WebPolicyDecider *, NSDictionary *action, NSURLRequest *, NSString *frameName) = 0;
+ virtual void dispatchDecidePolicyForMIMEType(WebPolicyDecider *, const String& MIMEType, NSURLRequest *) = 0;
+ virtual void dispatchDecidePolicyForNewWindowAction(WebPolicyDecider *, NSDictionary *action, NSURLRequest *, const String& frameName) = 0;
virtual void dispatchDecidePolicyForNavigationAction(WebPolicyDecider *, NSDictionary *action, NSURLRequest *) = 0;
virtual void dispatchUnableToImplementPolicy(NSError *) = 0;
virtual void clearArchivedResources() = 0;
virtual bool canHandleRequest(NSURLRequest *) const = 0;
- virtual bool canShowMIMEType(NSString *MIMEType) const = 0;
- virtual bool representationExistsForURLScheme(NSString *URLScheme) const = 0;
- virtual NSString *generatedMIMETypeForURLScheme(NSString *URLScheme) const = 0;
+ virtual bool canShowMIMEType(const String& MIMEType) const = 0;
+ virtual bool representationExistsForURLScheme(const String& URLScheme) const = 0;
+ virtual String generatedMIMETypeForURLScheme(const String& URLScheme) const = 0;
virtual NSDictionary *elementForEvent(NSEvent *) const = 0;
#import "WebMainResourceLoader.h"
#import "FrameLoader.h"
+#import "PlatformString.h"
#import "WebCoreSystemInterface.h"
#import "WebDataProtocol.h"
#import <Foundation/NSHTTPCookie.h>
return newRequest;
}
-static bool isCaseInsensitiveEqual(NSString *a, NSString *b)
-{
- return [a caseInsensitiveCompare:b] == NSOrderedSame;
-}
-
static bool shouldLoadAsEmptyDocument(NSURL *url)
{
Vector<UInt8, URLBufferLength> buffer(URLBufferLength);
void MainResourceLoader::continueAfterContentPolicy(PolicyAction contentPolicy, NSURLResponse *r)
{
NSURL *URL = [request() URL];
- NSString *MIMEType = [r MIMEType];
+ String MIMEType = [r MIMEType];
switch (contentPolicy) {
case PolicyUse: {
// Prevent remote web archives from loading because they can claim to be from any domain and thus avoid cross-domain security checks (4120255).
bool isRemote = ![URL isFileURL] && ![WebDataProtocol _webIsDataProtocolURL:URL];
- bool isRemoteWebArchive = isRemote && isCaseInsensitiveEqual(@"application/x-webarchive", MIMEType);
+ bool isRemoteWebArchive = isRemote && equalIgnoringCase("application/x-webarchive", MIMEType);
if (!frameLoader()->canShowMIMEType(MIMEType) || isRemoteWebArchive) {
frameLoader()->cannotShowMIMEType(r);
// Check reachedTerminalState since the load may have already been cancelled inside of _handleUnimplementablePolicyWithErrorCode::.
namespace WebCore {
+ class String;
+
class SubresourceLoader : public WebResourceLoader {
public:
static id <WebCoreResourceHandle> create(Frame*, id <WebCoreResourceLoader>,
- NSString *method, NSURL *URL, NSDictionary *customHeaders, NSString *referrer);
+ const String& method, NSURL *URL, NSDictionary *customHeaders, const String& referrer);
static id <WebCoreResourceHandle> create(Frame*, id <WebCoreResourceLoader>,
- NSString *method, NSURL *URL, NSDictionary *customHeaders, NSArray *postData, NSString *referrer);
+ const String& method, NSURL *URL, NSDictionary *customHeaders, NSArray *postData, const String& referrer);
virtual ~SubresourceLoader();
private:
static id <WebCoreResourceHandle> create(Frame*, id <WebCoreResourceLoader>,
- NSMutableURLRequest *, NSDictionary *customHeaders, NSString *referrer);
+ NSMutableURLRequest *, NSDictionary *customHeaders, const String& referrer);
SubresourceLoader(Frame*, id <WebCoreResourceLoader>);
id <WebCoreResourceHandle> handle();
}
id <WebCoreResourceHandle> SubresourceLoader::create(Frame* frame, id <WebCoreResourceLoader> rLoader,
- NSMutableURLRequest *newRequest, NSDictionary *customHeaders, NSString *referrer)
+ NSMutableURLRequest *newRequest, NSDictionary *customHeaders, const String& referrer)
{
FrameLoader* fl = frame->loader();
if (fl->state() == FrameStateProvisional)
}
id <WebCoreResourceHandle> SubresourceLoader::create(Frame* frame, id <WebCoreResourceLoader> rLoader,
- NSString *method, NSURL *URL, NSDictionary *customHeaders, NSString *referrer)
+ const String& method, NSURL *URL, NSDictionary *customHeaders, const String& referrer)
{
NSMutableURLRequest *newRequest = [[NSMutableURLRequest alloc] initWithURL:URL];
[newRequest setHTTPMethod:method];
}
id <WebCoreResourceHandle> SubresourceLoader::create(Frame* frame, id <WebCoreResourceLoader> rLoader,
- NSString *method, NSURL *URL, NSDictionary *customHeaders, NSArray *postData, NSString *referrer)
+ const String& method, NSURL *URL, NSDictionary *customHeaders, NSArray *postData, const String& referrer)
{
NSMutableURLRequest *newRequest = [[NSMutableURLRequest alloc] initWithURL:URL];
// FIXME: Because of <rdar://problem/4803505>, the method has to be set before the body.
+2006-10-26 Geoffrey Garen <ggaren@apple.com>
+
+ Reviewed by Darin, Maciej.
+
+ Removed many uses of NSString * from WebCore.
+
+ Changed a few files to ObjC++ for compatiblity with new WebCore methods
+ taking WebCore::Strings as arguments.
+
+ Added a static_cast to make the c++ compiler happy.
+
2006-10-26 John Sullivan <sullivan@apple.com>
Reviewed by Anders
2006-10-09 Maciej Stachowiak <mjs@apple.com>
->>>>>>> .r16935
Reviewed by Alice.
- moved WebFormState into Loader directory and tweaked to avoid WebKit dependencies
static void addLookupKey(NSString *key, SEL selector, WebElementTargetObject target)
{
- WebElementMethod *elementMethod = malloc(sizeof(WebElementMethod));
+ WebElementMethod *elementMethod = static_cast<WebElementMethod*>(malloc(sizeof(WebElementMethod)));
elementMethod->target = target;
elementMethod->selector = selector;
CFDictionaryAddValue(lookupTable, key, elementMethod);
{
WebBaseNetscapePluginView *view = (WebBaseNetscapePluginView *)thePluginPointer->ndata;
- WebFrameBridge *bridge = [[view webFrame] _bridge];
- BOOL hideReferrer;
- if (![bridge canLoadURL:[theRequest URL] fromReferrer:core([view webFrame])->referrer() hideReferrer:&hideReferrer])
+ bool hideReferrer;
+ if (!core([view webFrame])->loader()->canLoad([theRequest URL], core([view webFrame])->referrer(), hideReferrer))
return nil;
if ([self initWithRequestURL:[theRequest URL]
#import <Foundation/NSURL.h>
#import <Foundation/NSURLRequest.h>
#import <JavaScriptCore/Assertions.h>
+#import <WebCore/FrameLoader.h>
#import <WebCore/FrameLoaderTypes.h>
+#import <WebCore/FrameMac.h>
#import <objc/objc-runtime.h>
using namespace WebCore;
- (BOOL)_isForbiddenFileLoad
{
- BOOL ignore;
+ bool ignore;
WebFrameBridge *bridge = [_controller bridge];
ASSERT(bridge);
- if (![bridge canLoadURL:[_request URL] fromReferrer:[_controller URLPolicyCheckReferrer] hideReferrer:&ignore]) {
+ if (![bridge _frame]->loader()->canLoad([_request URL], [_controller URLPolicyCheckReferrer], ignore)) {
[self _continueWithPolicy:PolicyIgnore];
return YES;
}
#import <Foundation/NSURLRequest.h>
#import <WebCore/FrameLoader.h>
+#import <WebCore/PlatformString.h>
#import <WebCore/WebCoreFrameBridge.h>
#import <WebCore/WebDocumentLoader.h>
#import <WebKit/WebDataSourceInternal.h>
- (WebCoreFrameBridge *)createChildFrameNamed:(NSString *)frameName
withURL:(NSURL *)URL
- referrer:(NSString *)referrer
+ referrer:(const String&)referrer
ownerElement:(WebCoreElement *)ownerElement
allowsScrolling:(BOOL)allowsScrolling
marginWidth:(int)width
marginHeight:(int)height
{
- BOOL hideReferrer;
- if (![self canLoadURL:URL fromReferrer:referrer hideReferrer:&hideReferrer])
+ bool hideReferrer;
+ if (!m_frame->loader()->canLoad(URL, referrer, hideReferrer))
return nil;
ASSERT(_frame);
if (!newBridge)
return nil;
- [_frame _loadURL:URL referrer:(hideReferrer ? nil : referrer) intoChild:[newBridge webFrame]];
+ [_frame _loadURL:URL referrer:(hideReferrer ? String() : referrer) intoChild:[newBridge webFrame]];
return newBridge;
}
DOMElement:(DOMElement *)element
loadManually:(BOOL)loadManually
{
- BOOL hideReferrer;
- if (![self canLoadURL:URL fromReferrer:m_frame->referrer() hideReferrer:&hideReferrer])
+ bool hideReferrer;
+ if (!m_frame->loader()->canLoad(URL, m_frame->referrer(), hideReferrer))
return nil;
ASSERT([attributeNames count] == [attributeValues count]);
@class WebFrame;
+namespace WebCore {
+ class String;
+}
+
class WebFrameLoaderClient : public WebCore::FrameLoaderClient {
public:
WebFrameLoaderClient(WebFrame*);
virtual void dispatchWillClose();
virtual void dispatchDidReceiveIcon(NSImage *);
virtual void dispatchDidStartProvisionalLoad();
- virtual void dispatchDidReceiveTitle(NSString *title);
+ virtual void dispatchDidReceiveTitle(const WebCore::String& title);
virtual void dispatchDidCommitLoad();
virtual void dispatchDidFailProvisionalLoad(NSError *);
virtual void dispatchDidFailLoad(NSError *);
virtual WebCore::Frame* dispatchCreatePage(NSURLRequest *);
virtual void dispatchShow();
- virtual void dispatchDecidePolicyForMIMEType(WebPolicyDecider *, NSString *MIMEType, NSURLRequest *);
- virtual void dispatchDecidePolicyForNewWindowAction(WebPolicyDecider *, NSDictionary *action, NSURLRequest *, NSString *frameName);
+ virtual void dispatchDecidePolicyForMIMEType(WebPolicyDecider *, const WebCore::String& MIMEType, NSURLRequest *);
+ virtual void dispatchDecidePolicyForNewWindowAction(WebPolicyDecider *, NSDictionary *action, NSURLRequest *, const WebCore::String& frameName);
virtual void dispatchDecidePolicyForNavigationAction(WebPolicyDecider *, NSDictionary *action, NSURLRequest *);
virtual void dispatchUnableToImplementPolicy(NSError *);
virtual void clearArchivedResources();
virtual bool canHandleRequest(NSURLRequest *) const;
- virtual bool canShowMIMEType(NSString *MIMEType) const;
- virtual bool representationExistsForURLScheme(NSString *URLScheme) const;
- virtual NSString *generatedMIMETypeForURLScheme(NSString *URLScheme) const;
+ virtual bool canShowMIMEType(const WebCore::String& MIMEType) const;
+ virtual bool representationExistsForURLScheme(const WebCore::String& URLScheme) const;
+ virtual WebCore::String generatedMIMETypeForURLScheme(const WebCore::String& URLScheme) const;
virtual NSDictionary *elementForEvent(NSEvent *) const;
#import "WebFrameInternal.h"
#import <WebCore/FrameMac.h>
+#import <WebCore/PlatformString.h>
#import <WebCore/WebCoreFrameBridge.h>
#import <WebCore/WebDocumentLoader.h>
#import <WebKit/DOMElement.h>
[m_webFrame.get() _dispatchDidStartProvisionalLoadForFrame];
}
-void WebFrameLoaderClient::dispatchDidReceiveTitle(NSString *title)
+void WebFrameLoaderClient::dispatchDidReceiveTitle(const String& title)
{
[m_webFrame.get() _dispatchDidReceiveTitle:title];
}
[m_webFrame.get() _dispatchShow];
}
-void WebFrameLoaderClient::dispatchDecidePolicyForMIMEType(WebPolicyDecider *decider, NSString *MIMEType,
- NSURLRequest *request)
+void WebFrameLoaderClient::dispatchDecidePolicyForMIMEType(WebPolicyDecider *decider, const String& MIMEType, NSURLRequest *request)
{
[m_webFrame.get() _dispatchDecidePolicyForMIMEType:MIMEType request:request decider:decider];
}
-void WebFrameLoaderClient::dispatchDecidePolicyForNewWindowAction(WebPolicyDecider *decider, NSDictionary *action,
- NSURLRequest *request, NSString *frameName)
+void WebFrameLoaderClient::dispatchDecidePolicyForNewWindowAction(WebPolicyDecider *decider, NSDictionary *action, NSURLRequest *request, const String& frameName)
{
[m_webFrame.get() _dispatchDecidePolicyForNewWindowAction:action request:request newFrameName:frameName
decider:decider];
return [m_webFrame.get() _canHandleRequest:request];
}
-bool WebFrameLoaderClient::canShowMIMEType(NSString *MIMEType) const
+bool WebFrameLoaderClient::canShowMIMEType(const String& MIMEType) const
{
return [m_webFrame.get() _canShowMIMEType:MIMEType];
}
-bool WebFrameLoaderClient::representationExistsForURLScheme(NSString *URLScheme) const
+bool WebFrameLoaderClient::representationExistsForURLScheme(const String& URLScheme) const
{
return [m_webFrame.get() _representationExistsForURLScheme:URLScheme];
}
-NSString *WebFrameLoaderClient::generatedMIMETypeForURLScheme(NSString *URLScheme) const
+String WebFrameLoaderClient::generatedMIMETypeForURLScheme(const String& URLScheme) const
{
return [m_webFrame.get() _generatedMIMETypeForURLScheme:URLScheme];
}
3944607D020F50ED0ECA1767 /* WebBackForwardList.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebBackForwardList.h; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; };
3944607E020F50ED0ECA1767 /* WebBackForwardList.m */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.objc; path = WebBackForwardList.m; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; };
3944607F020F50ED0ECA1767 /* WebHistoryItem.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebHistoryItem.h; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; };
- 39446080020F50ED0ECA1767 /* WebHistoryItem.m */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.objc; path = WebHistoryItem.m; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; };
+ 39446080020F50ED0ECA1767 /* WebHistoryItem.m */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; fileEncoding = 30; indentWidth = 4; path = WebHistoryItem.m; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; };
4BF99F8E0AE050BC00815C2B /* WebEditorClient.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = WebEditorClient.h; sourceTree = "<group>"; };
4BF99F8F0AE050BC00815C2B /* WebEditorClient.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = WebEditorClient.mm; sourceTree = "<group>"; };
513D422E034CF55A00CA2ACD /* WebResourceLoadDelegate.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebResourceLoadDelegate.h; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; };
83E4AF4C036659440000E506 /* WebPluginPackage.m */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.objc; path = WebPluginPackage.m; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; };
83E679780726D7CF006C7A36 /* WebPluginViewFactoryPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebPluginViewFactoryPrivate.h; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; };
84311A1205EAAAF00088EDA4 /* WebResource.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebResource.h; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; };
- 84311A1305EAAAF00088EDA4 /* WebResource.m */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.objc; path = WebResource.m; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; };
+ 84311A1305EAAAF00088EDA4 /* WebResource.m */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; fileEncoding = 4; indentWidth = 4; path = WebResource.m; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; };
84311AF105EAB12B0088EDA4 /* WebResourcePrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebResourcePrivate.h; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; };
846171F90624AE5B0071A4A3 /* WebDOMOperations.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebDOMOperations.h; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; };
- 846171FA0624AE5B0071A4A3 /* WebDOMOperations.m */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.objc; path = WebDOMOperations.m; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; };
+ 846171FA0624AE5B0071A4A3 /* WebDOMOperations.m */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; fileEncoding = 4; indentWidth = 4; path = WebDOMOperations.m; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; };
8467275C0367158500CA2ACA /* WebPluginController.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebPluginController.h; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; };
8467275D0367158500CA2ACA /* WebPluginController.mm */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebPluginController.mm; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; };
84723BE3056D719E0044BFEA /* WebKeyGenerator.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebKeyGenerator.h; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; };
BEE52D4B0473032500CA289C /* WebKitSystemBits.m */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.objc; path = WebKitSystemBits.m; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; };
DD7CDEE60A23BA9E00069928 /* WebTypesInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebTypesInternal.h; sourceTree = "<group>"; };
DD89681E09AA87240097E7F0 /* WebElementDictionary.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebElementDictionary.h; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; };
- DD89681F09AA87240097E7F0 /* WebElementDictionary.m */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.objc; path = WebElementDictionary.m; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; };
+ DD89681F09AA87240097E7F0 /* WebElementDictionary.m */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; fileEncoding = 4; indentWidth = 4; path = WebElementDictionary.m; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; };
ED21B9810528F7AA003299AC /* WebDocumentInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebDocumentInternal.h; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; };
ED2B2474033A2DA800C1A526 /* WebNSPasteboardExtras.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebNSPasteboardExtras.h; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; };
- ED2B2475033A2DA800C1A526 /* WebNSPasteboardExtras.m */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.objc; path = WebNSPasteboardExtras.m; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; };
+ ED2B2475033A2DA800C1A526 /* WebNSPasteboardExtras.m */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; fileEncoding = 4; indentWidth = 4; path = WebNSPasteboardExtras.m; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; };
ED6BE2E5088C32B50044DEDC /* WebNSAttributedStringExtras.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebNSAttributedStringExtras.h; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; };
ED6BE2E6088C32B50044DEDC /* WebNSAttributedStringExtras.m */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.objc; path = WebNSAttributedStringExtras.m; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; };
ED7F6D8A0980683500C235ED /* WebNSDataExtrasPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebNSDataExtrasPrivate.h; sourceTree = "<group>"; };
F59668C802AD2923018635CA /* WebStringTruncator.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebStringTruncator.h; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; };
F59668C902AD2923018635CA /* WebStringTruncator.m */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.objc; path = WebStringTruncator.m; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; };
F59EAE3E0253C7EE018635CA /* WebCoreStatistics.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebCoreStatistics.h; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; };
- F59EAE410253C8DE018635CA /* WebCoreStatistics.m */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.objc; path = WebCoreStatistics.m; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; };
+ F59EAE410253C8DE018635CA /* WebCoreStatistics.m */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; fileEncoding = 4; indentWidth = 4; path = WebCoreStatistics.m; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; };
F5A55DC702BAA2E8018635CC /* WebHTMLRepresentationPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebHTMLRepresentationPrivate.h; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; };
F5A672B90263866E01000102 /* WebBaseNetscapePluginStream.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebBaseNetscapePluginStream.h; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; };
F5A672BA0263866E01000102 /* WebBaseNetscapePluginStream.m */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.objc; path = WebBaseNetscapePluginStream.m; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; };
F5F717210288493C018635CA /* WebPluginDatabase.m */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.objc; path = WebPluginDatabase.m; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; };
F5F717230288493C018635CA /* npapi.m */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.objc; path = npapi.m; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; };
F5F7174C02885C5B018635CA /* WebViewFactory.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebViewFactory.h; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; };
- F5F7174D02885C5B018635CA /* WebViewFactory.m */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.objc; path = WebViewFactory.m; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; };
+ F5F7174D02885C5B018635CA /* WebViewFactory.m */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; fileEncoding = 4; indentWidth = 4; path = WebViewFactory.m; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; };
F5F732D202FF4D4F01A80180 /* WebKit.exp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.exports; path = WebKit.exp; sourceTree = SOURCE_ROOT; };
F5F81C3902B67C26018635CA /* WebRenderNode.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; name = WebRenderNode.h; path = ../WebView/WebRenderNode.h; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; };
- F5F81C3A02B67C26018635CA /* WebRenderNode.m */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.objc; name = WebRenderNode.m; path = ../WebView/WebRenderNode.m; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; };
+ F5F81C3A02B67C26018635CA /* WebRenderNode.m */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; fileEncoding = 4; indentWidth = 4; name = WebRenderNode.m; path = ../WebView/WebRenderNode.m; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; };
F738C9E903FAD3DF0321FBE0 /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = JavaScriptCore.framework; sourceTree = BUILT_PRODUCTS_DIR; };
F738C9EA03FAD3DF0321FBE0 /* WebCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = WebCore.framework; sourceTree = BUILT_PRODUCTS_DIR; };
F79B974804019934036909D2 /* CarbonUtils.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = CarbonUtils.h; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; };
if (archive)
[childFrame loadArchive:archive];
else
- [childFrame _frameLoader]->load(URL, referrer, childLoadType, nil, nil, nil, nil);
+ [childFrame _frameLoader]->load(URL, referrer, childLoadType, String(), nil, nil, nil);
}
- (void)_saveScrollPositionAndViewStateToItem:(WebHistoryItem *)item