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

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->AddRef();
tommi (sloooow) - chröme 2011/01/24 17:54:23 use the = operator? (it comes from the scoped_ref
erikwright (departed) 2011/01/24 18:55:19 Done.
109 web_browser_.Attach(web_browser);
110 }
111
112 void UrlLauncherImpl::LaunchUrl(const std::wstring& url) {
113 VARIANT flags = { VT_I4 };
114 V_I4(&flags) = navOpenInNewWindow;
115 base::win::ScopedBstr location(url.c_str());
116
117 HRESULT hr = web_browser_->Navigate(location, &flags, NULL, NULL, NULL);
118 DLOG_IF(ERROR, FAILED(hr)) << "Failed to invoke Navigate on IWebBrowser2. "
119 << "Error: " << hr;
120 }
121
93 StateObserver::StateObserver( 122 StateObserver::StateObserver(
94 const base::WeakPtr<BrowserObserver>& ready_mode_ui) 123 const base::WeakPtr<BrowserObserver>& ready_mode_ui)
95 : ready_mode_ui_(ready_mode_ui) { 124 : ready_mode_ui_(ready_mode_ui) {
96 } 125 }
97 126
98 StateObserver::~StateObserver() { 127 StateObserver::~StateObserver() {
99 } 128 }
100 129
101 void StateObserver::OnStateChange(ReadyModeStatus status) { 130 void StateObserver::OnStateChange(ReadyModeStatus status) {
102 if (ready_mode_ui_ == NULL) 131 if (ready_mode_ui_ == NULL)
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
193 new StateObserver(weak_ptr_factory_.GetWeakPtr())); 222 new StateObserver(weak_ptr_factory_.GetWeakPtr()));
194 223
195 installer::ActivePackageProperties package_properties; 224 installer::ActivePackageProperties package_properties;
196 225
197 // Owned by infobar_content 226 // Owned by infobar_content
198 scoped_ptr<ReadyModeState> ready_mode_state(new RegistryReadyModeState( 227 scoped_ptr<ReadyModeState> ready_mode_state(new RegistryReadyModeState(
199 package_properties.GetStateKey(), 228 package_properties.GetStateKey(),
200 base::TimeDelta::FromMinutes(kTemporaryDeclineDurationMinutes), 229 base::TimeDelta::FromMinutes(kTemporaryDeclineDurationMinutes),
201 ready_mode_state_observer.release())); 230 ready_mode_state_observer.release()));
202 231
232 // Owned by infobar_content
233 scoped_ptr<UrlLauncher> url_launcher(new UrlLauncherImpl(web_browser_));
234
203 // Owned by infobar_manager 235 // Owned by infobar_manager
204 scoped_ptr<InfobarContent> infobar_content( 236 scoped_ptr<InfobarContent> infobar_content(new ReadyPromptContent(
205 new ReadyPromptContent(ready_mode_state.release())); 237 ready_mode_state.release(), url_launcher.release()));
206 238
207 infobar_manager->Show(infobar_content.release(), TOP_INFOBAR); 239 infobar_manager->Show(infobar_content.release(), TOP_INFOBAR);
208 } 240 }
209 } 241 }
210 242
211 void BrowserObserver::Hide() { 243 void BrowserObserver::Hide() {
212 InfobarManager* infobar_manager = GetInfobarManager(); 244 InfobarManager* infobar_manager = GetInfobarManager();
213 if (infobar_manager) 245 if (infobar_manager)
214 infobar_manager->HideAll(); 246 infobar_manager->HideAll();
215 } 247 }
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after
353 } 385 }
354 } 386 }
355 387
356 // Depending on the state we finally end up in, tell our Delegate to disable 388 // Depending on the state we finally end up in, tell our Delegate to disable
357 // Chrome Frame functionality. 389 // Chrome Frame functionality.
358 if (ShouldDisableChromeFrame(status)) 390 if (ShouldDisableChromeFrame(status))
359 delegate->DisableChromeFrame(); 391 delegate->DisableChromeFrame();
360 } 392 }
361 393
362 } // namespace ready_mode 394 } // namespace ready_mode
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698