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

Side by Side Diff: chrome/browser/tab_contents/tab_contents.cc

Issue 6350010: Put some plug-ins behind an infobar, where they have:... (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/browser/tab_contents/tab_contents.h" 5 #include "chrome/browser/tab_contents/tab_contents.h"
6 6
7 #include <cmath> 7 #include <cmath>
8 8
9 #include "base/auto_reset.h" 9 #include "base/auto_reset.h"
10 #include "base/metrics/histogram.h" 10 #include "base/metrics/histogram.h"
(...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after
241 params->current_history_list_length = controller.entry_count(); 241 params->current_history_list_length = controller.entry_count();
242 params->url = entry.url(); 242 params->url = entry.url();
243 params->referrer = entry.referrer(); 243 params->referrer = entry.referrer();
244 params->transition = entry.transition_type(); 244 params->transition = entry.transition_type();
245 params->state = entry.content_state(); 245 params->state = entry.content_state();
246 params->navigation_type = 246 params->navigation_type =
247 GetNavigationType(controller.profile(), entry, reload_type); 247 GetNavigationType(controller.profile(), entry, reload_type);
248 params->request_time = base::Time::Now(); 248 params->request_time = base::Time::Now();
249 } 249 }
250 250
251 // PluginInfoBar --------------------------------------------------------------
jam 2011/01/27 20:41:59 TabContents is not the place to put dump all these
252
253 class PluginInfoBar : public ConfirmInfoBarDelegate {
254 public:
255 PluginInfoBar(TabContents* tab_contents, const string16& name);
256
257 // ConfirmInfoBarDelegate:
258 virtual void InfoBarClosed() = 0;
259 virtual SkBitmap* GetIcon() const;
260 virtual string16 GetMessageText() const = 0;
261 virtual int GetButtons() const;
262 virtual string16 GetButtonLabel(InfoBarButton button) const = 0;
263 virtual bool Accept() = 0;
264 virtual bool Cancel() = 0;
265 virtual string16 GetLinkText();
266 virtual bool LinkClicked(WindowOpenDisposition disposition) = 0;
267
268 protected:
269 virtual ~PluginInfoBar();
270
271 void CommonCancel();
272 void CommonClose();
273 void CommonLearnMore(WindowOpenDisposition disposition);
274
275 string16 name_;
276 TabContents* tab_contents_;
277
278 private:
279 DISALLOW_COPY_AND_ASSIGN(PluginInfoBar);
280 };
281
282 PluginInfoBar::PluginInfoBar(TabContents* tab_contents, const string16& name)
283 : ConfirmInfoBarDelegate(tab_contents),
284 name_(name),
285 tab_contents_(tab_contents) {
286 }
287
288 PluginInfoBar::~PluginInfoBar() {
289 }
290
291 void PluginInfoBar::CommonClose() {
292 delete this;
293 }
294
295 SkBitmap* PluginInfoBar::GetIcon() const {
296 return ResourceBundle::GetSharedInstance().GetBitmapNamed(
297 IDR_INFOBAR_PLUGIN_INSTALL);
298 }
299
300 int PluginInfoBar::GetButtons() const {
301 return BUTTON_OK | BUTTON_CANCEL;
302 }
303
304 void PluginInfoBar::CommonCancel() {
305 tab_contents_->render_view_host()->LoadBlockedPlugins();
306 }
307
308 string16 PluginInfoBar::GetLinkText() {
309 return l10n_util::GetStringUTF16(IDS_LEARN_MORE);
310 }
311
312 void PluginInfoBar::CommonLearnMore(WindowOpenDisposition disposition) {
313 // TODO(bauerb): Navigate to a help page explaining why we disabled
314 // or blocked the plugin, once we have one.
315 }
316
317
318 // BlockedPluginInfoBar -------------------------------------------------------
319
320 class BlockedPluginInfoBar : public PluginInfoBar {
321 public:
322 BlockedPluginInfoBar(TabContents* tab_contents,
323 const string16& name);
324
325 // ConfirmInfoBarDelegate:
326 virtual string16 GetMessageText() const;
327 virtual string16 GetButtonLabel(InfoBarButton button) const;
328 virtual bool Accept();
329 virtual bool Cancel();
330 virtual void InfoBarClosed();
331 virtual bool LinkClicked(WindowOpenDisposition disposition);
332
333 protected:
334 virtual ~BlockedPluginInfoBar();
335
336 private:
337 DISALLOW_COPY_AND_ASSIGN(BlockedPluginInfoBar);
338 };
339
340 BlockedPluginInfoBar::BlockedPluginInfoBar(TabContents* tab_contents,
341 const string16& name)
342 : PluginInfoBar(tab_contents, name) {
343 tab_contents->AddInfoBar(this);
344 UserMetrics::RecordAction(UserMetricsAction("BlockedPluginInfobar.Shown"));
345 }
346
347 BlockedPluginInfoBar::~BlockedPluginInfoBar() {
348 }
349
350 string16 BlockedPluginInfoBar::GetMessageText() const {
351 return l10n_util::GetStringFUTF16(IDS_PLUGIN_NOT_AUTHORIZED, name_);
352 }
353
354 string16 BlockedPluginInfoBar::GetButtonLabel(InfoBarButton button) const {
355 return l10n_util::GetStringUTF16((button == BUTTON_OK) ?
356 IDS_PLUGIN_ENABLE_ALWAYS : IDS_PLUGIN_ENABLE_TEMPORARILY);
357 }
358
359 bool BlockedPluginInfoBar::Accept() {
360 UserMetrics::RecordAction(
361 UserMetricsAction("BlockedPluginInfobar.AlwaysAllow"));
362 tab_contents_->profile()->GetHostContentSettingsMap()->AddExceptionForURL(
363 tab_contents_->GetURL(), CONTENT_SETTINGS_TYPE_PLUGINS, std::string(),
364 CONTENT_SETTING_ALLOW);
365 tab_contents_->render_view_host()->LoadBlockedPlugins();
366 return false;
367 }
368
369 bool BlockedPluginInfoBar::Cancel() {
370 UserMetrics::RecordAction(
371 UserMetricsAction("BlockedPluginInfobar.AllowThisTime"));
372 CommonCancel();
373 return false;
374 }
375
376 void BlockedPluginInfoBar::InfoBarClosed() {
377 UserMetrics::RecordAction(UserMetricsAction("BlockedPluginInfobar.Closed"));
378 CommonClose();
379 }
380
381 bool BlockedPluginInfoBar::LinkClicked(WindowOpenDisposition disposition) {
382 UserMetrics::RecordAction(
383 UserMetricsAction("BlockedPluginInfobar.LearnMore"));
384 CommonLearnMore(disposition);
385 return false;
386 }
251 387
252 // OutdatedPluginInfoBar ------------------------------------------------------ 388 // OutdatedPluginInfoBar ------------------------------------------------------
253 389
254 class OutdatedPluginInfoBar : public ConfirmInfoBarDelegate { 390 class OutdatedPluginInfoBar : public PluginInfoBar {
255 public: 391 public:
256 OutdatedPluginInfoBar(TabContents* tab_contents, 392 OutdatedPluginInfoBar(TabContents* tab_contents,
257 const string16& name, 393 const string16& name,
258 const GURL& update_url); 394 const GURL& update_url);
259 395
260 private:
261 virtual ~OutdatedPluginInfoBar();
262
263 // ConfirmInfoBarDelegate: 396 // ConfirmInfoBarDelegate:
264 virtual void InfoBarClosed();
265 virtual SkBitmap* GetIcon() const;
266 virtual string16 GetMessageText() const; 397 virtual string16 GetMessageText() const;
267 virtual int GetButtons() const;
268 virtual string16 GetButtonLabel(InfoBarButton button) const; 398 virtual string16 GetButtonLabel(InfoBarButton button) const;
269 virtual bool Accept(); 399 virtual bool Accept();
270 virtual bool Cancel(); 400 virtual bool Cancel();
271 virtual string16 GetLinkText(); 401 virtual void InfoBarClosed();
272 virtual bool LinkClicked(WindowOpenDisposition disposition); 402 virtual bool LinkClicked(WindowOpenDisposition disposition);
273 403
274 TabContents* tab_contents_; 404 protected:
275 string16 name_; 405 virtual ~OutdatedPluginInfoBar();
406
407 private:
276 GURL update_url_; 408 GURL update_url_;
409
410 DISALLOW_COPY_AND_ASSIGN(OutdatedPluginInfoBar);
277 }; 411 };
278 412
279 OutdatedPluginInfoBar::OutdatedPluginInfoBar(TabContents* tab_contents, 413 OutdatedPluginInfoBar::OutdatedPluginInfoBar(TabContents* tab_contents,
280 const string16& name, 414 const string16& name,
281 const GURL& update_url) 415 const GURL& update_url)
282 : ConfirmInfoBarDelegate(tab_contents), 416 : PluginInfoBar(tab_contents, name), update_url_(update_url) {
283 tab_contents_(tab_contents), 417 tab_contents->AddInfoBar(this);
284 name_(name),
285 update_url_(update_url) {
286 UserMetrics::RecordAction(UserMetricsAction("OutdatedPluginInfobar.Shown")); 418 UserMetrics::RecordAction(UserMetricsAction("OutdatedPluginInfobar.Shown"));
287 tab_contents->AddInfoBar(this);
288 } 419 }
289 420
290 OutdatedPluginInfoBar::~OutdatedPluginInfoBar() { 421 OutdatedPluginInfoBar::~OutdatedPluginInfoBar() {
291 } 422 }
292 423
293 void OutdatedPluginInfoBar::InfoBarClosed() {
294 UserMetrics::RecordAction(UserMetricsAction("OutdatedPluginInfobar.Closed"));
295 delete this;
296 }
297
298 SkBitmap* OutdatedPluginInfoBar::GetIcon() const {
299 return ResourceBundle::GetSharedInstance().GetBitmapNamed(
300 IDR_INFOBAR_PLUGIN_INSTALL);
301 }
302
303 string16 OutdatedPluginInfoBar::GetMessageText() const { 424 string16 OutdatedPluginInfoBar::GetMessageText() const {
304 return l10n_util::GetStringFUTF16(IDS_PLUGIN_OUTDATED_PROMPT, name_); 425 return l10n_util::GetStringFUTF16(IDS_PLUGIN_OUTDATED_PROMPT, name_);
305 } 426 }
306 427
307 int OutdatedPluginInfoBar::GetButtons() const {
308 return BUTTON_OK | BUTTON_CANCEL;
309 }
310
311 string16 OutdatedPluginInfoBar::GetButtonLabel(InfoBarButton button) const { 428 string16 OutdatedPluginInfoBar::GetButtonLabel(InfoBarButton button) const {
312 return l10n_util::GetStringUTF16((button == BUTTON_OK) ? 429 return l10n_util::GetStringUTF16((button == BUTTON_OK) ?
313 IDS_PLUGIN_UPDATE : IDS_PLUGIN_ENABLE_TEMPORARILY); 430 IDS_PLUGIN_UPDATE : IDS_PLUGIN_ENABLE_TEMPORARILY);
314 } 431 }
315 432
316 bool OutdatedPluginInfoBar::Accept() { 433 bool OutdatedPluginInfoBar::Accept() {
317 UserMetrics::RecordAction(UserMetricsAction("OutdatedPluginInfobar.Update")); 434 UserMetrics::RecordAction(UserMetricsAction("OutdatedPluginInfobar.Update"));
318 tab_contents_->OpenURL(update_url_, GURL(), NEW_FOREGROUND_TAB, 435 tab_contents_->OpenURL(update_url_, GURL(), NEW_FOREGROUND_TAB,
319 PageTransition::LINK); 436 PageTransition::LINK);
320 return false; 437 return false;
321 } 438 }
322 439
323 bool OutdatedPluginInfoBar::Cancel() { 440 bool OutdatedPluginInfoBar::Cancel() {
324 UserMetrics::RecordAction( 441 UserMetrics::RecordAction(
325 UserMetricsAction("OutdatedPluginInfobar.AllowThisTime")); 442 UserMetricsAction("OutdatedPluginInfobar.AllowThisTime"));
326 tab_contents_->render_view_host()->LoadBlockedPlugins(); 443 CommonCancel();
327 return false; 444 return false;
328 } 445 }
329 446
330 string16 OutdatedPluginInfoBar::GetLinkText() { 447 void OutdatedPluginInfoBar::InfoBarClosed() {
331 return l10n_util::GetStringUTF16(IDS_LEARN_MORE); 448 UserMetrics::RecordAction(UserMetricsAction("OutdatedPluginInfobar.Closed"));
449 CommonClose();
332 } 450 }
333 451
334 bool OutdatedPluginInfoBar::LinkClicked(WindowOpenDisposition disposition) { 452 bool OutdatedPluginInfoBar::LinkClicked(WindowOpenDisposition disposition) {
335 UserMetrics::RecordAction( 453 UserMetrics::RecordAction(
336 UserMetricsAction("OutdatedPluginInfobar.LearnMore")); 454 UserMetricsAction("OutdatedPluginInfobar.LearnMore"));
337 // TODO(bauerb): Navigate to a help page explaining why we disabled 455 CommonLearnMore(disposition);
338 // the plugin, once we have one.
339 return false; 456 return false;
340 } 457 }
341 458
342 } // namespace 459 } // namespace
343 460
344 461
345 // TabContents ---------------------------------------------------------------- 462 // TabContents ----------------------------------------------------------------
346 463
347 // static 464 // static
348 int TabContents::find_request_id_counter_ = -1; 465 int TabContents::find_request_id_counter_ = -1;
(...skipping 2010 matching lines...) Expand 10 before | Expand all | Expand 10 after
2359 delegate()->OnDidGetApplicationInfo(this, page_id); 2476 delegate()->OnDidGetApplicationInfo(this, page_id);
2360 } 2477 }
2361 2478
2362 void TabContents::OnInstallApplication(const WebApplicationInfo& info) { 2479 void TabContents::OnInstallApplication(const WebApplicationInfo& info) {
2363 if (delegate()) 2480 if (delegate())
2364 delegate()->OnInstallApplication(this, info); 2481 delegate()->OnInstallApplication(this, info);
2365 } 2482 }
2366 2483
2367 void TabContents::OnBlockedOutdatedPlugin(const string16& name, 2484 void TabContents::OnBlockedOutdatedPlugin(const string16& name,
2368 const GURL& update_url) { 2485 const GURL& update_url) {
2369 new OutdatedPluginInfoBar(this, name, update_url); 2486 if (!update_url.is_empty())
2487 new OutdatedPluginInfoBar(this, name, update_url);
2488 else
2489 new BlockedPluginInfoBar(this, name);
2370 } 2490 }
2371 2491
2372 void TabContents::OnPageContents(const GURL& url, 2492 void TabContents::OnPageContents(const GURL& url,
2373 int32 page_id, 2493 int32 page_id,
2374 const string16& contents, 2494 const string16& contents,
2375 const std::string& language, 2495 const std::string& language,
2376 bool page_translatable) { 2496 bool page_translatable) {
2377 // Don't index any https pages. People generally don't want their bank 2497 // Don't index any https pages. People generally don't want their bank
2378 // accounts, etc. indexed on their computer, especially since some of these 2498 // accounts, etc. indexed on their computer, especially since some of these
2379 // things are not marked cachable. 2499 // things are not marked cachable.
(...skipping 1015 matching lines...) Expand 10 before | Expand all | Expand 10 after
3395 if (pm != NULL) { 3515 if (pm != NULL) {
3396 if (pm->MaybeUsePreloadedPage(this, url)) { 3516 if (pm->MaybeUsePreloadedPage(this, url)) {
3397 // TODO(tburkard): If the preloaded page has not finished preloading 3517 // TODO(tburkard): If the preloaded page has not finished preloading
3398 // yet, we should not do this. 3518 // yet, we should not do this.
3399 DidStopLoading(); 3519 DidStopLoading();
3400 return true; 3520 return true;
3401 } 3521 }
3402 } 3522 }
3403 return false; 3523 return false;
3404 } 3524 }
OLDNEW
« no previous file with comments | « chrome/browser/renderer_host/browser_render_process_host.cc ('k') | chrome/common/chrome_switches.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698