| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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_ACTIVEX_BASE_H_ | 5 #ifndef CHROME_FRAME_CHROME_FRAME_ACTIVEX_BASE_H_ |
| 6 #define CHROME_FRAME_CHROME_FRAME_ACTIVEX_BASE_H_ | 6 #define CHROME_FRAME_CHROME_FRAME_ACTIVEX_BASE_H_ |
| 7 | 7 |
| 8 #include <atlbase.h> | 8 #include <atlbase.h> |
| 9 #include <atlcom.h> | 9 #include <atlcom.h> |
| 10 #include <atlctl.h> | 10 #include <atlctl.h> |
| (...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 141 FireMethodWithParams(CF_EVENT_DISPID_ONCHANNELERROR, NULL, 0); | 141 FireMethodWithParams(CF_EVENT_DISPID_ONCHANNELERROR, NULL, 0); |
| 142 } | 142 } |
| 143 | 143 |
| 144 void Fire_onclose() { // NOLINT | 144 void Fire_onclose() { // NOLINT |
| 145 FireMethodWithParams(CF_EVENT_DISPID_ONCLOSE, NULL, 0); | 145 FireMethodWithParams(CF_EVENT_DISPID_ONCLOSE, NULL, 0); |
| 146 } | 146 } |
| 147 }; | 147 }; |
| 148 | 148 |
| 149 extern bool g_first_launch_by_process_; | 149 extern bool g_first_launch_by_process_; |
| 150 | 150 |
| 151 namespace chrome_frame { |
| 152 // Implemented outside this file so that the header doesn't include |
| 153 // automation_messages.h. |
| 154 std::string ActiveXCreateUrl(const GURL& parsed_url, |
| 155 const AttachExternalTabParams& params); |
| 156 int GetDisposition(const AttachExternalTabParams& params); |
| 157 void GetMiniContextMenuData(UINT cmd, |
| 158 const MiniContextMenuParams& params, |
| 159 GURL* referrer, |
| 160 GURL* url); |
| 161 } // namespace chrome_frame |
| 162 |
| 151 // Common implementation for ActiveX and Active Document | 163 // Common implementation for ActiveX and Active Document |
| 152 template <class T, const CLSID& class_id> | 164 template <class T, const CLSID& class_id> |
| 153 class ATL_NO_VTABLE ChromeFrameActivexBase : // NOLINT | 165 class ATL_NO_VTABLE ChromeFrameActivexBase : // NOLINT |
| 154 public CComObjectRootEx<CComMultiThreadModel>, | 166 public CComObjectRootEx<CComMultiThreadModel>, |
| 155 public IOleControlImpl<T>, | 167 public IOleControlImpl<T>, |
| 156 public IOleObjectImpl<T>, | 168 public IOleObjectImpl<T>, |
| 157 public IOleInPlaceActiveObjectImpl<T>, | 169 public IOleInPlaceActiveObjectImpl<T>, |
| 158 public IViewObjectExImpl<T>, | 170 public IViewObjectExImpl<T>, |
| 159 public IOleInPlaceObjectWindowlessImpl<T>, | 171 public IOleInPlaceObjectWindowlessImpl<T>, |
| 160 public ISupportErrorInfo, | 172 public ISupportErrorInfo, |
| (...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 350 if (cmd == IDC_ABOUT_CHROME_FRAME) { | 362 if (cmd == IDC_ABOUT_CHROME_FRAME) { |
| 351 int tab_handle = automation_client_->tab()->handle(); | 363 int tab_handle = automation_client_->tab()->handle(); |
| 352 HostNavigate(GURL("about:version"), GURL(), NEW_WINDOW); | 364 HostNavigate(GURL("about:version"), GURL(), NEW_WINDOW); |
| 353 return true; | 365 return true; |
| 354 } else { | 366 } else { |
| 355 switch (cmd) { | 367 switch (cmd) { |
| 356 case IDS_CONTENT_CONTEXT_SAVEAUDIOAS: | 368 case IDS_CONTENT_CONTEXT_SAVEAUDIOAS: |
| 357 case IDS_CONTENT_CONTEXT_SAVEVIDEOAS: | 369 case IDS_CONTENT_CONTEXT_SAVEVIDEOAS: |
| 358 case IDS_CONTENT_CONTEXT_SAVEIMAGEAS: | 370 case IDS_CONTENT_CONTEXT_SAVEIMAGEAS: |
| 359 case IDS_CONTENT_CONTEXT_SAVELINKAS: { | 371 case IDS_CONTENT_CONTEXT_SAVELINKAS: { |
| 360 const GURL& referrer = params.frame_url.is_empty() ? | 372 GURL referrer, url; |
| 361 params.page_url : params.frame_url; | 373 chrome_frame::GetMiniContextMenuData(cmd, params, &referrer, &url); |
| 362 const GURL& url = (cmd == IDS_CONTENT_CONTEXT_SAVELINKAS ? | |
| 363 params.link_url : params.src_url); | |
| 364 DoFileDownloadInIE(UTF8ToWide(url.spec()).c_str()); | 374 DoFileDownloadInIE(UTF8ToWide(url.spec()).c_str()); |
| 365 return true; | 375 return true; |
| 366 } | 376 } |
| 367 } | 377 } |
| 368 } | 378 } |
| 369 | 379 |
| 370 return false; | 380 return false; |
| 371 } | 381 } |
| 372 | 382 |
| 373 // Should connections initiated by this class try to block | 383 // Should connections initiated by this class try to block |
| (...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 485 is_privileged()) { | 495 is_privileged()) { |
| 486 const char kScheme[] = "http"; | 496 const char kScheme[] = "http"; |
| 487 const char kHost[] = "local_host"; | 497 const char kHost[] = "local_host"; |
| 488 | 498 |
| 489 GURL::Replacements r; | 499 GURL::Replacements r; |
| 490 r.SetScheme(kScheme, url_parse::Component(0, sizeof(kScheme) -1)); | 500 r.SetScheme(kScheme, url_parse::Component(0, sizeof(kScheme) -1)); |
| 491 r.SetHost(kHost, url_parse::Component(0, sizeof(kHost) - 1)); | 501 r.SetHost(kHost, url_parse::Component(0, sizeof(kHost) - 1)); |
| 492 parsed_url = parsed_url.ReplaceComponents(r); | 502 parsed_url = parsed_url.ReplaceComponents(r); |
| 493 } | 503 } |
| 494 | 504 |
| 495 std::string url = base::StringPrintf( | 505 std::string url = chrome_frame::ActiveXCreateUrl(parsed_url, params); |
| 496 "%hs?attach_external_tab&%I64u&%d&%d&%d&%d&%d&%hs", | 506 HostNavigate(GURL(url), GURL(), chrome_frame::GetDisposition(params)); |
| 497 parsed_url.GetOrigin().spec().c_str(), | |
| 498 params.cookie, | |
| 499 params.disposition, | |
| 500 params.dimensions.x(), | |
| 501 params.dimensions.y(), | |
| 502 params.dimensions.width(), | |
| 503 params.dimensions.height(), | |
| 504 params.profile_name.c_str()); | |
| 505 HostNavigate(GURL(url), GURL(), params.disposition); | |
| 506 } | 507 } |
| 507 | 508 |
| 508 virtual void OnHandleContextMenu(HANDLE menu_handle, | 509 virtual void OnHandleContextMenu(HANDLE menu_handle, |
| 509 int align_flags, | 510 int align_flags, |
| 510 const MiniContextMenuParams& params) { | 511 const MiniContextMenuParams& params) { |
| 511 scoped_refptr<BasePlugin> ref(this); | 512 scoped_refptr<BasePlugin> ref(this); |
| 512 ChromeFramePlugin<T>::OnHandleContextMenu(menu_handle, align_flags, params); | 513 ChromeFramePlugin<T>::OnHandleContextMenu(menu_handle, align_flags, params); |
| 513 } | 514 } |
| 514 | 515 |
| 515 LRESULT OnCreate(UINT message, WPARAM wparam, LPARAM lparam, | 516 LRESULT OnCreate(UINT message, WPARAM wparam, LPARAM lparam, |
| (...skipping 755 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1271 EventHandlers onreadystatechanged_; | 1272 EventHandlers onreadystatechanged_; |
| 1272 EventHandlers onprivatemessage_; | 1273 EventHandlers onprivatemessage_; |
| 1273 EventHandlers onextensionready_; | 1274 EventHandlers onextensionready_; |
| 1274 | 1275 |
| 1275 // Handle network requests when host network stack is used. Passed to the | 1276 // Handle network requests when host network stack is used. Passed to the |
| 1276 // automation client on initialization. | 1277 // automation client on initialization. |
| 1277 scoped_ptr<UrlmonUrlRequestManager> url_fetcher_; | 1278 scoped_ptr<UrlmonUrlRequestManager> url_fetcher_; |
| 1278 }; | 1279 }; |
| 1279 | 1280 |
| 1280 #endif // CHROME_FRAME_CHROME_FRAME_ACTIVEX_BASE_H_ | 1281 #endif // CHROME_FRAME_CHROME_FRAME_ACTIVEX_BASE_H_ |
| OLD | NEW |