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

Side by Side 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome_frame/ready_mode/ready_mode.h" 5 #include "chrome_frame/ready_mode/ready_mode.h"
6 6
7 #include <atlbase.h> 7 #include <atlbase.h>
8 #include <shlguid.h> 8 #include <shlguid.h>
9 9
10 #include "base/compiler_specific.h" 10 #include "base/compiler_specific.h"
11 #include "base/logging.h" 11 #include "base/logging.h"
12 #include "base/linked_ptr.h" 12 #include "base/linked_ptr.h"
13 #include "base/scoped_ptr.h" 13 #include "base/scoped_ptr.h"
14 #include "base/weak_ptr.h" 14 #include "base/weak_ptr.h"
15 #include "base/win/scoped_bstr.h" 15 #include "base/win/scoped_bstr.h"
16 #include "base/win/scoped_comptr.h" 16 #include "base/win/scoped_comptr.h"
17 #include "base/win/win_util.h" 17 #include "base/win/win_util.h"
18 #include "net/base/registry_controlled_domain.h" 18 #include "net/base/registry_controlled_domain.h"
19 #include "chrome/installer/util/package_properties.h" 19 #include "chrome/installer/util/package_properties.h"
20 #include "chrome_frame/infobars/infobar_manager.h" 20 #include "chrome_frame/infobars/infobar_manager.h"
21 #include "chrome_frame/ready_mode/internal/ready_mode_web_browser_adapter.h" 21 #include "chrome_frame/ready_mode/internal/ready_mode_web_browser_adapter.h"
22 #include "chrome_frame/ready_mode/internal/ready_prompt_content.h" 22 #include "chrome_frame/ready_mode/internal/ready_prompt_content.h"
23 #include "chrome_frame/ready_mode/internal/registry_ready_mode_state.h" 23 #include "chrome_frame/ready_mode/internal/registry_ready_mode_state.h"
24 #include "chrome_frame/ready_mode/internal/url_launcher.h"
24 #include "chrome_frame/utils.h" 25 #include "chrome_frame/utils.h"
25 26
26 namespace { 27 namespace {
27 28
28 // Temporarily disable Ready Mode for 36 hours when the user so indicates. 29 // Temporarily disable Ready Mode for 36 hours when the user so indicates.
29 const int kTemporaryDeclineDurationMinutes = 60 * 36; 30 const int kTemporaryDeclineDurationMinutes = 60 * 36;
30 31
31 class BrowserObserver; 32 class BrowserObserver;
32 33
33 // A helper for BrowserObserver to observe the user's choice in the Ready Mode 34 // A helper for BrowserObserver to observe the user's choice in the Ready Mode
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
83 GURL rendered_url_; 84 GURL rendered_url_;
84 linked_ptr<ready_mode::Delegate> chrome_frame_; 85 linked_ptr<ready_mode::Delegate> chrome_frame_;
85 base::win::ScopedComPtr<IWebBrowser2> web_browser_; 86 base::win::ScopedComPtr<IWebBrowser2> web_browser_;
86 // The adapter owns us, so we use a weak reference 87 // The adapter owns us, so we use a weak reference
87 ReadyModeWebBrowserAdapter* adapter_; 88 ReadyModeWebBrowserAdapter* adapter_;
88 base::WeakPtrFactory<BrowserObserver> weak_ptr_factory_; 89 base::WeakPtrFactory<BrowserObserver> weak_ptr_factory_;
89 90
90 DISALLOW_COPY_AND_ASSIGN(BrowserObserver); 91 DISALLOW_COPY_AND_ASSIGN(BrowserObserver);
91 }; // class BrowserObserver 92 }; // class BrowserObserver
92 93
94 // Implements launching of a URL in an instance of IWebBrowser2.
95 class UrlLauncherImpl : public UrlLauncher {
96 public:
97 explicit UrlLauncherImpl(IWebBrowser2* web_browser);
98
99 // UrlLauncher implementation
100 void LaunchUrl(const std::wstring& url);
101
102 private:
103 base::win::ScopedComPtr<IWebBrowser2> web_browser_;
104 }; // class UrlLaucherImpl
105
106 UrlLauncherImpl::UrlLauncherImpl(IWebBrowser2* web_browser) {
107 DCHECK(web_browser);
108 web_browser_ = web_browser;
109 }
110
111 void UrlLauncherImpl::LaunchUrl(const std::wstring& url) {
112 VARIANT flags = { VT_I4 };
113 V_I4(&flags) = navOpenInNewWindow;
114 base::win::ScopedBstr location(url.c_str());
115
116 HRESULT hr = web_browser_->Navigate(location, &flags, NULL, NULL, NULL);
117 DLOG_IF(ERROR, FAILED(hr)) << "Failed to invoke Navigate on IWebBrowser2. "
118 << "Error: " << hr;
119 }
120
93 StateObserver::StateObserver( 121 StateObserver::StateObserver(
94 const base::WeakPtr<BrowserObserver>& ready_mode_ui) 122 const base::WeakPtr<BrowserObserver>& ready_mode_ui)
95 : ready_mode_ui_(ready_mode_ui) { 123 : ready_mode_ui_(ready_mode_ui) {
96 } 124 }
97 125
98 StateObserver::~StateObserver() { 126 StateObserver::~StateObserver() {
99 } 127 }
100 128
101 void StateObserver::OnStateChange(ReadyModeStatus status) { 129 void StateObserver::OnStateChange(ReadyModeStatus status) {
102 if (ready_mode_ui_ == NULL) 130 if (ready_mode_ui_ == NULL)
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
193 new StateObserver(weak_ptr_factory_.GetWeakPtr())); 221 new StateObserver(weak_ptr_factory_.GetWeakPtr()));
194 222
195 installer::ActivePackageProperties package_properties; 223 installer::ActivePackageProperties package_properties;
196 224
197 // Owned by infobar_content 225 // Owned by infobar_content
198 scoped_ptr<ReadyModeState> ready_mode_state(new RegistryReadyModeState( 226 scoped_ptr<ReadyModeState> ready_mode_state(new RegistryReadyModeState(
199 package_properties.GetStateKey(), 227 package_properties.GetStateKey(),
200 base::TimeDelta::FromMinutes(kTemporaryDeclineDurationMinutes), 228 base::TimeDelta::FromMinutes(kTemporaryDeclineDurationMinutes),
201 ready_mode_state_observer.release())); 229 ready_mode_state_observer.release()));
202 230
231 // Owned by infobar_content
232 scoped_ptr<UrlLauncher> url_launcher(new UrlLauncherImpl(web_browser_));
233
203 // Owned by infobar_manager 234 // Owned by infobar_manager
204 scoped_ptr<InfobarContent> infobar_content( 235 scoped_ptr<InfobarContent> infobar_content(new ReadyPromptContent(
205 new ReadyPromptContent(ready_mode_state.release())); 236 ready_mode_state.release(), url_launcher.release()));
206 237
207 infobar_manager->Show(infobar_content.release(), TOP_INFOBAR); 238 infobar_manager->Show(infobar_content.release(), TOP_INFOBAR);
208 } 239 }
209 } 240 }
210 241
211 void BrowserObserver::Hide() { 242 void BrowserObserver::Hide() {
212 InfobarManager* infobar_manager = GetInfobarManager(); 243 InfobarManager* infobar_manager = GetInfobarManager();
213 if (infobar_manager) 244 if (infobar_manager)
214 infobar_manager->HideAll(); 245 infobar_manager->HideAll();
215 } 246 }
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after
353 } 384 }
354 } 385 }
355 386
356 // Depending on the state we finally end up in, tell our Delegate to disable 387 // Depending on the state we finally end up in, tell our Delegate to disable
357 // Chrome Frame functionality. 388 // Chrome Frame functionality.
358 if (ShouldDisableChromeFrame(status)) 389 if (ShouldDisableChromeFrame(status))
359 delegate->DisableChromeFrame(); 390 delegate->DisableChromeFrame();
360 } 391 }
361 392
362 } // namespace ready_mode 393 } // namespace ready_mode
OLDNEW
« 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