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

Unified Diff: chrome_frame/turndown_prompt/turndown_prompt_window.cc

Issue 17153006: Chrome Frame turndown prompt. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase to r208076 Created 7 years, 6 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/turndown_prompt/turndown_prompt_window.h ('k') | chrome_frame/utils.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome_frame/turndown_prompt/turndown_prompt_window.cc
diff --git a/chrome_frame/turndown_prompt/turndown_prompt_window.cc b/chrome_frame/turndown_prompt/turndown_prompt_window.cc
new file mode 100644
index 0000000000000000000000000000000000000000..851f1c01add6c2e9f2102b0825fc48d5d48af7f2
--- /dev/null
+++ b/chrome_frame/turndown_prompt/turndown_prompt_window.cc
@@ -0,0 +1,118 @@
+// Copyright 2013 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome_frame/turndown_prompt/turndown_prompt_window.h"
+
+#include <atlctrls.h>
+#include <commctrl.h>
+#include <shellapi.h>
+
+#include "base/compiler_specific.h"
+#include "chrome_frame/ready_mode/internal/url_launcher.h"
+#include "chrome_frame/simple_resource_loader.h"
+#include "chrome_frame/utils.h"
+#include "grit/chrome_frame_dialogs.h"
+#include "grit/chromium_strings.h"
+
+// atlctrlx.h requires 'min' and 'max' macros, the definition of which conflicts
+// with STL headers. Hence we include them out of the order defined by style
+// guidelines. As a result you may not refer to std::min or std::max in this
+// file.
+#include <minmax.h> // NOLINT
+#include <atlctrlx.h> // NOLINT
+
+base::WeakPtr<TurndownPromptWindow> TurndownPromptWindow::CreateInstance(
+ InfobarContent::Frame* frame,
+ UrlLauncher* url_launcher,
+ const base::Closure& uninstall_callback) {
+ DCHECK(frame != NULL);
+ DCHECK(url_launcher != NULL);
+
+ base::WeakPtr<TurndownPromptWindow> instance(
+ (new TurndownPromptWindow(frame, url_launcher, uninstall_callback))
+ ->weak_ptr_factory_.GetWeakPtr());
+
+ DCHECK(!instance->IsWindow());
+
+ if (instance->Create(frame->GetFrameWindow()) == NULL) {
+ DPLOG(ERROR) << "Failed to create HWND for TurndownPromptWindow.";
+ return base::WeakPtr<TurndownPromptWindow>();
+ }
+
+ // Subclass the "Learn more." text to make it behave like a link. Clicks are
+ // routed to OnLearnMore().
+ CWindow rte = instance->GetDlgItem(IDC_TD_PROMPT_LINK);
+ instance->link_.reset(new CHyperLink());
+ instance->link_->SubclassWindow(rte);
+ instance->link_->SetHyperLinkExtendedStyle(HLINK_NOTIFYBUTTON,
+ HLINK_NOTIFYBUTTON);
+
+ // Substitute the proper text given the current IE version.
+ CWindow text = instance->GetDlgItem(IDC_TD_PROMPT_MESSAGE);
+ string16 prompt_text(GetPromptText());
+ if (!prompt_text.empty())
+ text.SetWindowText(prompt_text.c_str());
+
+ return instance;
+}
+
+TurndownPromptWindow::TurndownPromptWindow(
+ InfobarContent::Frame* frame,
+ UrlLauncher* url_launcher,
+ const base::Closure& uninstall_closure)
+ : frame_(frame),
+ url_launcher_(url_launcher),
+ uninstall_closure_(uninstall_closure),
+ weak_ptr_factory_(this) {
+}
+
+TurndownPromptWindow::~TurndownPromptWindow() {}
+
+void TurndownPromptWindow::OnFinalMessage(HWND) {
+ delete this;
+}
+
+void TurndownPromptWindow::OnDestroy() {
+ frame_ = NULL;
+}
+
+BOOL TurndownPromptWindow::OnInitDialog(CWindow wndFocus, LPARAM lInitParam) {
+ DlgResize_Init(false); // false => 'no gripper'
+ return TRUE;
+}
+
+LRESULT TurndownPromptWindow::OnLearnMore(WORD /*wParam*/,
+ LPNMHDR /*lParam*/,
+ BOOL& /*bHandled*/) {
+ url_launcher_->LaunchUrl(SimpleResourceLoader::Get(
+ IDS_CHROME_FRAME_TURNDOWN_LEARN_MORE_URL));
+ return 0;
+}
+
+LRESULT TurndownPromptWindow::OnUninstall(WORD /*wNotifyCode*/,
+ WORD /*wID*/,
+ HWND /*hWndCtl*/,
+ BOOL& /*bHandled*/) {
+ frame_->CloseInfobar();
+ if (!uninstall_closure_.is_null())
+ uninstall_closure_.Run();
+ return 0;
+}
+
+LRESULT TurndownPromptWindow::OnDismiss(WORD /*wNotifyCode*/,
+ WORD /*wID*/,
+ HWND /*hWndCtl*/,
+ BOOL& /*bHandled*/) {
+ frame_->CloseInfobar();
+ return 0;
+}
+
+// static
+string16 TurndownPromptWindow::GetPromptText() {
+ IEVersion ie_version = GetIEVersion();
+ int message_id = IDS_CHROME_FRAME_TURNDOWN_TEXT_IE_NEWER;
+ if (ie_version == IE_6 || ie_version == IE_7 || ie_version == IE_8)
+ message_id = IDS_CHROME_FRAME_TURNDOWN_TEXT_IE_OLDER;
+ return SimpleResourceLoader::GetInstance()->Get(message_id);
+}
« no previous file with comments | « chrome_frame/turndown_prompt/turndown_prompt_window.h ('k') | chrome_frame/utils.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698