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

Unified Diff: chrome_frame/ready_mode/ready_mode.cc

Issue 6314016: Update the Ready Mode UI in response to feedback from UI leads, Chrome Frame ... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 years, 11 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome_frame/ready_mode/internal/url_launcher.h ('k') | chrome_frame/test/ready_mode_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome_frame/ready_mode/ready_mode.cc
===================================================================
--- chrome_frame/ready_mode/ready_mode.cc (revision 72333)
+++ chrome_frame/ready_mode/ready_mode.cc (working copy)
@@ -21,6 +21,7 @@
#include "chrome_frame/ready_mode/internal/ready_mode_web_browser_adapter.h"
#include "chrome_frame/ready_mode/internal/ready_prompt_content.h"
#include "chrome_frame/ready_mode/internal/registry_ready_mode_state.h"
+#include "chrome_frame/ready_mode/internal/url_launcher.h"
#include "chrome_frame/utils.h"
namespace {
@@ -90,6 +91,33 @@
DISALLOW_COPY_AND_ASSIGN(BrowserObserver);
}; // class BrowserObserver
+// Implements launching of a URL in an instance of IWebBrowser2.
+class UrlLauncherImpl : public UrlLauncher {
+ public:
+ explicit UrlLauncherImpl(IWebBrowser2* web_browser);
+
+ // UrlLauncher implementation
+ void LaunchUrl(const std::wstring& url);
+
+ private:
+ base::win::ScopedComPtr<IWebBrowser2> web_browser_;
+}; // class UrlLaucherImpl
+
+UrlLauncherImpl::UrlLauncherImpl(IWebBrowser2* web_browser) {
+ DCHECK(web_browser);
+ web_browser_ = web_browser;
+}
+
+void UrlLauncherImpl::LaunchUrl(const std::wstring& url) {
+ VARIANT flags = { VT_I4 };
+ V_I4(&flags) = navOpenInNewWindow;
+ base::win::ScopedBstr location(url.c_str());
+
+ HRESULT hr = web_browser_->Navigate(location, &flags, NULL, NULL, NULL);
+ DLOG_IF(ERROR, FAILED(hr)) << "Failed to invoke Navigate on IWebBrowser2. "
+ << "Error: " << hr;
+}
+
StateObserver::StateObserver(
const base::WeakPtr<BrowserObserver>& ready_mode_ui)
: ready_mode_ui_(ready_mode_ui) {
@@ -200,9 +228,12 @@
base::TimeDelta::FromMinutes(kTemporaryDeclineDurationMinutes),
ready_mode_state_observer.release()));
+ // Owned by infobar_content
+ scoped_ptr<UrlLauncher> url_launcher(new UrlLauncherImpl(web_browser_));
+
// Owned by infobar_manager
- scoped_ptr<InfobarContent> infobar_content(
- new ReadyPromptContent(ready_mode_state.release()));
+ scoped_ptr<InfobarContent> infobar_content(new ReadyPromptContent(
+ ready_mode_state.release(), url_launcher.release()));
infobar_manager->Show(infobar_content.release(), TOP_INFOBAR);
}
« no previous file with comments | « chrome_frame/ready_mode/internal/url_launcher.h ('k') | chrome_frame/test/ready_mode_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698