--- a/Plugins/WebKit Message View/AIWebKitMessageViewController.m Wed May 15 12:14:06 2013 -0400
+++ b/Plugins/WebKit Message View/AIWebKitMessageViewController.m Wed May 15 12:30:12 2013 -0400
@@ -1363,7 +1363,7 @@
webKitUserIcon = userIcon;
- oldWebKitUserIconPath = [objectIconPathDict objectForKey:iconSourceObject.internalObjectID];
+ oldWebKitUserIconPath = [objectIconPathDict objectForKey:iconSourceObject.internalObjectID]; webKitUserIconPath = [iconSourceObject valueForProperty:KEY_WEBKIT_USER_ICON];
if (!webKitUserIconPath) {
/* If the image doesn't know a path to use, write it out and set it.
@@ -1398,28 +1398,13 @@
if (!webKitUserIconPath) webKitUserIconPath = @"";
- /* We previously updated existing images with the below code. There's a bug somewhere, and it results
- * in images being replaced with unknown-image question marks sometimes... though new images work fine.
+ //Update the icon in the chat if ([webView mainFrameDocument]) {
//Update existing images if the webView has loaded and has a main frame
if (oldWebKitUserIconPath &&
![oldWebKitUserIconPath isEqualToString:webKitUserIconPath]) {
- DOMNodeList *images = [[webView mainFrameDocument] getElementsByTagName:@"img"];
- NSUInteger imagesCount = [images length];
- webKitUserIconPath = [[webKitUserIconPath copy] autorelease];
- for (unsigned i = 0; i < imagesCount; i++) {
- DOMHTMLImageElement *img = (DOMHTMLImageElement *)[images item:i];
- NSString *currentSrc = [img getAttribute:@"src"];
- if (currentSrc && ([currentSrc rangeOfString:oldWebKitUserIconPath].location != NSNotFound)) {
- [img setSrc:webKitUserIconPath];
+ [webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"document.body.innerHTML=document.body.innerHTML.replace(new RegExp('%@', 'g'), '%@');", oldWebKitUserIconPath, webKitUserIconPath]]; [objectIconPathDict setObject:webKitUserIconPath
@@ -1427,16 +1412,12 @@
/* Otherwise, try to again in a moment. We've already done the heavy lifting
* such as writing out the icon, so it's cheap to recurse.
[self performSelector:@selector(updateUserIconForObject:)
- [objectIconPathDict setObject:webKitUserIconPath
- forKey:iconSourceObject.internalObjectID];
- (void)updateServiceIcon