Index: chrome/browser/instant/instant_tab.cc |
diff --git a/chrome/browser/instant/instant_tab.cc b/chrome/browser/instant/instant_tab.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..c68217281feb098ed58373c12c1e8675450eeaa9 |
--- /dev/null |
+++ b/chrome/browser/instant/instant_tab.cc |
@@ -0,0 +1,69 @@ |
+// Copyright 2012 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "chrome/browser/instant/instant_tab.h" |
+ |
+#include "chrome/browser/instant/instant_controller.h" |
+ |
+InstantTab::InstantTab(InstantController* controller, |
+ content::WebContents* contents) |
+ : client_(ALLOW_THIS_IN_INITIALIZER_LIST(this)), |
+ controller_(controller), |
+ contents_(contents), |
+ supports_instant_(false) { |
+} |
+ |
+InstantTab::~InstantTab() { |
+} |
+ |
+void InstantTab::Init() { |
+ client_.SetContents(contents_); |
+ client_.DetermineIfPageSupportsInstant(); |
+} |
+ |
+void InstantTab::Update(const string16& text, |
+ size_t selection_start, |
+ size_t selection_end, |
+ bool verbatim) { |
+ client_.Update(text, selection_start, selection_end, verbatim); |
+} |
+ |
+void InstantTab::Submit(const string16& text) { |
+ client_.Submit(text); |
+} |
+ |
+void InstantTab::SendAutocompleteResults( |
+ const std::vector<InstantAutocompleteResult>& results) { |
+ client_.SendAutocompleteResults(results); |
+} |
+ |
+void InstantTab::UpOrDownKeyPressed(int count) { |
+ client_.UpOrDownKeyPressed(count); |
+} |
+ |
+void InstantTab::SetSuggestions( |
+ const std::vector<InstantSuggestion>& suggestions) { |
+ InstantSupportDetermined(true); |
+ controller_->SetSuggestions(contents_, suggestions); |
+} |
+ |
+void InstantTab::InstantSupportDetermined(bool supports_instant) { |
+ // If we had already determined that the page supports Instant, nothing to do. |
+ if (supports_instant_) |
+ return; |
+ |
+ supports_instant_ = supports_instant; |
+ |
+ // If the page doesn't support Instant, stop communicating with it. |
+ if (!supports_instant) |
+ client_.SetContents(NULL); |
+ |
+ controller_->InstantSupportDetermined(contents_, supports_instant); |
+} |
+ |
+void InstantTab::ShowInstantPreview(InstantShownReason /* reason */, |
+ int /* height */, |
+ InstantSizeUnits /* units */) { |
+ // The page is a committed tab (i.e., always showing), so nothing to do. |
+} |