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

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,33 +4,64 @@
#include "chrome_frame/ready_mode/internal/ready_prompt_window.h"
+#include <Shellapi.h> // Must appear before atlctrlx.h
+#include <atlctrls.h>
+
+// These seem to be required by atlctrlx?
tommi (sloooow) - chröme 2011/01/24 17:54:23 include atlbase first?
erikwright (departed) 2011/01/24 18:55:19 It's done transitively in ready_prompt_window.h
+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/ready_mode/internal/url_launcher.h"
+#include "chrome_frame/simple_resource_loader.h"
+#include "grit/chromium_strings.h"
-ReadyPromptWindow::ReadyPromptWindow()
- : frame_(NULL),
+ReadyPromptWindow::ReadyPromptWindow(
+ InfobarContent::Frame* frame, ReadyModeState* ready_mode_state,
+ UrlLauncher* url_launcher)
+ : frame_(frame),
+ ready_mode_state_(ready_mode_state),
+ url_launcher_(url_launcher),
weak_ptr_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)) {
}
+ReadyPromptWindow::~ReadyPromptWindow() {
+}
-base::WeakPtr<ReadyPromptWindow> ReadyPromptWindow::Initialize(
- InfobarContent::Frame* frame, ReadyModeState* ready_mode_state) {
+base::WeakPtr<ReadyPromptWindow> ReadyPromptWindow::CreateInstance(
+ InfobarContent::Frame* frame, ReadyModeState* ready_mode_state,
+ UrlLauncher* url_launcher) {
DCHECK(frame != NULL);
- DCHECK(frame_ == NULL);
DCHECK(ready_mode_state != NULL);
- DCHECK(ready_mode_state_ == NULL);
+ DCHECK(url_launcher != NULL);
- frame_ = frame;
- ready_mode_state_.reset(ready_mode_state);
+ base::WeakPtr<ReadyPromptWindow> instance((new ReadyPromptWindow(
+ frame, ready_mode_state, url_launcher))->weak_ptr_factory_.GetWeakPtr());
- DCHECK(!IsWindow());
+ DCHECK(!instance->IsWindow());
- if (Create(frame->GetFrameWindow()) == NULL) {
+ if (instance->Create(frame->GetFrameWindow()) == NULL) {
DPLOG(ERROR) << "Failed to create HWND for ReadyPromptWindow.";
- delete this;
return base::WeakPtr<ReadyPromptWindow>();
tommi (sloooow) - chröme 2011/01/24 17:54:23 will instance get deleted?
erikwright (departed) 2011/01/24 18:55:19 Yes - it's a weak ptr with no other references.
}
- return weak_ptr_factory_.GetWeakPtr();
+ // Subclass the "Learn more." text to make it behave like a link. Clicks are
+ // routed to OnLearnMore().
+ ATL::CWindow rte = instance->GetDlgItem(IDC_PROMPT_LINK);
tommi (sloooow) - chröme 2011/01/24 17:54:23 I don't think you need the ATL:: prefix
erikwright (departed) 2011/01/24 18:55:19 Done.
+ instance->link_.reset(new WTL::CHyperLink());
+ instance->link_->SubclassWindow(rte);
+ instance->link_->SetHyperLinkExtendedStyle(HLINK_NOTIFYBUTTON,
+ HLINK_NOTIFYBUTTON);
+
+ return instance;
}
void ReadyPromptWindow::OnDestroy() {
@@ -69,6 +100,14 @@
return 0;
}
+LRESULT ReadyPromptWindow::OnLearnMore(WORD /*wParam*/,
tommi (sloooow) - chröme 2011/01/24 17:54:23 uncomment arguments and remove hungarian (for othe
erikwright (departed) 2011/01/24 18:55:19 The names correspond to the function 'prototypes'
+ LPNMHDR /*lParam*/,
+ BOOL& /*bHandled*/) {
+ url_launcher_->LaunchUrl(SimpleResourceLoader::Get(
+ IDS_CHROME_FRAME_READY_MODE_LEARN_MORE_URL));
+ return 0;
+}
+
void ReadyPromptWindow::OnFinalMessage(HWND) {
delete this;
}

Powered by Google App Engine
This is Rietveld 408576698