| 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/instant/instant_loader.h" | 5 #include "chrome/browser/instant/instant_loader.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <string> | 8 #include <string> |
| 9 #include <utility> | 9 #include <utility> |
| 10 #include <vector> | 10 #include <vector> |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 44 #include "content/public/browser/notification_observer.h" | 44 #include "content/public/browser/notification_observer.h" |
| 45 #include "content/public/browser/notification_registrar.h" | 45 #include "content/public/browser/notification_registrar.h" |
| 46 #include "content/public/browser/notification_service.h" | 46 #include "content/public/browser/notification_service.h" |
| 47 #include "content/public/browser/notification_source.h" | 47 #include "content/public/browser/notification_source.h" |
| 48 #include "content/public/browser/notification_types.h" | 48 #include "content/public/browser/notification_types.h" |
| 49 #include "content/public/browser/web_contents_delegate.h" | 49 #include "content/public/browser/web_contents_delegate.h" |
| 50 #include "net/http/http_util.h" | 50 #include "net/http/http_util.h" |
| 51 #include "ui/base/l10n/l10n_util.h" | 51 #include "ui/base/l10n/l10n_util.h" |
| 52 #include "ui/gfx/codec/png_codec.h" | 52 #include "ui/gfx/codec/png_codec.h" |
| 53 | 53 |
| 54 using content::NavigationEntry; |
| 55 |
| 54 namespace { | 56 namespace { |
| 55 | 57 |
| 56 // Number of ms to delay before updating the omnibox bounds. This is only used | 58 // Number of ms to delay before updating the omnibox bounds. This is only used |
| 57 // when the bounds of the omnibox shrinks. If the bounds grows, we update | 59 // when the bounds of the omnibox shrinks. If the bounds grows, we update |
| 58 // immediately. | 60 // immediately. |
| 59 const int kUpdateBoundsDelayMS = 1000; | 61 const int kUpdateBoundsDelayMS = 1000; |
| 60 | 62 |
| 61 // If this status code is seen instant is disabled for the specified host. | 63 // If this status code is seen instant is disabled for the specified host. |
| 62 const int kHostBlacklistStatusCode = 403; | 64 const int kHostBlacklistStatusCode = 403; |
| 63 | 65 |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 135 DISALLOW_COPY_AND_ASSIGN(FrameLoadObserver); | 137 DISALLOW_COPY_AND_ASSIGN(FrameLoadObserver); |
| 136 }; | 138 }; |
| 137 | 139 |
| 138 void InstantLoader::FrameLoadObserver::Observe( | 140 void InstantLoader::FrameLoadObserver::Observe( |
| 139 int type, | 141 int type, |
| 140 const content::NotificationSource& source, | 142 const content::NotificationSource& source, |
| 141 const content::NotificationDetails& details) { | 143 const content::NotificationDetails& details) { |
| 142 switch (type) { | 144 switch (type) { |
| 143 case content::NOTIFICATION_LOAD_COMPLETED_MAIN_FRAME: { | 145 case content::NOTIFICATION_LOAD_COMPLETED_MAIN_FRAME: { |
| 144 int page_id = *(content::Details<int>(details).ptr()); | 146 int page_id = *(content::Details<int>(details).ptr()); |
| 145 content::NavigationEntry* active_entry = | 147 NavigationEntry* active_entry = |
| 146 tab_contents_->GetController().GetActiveEntry(); | 148 tab_contents_->GetController().GetActiveEntry(); |
| 147 if (!active_entry || active_entry->GetPageID() != page_id || | 149 if (!active_entry || active_entry->GetPageID() != page_id || |
| 148 active_entry->GetUniqueID() != unique_id_) { | 150 active_entry->GetUniqueID() != unique_id_) { |
| 149 return; | 151 return; |
| 150 } | 152 } |
| 151 loader_->SendBoundsToPage(true); | 153 loader_->SendBoundsToPage(true); |
| 152 // TODO: support real cursor position. | 154 // TODO: support real cursor position. |
| 153 int text_length = static_cast<int>(text_.size()); | 155 int text_length = static_cast<int>(text_.size()); |
| 154 RenderViewHost* host = tab_contents_->GetRenderViewHost(); | 156 RenderViewHost* host = tab_contents_->GetRenderViewHost(); |
| 155 host->Send(new ChromeViewMsg_DetermineIfPageSupportsInstant( | 157 host->Send(new ChromeViewMsg_DetermineIfPageSupportsInstant( |
| (...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 325 bool supports_instant) { | 327 bool supports_instant) { |
| 326 TabContentsWrapper* tab = loader_->preview_contents(); | 328 TabContentsWrapper* tab = loader_->preview_contents(); |
| 327 if (tab->profile()->IsOffTheRecord()) | 329 if (tab->profile()->IsOffTheRecord()) |
| 328 return; | 330 return; |
| 329 | 331 |
| 330 for (size_t i = 0; i < add_page_vector_.size(); ++i) { | 332 for (size_t i = 0; i < add_page_vector_.size(); ++i) { |
| 331 tab->history_tab_helper()->UpdateHistoryForNavigation( | 333 tab->history_tab_helper()->UpdateHistoryForNavigation( |
| 332 add_page_vector_[i].get()); | 334 add_page_vector_[i].get()); |
| 333 } | 335 } |
| 334 | 336 |
| 335 content::NavigationEntry* active_entry = | 337 NavigationEntry* active_entry = |
| 336 tab->tab_contents()->GetController().GetActiveEntry(); | 338 tab->tab_contents()->GetController().GetActiveEntry(); |
| 337 if (!active_entry) { | 339 if (!active_entry) { |
| 338 // It appears to be possible to get here with no active entry. This seems | 340 // It appears to be possible to get here with no active entry. This seems |
| 339 // to be possible with an auth dialog, but I can't narrow down the | 341 // to be possible with an auth dialog, but I can't narrow down the |
| 340 // circumstances. If you hit this, file a bug with the steps you did and | 342 // circumstances. If you hit this, file a bug with the steps you did and |
| 341 // assign it to me (sky). | 343 // assign it to me (sky). |
| 342 NOTREACHED(); | 344 NOTREACHED(); |
| 343 return; | 345 return; |
| 344 } | 346 } |
| 345 tab->history_tab_helper()->UpdateHistoryPageTitle(*active_entry); | 347 tab->history_tab_helper()->UpdateHistoryPageTitle(*active_entry); |
| (...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 542 IPC_MESSAGE_UNHANDLED(handled = false) | 544 IPC_MESSAGE_UNHANDLED(handled = false) |
| 543 IPC_END_MESSAGE_MAP() | 545 IPC_END_MESSAGE_MAP() |
| 544 return handled; | 546 return handled; |
| 545 } | 547 } |
| 546 | 548 |
| 547 void InstantLoader::TabContentsDelegateImpl::OnSetSuggestions( | 549 void InstantLoader::TabContentsDelegateImpl::OnSetSuggestions( |
| 548 int32 page_id, | 550 int32 page_id, |
| 549 const std::vector<std::string>& suggestions, | 551 const std::vector<std::string>& suggestions, |
| 550 InstantCompleteBehavior behavior) { | 552 InstantCompleteBehavior behavior) { |
| 551 TabContentsWrapper* source = loader_->preview_contents(); | 553 TabContentsWrapper* source = loader_->preview_contents(); |
| 552 content::NavigationEntry* entry = | 554 NavigationEntry* entry = |
| 553 source->tab_contents()->GetController().GetActiveEntry(); | 555 source->tab_contents()->GetController().GetActiveEntry(); |
| 554 if (!entry || page_id != entry->GetPageID()) | 556 if (!entry || page_id != entry->GetPageID()) |
| 555 return; | 557 return; |
| 556 | 558 |
| 557 if (suggestions.empty()) | 559 if (suggestions.empty()) |
| 558 loader_->SetCompleteSuggestedText(string16(), behavior); | 560 loader_->SetCompleteSuggestedText(string16(), behavior); |
| 559 else | 561 else |
| 560 loader_->SetCompleteSuggestedText(UTF8ToUTF16(suggestions[0]), behavior); | 562 loader_->SetCompleteSuggestedText(UTF8ToUTF16(suggestions[0]), behavior); |
| 561 } | 563 } |
| 562 | 564 |
| (...skipping 539 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1102 host->Send(new ChromeViewMsg_SearchBoxResize( | 1104 host->Send(new ChromeViewMsg_SearchBoxResize( |
| 1103 host->routing_id(), GetOmniboxBoundsInTermsOfPreview())); | 1105 host->routing_id(), GetOmniboxBoundsInTermsOfPreview())); |
| 1104 } else { | 1106 } else { |
| 1105 host->Send(new ChromeViewMsg_SearchBoxChange( | 1107 host->Send(new ChromeViewMsg_SearchBoxChange( |
| 1106 host->routing_id(), user_text, verbatim, 0, 0)); | 1108 host->routing_id(), user_text, verbatim, 0, 0)); |
| 1107 } | 1109 } |
| 1108 | 1110 |
| 1109 frame_load_observer_.reset(new FrameLoadObserver( | 1111 frame_load_observer_.reset(new FrameLoadObserver( |
| 1110 this, preview_contents()->tab_contents(), user_text, verbatim)); | 1112 this, preview_contents()->tab_contents(), user_text, verbatim)); |
| 1111 } | 1113 } |
| OLD | NEW |