Ensure quirks mode matches when retrieving contents from cache

svn path=/trunk/netsurf/; revision=10360
This commit is contained in:
John Mark Bell 2010-04-11 16:34:23 +00:00
parent ad89d5b263
commit 7577e2a1e6
3 changed files with 22 additions and 1 deletions

View File

@ -972,6 +972,22 @@ uint32_t content_count_users(struct content *c)
return counter - 1; /* Subtract 1 for the sentinel */
}
/**
* Determine if quirks mode matches
*
* \param c Content to consider
* \param quirks Quirks mode to match
* \return True if quirks match, false otherwise
*/
bool content_matches_quirks(struct content *c, bool quirks)
{
/* If the content isn't CSS, we don't care about quirks */
if (c->type != CONTENT_CSS)
return true;
return c->quirks == quirks;
}
/**
* Send a message to all users.
*/

View File

@ -103,6 +103,7 @@ void content_remove_user(struct content *c,
void *pw);
uint32_t content_count_users(struct content *c);
bool content_matches_quirks(struct content *c, bool quirks);
const struct llcache_handle *content_get_llcache_handle(struct content *c);

View File

@ -427,7 +427,6 @@ nserror hlcache_find_content(hlcache_retrieval_ctx *ctx)
hlcache_handle entry_handle = { entry, NULL, NULL };
const llcache_handle *entry_llcache;
/** \todo Need to ensure that quirks mode matches */
/** \todo Need to ensure that content is shareable */
/** \todo Need to ensure that content can be reused */
if (entry->content == NULL)
@ -437,6 +436,11 @@ nserror hlcache_find_content(hlcache_retrieval_ctx *ctx)
if (content_get_status(&entry_handle) == CONTENT_STATUS_ERROR)
continue;
/* Ensure that quirks mode is acceptable */
if (content_matches_quirks(entry->content,
ctx->child.quirks) == false)
continue;
/* Ensure that content uses same low-level object as
* low-level handle */
entry_llcache = content_get_llcache_handle(entry->content);