summaryrefslogtreecommitdiffstats
path: root/chrome_frame/protocol_sink_wrap.h
Commit message (Collapse)AuthorAgeFilesLines
* If we switch into ChromeFrame as a result of a redirect then we need to ↵ananta@chromium.org2011-02-221-0/+4
| | | | | | | | | | | | | | | | | | | | | navigate chrome to the correct URL to ensure that scripts on the page see the correct URL. This functionality regressed when the protocol sink patch landed. Fix is to read the URL from the ProtData object which wraps the underlying protocol sink, when our active document loads. Removed stale code from the Chromeframe moniker patch which eventually needs to go. Fixes bug http://code.google.com/p/chromium/issues/detail?can=2&q=71860 BUG=71860 TEST=As described in the bug. Review URL: http://codereview.chromium.org/6469103 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@75656 0039d316-1c4b-4281-b951-d872f2087c98
* Add missing base::lock usage.brettw@chromium.org2011-01-211-1/+1
| | | | | | | TEST=it compiles BUG=none Review URL: http://codereview.chromium.org/6336010 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@72108 0039d316-1c4b-4281-b951-d872f2087c98
* Integrate the Ready Mode prompt with IE and Chrome Frame. In Ready Mode, ↵erikwright@chromium.org2011-01-121-2/+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
* Fix a bug where in having ChromeFrame installed on the machine would cause a ↵ananta@chromium.org2010-11-011-10/+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
* Move debug-related stuff from base to the base/debug directory and use thebrettw@chromium.org2010-10-261-1/+1
| | | | | | | | | | | | | | | | base::debug namespace. This splits apart debug_util into base/debugger and base/stack_trace There are still two functions in debug_util that I'm not sure what to do with. Since this uses the base::debug namespace, I removed the functions in debugger.h from the static class and just made them free functions in the namespace. TEST=it compiles BUG=none Review URL: http://codereview.chromium.org/3945002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@63859 0039d316-1c4b-4281-b951-d872f2087c98
* Remove scoped_bstr_win, fix all callers to use the new location.brettw@chromium.org2010-10-201-6/+6
| | | | | | | | TEST=it compiles BUG=none Review URL: http://codereview.chromium.org/3748012 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@63216 0039d316-1c4b-4281-b951-d872f2087c98
* Committing http://codereview.chromium.org/3420004/show for grt@robertshield@chromium.org2010-09-221-7/+1
| | | | | | | | | | | | | | | | 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
* Support GCF as the default HTML viewer as well as supporting an exclusion list.tommi@chromium.org2010-08-111-1/+1
| | | | | | | | | | | | | | | | | | | | | | | Now, there are two URL lists that we support and a master REG_DWORD value ("IsDefaultRenderer" ) to switch between them. Note that the OptInUrls key is no longer supported but the URL lists mentioned below function in the same way OptInUrls used to. This is basically how it works: if IsDefaultRenderer Url list name is "RenderInHostUrls" and lists patterns that the host (IE) should render. if not IsDefaultRenderer (i.e. it's 0) Url list name is "RenderInGcfUrls" and lists patterns that GCF should render. Also fixing typo :) TEST=See description above and in bug report. BUG= 50788 Review URL: http://codereview.chromium.org/3131003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@55664 0039d316-1c4b-4281-b951-d872f2087c98
* Fix a crash in ChromeFrame full tab mode while processing the attach ↵ananta@chromium.org2010-08-021-0/+3
| | | | | | | | | | | | | | | | | | | | | | | external tab request, which comes in during window open. We create a ProtData object instance which is mapped to the protocol with a NULL read function pointer which was used to indicate if this is a dummy request. It appears that there are cases where we may receive a StartEx call with a reused protocol pointer. which basically causes a crash in the context of IInternetProtocolSink::ReportData which internally calls IInternetProtocol::LockRequest, which crashes as the transaction never started. Fix is to invalidate the protdata mapping if the protdata has not been destroyed yet, but the underlying Transaction has been destroyed. This can happen if the original bind context has not yet been destroyed Fixes bug http://code.google.com/p/chromium/issues/detail?id=50814 Bug=50814,50956 Test=Subsequent CL. Review URL: http://codereview.chromium.org/3078010 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@54553 0039d316-1c4b-4281-b951-d872f2087c98
* Ensure that window.open requests issued by ChromeFrame carry the correct ↵ananta@chromium.org2010-07-281-2/+8
| | | | | | | | | | | | | | | | | | | | | cookies in the outgoing HTTP requests. To achieve this we no longer issue navigations with the gcf:attach* prefix. We now issue a navigation to the current page URL with the attach external tab suffix, which indicates that the page is forced into ChromeFrame without making an actual HTTP request. This ensures that the new IE8 process has access to all HTTP cookies. We need to patch IInternetProtocol::LockRequest and UnlockRequest to not call the underlying implementations for our dummy request as this crashes in IE8 in the prebinding code path. Fixes bug http://b/issue?id=2277519 Added tests for the CanNavigateFullTabMode helper function. Bug=2277519 Review URL: http://codereview.chromium.org/3051018 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@54019 0039d316-1c4b-4281-b951-d872f2087c98
* BUG=47879stoyan@chromium.org2010-07-171-0/+22
| | | | | | 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-2/+0
| | | | | | | | | | | | 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
* A new way of hooking internet protocols.stoyan@chromium.org2010-06-091-163/+75
| | | | | | | | TEST=chrome frame tests Review URL: http://codereview.chromium.org/2620001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@49265 0039d316-1c4b-4281-b951-d872f2087c98
* Fix ChromeFrame net tests broken by the change to determine the renderer ↵ananta@chromium.org2009-12-231-0/+4
| | | | | | | | | | | | | | | | | type in our IInternetProtocolSink::ReportProgress implementation. To determine the renderer type we try to read the data from the IInternetProtocol interface which in turn tries to determine the renderer type. Fix is to check if we are in the context of determining the renderer and bail. TBR=stoyan Bug=31031 Review URL: http://codereview.chromium.org/518012 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@35234 0039d316-1c4b-4281-b951-d872f2087c98
* ChromeFrame in IE full tab mode would not render pages if Adblock Pro was ↵ananta@chromium.org2009-12-231-0/+9
| | | | | | | | | | | | | | | | | | | | | installed on the machine. Based on my debugging it looks like AdBlock gets confused because we report the mime type initally as text/html and then swich to application/chromepage. Fix is to attempt to determine the mime type in our IInternetProtocolSink::ReportProgress implementation. If we fail we continue to determine the mime type in IInternetProtocolSink::ReportData. Added a helper function CheckAndReportChromeMimeTypeForRequest which is invoked from both places. Fixes http://code.google.com/p/chromium/issues/detail?id=31031 Bug=31031 Review URL: http://codereview.chromium.org/501181 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@35227 0039d316-1c4b-4281-b951-d872f2087c98
* Don't switch to CF's active document for frames or iframes.This fixes an ↵tommi@chromium.org2009-11-031-2/+0
| | | | | | | | issue where a page that uses CF would be loaded in an IFRAME on Google Images.Instead of attempting to load CF (not supported), we now defer to the host browser. Previously a blank page was displayed.TEST=Run new unit tests: FullTabModeIE_SubIFrame and FullTabModeIE_SubFrameBUG=22989 Review URL: http://codereview.chromium.org/343086 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@30782 0039d316-1c4b-4281-b951-d872f2087c98
* Add the chromeframe tag to the user agent header at runtime instead of ↵tommi@chromium.org2009-10-171-18/+14
| | | | | | | | 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
* This fixes a crash in IE8 with ChromeFrame when a new tab was created. ananta@chromium.org2009-09-251-3/+23
| | | | | | | | | | | | | | | | | | | 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/+221
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