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

Side by Side Diff: chrome_frame/chrome_frame_plugin.h

Issue 1343002: Re-submit of GCF privacy patch in:... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 10 years, 9 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_frame/chrome_frame_npapi_unittest.cc ('k') | chrome_frame/delete_chrome_history.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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_CHROME_FRAME_PLUGIN_H_ 5 #ifndef CHROME_FRAME_CHROME_FRAME_PLUGIN_H_
6 #define CHROME_FRAME_CHROME_FRAME_PLUGIN_H_ 6 #define CHROME_FRAME_CHROME_FRAME_PLUGIN_H_
7 7
8 #include "base/ref_counted.h" 8 #include "base/ref_counted.h"
9 #include "base/win_util.h" 9 #include "base/win_util.h"
10 #include "chrome_frame/chrome_frame_automation.h" 10 #include "chrome_frame/chrome_frame_automation.h"
11 #include "chrome/common/chrome_paths.h"
12 #include "chrome/common/chrome_paths_internal.h"
11 #include "chrome_frame/simple_resource_loader.h" 13 #include "chrome_frame/simple_resource_loader.h"
12 #include "chrome_frame/utils.h" 14 #include "chrome_frame/utils.h"
13 15
14 #include "grit/chromium_strings.h" 16 #include "grit/chromium_strings.h"
15 17
16 #define IDC_ABOUT_CHROME_FRAME 40018 18 #define IDC_ABOUT_CHROME_FRAME 40018
17 19
18 // A class to implement common functionality for all types of 20 // A class to implement common functionality for all types of
19 // plugins: NPAPI. ActiveX and ActiveDoc 21 // plugins: NPAPI. ActiveX and ActiveDoc
20 template <typename T> 22 template <typename T>
21 class ChromeFramePlugin : public ChromeFrameDelegateImpl { 23 class ChromeFramePlugin : public ChromeFrameDelegateImpl {
22 public: 24 public:
23 ChromeFramePlugin() 25 ChromeFramePlugin()
24 : ignore_setfocus_(false), 26 : ignore_setfocus_(false),
25 is_privileged_(false) { 27 is_privileged_(false) {
26 } 28 }
27 ~ChromeFramePlugin() { 29 ~ChromeFramePlugin() {
28 Uninitialize(); 30 Uninitialize();
29 } 31 }
30 32
31 BEGIN_MSG_MAP(T) 33 BEGIN_MSG_MAP(T)
32 MESSAGE_HANDLER(WM_SETFOCUS, OnSetFocus) 34 MESSAGE_HANDLER(WM_SETFOCUS, OnSetFocus)
33 MESSAGE_HANDLER(WM_SIZE, OnSize) 35 MESSAGE_HANDLER(WM_SIZE, OnSize)
34 MESSAGE_HANDLER(WM_PARENTNOTIFY, OnParentNotify) 36 MESSAGE_HANDLER(WM_PARENTNOTIFY, OnParentNotify)
35 END_MSG_MAP() 37 END_MSG_MAP()
36 38
37 bool Initialize() { 39 bool Initialize() {
40 DLOG(INFO) << __FUNCTION__;
38 DCHECK(!automation_client_.get()); 41 DCHECK(!automation_client_.get());
39 automation_client_ = CreateAutomationClient(); 42 automation_client_ = CreateAutomationClient();
40 if (!automation_client_.get()) { 43 if (!automation_client_.get()) {
41 NOTREACHED() << "new ChromeFrameAutomationClient"; 44 NOTREACHED() << "new ChromeFrameAutomationClient";
42 return false; 45 return false;
43 } 46 }
44 47
45 return true; 48 return true;
46 } 49 }
47 50
48 void Uninitialize() { 51 void Uninitialize() {
52 DLOG(INFO) << __FUNCTION__;
49 if (IsValid()) { 53 if (IsValid()) {
50 automation_client_->Uninitialize(); 54 automation_client_->Uninitialize();
51 automation_client_ = NULL; 55 automation_client_ = NULL;
52 } 56 }
53 } 57 }
54 58
55 bool InitializeAutomation(const std::wstring& profile_name, 59 bool InitializeAutomation(const std::wstring& profile_name,
56 const std::wstring& extra_chrome_arguments, 60 const std::wstring& extra_chrome_arguments,
57 bool incognito) { 61 bool incognito) {
58 DCHECK(IsValid()); 62 DCHECK(IsValid());
59 // We don't want to do incognito when privileged, since we're 63 // We don't want to do incognito when privileged, since we're
60 // running in browser chrome or some other privileged context. 64 // running in browser chrome or some other privileged context.
61 bool incognito_mode = !is_privileged_ && incognito; 65 bool incognito_mode = !is_privileged_ && incognito;
66 FilePath profile_path;
67 GetProfilePath(profile_name, &profile_path);
62 return automation_client_->Initialize(this, kCommandExecutionTimeout, true, 68 return automation_client_->Initialize(this, kCommandExecutionTimeout, true,
63 profile_name, extra_chrome_arguments, 69 profile_path, extra_chrome_arguments,
64 incognito_mode); 70 incognito_mode);
65 } 71 }
66 72
67 // ChromeFrameDelegate implementation 73 // ChromeFrameDelegate implementation
68 virtual WindowType GetWindow() const { 74 virtual WindowType GetWindow() const {
69 return (static_cast<const T*>(this))->m_hWnd; 75 return (static_cast<const T*>(this))->m_hWnd;
70 } 76 }
71 77
72 virtual void GetBounds(RECT* bounds) { 78 virtual void GetBounds(RECT* bounds) {
73 if (bounds) { 79 if (bounds) {
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
204 if (IsValid()) { 210 if (IsValid()) {
205 TabProxy* tab = automation_client_->tab(); 211 TabProxy* tab = automation_client_->tab();
206 HWND chrome_window = automation_client_->tab_window(); 212 HWND chrome_window = automation_client_->tab_window();
207 if (tab && ::IsWindow(chrome_window)) { 213 if (tab && ::IsWindow(chrome_window)) {
208 DLOG(INFO) << "Setting initial focus"; 214 DLOG(INFO) << "Setting initial focus";
209 tab->SetInitialFocus(win_util::IsShiftPressed()); 215 tab->SetInitialFocus(win_util::IsShiftPressed());
210 } 216 }
211 } 217 }
212 } 218 }
213 219
220 virtual void GetProfilePath(const std::wstring& profile_name,
221 FilePath* profile_path) {
222 chrome::GetChromeFrameUserDataDirectory(profile_path);
223 *profile_path = profile_path->Append(profile_name);
224 DLOG(INFO) << __FUNCTION__ << ": " << profile_path->value();
225 }
226
214 protected: 227 protected:
215 // Our gateway to chrome land 228 // Our gateway to chrome land
216 scoped_refptr<ChromeFrameAutomationClient> automation_client_; 229 scoped_refptr<ChromeFrameAutomationClient> automation_client_;
217 230
218 // Url of the containing document. 231 // Url of the containing document.
219 std::string document_url_; 232 std::string document_url_;
220 233
221 // We set this flag when we're taking the focus ourselves 234 // We set this flag when we're taking the focus ourselves
222 // and notifying the host browser that we're doing so. 235 // and notifying the host browser that we're doing so.
223 // When the flag is not set, we transfer the focus to chrome. 236 // When the flag is not set, we transfer the focus to chrome.
224 bool ignore_setfocus_; 237 bool ignore_setfocus_;
225 238
226 // The plugin is privileged if it is: 239 // The plugin is privileged if it is:
227 // * Invoked by a window running under the system principal in FireFox. 240 // * Invoked by a window running under the system principal in FireFox.
228 // * Being hosted by a custom host exposing the SID_ChromeFramePrivileged 241 // * Being hosted by a custom host exposing the SID_ChromeFramePrivileged
229 // service. 242 // service.
230 // 243 //
231 // When privileged, additional interfaces are made available to the user. 244 // When privileged, additional interfaces are made available to the user.
232 bool is_privileged_; 245 bool is_privileged_;
233 246
234 // List of functions to enable for automation, or a single entry "*" to 247 // List of functions to enable for automation, or a single entry "*" to
235 // enable all functions for automation. Ignored unless is_privileged_ is 248 // enable all functions for automation. Ignored unless is_privileged_ is
236 // true. Defaults to the empty list, meaning automation will not be 249 // true. Defaults to the empty list, meaning automation will not be
237 // turned on. 250 // turned on.
238 std::vector<std::string> functions_enabled_; 251 std::vector<std::string> functions_enabled_;
239 }; 252 };
240 253
241 #endif // CHROME_FRAME_CHROME_FRAME_PLUGIN_H_ 254 #endif // CHROME_FRAME_CHROME_FRAME_PLUGIN_H_
242 255
OLDNEW
« no previous file with comments | « chrome_frame/chrome_frame_npapi_unittest.cc ('k') | chrome_frame/delete_chrome_history.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698