Changeset 40380
- Timestamp:
- 01/29/09 15:48:04 (19 months ago)
- Location:
- trunk
- Files:
-
- 10 modified
-
WebCore/ChangeLog (modified) (1 diff)
-
WebCore/WebCore.base.exp (modified) (2 diffs)
-
WebCore/history/HistoryItem.cpp (modified) (2 diffs)
-
WebCore/history/HistoryItem.h (modified) (2 diffs)
-
WebKit/mac/ChangeLog (modified) (1 diff)
-
WebKit/mac/History/WebHistoryItem.mm (modified) (4 diffs)
-
WebKit/mac/Misc/WebNSDictionaryExtras.h (modified) (1 diff)
-
WebKit/mac/Misc/WebNSDictionaryExtras.m (modified) (1 diff)
-
WebKit/win/ChangeLog (modified) (1 diff)
-
WebKit/win/WebHistoryItem.cpp (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebCore/ChangeLog
r40379 r40380 1 2009-01-29 Sam Weinig <sam@webkit.org> 2 3 Reviewed by Mark Rowe. 4 5 First step in tracking the urls a HistoryItem was redirected through. 6 7 * WebCore.base.exp: 8 * history/HistoryItem.cpp: 9 (WebCore::HistoryItem::HistoryItem): 10 (WebCore::HistoryItem::addRedirectURL): 11 (WebCore::HistoryItem::redirectURLs): 12 (WebCore::HistoryItem::setRedirectURLs): 13 * history/HistoryItem.h: 14 1 15 2009-01-29 Dirk Schulze <krit@webkit.org> 2 16 -
trunk/WebCore/WebCore.base.exp
r40353 r40380 181 181 __ZN7WebCore11HistoryItem14setScrollPointERKNS_8IntPointE 182 182 __ZN7WebCore11HistoryItem15setIsTargetItemEb 183 __ZN7WebCore11HistoryItem15setRedirectURLsESt8auto_ptrIN3WTF6VectorINS_6StringELm0EEEE 183 184 __ZN7WebCore11HistoryItem17setAlternateTitleERKNS_6StringE 184 185 __ZN7WebCore11HistoryItem18setLastVisitedTimeEd … … 717 718 __ZNK7WebCore11HistoryItem11scrollPointEv 718 719 __ZNK7WebCore11HistoryItem12isTargetItemEv 720 __ZNK7WebCore11HistoryItem12redirectURLsEv 719 721 __ZNK7WebCore11HistoryItem14alternateTitleEv 720 722 __ZNK7WebCore11HistoryItem15lastVisitedTimeEv -
trunk/WebCore/history/HistoryItem.cpp
r40286 r40380 129 129 for (unsigned i = 0; i < size; ++i) 130 130 m_subItems.append(item.m_subItems[i]->copy()); 131 132 if (item.m_redirectURLs) 133 m_redirectURLs.set(new Vector<String>(*item.m_redirectURLs)); 131 134 } 132 135 … … 401 404 } 402 405 406 void HistoryItem::addRedirectURL(const String& url) 407 { 408 if (!m_redirectURLs) 409 m_redirectURLs.set(new Vector<String>); 410 411 m_redirectURLs->append(url); 412 } 413 414 Vector<String>* HistoryItem::redirectURLs() const 415 { 416 return m_redirectURLs.get(); 417 } 418 419 void HistoryItem::setRedirectURLs(std::auto_ptr<Vector<String> > redirectURLs) 420 { 421 m_redirectURLs.adopt(redirectURLs); 422 } 423 403 424 #ifndef NDEBUG 404 425 -
trunk/WebCore/history/HistoryItem.h
r40132 r40380 139 139 void setLastVisitedTime(double); 140 140 void visited(const String& title, double time); 141 141 142 void addRedirectURL(const String&); 143 Vector<String>* redirectURLs() const; 144 void setRedirectURLs(std::auto_ptr<Vector<String> >); 145 142 146 bool isCurrentDocument(Document*) const; 143 147 … … 190 194 bool m_isTargetItem; 191 195 int m_visitCount; 192 196 197 OwnPtr<Vector<String> > m_redirectURLs; 198 193 199 // info used to repost form data 194 200 RefPtr<FormData> m_formData; -
trunk/WebKit/mac/ChangeLog
r40377 r40380 1 2009-01-29 Sam Weinig <sam@webkit.org> 2 3 Reviewed by Mark Rowe. 4 5 First step in tracking the urls a HistoryItem was redirected through. 6 7 * History/WebHistoryItem.mm: 8 (-[WebHistoryItem initFromDictionaryRepresentation:]): 9 (-[WebHistoryItem dictionaryRepresentation]): 10 * Misc/WebNSDictionaryExtras.h: 11 * Misc/WebNSDictionaryExtras.m: 12 (-[NSDictionary _webkit_arrayForKey:]): Add helper. 13 1 14 2009-01-29 Anders Carlsson <andersca@apple.com> 2 15 -
trunk/WebKit/mac/History/WebHistoryItem.mm
r40363 r40380 63 63 static NSString *lastVisitWasFailureKey = @"lastVisitWasFailure"; 64 64 static NSString *lastVisitWasHTTPNonGetKey = @"lastVisitWasHTTPNonGet"; 65 static NSString *redirectURLsKey = @"redirectURLs"; 65 66 66 67 // Notification strings. … … 365 366 core(_private)->setLastVisitWasHTTPNonGet(lastVisitWasHTTPNonGet); 366 367 368 if (NSArray *redirectURLs = [dict _webkit_arrayForKey:redirectURLsKey]) { 369 NSUInteger size = [redirectURLs count]; 370 std::auto_ptr<Vector<String> > redirectURLsVector(new Vector<String>(size)); 371 for (NSUInteger i = 0; i < size; ++i) 372 (*redirectURLsVector)[i] = String([redirectURLs objectAtIndex:i]); 373 core(_private)->setRedirectURLs(redirectURLsVector); 374 } 375 367 376 NSArray *childDicts = [dict objectForKey:childrenKey]; 368 377 if (childDicts) { … … 409 418 HistoryItem* coreItem = core(_private); 410 419 411 if (!coreItem->urlString().isEmpty()) {420 if (!coreItem->urlString().isEmpty()) 412 421 [dict setObject:(NSString*)coreItem->urlString() forKey:@""]; 413 } 414 if (!coreItem->title().isEmpty()) { 422 if (!coreItem->title().isEmpty()) 415 423 [dict setObject:(NSString*)coreItem->title() forKey:titleKey]; 416 } 417 if (!coreItem->alternateTitle().isEmpty()) { 424 if (!coreItem->alternateTitle().isEmpty()) 418 425 [dict setObject:(NSString*)coreItem->alternateTitle() forKey:displayTitleKey]; 419 }420 426 if (coreItem->lastVisitedTime() != 0.0) { 421 // store as a string to maintain backward compatibility (see 3245793)427 // Store as a string to maintain backward compatibility. (See 3245793) 422 428 [dict setObject:[NSString stringWithFormat:@"%.1lf", coreItem->lastVisitedTime()] 423 429 forKey:lastVisitedTimeIntervalKey]; … … 427 433 if (coreItem->lastVisitWasFailure()) 428 434 [dict setObject:[NSNumber numberWithBool:YES] forKey:lastVisitWasFailureKey]; 429 430 435 if (coreItem->lastVisitWasHTTPNonGet()) { 431 436 ASSERT(coreItem->urlString().startsWith("http:", false) || coreItem->urlString().startsWith("https:", false)); 432 437 [dict setObject:[NSNumber numberWithBool:YES] forKey:lastVisitWasHTTPNonGetKey]; 438 } 439 if (Vector<String>* redirectURLs = coreItem->redirectURLs()) { 440 size_t size = redirectURLs->size(); 441 NSMutableArray *result = [[NSMutableArray alloc] initWithCapacity:size]; 442 for (size_t i = 0; i < size; ++i) 443 [result addObject:(NSString*)redirectURLs->at(i)]; 444 [dict setObject:result forKey:redirectURLsKey]; 445 [result release]; 433 446 } 434 447 -
trunk/WebKit/mac/Misc/WebNSDictionaryExtras.h
r38449 r40380 33 33 - (int)_webkit_intForKey:(id)key; 34 34 - (NSString *)_webkit_stringForKey:(id)key; // Returns nil if the value is not an NSString. 35 - (NSArray *)_webkit_arrayForKey:(id)key; // Returns nil if the value is not an NSArray. 35 36 36 37 // Searches for the full MIME type, then the prefix (e.g., "text/" for "text/html") -
trunk/WebKit/mac/Misc/WebNSDictionaryExtras.m
r38449 r40380 48 48 id object = [self objectForKey:key]; 49 49 return [object isKindOfClass:[NSString class]] ? object : nil; 50 } 51 52 -(NSArray *)_webkit_arrayForKey:(id)key 53 { 54 id object = [self objectForKey:key]; 55 return [object isKindOfClass:[NSArray class]] ? object : nil; 50 56 } 51 57 -
trunk/WebKit/win/ChangeLog
r40366 r40380 1 2009-01-29 Sam Weinig <sam@webkit.org> 2 3 Reviewed by Mark Rowe. 4 5 First step in tracking the urls a HistoryItem was redirected through. 6 7 * WebHistoryItem.cpp: 8 (WebHistoryItem::initFromDictionaryRepresentation): 9 (WebHistoryItem::dictionaryRepresentation): 10 1 11 2009-01-29 Adam Roben <aroben@apple.com> 2 12 -
trunk/WebKit/win/WebHistoryItem.cpp
r40132 r40380 98 98 static CFStringRef lastVisitWasFailureKey = CFSTR("lastVisitWasFailure"); 99 99 static CFStringRef lastVisitWasHTTPNonGetKey = CFSTR("lastVisitWasHTTPNonGet"); 100 static CFStringRef redirectURLsKey = CFSTR("redirectURLs"); 100 101 101 102 HRESULT STDMETHODCALLTYPE WebHistoryItem::initFromDictionaryRepresentation(void* dictionary) … … 132 133 return E_FAIL; 133 134 bool lastVisitWasHTTPNonGet = lastVisitWasHTTPNonGetRef && CFBooleanGetValue(lastVisitWasHTTPNonGetRef); 135 136 std::auto_ptr<Vector<String> > redirectURLsVector; 137 if (CFArrayRef redirectURLsRef = static_cast<CFArrayRef>(CFDictionaryGetValue(dictionaryRef, redirectURLsKey))) { 138 CFIndex size = CFArrayGetCount(redirectURLsRef); 139 redirectURLs = std::auto_ptr<Vector<String> >(new Vector<String>(size)); 140 for (CFIndex i = 0; i < size; ++i) 141 (*redirectURLsVector)[i] = String(static_cast<CFStringRef>(CFArrayGetValueAtIndex(redirectURLsRef, i))); 142 } 134 143 135 144 historyItemWrappers().remove(m_historyItem.get()); … … 143 152 if (lastVisitWasHTTPNonGet && (protocolIs(m_historyItem->urlString(), "http") || protocolIs(m_historyItem->urlString(), "https"))) 144 153 m_historyItem->setLastVisitWasHTTPNonGet(true); 154 155 if (redirectURLsVector) 156 core(_private)->setRedirectURLs(redirectURLsVector); 145 157 146 158 return S_OK; … … 157 169 158 170 int keyCount = 0; 159 CFTypeRef keys[ 6];160 CFTypeRef values[ 6];171 CFTypeRef keys[7]; 172 CFTypeRef values[7]; 161 173 162 174 if (!m_historyItem->urlString().isEmpty()) { … … 186 198 keys[keyCount] = lastVisitWasHTTPNonGetKey; 187 199 values[keyCount++] = CFRetain(kCFBooleanTrue); 200 } 201 202 if (Vector<String>* redirectURLs = m_historyItem->redirectURLs()) { 203 size_t size = redirectURLs->size(); 204 205 CFStringRef* items = new CFStringRef[size]; 206 for (size_t i = 0; i < size; ++i) 207 items[i] = redirectURLs->at(i).createCFString(); 208 CFArrayRef result = CFArrayCreate(0, (const void**)items, size, &kCFTypeArrayCallBacks); 209 for (size_t i = 0; i < size; ++i) 210 CFRelease(items[i]); 211 delete[] items; 212 213 keys[keyCount] = redirectURLsKey; 214 values[keyCount++] = result; 188 215 } 189 216