summaryrefslogtreecommitdiffstats
path: root/chrome_frame/http_negotiate.cc
Commit message (Collapse)AuthorAgeFilesLines
* Remove DCHECK for an argument that may be NULL.tommi@chromium.org2011-02-081-1/+0
| | | | | | | | | TEST=none BUG=none Review URL: http://codereview.chromium.org/6452009 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@74150 0039d316-1c4b-4281-b951-d872f2087c98
* Enable the ChromeFrame IHttpNegotiate patch for all IE versions. Ensure that ↵ananta@chromium.org2011-01-201-3/+12
| | | | | | | | | | | | | | | | Chrome's UA is sent out from IE in case Chrome is the default renderer for IE. Fixes bug http://code.google.com/p/chromium/issues/detail?id=70138 BUG=70138 TEST=As described in the bug at this point. Unit tests for this will follow. Review URL: http://codereview.chromium.org/6279006 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@71887 0039d316-1c4b-4281-b951-d872f2087c98
* Integrate the Ready Mode prompt with IE and Chrome Frame. In Ready Mode, ↵erikwright@chromium.org2011-01-121-6/+8
| | | | | | | | | | prompts are displayed when the user browses to GCF-enabled sites, allowing the user to permanently activate, permanently decline, or temporarily decline Chrome Frame. BUG=None TEST=chrome_frame_unittests --gtest_filter=Ready* && chrome_frame_unittests --gtest_filter=Infobar* && setup.exe --chrome-frame --ready-mode --multi-install --system--level --chrome Review URL: http://codereview.chromium.org/6040003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@71215 0039d316-1c4b-4281-b951-d872f2087c98
* Restore the IHttpNegotiate patch in ChromeFrame for IE9 which sends the ↵ananta@chromium.org2010-12-171-0/+129
| | | | | | | | | | | | | | | short UA string by default without the Post Platform values which we rely on. This reverts back to the old behavior for IE9 with the bug that certain top level requests like Refresh on a page rendered in IE will be sent out with the UA string without the chrome frame suffix. BUG=45087 TEST=Covered by old http negotiate unit test. Review URL: http://codereview.chromium.org/5957001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@69586 0039d316-1c4b-4281-b951-d872f2087c98
* Add the ChromeFrame UA in the post platform section in the IE user agent ↵ananta@chromium.org2010-12-161-129/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | string. To achieve this we need to add the desired value in the registry under the Internet Settings\User Agent\Post Platform key. We add this under the per user or per machine section in the registry depending on whether ChromeFrame is being installed in per user or per machine mode. This fixes the bug where certain top level requests in IE would not have the chrome frame UA appended to the IE UA. Removed the BeginningTransaction vtable patch code, which only existed to add chrome frame to the UA in outgoing requests. The limitation with registering the chrome frame UA in the registry is that it will be sent out even in the ChromeFrame BHO is disabled. Fixes bug http://code.google.com/p/chromium/issues/detail?id=45087 BUG=45087 TESt=Covered by new chrome frame test. Review URL: http://codereview.chromium.org/5831002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@69442 0039d316-1c4b-4281-b951-d872f2087c98
* Fix compile errorananta@chromium.org2010-11-111-1/+1
| | | | | | | | | Bug=62853 TBR=amit Review URL: http://codereview.chromium.org/4696005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@65839 0039d316-1c4b-4281-b951-d872f2087c98
* Fix a crash in the code which attempts to append the user agent to the list ↵ananta@chromium.org2010-11-111-14/+15
| | | | | | | | | | | | | | | of outgoing headers in ChromeFrame sub requests. The crash occurs because the current headers passed in the BeginningTransaction are NULL. Fixes bug http://code.google.com/p/chromium/issues/detail?id=62853 Bug=62853 Review URL: http://codereview.chromium.org/4792002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@65834 0039d316-1c4b-4281-b951-d872f2087c98
* Fix a bug where in having ChromeFrame installed on the machine would cause a ↵ananta@chromium.org2010-11-011-234/+0
| | | | | | | | | | | | | | | | | | | | | | | | non chrome frame email site to automatically logout after logging in. ChromeFrame appends the chromeframe string to the user agent to outgoing requests initiated from IE. However this was only done in the protocol sink patch for top level requests. Sub requests would carry the IE user agent which in this case would cause the web server to get confused and drop the connection. Fix is to resurrent the IHttpNegotiate vtable patch for the protocol patch as well. Removed the code which read the patch method from the registry and turned on the moniker or the httpequiv patch. It is unlikely that we will need this in the future. Cleaned up the http negotiate patch by removing references to the navigation manager and the ReportProgress patch which is not needed anymore. Fixes bug http://code.google.com/p/chromium/issues/detail?id=60745 Bug=60745 Review URL: http://codereview.chromium.org/4247001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@64688 0039d316-1c4b-4281-b951-d872f2087c98
* Change miscellaneous LOG(INFO)s to VLOG()s that I missed the first time ↵pkasting@chromium.org2010-10-271-1/+1
| | | | | | | | | | | | through, either because they were LOG_IF() (which I didn't search for) or they were added during the week I was changing things. Plus a few misc. cleanup bits. BUG=none TEST=none Review URL: http://codereview.chromium.org/4111002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@63998 0039d316-1c4b-4281-b951-d872f2087c98
* Convert LOG(INFO) to VLOG(1) - chrome_frame/.pkasting@chromium.org2010-10-191-7/+7
| | | | | | | | | | Plus a couple misc. cleanups. BUG=none TEST=none Review URL: http://codereview.chromium.org/3850002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@63095 0039d316-1c4b-4281-b951-d872f2087c98
* chrome_frame: Append base:: in the StringPrintf calls.tfarina@chromium.org2010-10-011-9/+8
| | | | | | | | | | | (Note: this is a TODO in string_util.h) BUG=None TEST=trybots Review URL: http://codereview.chromium.org/3594002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@61166 0039d316-1c4b-4281-b951-d872f2087c98
* Committing http://codereview.chromium.org/3420004/show for grt@robertshield@chromium.org2010-09-221-1/+2
| | | | | | | | | | | | | | | | Original description: - added detection of IE9 for ChromeFrame.IEVersion metric - replaced ChromeFrame.FullTabLaunchType metric with ChromeFrame.LaunchType metric, which logs more info regarding how it came to be that GCF rendered a page (but only for the CTransaction patch) BUG=43885 TEST=none Review URL: http://codereview.chromium.org/3443017 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@60188 0039d316-1c4b-4281-b951-d872f2087c98
* When GCF is the default renderer, use Chrome's User-agent header instead of ↵tommi@chromium.org2010-08-311-7/+40
| | | | | | | | | | | IE's. TEST=Set IsDefaultRenderer to 1 (REG_DWORD) under the ChromeFrame registry key. Check if the User agent header in requests is the Chrome user agent. Then set the value to 0 and make sure the regular user-agent header is there. BUG=50788 Review URL: http://codereview.chromium.org/3130016 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@57991 0039d316-1c4b-4281-b951-d872f2087c98
* Add #include utf_string_conversions.h to all files that use ASCIIToWide andbrettw@chromium.org2010-08-031-0/+1
| | | | | | | | | | | | | | | ASCIIToUTF16. I removed string_util includes from a few places where it obviously wasn't needed. In a separate pass, I'm going to remove ASCIITo* from string_util, then I'm going to do an even later pass to find the unnecessary string_util.h includes and remove them. TEST=it compiles BUG=none Review URL: http://codereview.chromium.org/3058027 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@54746 0039d316-1c4b-4281-b951-d872f2087c98
* Change the expectations of the BeginningTransaction unit test to expect the ↵ananta@chromium.org2010-07-201-1/+1
| | | | | | | | | | | | headers to be terminated by a single \r\n combination as wininet adds the terminating \r\n at the end while sending the headers out. TBR=stoyan Review URL: http://codereview.chromium.org/2888019 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@53101 0039d316-1c4b-4281-b951-d872f2087c98
* Fix the failing ChromeFrame BeginningTransaction unit test. The user agent ↵ananta@chromium.org2010-07-181-1/+1
| | | | | | | | | | | | value in the http headers needs to be terminated with a trailing \r\n\r\n combination instead of a single \r\n value. TBR=stoyan Review URL: http://codereview.chromium.org/3019010 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@52871 0039d316-1c4b-4281-b951-d872f2087c98
* BUG=47879stoyan@chromium.org2010-07-171-69/+96
| | | | | | Review URL: http://codereview.chromium.org/2824057 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@52806 0039d316-1c4b-4281-b951-d872f2087c98
* Implement HTTP headers sniffing in the ProtocolSinkWrap, instead of relying ↵stoyan@chromium.org2010-07-141-11/+15
| | | | | | | | | | | | on IHttpNegotiate patch. Moved some code based on over-conservative assumptions to execute earlier in pipeline. Will prevent BUG=38480 to manifest itself. BUG=47879 Review URL: http://codereview.chromium.org/2987001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@52337 0039d316-1c4b-4281-b951-d872f2087c98
* In ChromeFrame in the IInternetProtocolRoot::ReportProgress patch use the ↵ananta@chromium.org2010-05-211-15/+15
| | | | | | | | | | | | | | | | | | | exception barrier version which only reports crashes in ChromeFrame while calling the original function. We also use the other version of the ExceptionBarrier when we switch the mime type from text/html. This is to prevent the vectored exception handler from handling this exception and reporting a false positive if any stack based exception handler actually handles this exception. The other change is to remove the IHttpNegotiate::OnResponse patch as it did not do anything useful and some crashes were being reported while invoking the original function. Fixes bugs http://code.google.com/p/chromium/issues/detail?id=44767 and http://code.google.com/p/chromium/issues/detail?id=44765 Bug=44767,44765 Review URL: http://codereview.chromium.org/2078030 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@47957 0039d316-1c4b-4281-b951-d872f2087c98
* Check if the url is a top level url before clearing the referrer header.tommi@chromium.org2010-04-231-16/+14
| | | | | | | | | TEST=n/a BUG=none Review URL: http://codereview.chromium.org/1745007 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@45391 0039d316-1c4b-4281-b951-d872f2087c98
* Only switch to cf for text/html. With opt-in URLs we could mark a URL to be ↵tommi@chromium.org2010-04-211-6/+10
| | | | | | | | | | | loaded in CF regardless of the target mime type. If CF turns around and wants to download the target, we would hit an infinite loop. TEST=Verify that issue 40046 is resolved. OptIn urls should work with the moniker patch and downloads should not cause an infinite loop. BUG=40046 Review URL: http://codereview.chromium.org/1715004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@45226 0039d316-1c4b-4281-b951-d872f2087c98
* Revert 44897 - Improved compatibility support for IE8.tommi@chromium.org2010-04-191-8/+10
| | | | | | | | | | | | | | | | | | | | 1) We no longer add a user agent to requests that do not already have one. This will result in the correct user agent header being applied but it will not have the chromeframe tag. Requests that will be affected include requests from other plugins and XHR but not top level requests. 2) Requests from Chrome Frame will always have the native user agent applied regardless of compatibility settings. This means that in IE8, you will always see CF requests with MSIE 8.0 even though the target site is otherwise configured to run in IE7 compatibility. TEST=Make sure all CF websites continue to work properly. Also, turn on IE7 compatibility mode for some websites (e.g. wave, vimeo) and check if the user agent sent to those sites contains "MSIE 7.0" for pages that are not rendered in CF. Pages rendered in CF should always have the IE8 header with the possible exception of the very first request if that request was issued by mshtml. BUG=28816 Review URL: http://codereview.chromium.org/1521037 TBR=tommi@chromium.org Review URL: http://codereview.chromium.org/1659008 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@44919 0039d316-1c4b-4281-b951-d872f2087c98
* Improved compatibility support for IE8.tommi@chromium.org2010-04-181-10/+8
| | | | | | | | | | | | | | | | | 1) We no longer add a user agent to requests that do not already have one. This will result in the correct user agent header being applied but it will not have the chromeframe tag. Requests that will be affected include requests from other plugins and XHR but not top level requests. 2) Requests from Chrome Frame will always have the native user agent applied regardless of compatibility settings. This means that in IE8, you will always see CF requests with MSIE 8.0 even though the target site is otherwise configured to run in IE7 compatibility. TEST=Make sure all CF websites continue to work properly. Also, turn on IE7 compatibility mode for some websites (e.g. wave, vimeo) and check if the user agent sent to those sites contains "MSIE 7.0" for pages that are not rendered in CF. Pages rendered in CF should always have the IE8 header with the possible exception of the very first request if that request was issued by mshtml. BUG=28816 Review URL: http://codereview.chromium.org/1521037 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@44897 0039d316-1c4b-4281-b951-d872f2087c98
* With the ChromeFrame IMoniker patch in the referrer would not propagate ↵ananta@chromium.org2010-04-161-9/+22
| | | | | | | | | | | | | | | | | | | | correctly to Chrome when we switch from IE to CF. In ChromeFrame the referrer is set in the navigation manager which receives this in the IHttpNegotiate::BeginningTransaction patch. When we switch from IE to cF via the moniker patch we receive two calls to BeginningTransaction, the first one with the referrer and the other one without the referrer for the same URL causing the referrer to be overwritten. Fix is to handle this case. The referrer is cleared in our BeforeNavigate notification. I also moved some functions to chrome frame utils as part of this CL. Fixes bug http://code.google.com/p/chromium/issues/detail?id=41680 Bug=41680 Review URL: http://codereview.chromium.org/1653006 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@44733 0039d316-1c4b-4281-b951-d872f2087c98
* Fix #1 for multiple request issue (both POST and GET) after activating the ↵tommi@chromium.org2010-03-121-5/+20
| | | | | | | | | | | | | | | | | | | | | onhttpequiv approach. There's a ton going on here. Brief summary: I'm introducing a caching layer for top level page requests that we then use again when switching the document from mshtml to cf. Also in this change list: * Removing the previous way of shifting the document moniker over to the worker thread when a new chrome document is created. Instead we use a request cache object. * Refactoring the part of the Bho class that offered access to it via TLS. This was needed for better testability but also makes (imho) the separation clearer and will possibly help in the future if we don't have a Bho object. * Added a bit of logging that I'd prefer to keep in there until we're confident enough with onhttpequiv. * Enabling two previously disabled tests (the ones I added for multiple requests) * Adding several more unit tests for the new code. Review URL: http://codereview.chromium.org/668187 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@41495 0039d316-1c4b-4281-b951-d872f2087c98
* Releasing the IBindStatusCallback_PatchInfo patch after we've applied the ↵tommi@chromium.org2010-02-261-0/+6
| | | | | | | | | | | IInternetProtocolSink_PatchInfo one. TEST=Should be no change. If there is a regression because of this, it would be in the form of failing to switch to CF for pages that have the CF meta tag. BUG=none Review URL: http://codereview.chromium.org/660032 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@40144 0039d316-1c4b-4281-b951-d872f2087c98
* Fix for referrer flakyness. There were two problems:tommi@chromium.org2010-02-181-0/+10
| | | | | | | | | | | | | | | 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
* Handle a case where the document is being served up from cache. In that ↵tommi@chromium.org2010-02-041-1/+26
| | | | | | | | | | | case we have to get to the browser service object via a different set of QS calls. TEST=This is a part of the onhttpequiv effort. For now there won't be any visible changes since onhttpequiv is disabled but once it becomes enabled again, CF will be detected for cached pages as well as non-cached. BUG=none Review URL: http://codereview.chromium.org/573012 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@38132 0039d316-1c4b-4281-b951-d872f2087c98
* TEST=new tests added.stoyan@chromium.org2010-02-011-3/+41
| | | | | | Review URL: http://codereview.chromium.org/545093 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@37728 0039d316-1c4b-4281-b951-d872f2087c98
* Fix for an issue we were seeing with wave.tommi@chromium.org2010-01-231-12/+14
| | | | | | | | | | | | | | | After switching over to using the onhttpequiv notification from mshtml we can expect to see sub frames being created even before the owning document has completed loading. In particular frames whose source is about:blank. TEST=Google Wave should work. BUG=32904 Review URL: http://codereview.chromium.org/543180 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@36945 0039d316-1c4b-4281-b951-d872f2087c98
* Fix FullTabModeIE_ChromeFrameDeleteCookieTest. The problem was that a ↵tommi@chromium.org2010-01-211-0/+2
| | | | | | | | | | | | | | | domain cookie was being set twice although only set once by the server. The test itself needed fixing as well as an extra check for domain cookies set by a different url than the current url. There's one other problem remaining however which was initially reported in bug 30786 and I'll get on that next (bug reopened). TEST=Run the FullTabModeIE_ChromeFrameDeleteCookieTest test. BUG=32546, 30786 Review URL: http://codereview.chromium.org/546104 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@36749 0039d316-1c4b-4281-b951-d872f2087c98
* Updates for onhttpequiv. Preserving the referrer header, zapping the ↵tommi@chromium.org2010-01-161-2/+4
| | | | | | | | | | | | | 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
* Use the OnHttpEquiv notification to switch to CF when the http-equiv meta ↵tommi@chromium.org2009-12-111-22/+36
| | | | | | | | | | | | | | | | 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
* Limit the X-UA-Compatible HTTP header-based altering of the mime type ↵robertshield@chromium.org2009-12-041-30/+33
| | | | | | | | | | | performed by Chrome Frame to top-level requests only in IE. BUG=having an iframe that requests a resource that includes the X-UA-Compatible header in the response will trigger CF taking over the page. TEST=BUG doesn't happen anymore. Review URL: http://codereview.chromium.org/465036 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@33849 0039d316-1c4b-4281-b951-d872f2087c98
* Remove erroneous DCHECK that is reached when loading pages that don't call ↵robertshield@chromium.org2009-12-031-10/+19
| | | | | | | | | | | | | | | 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/+101
| | | | | | | | | | | | | 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
* Add the chromeframe tag to the user agent header at runtime instead of ↵tommi@chromium.org2009-10-171-0/+164
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