summaryrefslogtreecommitdiffstats
path: root/chrome_frame/bho.cc
Commit message (Collapse)AuthorAgeFilesLines
* Do not attempt to parse NULL headers.tommi@chromium.org2010-02-281-0/+2
| | | | | | | | | | TBR=amit TEST=fixes one of the top crashes in the lastest release. BUG=36985 Review URL: http://codereview.chromium.org/661256 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@40234 0039d316-1c4b-4281-b951-d872f2087c98
* Fix for referrer flakyness. There were two problems:tommi@chromium.org2010-02-181-24/+49
| | | | | | | | | | | | | | | Grabbing the referrer header when the request is made and not in BeforeNavigate2. The request headers aren't always available in BeforeNavigate2. Mshtml provides these headers in IHttpNegotiate::BeginningTransaction, which is where we now grab them. There was a race in chrome_frame_automation.cc where we use std::string to store the referrer url and then access that string from different threads. This was causing the referrer URL to be missing at some times and at other times be sent over to chrome as bad string (e.g. containing embedded nulls) and subsequently be deemed an invalid URL and dropped. TEST=Fixes referrer header flakyness. BUG=34812 Review URL: http://codereview.chromium.org/646013 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@39383 0039d316-1c4b-4281-b951-d872f2087c98
* Enable onhttpequiv again. The difference this time around is that wetommi@chromium.org2010-02-051-104/+77
| | | | | | | | | | | | | perform the switch in onhttpequiv when done==false. Also, we don't rely on having access to the already existing moniker but instead create our own and DCHECK that it is IsRunning() (see comments). TEST=The double loading effect we were seeing before should be gone. BUG=33332 Review URL: http://codereview.chromium.org/576017 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@38232 0039d316-1c4b-4281-b951-d872f2087c98
* Enable optinurls regardless of PatchHelper::state().tommi@chromium.org2010-02-021-22/+26
| | | | | | | | | | | Also refactored the OptinUrls code into a separate function. TEST=The OptinUrls feature should work. BUG=none Review URL: http://codereview.chromium.org/561002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@37796 0039d316-1c4b-4281-b951-d872f2087c98
* Disabling onhttpequiv again due to page reload issues.tommi@chromium.org2010-01-301-1/+1
| | | | | | | | | TEST=Make sure unit tests still pass. BUG=33332 Review URL: http://codereview.chromium.org/555178 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@37584 0039d316-1c4b-4281-b951-d872f2087c98
* Avoid a DCHECK. Check if the interface is already patched before patching.tommi@chromium.org2010-01-251-2/+4
| | | | | | | | | | TEST=This avoids a DCHECK that could happen when viewing the source of an html page. BUG=none TBR=robertshield Review URL: http://codereview.chromium.org/553073 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@37044 0039d316-1c4b-4281-b951-d872f2087c98
* Implement OptInUrls using the same mechanism we use in the onhttpequiv ↵tommi@chromium.org2010-01-221-18/+8
| | | | | | | | | | | | | notification. A noteworthy change here is that OptInUrls doesn't rely on cf: anymore. TEST=The OptInUrls registry key should start working properly again. BUG=32660 Review URL: http://codereview.chromium.org/549129 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@36874 0039d316-1c4b-4281-b951-d872f2087c98
* If we navigate to a URL which has an anchor in IE, which eventually ends up ↵ananta@chromium.org2010-01-221-4/+19
| | | | | | | | | | | | | | | | | | | | | in ChromeFrame, the actual URL queried from the moniker passed in to our implementation of IPersistStream::Load does not have the anchor. It looks like there are some private interfaces exposed by MSHTML and invoked by IEFrame to pass this information over. Our fix is to save away the url received in our Bho BeforeNavigate2 notification and use this URL if available before querying the moniker for the URL. This needs to be done in IPersistStream::Load and in the OnHttpEquiv patch when we initiate a navigation to the actual URL using the moniker. Fixes bug http://code.google.com/p/chromium/issues/detail?id=27270 Bug=27270 Test=Covered by unit test. Review URL: http://codereview.chromium.org/542096 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@36814 0039d316-1c4b-4281-b951-d872f2087c98
* Fix for back/forward issue with httpequiv patch.tommi@chromium.org2010-01-201-0/+28
| | | | | | | | | | | | After reissuing a cf navigation we now remove the previous entry from the travellog to preserve the correct navigation history. Also updating the BackForward unit tests to expect two pairs of BeforeNavigate/NavigateComplete notification when we transition from IE to CF. TEST=Run *BackForward* unit tests BUG=32550 Review URL: http://codereview.chromium.org/549092 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@36594 0039d316-1c4b-4281-b951-d872f2087c98
* Enabling the onhttpequiv detection and temporarily disabling a few tests ↵tommi@chromium.org2010-01-191-1/+1
| | | | | | | | | | | that will fail for a day or two while we adapt. TEST=Run all unit tests. BUG=none Review URL: http://codereview.chromium.org/552038 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@36507 0039d316-1c4b-4281-b951-d872f2087c98
* Updates for onhttpequiv. Preserving the referrer header, zapping the ↵tommi@chromium.org2010-01-161-6/+80
| | | | | | | | | | | | | currently loading document to prevent small documents from executing code. I'm not enabling httpequiv just yet as there are a couple of things I'm working on related to tests that will break once I make the switch. TEST=There should be no change since the code isn't still active but run all tests just to be safe. BUG=none Review URL: http://codereview.chromium.org/545096 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@36436 0039d316-1c4b-4281-b951-d872f2087c98
* Flick the switch back to PATCH_PROTOCOL while sorting out a few failing unit ↵tommi@chromium.org2010-01-121-1/+1
| | | | | | | | | tests on the builder. TBR=robertshield git-svn-id: svn://svn.chromium.org/chrome/trunk/src@36010 0039d316-1c4b-4281-b951-d872f2087c98
* Querying for one more interface to handle IE8 on XP case. This is what we ↵tommi@chromium.org2010-01-121-1/+1
| | | | | | | | | | | | were hitting on the builder. R=ananta BUG=none TEST=Run all unit tests. This is a second attempt to switch to onhttpequiv. Review URL: http://codereview.chromium.org/543017 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@36009 0039d316-1c4b-4281-b951-d872f2087c98
* Reverting back to patching the protocol handlers to get the builder green again.ananta@chromium.org2010-01-071-1/+1
| | | | | | | | TBR=tommi Review URL: http://codereview.chromium.org/527020 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@35724 0039d316-1c4b-4281-b951-d872f2087c98
* Enable the HTTP Equiv patch by default and disable the InternetProtocol patches.tommi@chromium.org2010-01-071-1/+1
| | | | | | | | | TEST=Run all unit tests. BUG=none Review URL: http://codereview.chromium.org/519070 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@35705 0039d316-1c4b-4281-b951-d872f2087c98
* Use the OnHttpEquiv notification to switch to CF when the http-equiv meta ↵tommi@chromium.org2009-12-111-79/+46
| | | | | | | | | | | | | | | | tag is detected. This implementation is still behind the registry switch (set PatchProtocols to 0 in the registry). I will switch over to it wholesale in a separate patch. We use the same mechanism for re-initiating the navigation we use to transfer downloads over to the host, so I moved the common code to utils.cc and added NavigateBrowserToMoniker. When we see a browser instance attempting to load a CF document, we raise a TLS flag that we catch in HttpNegotiatePatch::ReportProgress when the mime type is being reported. This is the same place where we examine http headers and report the mime type. BUG=n/a TEST=Set PatchProtocols (REG_DWORD) to 0 in the CF HKCU config key and make sure we detect and handle the meta tag as well or better than before. Review URL: http://codereview.chromium.org/489004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@34366 0039d316-1c4b-4281-b951-d872f2087c98
* Remove erroneous DCHECK that is reached when loading pages that don't call ↵robertshield@chromium.org2009-12-031-1/+2
| | | | | | | | | | | | | | | out to wininet like about:blank. Altering constant name pulled in from latest platform SDK to avoid naming conflicts for those with said SDK. Add slightly more logging to error messages. BUG=DCHECK hit when loading about:blank. TEST=Load about:blank in a debug build and no DCHECK is seen. Review URL: http://codereview.chromium.org/465030 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@33706 0039d316-1c4b-4281-b951-d872f2087c98
* Adding support for Chrome Frame to be loaded via the presence of an ↵robertshield@chromium.org2009-12-031-0/+22
| | | | | | | | | | | | | X-UA-Compatible HTTP header (in addition to the meta tag support). Also pins the CF module into the process such that it won't get unloaded. Doing this to work around how we can get unloaded without unpatching properly. BUG=22802 TEST=Navigate to a web site whose server sends the X-UA-Compatible: chrome=1 HTTP header and ensure that the page is loaded in CF. Review URL: http://codereview.chromium.org/465009 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@33629 0039d316-1c4b-4281-b951-d872f2087c98
* Fix a race condition in InitializeAndPatchProtocolsIfNeeded as discovered by ↵tommi@chromium.org2009-11-131-10/+18
| | | | | | | | | | | MAD. TEST=Should fix the issue MAD saw when starting up and tearing down the host browser in quick succession. Please see bug description. BUG=27641 Review URL: http://codereview.chromium.org/387049 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@31935 0039d316-1c4b-4281-b951-d872f2087c98
* When Chrome hands off a URL to be opened by the external host by the ↵ananta@chromium.org2009-10-191-0/+36
| | | | | | | | | | | | | | | | | | | | | | | ViewHostMsg_OpenURL IPC, it needs to pass the referrer as well. The Chrome fixes in this CL are mostly related to passing the HTTP referer off to the browser and from there to the ExternalTabContainer to ChromeFrame and back. The ChromeFrame changes are basically around the same lines with one exception. When we handle the AutomationMsg_OpenURL IPC in the activex and the active document we pass the referer if applicable to the WebBrowser2::Navigate2 interface, which is then read by the BHO in BeforeNavigate2. We then save away an AddRef'ed BHO pointer in TLS which is then referenced by the Active document for reading the referer and passing it off to Chrome in the NavigateInExternalTab message. Added a unit test in ChromeFrame which tests this case. This fixes http://code.google.com/p/chromium/issues/detail?id=22994 Bug=22994 Review URL: http://codereview.chromium.org/274071 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@29420 0039d316-1c4b-4281-b951-d872f2087c98
* Add the chromeframe tag to the user agent header at runtime instead of ↵tommi@chromium.org2009-10-171-0/+5
| | | | | | | | statically in the registry.TEST=Try disabling GCF and see if the chromeframe tag in the user agent is still set. It should not be. Also make sure you don't have an older version installed... the chromeframe tag should not be in the registry - if it is, you've got an older version still registered. This should fix the issue with going to wave.google.com after disabling chrome frame and seeing the white page of death.R=amitBUG=22760 Review URL: http://codereview.chromium.org/259025 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@29370 0039d316-1c4b-4281-b951-d872f2087c98
* Committing patch 256001 for Roger:http://codereview.chromium.org/256001Allow ↵tommi@chromium.org2009-10-011-1/+1
| | | | | | | | Chrome Frame to display chrome-extension URLs when running in privilegedmode.BUG=noneTEST=see unit tests Review URL: http://codereview.chromium.org/246050 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@27724 0039d316-1c4b-4281-b951-d872f2087c98
* This fixes a crash in IE8 with ChromeFrame when a new tab was created. ananta@chromium.org2009-09-251-7/+2
| | | | | | | | | | | | | | | | | | | ChromeFrame VTable patches the IInternetProtocol interface for the CLSID_HttpProtocol and CLSID_HttpSProtocol handlers. However we were using the same VTable information to patch both the handlers essentially overwriting the first one. While this all worked purely by chance, it exposed a bug in IE8 where every new tab initially goes into a new process and if the chromeframe is unloaded we would leave behind an IInternetProtocol interface in urlmon patched, which would crash when dereferenced. Added a check in the VTable patching code for this case. This fixes bug http://code.google.com/p/chromium/issues/detail?id=22768 Bug=22768 Review URL: http://codereview.chromium.org/244002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@27191 0039d316-1c4b-4281-b951-d872f2087c98
* Initial import of the Chrome Frame codebase. Integration in chrome.gyp ↵slightlyoff@chromium.org2009-09-241-0/+247
coming in a separate CL. BUG=None TEST=None Review URL: http://codereview.chromium.org/218019 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@27042 0039d316-1c4b-4281-b951-d872f2087c98