summaryrefslogtreecommitdiffstats
path: root/chrome/browser
diff options
context:
space:
mode:
authorbrettw@chromium.org <brettw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-04-22 19:22:57 +0000
committerbrettw@chromium.org <brettw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-04-22 19:22:57 +0000
commitfdd61c60136a6d3cf351003802b513a950c91029 (patch)
tree05c3deb16c5b2e8640cf97ef8c9fe79c144137e3 /chrome/browser
parent070fd95297d8d8eb7076ea8ba0956dee74d0e4f9 (diff)
downloadchromium_src-fdd61c60136a6d3cf351003802b513a950c91029.zip
chromium_src-fdd61c60136a6d3cf351003802b513a950c91029.tar.gz
chromium_src-fdd61c60136a6d3cf351003802b513a950c91029.tar.bz2
Move all data members from WebContents to TabContents in preparation for
merging the two. This is extremely straightforward except for the GearsCreateShortcutCallbackFunctor which I had to move to the header (with a TODO and its associated function OnGearsCreateShortcutDone) and some of the constructors for the members which took a WebContents that I had to cast. I tried to reorganize the data to have some kind of groupings. I made the member initializers all explicit for TabContents because the extreme number of them makes them difficult to keep track of. Review URL: http://codereview.chromium.org/88021 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@14230 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser')
-rw-r--r--chrome/browser/tab_contents/tab_contents.cc73
-rw-r--r--chrome/browser/tab_contents/tab_contents.h227
-rw-r--r--chrome/browser/tab_contents/web_contents.cc57
-rw-r--r--chrome/browser/tab_contents/web_contents.h162
4 files changed, 287 insertions, 232 deletions
diff --git a/chrome/browser/tab_contents/tab_contents.cc b/chrome/browser/tab_contents/tab_contents.cc
index c084afa..252e2b2 100644
--- a/chrome/browser/tab_contents/tab_contents.cc
+++ b/chrome/browser/tab_contents/tab_contents.cc
@@ -4,11 +4,15 @@
#include "chrome/browser/tab_contents/tab_contents.h"
+#include "chrome/browser/autofill_manager.h"
#include "chrome/browser/cert_store.h"
#include "chrome/browser/download/download_item_model.h"
#include "chrome/browser/download/download_shelf.h"
+#include "chrome/browser/password_manager/password_manager.h"
+#include "chrome/browser/plugin_installer.h"
#include "chrome/browser/tab_contents/navigation_entry.h"
#include "chrome/browser/tab_contents/tab_contents_delegate.h"
+#include "chrome/browser/tab_contents/tab_contents_view.h"
#include "chrome/browser/tab_contents/web_contents.h"
#include "chrome/common/l10n_util.h"
#include "chrome/common/notification_service.h"
@@ -24,17 +28,62 @@
#include "chrome/views/controls/scrollbar/native_scroll_bar.h"
#endif
+// static
+int TabContents::find_request_id_counter_ = -1;
+
+// TODO(brettw) many of the data members here have casts to WebContents.
+// This object is the same as WebContents and is currently being merged.
+// When this merge is done, the casts can be removed.
TabContents::TabContents(Profile* profile)
: delegate_(NULL),
controller_(this, profile),
+ view_(TabContentsView::Create(static_cast<WebContents*>(this))),
+ ALLOW_THIS_IN_INITIALIZER_LIST(render_manager_(
+ static_cast<WebContents*>(this),
+ static_cast<WebContents*>(this))),
+ property_bag_(),
+ registrar_(),
+ printing_(*static_cast<WebContents*>(this)),
+ save_package_(),
+ cancelable_consumer_(),
+ autofill_manager_(),
+ password_manager_(),
+ plugin_installer_(),
+ ALLOW_THIS_IN_INITIALIZER_LIST(fav_icon_helper_(
+ static_cast<WebContents*>(this))),
+ select_file_dialog_(),
+ pending_install_(),
is_loading_(false),
is_crashed_(false),
waiting_for_response_(false),
- shelf_visible_(false),
max_page_id_(-1),
- capturing_contents_(false),
+ current_load_start_(),
+ load_state_(net::LOAD_STATE_IDLE),
+ load_state_host_(),
+ received_page_title_(false),
+ is_starred_(false),
+ contents_mime_type_(),
+ encoding_(),
+ download_shelf_(),
+ shelf_visible_(false),
blocked_popups_(NULL),
- is_being_destroyed_(false) {
+ infobar_delegates_(),
+ last_download_shelf_show_(),
+ find_ui_active_(false),
+ find_op_aborted_(false),
+ current_find_request_id_(find_request_id_counter_++),
+ find_text_(),
+ find_prepopulate_text_(NULL),
+ find_result_(),
+ capturing_contents_(false),
+ is_being_destroyed_(false),
+ notify_disconnection_(false),
+ history_requests_(),
+#if defined(OS_WIN)
+ message_box_active_(CreateEvent(NULL, TRUE, FALSE, NULL)),
+#endif
+ last_javascript_message_dismissal_(),
+ suppress_javascript_messages_(false) {
}
TabContents::~TabContents() {
@@ -394,3 +443,21 @@ void TabContents::ExpireInfoBars(
RemoveInfoBar(delegate);
}
}
+
+void TabContents::OnGearsCreateShortcutDone(
+ const GearsShortcutData2& shortcut_data, bool success) {
+ NavigationEntry* current_entry = controller_.GetLastCommittedEntry();
+ bool same_page =
+ current_entry && pending_install_.page_id == current_entry->page_id();
+
+ if (success && same_page) {
+ // Only switch to app mode if the user chose to create a shortcut and
+ // we're still on the same page that it corresponded to.
+ if (delegate())
+ delegate()->ConvertContentsToApplication(this);
+ }
+
+ // Reset the page id to indicate no requests are pending.
+ pending_install_.page_id = 0;
+ pending_install_.callback_functor = NULL;
+}
diff --git a/chrome/browser/tab_contents/tab_contents.h b/chrome/browser/tab_contents/tab_contents.h
index aa636f3..a7d5833 100644
--- a/chrome/browser/tab_contents/tab_contents.h
+++ b/chrome/browser/tab_contents/tab_contents.h
@@ -10,17 +10,37 @@
#include <string>
#include <vector>
+#include "base/basictypes.h"
#include "base/gfx/native_widget_types.h"
#include "base/gfx/rect.h"
#include "base/scoped_ptr.h"
#include "chrome/browser/autocomplete/autocomplete_edit.h"
+#include "chrome/browser/cancelable_request.h"
+#include "chrome/browser/download/save_package.h"
+#include "chrome/browser/fav_icon_helper.h"
+#include "chrome/browser/find_notification_details.h"
+#include "chrome/browser/shell_dialogs.h"
+#include "chrome/browser/renderer_host/render_view_host_delegate.h"
#include "chrome/browser/tab_contents/constrained_window.h"
#include "chrome/browser/tab_contents/infobar_delegate.h"
#include "chrome/browser/tab_contents/navigation_controller.h"
#include "chrome/browser/tab_contents/page_navigator.h"
+#include "chrome/browser/tab_contents/render_view_host_manager.h"
+#include "chrome/common/gears_api.h"
#include "chrome/common/navigation_types.h"
#include "chrome/common/notification_registrar.h"
#include "chrome/common/property_bag.h"
+#include "net/base/load_states.h"
+#include "webkit/glue/password_form.h"
+#include "webkit/glue/webpreferences.h"
+
+
+#if defined(OS_MACOSX) || defined(OS_LINUX)
+// Remove when we've finished porting the supporting classes.
+#include "chrome/common/temp_scaffolding_stubs.h"
+#elif defined(OS_WIN)
+#include "chrome/browser/printing/print_view_manager.h"
+#endif
namespace gfx {
class Rect;
@@ -31,17 +51,21 @@ class RootView;
class WindowDelegate;
}
+class AutofillManager;
class BlockedPopupContainer;
class DOMUIContents;
class DownloadItem;
class DownloadShelf;
class InfoBarView;
class LoadNotificationDetails;
+class PasswordManager;
+class PluginInstaller;
class Profile;
class TabContentsDelegate;
class TabContentsFactory;
class SkBitmap;
class SiteInstance;
+class TabContentsView;
class WebContents;
// Describes what goes in the main content area of a tab. WebContents is
@@ -348,6 +372,43 @@ class TabContents : public PageNavigator,
// automation purposes.
friend class AutomationProvider;
+ // When CreateShortcut is invoked RenderViewHost::GetApplicationInfo is
+ // invoked. CreateShortcut caches the state of the page needed to create the
+ // shortcut in PendingInstall. When OnDidGetApplicationInfo is invoked, it
+ // uses the information from PendingInstall and the WebApplicationInfo
+ // to create the shortcut.
+ class GearsCreateShortcutCallbackFunctor;
+ struct PendingInstall {
+ int32 page_id;
+ SkBitmap icon;
+ std::wstring title;
+ GURL url;
+ // This object receives the GearsCreateShortcutCallback and routes the
+ // message back to the WebContents, if we haven't been deleted.
+ GearsCreateShortcutCallbackFunctor* callback_functor;
+ };
+
+ // TODO(brettw) move thos to tab_contents.cc once WebContents and
+ // TabContents are merged.
+ class GearsCreateShortcutCallbackFunctor {
+ public:
+ explicit GearsCreateShortcutCallbackFunctor(TabContents* contents)
+ : contents_(contents) {}
+
+ void Run(const GearsShortcutData2& shortcut_data, bool success) {
+ if (contents_)
+ contents_->OnGearsCreateShortcutDone(shortcut_data, success);
+ delete this;
+ }
+ void Cancel() {
+ contents_ = NULL;
+ }
+
+ private:
+ TabContents* contents_;
+ };
+
+
TabContents(Profile* profile);
// Changes the IsLoading state and notifies delegate as needed
@@ -383,48 +444,192 @@ class TabContents : public PageNavigator,
void ExpireInfoBars(
const NavigationController::LoadCommittedDetails& details);
- // Data ----------------------------------------------------------------------
+ // Called when the user dismisses the shortcut creation dialog. 'success' is
+ // true if the shortcut was created.
+ void OnGearsCreateShortcutDone(const GearsShortcutData2& shortcut_data,
+ bool success);
+
+ // Data for core operation ---------------------------------------------------
+ // Delegate for notifying our owner about stuff. Not owned by us.
TabContentsDelegate* delegate_;
+
+ // Handles the back/forward list and loading.
NavigationController controller_;
+ // The corresponding view.
+ scoped_ptr<TabContentsView> view_;
+
+ // Helper classes ------------------------------------------------------------
+
+ // Manages creation and swapping of render views.
+ RenderViewHostManager render_manager_;
+
+ // Stores random bits of data for others to associate with this object.
PropertyBag property_bag_;
+ // Registers and unregisters us for notifications.
NotificationRegistrar registrar_;
+ // Handles print preview and print job for this contents.
+ printing::PrintViewManager printing_;
+
+ // SavePackage, lazily created.
+ scoped_refptr<SavePackage> save_package_;
+
+ // Tracks our pending CancelableRequests. This maps pending requests to
+ // page IDs so that we know whether a given callback still applies. The
+ // page ID -1 means no page ID was set.
+ CancelableRequestConsumerT<int32, -1> cancelable_consumer_;
+
+ // AutofillManager, lazily created.
+ scoped_ptr<AutofillManager> autofill_manager_;
+
+ // PasswordManager, lazily created.
+ scoped_ptr<PasswordManager> password_manager_;
+
+ // PluginInstaller, lazily created.
+ scoped_ptr<PluginInstaller> plugin_installer_;
+
+ // Handles downloading favicons.
+ FavIconHelper fav_icon_helper_;
+
+ // Dialog box used for choosing files to upload from file form fields.
+ scoped_refptr<SelectFileDialog> select_file_dialog_;
+
+ // Web app installation.
+ PendingInstall pending_install_;
+
+ // Data for loading state ----------------------------------------------------
+
// Indicates whether we're currently loading a resource.
bool is_loading_;
- bool is_crashed_; // true if the tab is considered crashed.
+ // Indicates if the tab is considered crashed.
+ bool is_crashed_;
// See waiting_for_response() above.
bool waiting_for_response_;
- // The download shelf view (view at the bottom of the page).
- scoped_ptr<DownloadShelf> download_shelf_;
-
- // Whether the shelf view is visible.
- bool shelf_visible_;
-
// Indicates the largest PageID we've seen. This field is ignored if we are
// a WebContents, in which case the max page ID is stored separately with
// each SiteInstance.
+ // TODO(brettw) this seems like it can be removed according to the comment.
int32 max_page_id_;
- // See capturing_contents() above.
- bool capturing_contents_;
+ // System time at which the current load was started.
+ base::TimeTicks current_load_start_;
+
+ // The current load state and the URL associated with it.
+ net::LoadState load_state_;
+ std::wstring load_state_host_;
+
+ // Data for current page -----------------------------------------------------
+
+ // Whether we have a (non-empty) title for the current page.
+ // Used to prevent subsequent title updates from affecting history. This
+ // prevents some weirdness because some AJAXy apps use titles for status
+ // messages.
+ bool received_page_title_;
+
+ // Whether the current URL is starred
+ bool is_starred_;
+
+ // When a navigation occurs, we record its contents MIME type. It can be
+ // used to check whether we can do something for some special contents.
+ std::string contents_mime_type_;
+
+ // Character encoding. TODO(jungshik) : convert to std::string
+ std::wstring encoding_;
+
+ // Data for shelves and stuff ------------------------------------------------
+
+ // The download shelf view (view at the bottom of the page).
+ scoped_ptr<DownloadShelf> download_shelf_;
+
+ // Whether the shelf view is visible.
+ bool shelf_visible_;
// ConstrainedWindow with additional methods for managing blocked
- // popups. This pointer alsog goes in |child_windows_| for ownership,
+ // popups. This pointer also goes in |child_windows_| for ownership,
// repositioning, etc.
BlockedPopupContainer* blocked_popups_;
// Delegates for InfoBars associated with this TabContents.
std::vector<InfoBarDelegate*> infobar_delegates_;
+ // The last time that the download shelf was made visible.
+ base::TimeTicks last_download_shelf_show_;
+
+ // Data for find in page -----------------------------------------------------
+
+ // TODO(brettw) this should be separated into a helper class.
+
+ // Each time a search request comes in we assign it an id before passing it
+ // over the IPC so that when the results come in we can evaluate whether we
+ // still care about the results of the search (in some cases we don't because
+ // the user has issued a new search).
+ static int find_request_id_counter_;
+
+ // True if the Find UI is active for this Tab.
+ bool find_ui_active_;
+
+ // True if a Find operation was aborted. This can happen if the Find box is
+ // closed or if the search term inside the Find box is erased while a search
+ // is in progress. This can also be set if a page has been reloaded, and will
+ // on FindNext result in a full Find operation so that the highlighting for
+ // inactive matches can be repainted.
+ bool find_op_aborted_;
+
+ // This variable keeps track of what the most recent request id is.
+ int current_find_request_id_;
+
+ // The last string we searched for. This is used to figure out if this is a
+ // Find or a FindNext operation (FindNext should not increase the request id).
+ string16 find_text_;
+
+ // Keeps track of the last search string that was used to search in any tab.
+ string16* find_prepopulate_text_;
+
+ // The last find result. This object contains details about the number of
+ // matches, the find selection rectangle, etc. The UI can access this
+ // information to build its presentation.
+ FindNotificationDetails find_result_;
+
+ // Data for misc internal state ----------------------------------------------
+
+ // See capturing_contents() above.
+ bool capturing_contents_;
+
// See getter above.
bool is_being_destroyed_;
+ // Indicates whether we should notify about disconnection of this
+ // TabContents. This is used to ensure disconnection notifications only
+ // happen if a connection notification has happened and that they happen only
+ // once.
+ bool notify_disconnection_;
+
+ // Maps from handle to page_id.
+ typedef std::map<HistoryService::Handle, int32> HistoryRequestMap;
+ HistoryRequestMap history_requests_;
+
+#if defined(OS_WIN)
+ // Handle to an event that's set when the page is showing a message box (or
+ // equivalent constrained window). Plugin processes check this to know if
+ // they should pump messages then.
+ ScopedHandle message_box_active_;
+#endif
+
+ // The time that the last javascript message was dismissed.
+ base::TimeTicks last_javascript_message_dismissal_;
+
+ // True if the user has decided to block future javascript messages. This is
+ // reset on navigations to false on navigations.
+ bool suppress_javascript_messages_;
+
+ // ---------------------------------------------------------------------------
+
DISALLOW_COPY_AND_ASSIGN(TabContents);
};
diff --git a/chrome/browser/tab_contents/web_contents.cc b/chrome/browser/tab_contents/web_contents.cc
index caa49417..6236f6a 100644
--- a/chrome/browser/tab_contents/web_contents.cc
+++ b/chrome/browser/tab_contents/web_contents.cc
@@ -172,48 +172,11 @@ BOOL CALLBACK InvalidateWindow(HWND hwnd, LPARAM lparam) {
} // namespace
-class WebContents::GearsCreateShortcutCallbackFunctor {
- public:
- explicit GearsCreateShortcutCallbackFunctor(WebContents* contents)
- : contents_(contents) {}
-
- void Run(const GearsShortcutData2& shortcut_data, bool success) {
- if (contents_)
- contents_->OnGearsCreateShortcutDone(shortcut_data, success);
- delete this;
- }
- void Cancel() {
- contents_ = NULL;
- }
-
- private:
- WebContents* contents_;
-};
-
-// static
-int WebContents::find_request_id_counter_ = -1;
-
WebContents::WebContents(Profile* profile,
SiteInstance* site_instance,
int routing_id,
base::WaitableEvent* modal_dialog_event)
- : TabContents(profile),
- view_(TabContentsView::Create(this)),
- ALLOW_THIS_IN_INITIALIZER_LIST(render_manager_(this, this)),
- printing_(*this),
- notify_disconnection_(false),
- received_page_title_(false),
- is_starred_(false),
-#if defined(OS_WIN)
- message_box_active_(CreateEvent(NULL, TRUE, FALSE, NULL)),
-#endif
- ALLOW_THIS_IN_INITIALIZER_LIST(fav_icon_helper_(this)),
- suppress_javascript_messages_(false),
- load_state_(net::LOAD_STATE_IDLE),
- find_ui_active_(false),
- find_op_aborted_(false),
- current_find_request_id_(find_request_id_counter_++),
- find_prepopulate_text_(NULL) {
+ : TabContents(profile) {
pending_install_.page_id = 0;
pending_install_.callback_functor = NULL;
@@ -1770,24 +1733,6 @@ void WebContents::UpdateWebPreferences() {
render_view_host()->UpdateWebPreferences(GetWebkitPrefs());
}
-void WebContents::OnGearsCreateShortcutDone(
- const GearsShortcutData2& shortcut_data, bool success) {
- NavigationEntry* current_entry = controller_.GetLastCommittedEntry();
- bool same_page =
- current_entry && pending_install_.page_id == current_entry->page_id();
-
- if (success && same_page) {
- // Only switch to app mode if the user chose to create a shortcut and
- // we're still on the same page that it corresponded to.
- if (delegate())
- delegate()->ConvertContentsToApplication(this);
- }
-
- // Reset the page id to indicate no requests are pending.
- pending_install_.page_id = 0;
- pending_install_.callback_functor = NULL;
-}
-
void WebContents::UpdateMaxPageIDIfNecessary(SiteInstance* site_instance,
RenderViewHost* rvh) {
// If we are creating a RVH for a restored controller, then we might
diff --git a/chrome/browser/tab_contents/web_contents.h b/chrome/browser/tab_contents/web_contents.h
index 5840924..a896bb6 100644
--- a/chrome/browser/tab_contents/web_contents.h
+++ b/chrome/browser/tab_contents/web_contents.h
@@ -9,42 +9,18 @@
#include <string>
#include <vector>
-#include "base/basictypes.h"
-#include "chrome/browser/cancelable_request.h"
-#include "chrome/browser/download/save_package.h"
-#include "chrome/browser/fav_icon_helper.h"
-#include "chrome/browser/find_notification_details.h"
-#include "chrome/browser/renderer_host/render_view_host_delegate.h"
-#include "chrome/browser/shell_dialogs.h"
-#include "chrome/browser/tab_contents/navigation_controller.h"
-#include "chrome/browser/tab_contents/render_view_host_manager.h"
#include "chrome/browser/tab_contents/tab_contents.h"
-#include "chrome/common/gears_api.h"
-#include "net/base/load_states.h"
-#include "webkit/glue/password_form.h"
-#include "webkit/glue/webpreferences.h"
-
-#if defined(OS_MACOSX) || defined(OS_LINUX)
-// Remove when we've finished porting the supporting classes.
-#include "chrome/common/temp_scaffolding_stubs.h"
-#elif defined(OS_WIN)
-#include "chrome/browser/printing/print_view_manager.h"
-#endif
class AutofillForm;
-class AutofillManager;
class DOMUI;
class InterstitialPageDelegate;
class LoadNotificationDetails;
-class PasswordManager;
-class PluginInstaller;
class RenderProcessHost;
class RenderViewHost;
class RenderWidgetHost;
struct ThumbnailScore;
struct ViewHostMsg_FrameNavigate_Params;
struct ViewHostMsg_DidPrintPage_Params;
-class TabContentsView;
namespace base {
class WaitableEvent;
@@ -486,22 +462,6 @@ class WebContents : public TabContents,
// So InterstitialPage can access SetIsLoading.
friend class InterstitialPage;
- // When CreateShortcut is invoked RenderViewHost::GetApplicationInfo is
- // invoked. CreateShortcut caches the state of the page needed to create the
- // shortcut in PendingInstall. When OnDidGetApplicationInfo is invoked, it
- // uses the information from PendingInstall and the WebApplicationInfo
- // to create the shortcut.
- class GearsCreateShortcutCallbackFunctor;
- struct PendingInstall {
- int32 page_id;
- SkBitmap icon;
- std::wstring title;
- GURL url;
- // This object receives the GearsCreateShortcutCallback and routes the
- // message back to the WebContents, if we haven't been deleted.
- GearsCreateShortcutCallbackFunctor* callback_functor;
- };
-
// NotificationObserver ------------------------------------------------------
@@ -542,11 +502,6 @@ class WebContents : public TabContents,
// Send webkit specific settings to the renderer.
void UpdateWebPreferences();
- // Called when the user dismisses the shortcut creation dialog. 'success' is
- // true if the shortcut was created.
- void OnGearsCreateShortcutDone(const GearsShortcutData2& shortcut_data,
- bool success);
-
// If our controller was restored and the page id is > than the site
// instance's page id, the site instances page id is updated as well as the
// renderers max page id.
@@ -583,123 +538,6 @@ class WebContents : public TabContents,
// the pending DOMUI, the committed DOMUI, or NULL.
DOMUI* GetDOMUIForCurrentState();
- // Data ----------------------------------------------------------------------
-
- // The corresponding view.
- scoped_ptr<TabContentsView> view_;
-
- // Manages creation and swapping of render views.
- RenderViewHostManager render_manager_;
-
- // Handles print preview and print job for this contents.
- printing::PrintViewManager printing_;
-
- // Indicates whether we should notify about disconnection of this
- // WebContents. This is used to ensure disconnection notifications only
- // happen if a connection notification has happened and that they happen only
- // once.
- bool notify_disconnection_;
-
- // Maps from handle to page_id.
- typedef std::map<HistoryService::Handle, int32> HistoryRequestMap;
- HistoryRequestMap history_requests_;
-
- // System time at which the current load was started.
- base::TimeTicks current_load_start_;
-
- // Whether we have a (non-empty) title for the current page.
- // Used to prevent subsequent title updates from affecting history. This
- // prevents some weirdness because some AJAXy apps use titles for status
- // messages.
- bool received_page_title_;
-
- // SavePackage, lazily created.
- scoped_refptr<SavePackage> save_package_;
-
- // Tracks our pending CancelableRequests. This maps pending requests to
- // page IDs so that we know whether a given callback still applies. The
- // page ID -1 means no page ID was set.
- CancelableRequestConsumerT<int32, -1> cancelable_consumer_;
-
- // Whether the current URL is starred
- bool is_starred_;
-
-#if defined(OS_WIN)
- // Handle to an event that's set when the page is showing a message box (or
- // equivalent constrained window). Plugin processes check this to know if
- // they should pump messages then.
- ScopedHandle message_box_active_;
-#endif
-
- // AutofillManager, lazily created.
- scoped_ptr<AutofillManager> autofill_manager_;
-
- // PasswordManager, lazily created.
- scoped_ptr<PasswordManager> password_manager_;
-
- // PluginInstaller, lazily created.
- scoped_ptr<PluginInstaller> plugin_installer_;
-
- // Handles downloading favicons.
- FavIconHelper fav_icon_helper_;
-
- // Dialog box used for choosing files to upload from file form fields.
- scoped_refptr<SelectFileDialog> select_file_dialog_;
-
- // The time that the last javascript message was dismissed.
- base::TimeTicks last_javascript_message_dismissal_;
-
- // True if the user has decided to block future javascript messages. This is
- // reset on navigations to false on navigations.
- bool suppress_javascript_messages_;
-
- // When a navigation occurs, we record its contents MIME type. It can be
- // used to check whether we can do something for some special contents.
- std::string contents_mime_type_;
-
- // Character encoding. TODO(jungshik) : convert to std::string
- std::wstring encoding_;
-
- PendingInstall pending_install_;
-
- // The last time that the download shelf was made visible.
- base::TimeTicks last_download_shelf_show_;
-
- // The current load state and the URL associated with it.
- net::LoadState load_state_;
- std::wstring load_state_host_;
-
- // True if the Find UI is active for this Tab.
- bool find_ui_active_;
-
- // True if a Find operation was aborted. This can happen if the Find box is
- // closed or if the search term inside the Find box is erased while a search
- // is in progress. This can also be set if a page has been reloaded, and will
- // on FindNext result in a full Find operation so that the highlighting for
- // inactive matches can be repainted.
- bool find_op_aborted_;
-
- // Each time a search request comes in we assign it an id before passing it
- // over the IPC so that when the results come in we can evaluate whether we
- // still care about the results of the search (in some cases we don't because
- // the user has issued a new search).
- static int find_request_id_counter_;
-
- // This variable keeps track of what the most recent request id is.
- int current_find_request_id_;
-
- // The last string we searched for. This is used to figure out if this is a
- // Find or a FindNext operation (FindNext should not increase the request id).
- string16 find_text_;
-
- // Keeps track of the last search string that was used to search in any tab.
- string16* find_prepopulate_text_;
-
- // The last find result. This object contains details about the number of
- // matches, the find selection rectangle, etc. The UI can access this
- // information to build its presentation.
- FindNotificationDetails find_result_;
-
DISALLOW_COPY_AND_ASSIGN(WebContents);
};