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

Side by Side Diff: chrome_frame/chrome_active_document.cc

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_frame/chrome_active_document.h ('k') | chrome_frame/chrome_frame_activex_base.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 // Implementation of ChromeActiveDocument 5 // Implementation of ChromeActiveDocument
6 #include "chrome_frame/chrome_active_document.h" 6 #include "chrome_frame/chrome_active_document.h"
7 7
8 #include <hlink.h> 8 #include <hlink.h>
9 #include <htiface.h> 9 #include <htiface.h>
10 #include <mshtmcid.h> 10 #include <mshtmcid.h>
(...skipping 15 matching lines...) Expand all
26 #include "base/string_util.h" 26 #include "base/string_util.h"
27 #include "base/thread.h" 27 #include "base/thread.h"
28 #include "base/thread_local.h" 28 #include "base/thread_local.h"
29 29
30 #include "grit/generated_resources.h" 30 #include "grit/generated_resources.h"
31 #include "chrome/browser/tab_contents/tab_contents.h" 31 #include "chrome/browser/tab_contents/tab_contents.h"
32 #include "chrome/common/chrome_constants.h" 32 #include "chrome/common/chrome_constants.h"
33 #include "chrome/common/navigation_types.h" 33 #include "chrome/common/navigation_types.h"
34 #include "chrome/test/automation/browser_proxy.h" 34 #include "chrome/test/automation/browser_proxy.h"
35 #include "chrome/test/automation/tab_proxy.h" 35 #include "chrome/test/automation/tab_proxy.h"
36 #include "chrome_frame/bho.h"
36 #include "chrome_frame/utils.h" 37 #include "chrome_frame/utils.h"
37 38
38 const wchar_t kChromeAttachExternalTabPrefix[] = L"attach_external_tab"; 39 const wchar_t kChromeAttachExternalTabPrefix[] = L"attach_external_tab";
39 40
40 static const wchar_t kUseChromeNetworking[] = L"UseChromeNetworking"; 41 static const wchar_t kUseChromeNetworking[] = L"UseChromeNetworking";
41 static const wchar_t kHandleTopLevelRequests[] = 42 static const wchar_t kHandleTopLevelRequests[] =
42 L"HandleTopLevelRequests"; 43 L"HandleTopLevelRequests";
43 44
44 base::ThreadLocalPointer<ChromeActiveDocument> g_active_doc_cache; 45 base::ThreadLocalPointer<ChromeActiveDocument> g_active_doc_cache;
45 46
(...skipping 468 matching lines...) Expand 10 before | Expand all | Expand 10 after
514 } 515 }
515 516
516 find_dialog_.ShowWindow(SW_SHOW); 517 find_dialog_.ShowWindow(SW_SHOW);
517 } 518 }
518 } 519 }
519 520
520 void ChromeActiveDocument::OnViewSource() { 521 void ChromeActiveDocument::OnViewSource() {
521 DCHECK(navigation_info_.url.is_valid()); 522 DCHECK(navigation_info_.url.is_valid());
522 std::string url_to_open = "view-source:"; 523 std::string url_to_open = "view-source:";
523 url_to_open += navigation_info_.url.spec(); 524 url_to_open += navigation_info_.url.spec();
524 OnOpenURL(0, GURL(url_to_open), NEW_WINDOW); 525 OnOpenURL(0, GURL(url_to_open), GURL(), NEW_WINDOW);
525 } 526 }
526 527
527 void ChromeActiveDocument::OnDetermineSecurityZone(const GUID* cmd_group_guid, 528 void ChromeActiveDocument::OnDetermineSecurityZone(const GUID* cmd_group_guid,
528 DWORD command_id, 529 DWORD command_id,
529 DWORD cmd_exec_opt, 530 DWORD cmd_exec_opt,
530 VARIANT* in_args, 531 VARIANT* in_args,
531 VARIANT* out_args) { 532 VARIANT* out_args) {
532 if (out_args != NULL) { 533 if (out_args != NULL) {
533 out_args->vt = VT_UI4; 534 out_args->vt = VT_UI4;
534 out_args->ulVal = URLZONE_INTERNET; 535 out_args->ulVal = URLZONE_INTERNET;
535 } 536 }
536 } 537 }
537 538
538 void ChromeActiveDocument::OnOpenURL(int tab_handle, const GURL& url_to_open, 539 void ChromeActiveDocument::OnOpenURL(int tab_handle,
540 const GURL& url_to_open,
541 const GURL& referrer,
539 int open_disposition) { 542 int open_disposition) {
540 // If the disposition indicates that we should be opening the URL in the 543 // If the disposition indicates that we should be opening the URL in the
541 // current tab, then we can reuse the ChromeFrameAutomationClient instance 544 // current tab, then we can reuse the ChromeFrameAutomationClient instance
542 // maintained by the current ChromeActiveDocument instance. We cache this 545 // maintained by the current ChromeActiveDocument instance. We cache this
543 // instance so that it can be used by the new ChromeActiveDocument instance 546 // instance so that it can be used by the new ChromeActiveDocument instance
544 // which may be instantiated for handling the new URL. 547 // which may be instantiated for handling the new URL.
545 if (open_disposition == CURRENT_TAB) { 548 if (open_disposition == CURRENT_TAB) {
546 // Grab a reference to ensure that the document remains valid. 549 // Grab a reference to ensure that the document remains valid.
547 AddRef(); 550 AddRef();
548 g_active_doc_cache.Set(this); 551 g_active_doc_cache.Set(this);
549 } 552 }
550 553
551 Base::OnOpenURL(tab_handle, url_to_open, open_disposition); 554 Base::OnOpenURL(tab_handle, url_to_open, referrer, open_disposition);
552 } 555 }
553 556
554 void ChromeActiveDocument::OnLoad(int tab_handle, const GURL& url) { 557 void ChromeActiveDocument::OnLoad(int tab_handle, const GURL& url) {
555 if (ready_state_ < READYSTATE_COMPLETE) { 558 if (ready_state_ < READYSTATE_COMPLETE) {
556 ready_state_ = READYSTATE_COMPLETE; 559 ready_state_ = READYSTATE_COMPLETE;
557 FireOnChanged(DISPID_READYSTATE); 560 FireOnChanged(DISPID_READYSTATE);
558 } 561 }
559 } 562 }
560 563
561 bool ChromeActiveDocument::PreProcessContextMenu(HMENU menu) { 564 bool ChromeActiveDocument::PreProcessContextMenu(HMENU menu) {
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after
716 719
717 automation_client_->AttachExternalTab(external_tab_cookie); 720 automation_client_->AttachExternalTab(external_tab_cookie);
718 } else { 721 } else {
719 // Initiate navigation before launching chrome so that the url will be 722 // Initiate navigation before launching chrome so that the url will be
720 // cached and sent with launch settings. 723 // cached and sent with launch settings.
721 if (is_new_navigation) { 724 if (is_new_navigation) {
722 url_.Reset(::SysAllocString(url.c_str())); 725 url_.Reset(::SysAllocString(url.c_str()));
723 if (url_.Length()) { 726 if (url_.Length()) {
724 std::string utf8_url; 727 std::string utf8_url;
725 WideToUTF8(url_, url_.Length(), &utf8_url); 728 WideToUTF8(url_, url_.Length(), &utf8_url);
726 if (!automation_client_->InitiateNavigation(utf8_url, is_privileged_)) { 729
730 std::string referrer;
731 Bho* chrome_frame_bho = Bho::GetCurrentThreadBhoInstance();
732 DCHECK(chrome_frame_bho != NULL);
733 if (chrome_frame_bho) {
734 referrer = chrome_frame_bho->referrer();
735 }
736 if (!automation_client_->InitiateNavigation(utf8_url,
737 referrer,
738 is_privileged_)) {
727 DLOG(ERROR) << "Invalid URL: " << url; 739 DLOG(ERROR) << "Invalid URL: " << url;
728 Error(L"Invalid URL"); 740 Error(L"Invalid URL");
729 url_.Reset(); 741 url_.Reset();
730 return false; 742 return false;
731 } 743 }
732 744
733 DLOG(INFO) << "Url is " << url_; 745 DLOG(INFO) << "Url is " << url_;
734 } 746 }
735 } 747 }
736 } 748 }
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
796 ScopedComPtr<IBrowserService> browser_service; 808 ScopedComPtr<IBrowserService> browser_service;
797 DoQueryService(SID_SShellBrowser, m_spClientSite, browser_service.Receive()); 809 DoQueryService(SID_SShellBrowser, m_spClientSite, browser_service.Receive());
798 if (browser_service) { 810 if (browser_service) {
799 ScopedComPtr<ITravelLog> travel_log; 811 ScopedComPtr<ITravelLog> travel_log;
800 browser_service->GetTravelLog(travel_log.Receive()); 812 browser_service->GetTravelLog(travel_log.Receive());
801 if (travel_log) { 813 if (travel_log) {
802 travel_log->Travel(browser_service, offset); 814 travel_log->Travel(browser_service, offset);
803 } 815 }
804 } 816 }
805 } 817 }
OLDNEW
« no previous file with comments | « chrome_frame/chrome_active_document.h ('k') | chrome_frame/chrome_frame_activex_base.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698