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

Side by Side Diff: chrome_frame/bho.h

Issue 274071: When Chrome hands off a URL to be opened by the external host by the ViewHost... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/test/automation/tab_proxy.cc ('k') | chrome_frame/bho.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Property Changes:
Added: eol-style
+ LF
OLDNEW
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CHROME_FRAME_BHO_H_ 5 #ifndef CHROME_FRAME_BHO_H_
6 #define CHROME_FRAME_BHO_H_ 6 #define CHROME_FRAME_BHO_H_
7 7
8 #include <string> 8 #include <string>
9 9
10 #include <atlbase.h> 10 #include <atlbase.h>
11 #include <atlcom.h> 11 #include <atlcom.h>
12 #include <exdisp.h> 12 #include <exdisp.h>
13 #include <exdispid.h> 13 #include <exdispid.h>
14 #include <mshtml.h> 14 #include <mshtml.h>
15 #include <shdeprecated.h> 15 #include <shdeprecated.h>
16 16
17 #include "base/lazy_instance.h"
18 #include "base/thread_local.h"
17 #include "chrome_tab.h" // NOLINT 19 #include "chrome_tab.h" // NOLINT
18 #include "chrome_frame/resource.h" 20 #include "chrome_frame/resource.h"
19 #include "grit/chrome_frame_resources.h" 21 #include "grit/chrome_frame_resources.h"
20 22
21 class PatchHelper { 23 class PatchHelper {
22 public: 24 public:
23 enum State { UNKNOWN, PATCH_IBROWSER, PATCH_IBROWSER_OK, PATCH_PROTOCOL }; 25 enum State { UNKNOWN, PATCH_IBROWSER, PATCH_IBROWSER_OK, PATCH_PROTOCOL };
24 PatchHelper() : state_(UNKNOWN) { 26 PatchHelper() : state_(UNKNOWN) {
25 } 27 }
26 28
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
78 // It also sends contents of the meta tag as an argument. IEFrame 80 // It also sends contents of the meta tag as an argument. IEFrame
79 // handles this in IBrowserService::OnHttpEquiv. So this allows 81 // handles this in IBrowserService::OnHttpEquiv. So this allows
80 // us to sniff the META tag by simply patching it. The renderer 82 // us to sniff the META tag by simply patching it. The renderer
81 // switching can be achieved by cancelling original navigation 83 // switching can be achieved by cancelling original navigation
82 // and issuing a new one using IWebBrowser2->Navigate2. 84 // and issuing a new one using IWebBrowser2->Navigate2.
83 static HRESULT STDMETHODCALLTYPE OnHttpEquiv( 85 static HRESULT STDMETHODCALLTYPE OnHttpEquiv(
84 IBrowserService_OnHttpEquiv_Fn original_httpequiv, 86 IBrowserService_OnHttpEquiv_Fn original_httpequiv,
85 IBrowserService* browser, IShellView* shell_view, BOOL done, 87 IBrowserService* browser, IShellView* shell_view, BOOL done,
86 VARIANT* in_arg, VARIANT* out_arg); 88 VARIANT* in_arg, VARIANT* out_arg);
87 89
90 std::string referrer() const {
91 return referrer_;
92 }
93
94 // Returns the Bho instance for the current thread. This is returned from
95 // TLS.
96 static Bho* GetCurrentThreadBhoInstance();
97
88 protected: 98 protected:
89 bool PatchProtocolHandler(const CLSID& handler_clsid); 99 bool PatchProtocolHandler(const CLSID& handler_clsid);
90 static bool HasSubFrames(IWebBrowser2* web_browser2); 100 static bool HasSubFrames(IWebBrowser2* web_browser2);
91 static HRESULT SwitchRenderer(IWebBrowser2* web_browser2, 101 static HRESULT SwitchRenderer(IWebBrowser2* web_browser2,
92 IBrowserService* browser, IShellView* shell_view, 102 IBrowserService* browser, IShellView* shell_view,
93 const wchar_t* meta_tag); 103 const wchar_t* meta_tag);
104 std::string referrer_;
94 105
106 static base::LazyInstance<base::ThreadLocalPointer<Bho> >
107 bho_current_thread_instance_;
95 static _ATL_FUNC_INFO kBeforeNavigate2Info; 108 static _ATL_FUNC_INFO kBeforeNavigate2Info;
96 }; 109 };
97 110
98 // Add Bho to class library table so IE can CoCreate it. 111 // Add Bho to class library table so IE can CoCreate it.
99 OBJECT_ENTRY_AUTO(CLSID_ChromeFrameBHO, Bho); 112 OBJECT_ENTRY_AUTO(CLSID_ChromeFrameBHO, Bho);
100 113
101 #endif // CHROME_FRAME_BHO_H_ 114 #endif // CHROME_FRAME_BHO_H_
102 115
OLDNEW
« no previous file with comments | « chrome/test/automation/tab_proxy.cc ('k') | chrome_frame/bho.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698