Chromium Code Reviews| Index: webkit/appcache/appcache_host.cc |
| =================================================================== |
| --- webkit/appcache/appcache_host.cc (revision 75330) |
| +++ webkit/appcache/appcache_host.cc (working copy) |
| @@ -34,6 +34,7 @@ |
| AppCacheHost::AppCacheHost(int host_id, AppCacheFrontend* frontend, |
| AppCacheService* service) |
| : host_id_(host_id), parent_host_id_(kNoHostId), parent_process_id_(0), |
| + was_select_cache_called_(false), |
| pending_main_resource_cache_id_(kNoCacheId), |
| pending_selected_cache_id_(kNoCacheId), |
| frontend_(frontend), service_(service), |
| @@ -67,29 +68,17 @@ |
| !pending_swap_cache_callback_ && |
| !pending_get_status_callback_); |
|
ericu
2011/02/18 01:27:34
Given that this condition is now prevented in the
michaeln
2011/02/18 01:41:46
Right, I'm being overly paranoid after seeing a CR
|
| + // This should not be called more than once per instance, but if a renderer |
| + // some how does get confused and calls us twice, we ignore all but the |
| + // first call. |
| + if (was_select_cache_called_) |
| + return; |
| + was_select_cache_called_ = true; |
| + |
| if (main_resource_blocked_) |
| frontend_->OnContentBlocked(host_id_, |
| blocked_manifest_url_); |
| - // First we handle an unusual case of SelectCache being called a second |
| - // time. Generally this shouldn't happen, but with bad content I think |
| - // this can occur... <html manifest=foo> <html manifest=bar></html></html> |
| - // We handle this by killing whatever loading we have initiated, and by |
| - // unassociating any hosts we currently have associated... and starting |
| - // anew with the inputs to this SelectCache call. |
| - // TODO(michaeln): at some point determine what behavior the algorithms |
| - // described in the HTML5 draft produce and have our impl produce those |
| - // results (or suggest changes to the algorihtms described in the spec |
| - // if the resulting behavior is just too insane). |
| - if (is_selection_pending()) { |
| - service_->storage()->CancelDelegateCallbacks(this); |
| - pending_selected_manifest_url_ = GURL(); |
| - pending_selected_cache_id_ = kNoCacheId; |
| - } else if (associated_cache()) { |
| - AssociateCache(NULL); |
| - } |
| - new_master_entry_url_ = GURL(); |
| - |
| // 6.9.6 The application cache selection algorithm. |
| // The algorithm is started here and continues in FinishCacheSelection, |
| // after cache or group loading is complete. |