Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(34)

Issue 6493002: A number of poorly written IE BHO's crash IE if ChromeFrame is the currently ... (Closed)

Created:
9 years, 10 months ago by ananta
Modified:
9 years, 6 months ago
CC:
chromium-reviews, amit
Visibility:
Public.

Description

A number of poorly written IE BHO's crash IE if ChromeFrame is the currently loaded document. This is because they expect ChromeFrame to implement interfaces like IHTMLDocument2 on the same lines as regular IE documents. Currently in ChromeFrame we patch the invoke methods of these BHO's prior to firing navigation events from ChromeFrame. However this is not enough as these objects also crash for regular navigation events fired from IE when ChromeFrame is loaded. We now don't fire navigation events for buggy BHO's if ChromeFrame is the current document. The BuggyBho handler instance is now created once for the thread. We patch when we receive navigation notifications from Chrome as before. When we receive a notification on our patched event sink we check if CF is loaded and if yes skip the call. Added helpers to chrome frame utils to check if CF is loaded in the current web browser instance. BUG=55932 TEST=none Committed: http://src.chromium.org/viewvc/chrome?view=rev&revision=74691

Patch Set 1 #

Patch Set 2 : '' #

Patch Set 3 : '' #

Patch Set 4 : '' #

Patch Set 5 : '' #

Patch Set 6 : '' #

Patch Set 7 : '' #

Patch Set 8 : '' #

Total comments: 5

Patch Set 9 : '' #

Patch Set 10 : '' #

Total comments: 14

Patch Set 11 : '' #

Patch Set 12 : '' #

Patch Set 13 : '' #

Unified diffs Side-by-side diffs Delta from patch set Stats (+157 lines, -105 lines) Patch
M chrome_frame/bho.cc View 1 2 3 4 5 6 7 8 9 2 chunks +5 lines, -1 line 0 comments Download
M chrome_frame/buggy_bho_handling.h View 1 2 3 4 5 6 7 8 9 10 4 chunks +25 lines, -20 lines 0 comments Download
M chrome_frame/buggy_bho_handling.cc View 1 2 3 4 5 6 7 8 9 10 3 chunks +90 lines, -74 lines 0 comments Download
M chrome_frame/chrome_active_document.cc View 1 2 3 4 5 6 7 8 9 10 11 12 2 chunks +13 lines, -9 lines 0 comments Download
M chrome_frame/utils.h View 1 2 3 4 3 chunks +4 lines, -1 line 0 comments Download
M chrome_frame/utils.cc View 1 2 3 4 5 6 7 8 9 10 2 chunks +20 lines, -0 lines 0 comments Download

Messages

Total messages: 10 (0 generated)
ananta
9 years, 10 months ago (2011-02-10 23:04:19 UTC) #1
amit
What happens when there are two windows (two IWebBrowser2?) in the same thread?
9 years, 10 months ago (2011-02-11 02:12:58 UTC) #2
ananta
On 2011/02/11 02:12:58, amit wrote: > What happens when there are two windows (two IWebBrowser2?) ...
9 years, 10 months ago (2011-02-11 04:28:32 UTC) #3
tommi (sloooow) - chröme
This method moves away from the tls approach we had before and replaces it with ...
9 years, 10 months ago (2011-02-11 14:49:02 UTC) #4
ananta
http://codereview.chromium.org/6493002/diff/14007/chrome_frame/bho.cc File chrome_frame/bho.cc (right): http://codereview.chromium.org/6493002/diff/14007/chrome_frame/bho.cc#newcode142 chrome_frame/bho.cc:142: UnregisterThreadInstance(); On 2011/02/11 14:49:02, tommi wrote: > Hmm... there's ...
9 years, 10 months ago (2011-02-11 18:55:07 UTC) #5
ananta
On 2011/02/11 14:49:02, tommi wrote: > This method moves away from the tls approach we ...
9 years, 10 months ago (2011-02-11 18:57:39 UTC) #6
tommi (sloooow) - chröme
lgtm with a few more nits http://codereview.chromium.org/6493002/diff/20001/chrome_frame/bho.cc File chrome_frame/bho.cc (right): http://codereview.chromium.org/6493002/diff/20001/chrome_frame/bho.cc#newcode144 chrome_frame/bho.cc:144: DispEventUnadvise(web_browser2, &DIID_DWebBrowserEvents2); thanks ...
9 years, 10 months ago (2011-02-11 19:34:15 UTC) #7
amit
Looks much better. One more thing that occurred to me is that this scheme does ...
9 years, 10 months ago (2011-02-11 19:49:40 UTC) #8
ananta
http://codereview.chromium.org/6493002/diff/20001/chrome_frame/buggy_bho_handling.cc File chrome_frame/buggy_bho_handling.cc (right): http://codereview.chromium.org/6493002/diff/20001/chrome_frame/buggy_bho_handling.cc#newcode79 chrome_frame/buggy_bho_handling.cc:79: DCHECK(BuggyBhoTls::GetInstance() == NULL); On 2011/02/11 19:34:15, tommi wrote: > ...
9 years, 10 months ago (2011-02-11 21:19:35 UTC) #9
amit
9 years, 10 months ago (2011-02-11 21:51:56 UTC) #10
lgtm

Powered by Google App Engine
This is Rietveld 408576698