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

Unified Diff: chrome_frame/ready_mode/internal/ready_prompt_window.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
Index: chrome_frame/ready_mode/internal/ready_prompt_window.cc
===================================================================
--- chrome_frame/ready_mode/internal/ready_prompt_window.cc (revision 72310)
+++ chrome_frame/ready_mode/internal/ready_prompt_window.cc (working copy)
@@ -4,23 +4,47 @@
#include "chrome_frame/ready_mode/internal/ready_prompt_window.h"
+#include <Shellapi.h> // Must appear before atlctrlx.h
+#include <atlctrls.h>
robertshield 2011/01/24 16:10:21 I think you want to include atlapp.h and atlwin.h
erikwright (departed) 2011/01/24 17:14:01 They are already in ready_prompt_window.h (the dec
+
+// These seem to be required by atlctrlx?
erikwright (departed) 2011/01/24 06:58:39 Anyone know why atlctrlx.h is requiring min and ma
robertshield 2011/01/24 16:10:21 Follow the above comment, and probably won't need
erikwright (departed) 2011/01/24 17:14:01 Sadly, I still get the following: 1>s:\src\chrom
+template<class A>
+A min(A const& a, A const& b) { return a < b ? a : b; }
+
+template<class A>
+A max(A const& a, A const& b) { return a > b ? a : b; }
+
+#include <atlctrlx.h>
+#include <Exdisp.h>
+
#include "base/compiler_specific.h"
+#include "base/win/scoped_bstr.h"
+#include "base/win/scoped_comptr.h"
#include "chrome_frame/ready_mode/internal/ready_mode_state.h"
+#include "chrome_frame/simple_resource_loader.h"
+#include "grit/chromium_strings.h"
ReadyPromptWindow::ReadyPromptWindow()
: frame_(NULL),
weak_ptr_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)) {
}
+ReadyPromptWindow::~ReadyPromptWindow() {
+}
base::WeakPtr<ReadyPromptWindow> ReadyPromptWindow::Initialize(
- InfobarContent::Frame* frame, ReadyModeState* ready_mode_state) {
+ InfobarContent::Frame* frame, ReadyModeState* ready_mode_state,
+ IWebBrowser2* web_browser) {
DCHECK(frame != NULL);
DCHECK(frame_ == NULL);
DCHECK(ready_mode_state != NULL);
DCHECK(ready_mode_state_ == NULL);
+ DCHECK(web_browser != NULL);
+ DCHECK(web_browser_ == NULL);
robertshield 2011/01/24 16:10:21 if Initialize can't be called twice, consider havi
erikwright (departed) 2011/01/24 17:14:01 I think this is resolved with the change to factor
frame_ = frame;
ready_mode_state_.reset(ready_mode_state);
+ web_browser->AddRef();
+ web_browser_.Attach(web_browser);
DCHECK(!IsWindow());
@@ -30,6 +54,13 @@
return base::WeakPtr<ReadyPromptWindow>();
}
+ // Subclass the "Learn more." text to make it behave like a link. Clicks are
+ // routed to OnLearnMore().
+ ATL::CWindow rte = GetDlgItem(IDC_PROMPT_LINK);
+ link_.reset(new WTL::CHyperLink());
+ link_->SubclassWindow(rte);
+ link_->SetHyperLinkExtendedStyle(HLINK_NOTIFYBUTTON, HLINK_NOTIFYBUTTON);
+
return weak_ptr_factory_.GetWeakPtr();
}
@@ -69,6 +100,20 @@
return 0;
}
+LRESULT ReadyPromptWindow::OnLearnMore(WORD /*wParam*/,
+ LPNMHDR /*lParam*/,
+ BOOL& /*bHandled*/) {
+ VARIANT flags = { VT_I4 };
+ V_I4(&flags) = navOpenInNewWindow;
+ base::win::ScopedBstr location(SimpleResourceLoader::Get(
+ IDS_CHROME_FRAME_READY_MODE_LEARN_MORE_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;
+ return 0;
+}
+
void ReadyPromptWindow::OnFinalMessage(HWND) {
delete this;
}

Powered by Google App Engine
This is Rietveld 408576698