diff options
author | tommi@chromium.org <tommi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-03-25 22:03:04 +0000 |
---|---|---|
committer | tommi@chromium.org <tommi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-03-25 22:03:04 +0000 |
commit | f7187c4d1a97bfbc33a86b04ebd15ae3793e807e (patch) | |
tree | 75d0c0fe03ff6eba147856eaeac99aa85721500f /chrome_frame | |
parent | e317c9a117b6f365cd6e596dc7e4d1d1365f53a0 (diff) | |
download | chromium_src-f7187c4d1a97bfbc33a86b04ebd15ae3793e807e.zip chromium_src-f7187c4d1a97bfbc33a86b04ebd15ae3793e807e.tar.gz chromium_src-f7187c4d1a97bfbc33a86b04ebd15ae3793e807e.tar.bz2 |
Not freeing the cached request data when we get OnHttpEquiv(done==TRUE) and the browser is tagged for CF navigation.
I found that if I load a CF page, then go to the address bar and press enter, we will actually get both OnHttpEquiv(done==false) and then followed by OnHttpEquiv(done==TRUE) even though we kicked off a new navigation in between. When this happened we would clear the cache in OnHttpEquiv(done==true) and subsequently we'd have to go to the network to fetch the content once CF is instantiated.
TEST=See description.
BUG=none
Review URL: http://codereview.chromium.org/1330001
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@42675 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome_frame')
-rw-r--r-- | chrome_frame/bho.cc | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/chrome_frame/bho.cc b/chrome_frame/bho.cc index 9700b91..f685166 100644 --- a/chrome_frame/bho.cc +++ b/chrome_frame/bho.cc @@ -252,10 +252,15 @@ HRESULT Bho::OnHttpEquiv(IBrowserService_OnHttpEquiv_Fn original_httpequiv, } } } else if (done) { - DLOG(INFO) << "Releasing cached data."; - NavigationManager* mgr = NavigationManager::GetThreadInstance(); - if (mgr) - mgr->ReleaseRequestData(); + if (!CheckForCFNavigation(browser, false)) { + DLOG(INFO) << "Releasing cached data."; + NavigationManager* mgr = NavigationManager::GetThreadInstance(); + if (mgr) + mgr->ReleaseRequestData(); + } else { + DLOG(INFO) << __FUNCTION__ + << " not freeing request data - browser tagged"; + } } return original_httpequiv(browser, shell_view, done, in_arg, out_arg); |