Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 } |
| OLD | NEW |