diff options
author | joi@chromium.org <joi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-03-23 19:08:02 +0000 |
---|---|---|
committer | joi@chromium.org <joi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-03-23 19:08:02 +0000 |
commit | 63fb3f856dda398cc82782a6be635a8c55df4f85 (patch) | |
tree | 05a1a4accbf5fbb723fc428091d62b2928192ba1 /chrome_frame | |
parent | bff69fd91bdab01463cb3505ccbbba51cd373d4b (diff) | |
download | chromium_src-63fb3f856dda398cc82782a6be635a8c55df4f85.zip chromium_src-63fb3f856dda398cc82782a6be635a8c55df4f85.tar.gz chromium_src-63fb3f856dda398cc82782a6be635a8c55df4f85.tar.bz2 |
Allow TabContentsDelegate classes to specify whether InfoBars are enabled.
Allow ChromeFrame to pass infobar enabled parameter to ExternalTabContainer.
BUG=2444936
Patch contributed by ericdingle@google.com
Original review at http://codereview.chromium.org/890005
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@42366 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome_frame')
-rw-r--r-- | chrome_frame/chrome_active_document.cc | 3 | ||||
-rw-r--r-- | chrome_frame/chrome_frame_activex.cc | 2 | ||||
-rw-r--r-- | chrome_frame/chrome_frame_automation.cc | 25 | ||||
-rw-r--r-- | chrome_frame/chrome_frame_automation.h | 7 | ||||
-rw-r--r-- | chrome_frame/chrome_frame_npapi.cc | 2 | ||||
-rw-r--r-- | chrome_frame/chrome_frame_npapi_unittest.cc | 14 | ||||
-rw-r--r-- | chrome_frame/chrome_frame_plugin.h | 16 | ||||
-rw-r--r-- | chrome_frame/test/automation_client_mock.cc | 73 | ||||
-rw-r--r-- | chrome_frame/test/chrome_frame_automation_mock.h | 26 |
9 files changed, 123 insertions, 45 deletions
diff --git a/chrome_frame/chrome_active_document.cc b/chrome_frame/chrome_active_document.cc index fe9499d..dbc2b8b 100644 --- a/chrome_frame/chrome_active_document.cc +++ b/chrome_frame/chrome_active_document.cc @@ -1004,7 +1004,8 @@ bool ChromeActiveDocument::LaunchUrl(const std::wstring& url, automation_client_->SetUrlFetcher(&url_fetcher_); - if (InitializeAutomation(GetHostProcessName(false), L"", IsIEInPrivate())) + if (InitializeAutomation(GetHostProcessName(false), L"", IsIEInPrivate(), + false)) return true; return false; diff --git a/chrome_frame/chrome_frame_activex.cc b/chrome_frame/chrome_frame_activex.cc index a88c5f1..f982072 100644 --- a/chrome_frame/chrome_frame_activex.cc +++ b/chrome_frame/chrome_frame_activex.cc @@ -447,7 +447,7 @@ HRESULT ChromeFrameActivex::IOleObject_SetClientSite( url_fetcher_.set_frame_busting(!is_privileged_); automation_client_->SetUrlFetcher(&url_fetcher_); if (!InitializeAutomation(profile_name, chrome_extra_arguments, - IsIEInPrivate())) { + IsIEInPrivate(), true)) { return E_FAIL; } } diff --git a/chrome_frame/chrome_frame_automation.cc b/chrome_frame/chrome_frame_automation.cc index 785e3e5..b170908 100644 --- a/chrome_frame/chrome_frame_automation.cc +++ b/chrome_frame/chrome_frame_automation.cc @@ -450,13 +450,10 @@ ChromeFrameAutomationClient::~ChromeFrameAutomationClient() { bool ChromeFrameAutomationClient::Initialize( ChromeFrameDelegate* chrome_frame_delegate, - int automation_server_launch_timeout, - bool perform_version_check, - const std::wstring& profile_name, - const std::wstring& extra_chrome_arguments, - bool incognito) { + const ChromeFrameLaunchParams& chrome_launch_params) { DCHECK(!IsWindow()); chrome_frame_delegate_ = chrome_frame_delegate; + chrome_launch_params_ = chrome_launch_params; ui_thread_id_ = PlatformThread::CurrentId(); #ifndef NDEBUG // In debug mode give more time to work with a debugger. @@ -464,10 +461,11 @@ bool ChromeFrameAutomationClient::Initialize( // Don't use INFINITE (which is -1) or even MAXINT since we will convert // from milliseconds to microseconds when stored in a base::TimeDelta, // thus * 1000. An hour should be enough. - automation_server_launch_timeout = 60 * 60 * 1000; + chrome_launch_params_.automation_server_launch_timeout = 60 * 60 * 1000; } else { - DCHECK_LT(automation_server_launch_timeout, MAXINT / 2000); - automation_server_launch_timeout *= 2; + DCHECK_LT(chrome_launch_params_.automation_server_launch_timeout, + MAXINT / 2000); + chrome_launch_params_.automation_server_launch_timeout *= 2; } #endif // NDEBUG @@ -490,13 +488,9 @@ bool ChromeFrameAutomationClient::Initialize( // InitializeComplete is called successfully. init_state_ = INITIALIZING; - chrome_launch_params_.automation_server_launch_timeout = - automation_server_launch_timeout; - chrome_launch_params_.profile_name = profile_name; - chrome_launch_params_.extra_chrome_arguments = extra_chrome_arguments; - chrome_launch_params_.perform_version_check = perform_version_check; - chrome_launch_params_.url = navigate_after_initialization_ ? GURL() : url_; - chrome_launch_params_.incognito_mode = incognito; + if (navigate_after_initialization_) { + chrome_launch_params_.url = url_; + } proxy_factory_->GetAutomationServer( static_cast<ProxyFactory::LaunchDelegate*>(this), @@ -841,6 +835,7 @@ void ChromeFrameAutomationClient::CreateExternalTab() { handle_top_level_requests_, chrome_launch_params_.url, chrome_launch_params_.referrer, + !chrome_launch_params_.is_widget_mode // Infobars disabled in widget mode. }; THREAD_SAFE_UMA_HISTOGRAM_CUSTOM_COUNTS( diff --git a/chrome_frame/chrome_frame_automation.h b/chrome_frame/chrome_frame_automation.h index f01d1b4..bd839a4 100644 --- a/chrome_frame/chrome_frame_automation.h +++ b/chrome_frame/chrome_frame_automation.h @@ -88,6 +88,7 @@ struct ChromeFrameLaunchParams { std::wstring extra_chrome_arguments; bool perform_version_check; bool incognito_mode; + bool is_widget_mode; }; // We must create and destroy automation proxy in a thread with a message loop. @@ -158,11 +159,7 @@ class ChromeFrameAutomationClient // Called from UI thread. virtual bool Initialize(ChromeFrameDelegate* chrome_frame_delegate, - int automation_server_launch_timeout, - bool perform_version_check, - const std::wstring& profile_name, - const std::wstring& extra_chrome_arguments, - bool incognito); + const ChromeFrameLaunchParams& chrome_launch_params); void Uninitialize(); virtual bool InitiateNavigation(const std::string& url, diff --git a/chrome_frame/chrome_frame_npapi.cc b/chrome_frame/chrome_frame_npapi.cc index 573d32e..6fbd76a 100644 --- a/chrome_frame/chrome_frame_npapi.cc +++ b/chrome_frame/chrome_frame_npapi.cc @@ -320,7 +320,7 @@ bool ChromeFrameNPAPI::Initialize(NPMIMEType mime_type, NPP instance, // TODO(stoyan): Ask host for specific interface whether to honor // host's in-private mode. return InitializeAutomation(profile_name, extra_arguments, - GetBrowserIncognitoMode()); + GetBrowserIncognitoMode(), true); } void ChromeFrameNPAPI::Uninitialize() { diff --git a/chrome_frame/chrome_frame_npapi_unittest.cc b/chrome_frame/chrome_frame_npapi_unittest.cc index b30d5e8..4d03b00 100644 --- a/chrome_frame/chrome_frame_npapi_unittest.cc +++ b/chrome_frame/chrome_frame_npapi_unittest.cc @@ -20,6 +20,7 @@ namespace { using ::testing::_; using ::testing::Eq; +using ::testing::Field; using ::testing::Invoke; using ::testing::Return; using ::testing::StrEq; @@ -80,9 +81,7 @@ class MockNPAPI: public ChromeFrameNPAPI { class MockAutomationClient: public ChromeFrameAutomationClient { public: - MOCK_METHOD6(Initialize, bool(ChromeFrameDelegate*, int, bool, - const std::wstring&, const std::wstring&, - bool)); + MOCK_METHOD2(Initialize, bool(ChromeFrameDelegate*, ChromeFrameLaunchParams)); MOCK_METHOD1(SetEnableExtensionAutomation, void(const std::vector<std::string>&)); // NOLINT }; @@ -127,7 +126,14 @@ class TestNPAPIPrivilegedApi: public ::testing::Test { EXPECT_CALL(*mock_proxy, Initialize(_, _)).WillRepeatedly(Return(false)); EXPECT_CALL(*mock_automation, - Initialize(_, _, true, StrEq(profile_name), StrEq(extra_args), false)) + Initialize(_, AllOf( + Field(&ChromeFrameLaunchParams::perform_version_check, true), + Field(&ChromeFrameLaunchParams::profile_name, + StrEq(profile_name)), + Field(&ChromeFrameLaunchParams::extra_chrome_arguments, + StrEq(extra_args)), + Field(&ChromeFrameLaunchParams::incognito_mode, is_incognito), + Field(&ChromeFrameLaunchParams::is_widget_mode, true)))) .WillOnce(Return(true)); if (expect_privilege_check) { diff --git a/chrome_frame/chrome_frame_plugin.h b/chrome_frame/chrome_frame_plugin.h index 078a611..641d7a7 100644 --- a/chrome_frame/chrome_frame_plugin.h +++ b/chrome_frame/chrome_frame_plugin.h @@ -51,14 +51,22 @@ END_MSG_MAP() bool InitializeAutomation(const std::wstring& profile_name, const std::wstring& extra_chrome_arguments, - bool incognito) { + bool incognito, bool is_widget_mode) { DCHECK(IsValid()); // We don't want to do incognito when privileged, since we're // running in browser chrome or some other privileged context. bool incognito_mode = !is_privileged_ && incognito; - return automation_client_->Initialize(this, kCommandExecutionTimeout, true, - profile_name, extra_chrome_arguments, - incognito_mode); + ChromeFrameLaunchParams chrome_launch_params = { + kCommandExecutionTimeout, + GURL(), + GURL(), + profile_name, + extra_chrome_arguments, + true, + incognito_mode, + is_widget_mode + }; + return automation_client_->Initialize(this, chrome_launch_params); } // ChromeFrameDelegate implementation diff --git a/chrome_frame/test/automation_client_mock.cc b/chrome_frame/test/automation_client_mock.cc index f699635..b64a7cb 100644 --- a/chrome_frame/test/automation_client_mock.cc +++ b/chrome_frame/test/automation_client_mock.cc @@ -100,7 +100,17 @@ TEST(CFACWithChrome, CreateTooFast) { .Times(1) .WillOnce(QUIT_LOOP(loop)); - EXPECT_TRUE(client->Initialize(&cfd, timeout, false, profile, L"", false)); + ChromeFrameLaunchParams cfp = { + timeout, + GURL(), + GURL(), + profile, + L"", + false, + false, + false + }; + EXPECT_TRUE(client->Initialize(&cfd, cfp)); loop.RunFor(10); client->Uninitialize(); } @@ -125,7 +135,17 @@ TEST(CFACWithChrome, CreateNotSoFast) { EXPECT_CALL(cfd, OnAutomationServerLaunchFailed(_, _)) .Times(0); - EXPECT_TRUE(client->Initialize(&cfd, timeout, false, profile, L"", false)); + ChromeFrameLaunchParams cfp = { + timeout, + GURL(), + GURL(), + profile, + L"", + false, + false, + false + }; + EXPECT_TRUE(client->Initialize(&cfd, cfp)); loop.RunFor(11); client->Uninitialize(); @@ -165,7 +185,17 @@ TEST(CFACWithChrome, NavigateOk) { .WillOnce(QUIT_LOOP(loop)); } - EXPECT_TRUE(client->Initialize(&cfd, timeout, false, profile, L"", false)); + ChromeFrameLaunchParams cfp = { + timeout, + GURL(), + GURL(), + profile, + L"", + false, + false, + false + }; + EXPECT_TRUE(client->Initialize(&cfd, cfp)); loop.RunFor(10); client->Uninitialize(); client = NULL; @@ -204,7 +234,17 @@ TEST(CFACWithChrome, NavigateFailed) { .Times(1) .WillOnce(QUIT_LOOP_SOON(loop, 2)); - EXPECT_TRUE(client->Initialize(&cfd, 10000, false, profile, L"", false)); + ChromeFrameLaunchParams cfp = { + 10000, + GURL(), + GURL(), + profile, + L"", + false, + false, + false + }; + EXPECT_TRUE(client->Initialize(&cfd, cfp)); loop.RunFor(10); client->Uninitialize(); @@ -237,7 +277,17 @@ TEST_F(CFACMockTest, MockedCreateTabOk) { EXPECT_CALL(proxy_, CancelAsync(_)).Times(testing::AnyNumber()); // Here we go! - EXPECT_TRUE(client_->Initialize(&cfd_, timeout, false, profile_, L"", false)); + ChromeFrameLaunchParams cfp = { + timeout, + GURL(), + GURL(), + profile_, + L"", + false, + false, + false + }; + EXPECT_TRUE(client_->Initialize(&cfd_, cfp)); loop_.RunFor(10); client_->Uninitialize(); } @@ -262,8 +312,17 @@ TEST_F(CFACMockTest, MockedCreateTabFailed) { Set_CFD_LaunchFailed(AUTOMATION_CREATE_TAB_FAILED); // Here we go! - EXPECT_TRUE(client_->Initialize(&cfd_, timeout_, false, profile_, L"", - false)); + ChromeFrameLaunchParams cfp = { + timeout_, + GURL(), + GURL(), + profile_, + L"", + false, + false, + false + }; + EXPECT_TRUE(client_->Initialize(&cfd_, cfp)); loop_.RunFor(4); client_->Uninitialize(); } diff --git a/chrome_frame/test/chrome_frame_automation_mock.h b/chrome_frame/test/chrome_frame_automation_mock.h index 6fea200..d751f1b 100644 --- a/chrome_frame/test/chrome_frame_automation_mock.h +++ b/chrome_frame/test/chrome_frame_automation_mock.h @@ -20,13 +20,23 @@ class AutomationMockDelegate AutomationMockDelegate(MessageLoop* caller_message_loop, int launch_timeout, bool perform_version_check, const std::wstring& profile_name, - const std::wstring& extra_chrome_arguments, bool incognito) + const std::wstring& extra_chrome_arguments, bool incognito, + bool is_widget_mode) : caller_message_loop_(caller_message_loop), is_connected_(false), navigation_result_(false) { test_server_.SetUp(); automation_client_ = new ChromeFrameAutomationClient; - automation_client_->Initialize(this, launch_timeout, perform_version_check, - profile_name, extra_chrome_arguments, incognito); + ChromeFrameLaunchParams cfp = { + launch_timeout, + GURL(), + GURL(), + profile_name, + extra_chrome_arguments, + perform_version_check, + incognito, + is_widget_mode + }; + automation_client_->Initialize(this, cfp); } ~AutomationMockDelegate() { if (automation_client_.get()) { @@ -130,7 +140,8 @@ class AutomationMockLaunch typedef AutomationMockDelegate<AutomationMockLaunch> Base; AutomationMockLaunch(MessageLoop* caller_message_loop, int launch_timeout) - : Base(caller_message_loop, launch_timeout, true, L"", L"", false) { + : Base(caller_message_loop, launch_timeout, true, L"", L"", false, + false) { } virtual void OnAutomationServerReady() { Base::OnAutomationServerReady(); @@ -147,7 +158,8 @@ class AutomationMockNavigate typedef AutomationMockDelegate<AutomationMockNavigate> Base; AutomationMockNavigate(MessageLoop* caller_message_loop, int launch_timeout) - : Base(caller_message_loop, launch_timeout, true, L"", L"", false) { + : Base(caller_message_loop, launch_timeout, true, L"", L"", false, + false) { } virtual void OnLoad(int tab_handle, const GURL& url) { Base::OnLoad(tab_handle, url); @@ -161,7 +173,7 @@ class AutomationMockPostMessage typedef AutomationMockDelegate<AutomationMockPostMessage> Base; AutomationMockPostMessage(MessageLoop* caller_message_loop, int launch_timeout) - : Base(caller_message_loop, launch_timeout, true, L"", L"", false), + : Base(caller_message_loop, launch_timeout, true, L"", L"", false, false), postmessage_result_(false) {} bool postmessage_result() const { return postmessage_result_; @@ -189,7 +201,7 @@ class AutomationMockHostNetworkRequestStart typedef AutomationMockDelegate<AutomationMockHostNetworkRequestStart> Base; AutomationMockHostNetworkRequestStart(MessageLoop* caller_message_loop, int launch_timeout) - : Base(caller_message_loop, launch_timeout, true, L"", L"", false), + : Base(caller_message_loop, launch_timeout, true, L"", L"", false, false), request_start_result_(false) { if (automation()) { automation()->set_use_chrome_network(false); |