15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef CHROME_BROWSER_UI_VIEWS_TABS_TAB_RENDERER_DATA_H_ 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CHROME_BROWSER_UI_VIEWS_TABS_TAB_RENDERER_DATA_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch#include "base/process/kill.h" 9868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/string16.h" 104e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "chrome/browser/ui/tabs/tab_utils.h" 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/ui/views/chrome_views_export.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/gfx/image/image_skia.h" 137dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "url/gurl.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Wraps the state needed by the renderers. 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)struct CHROME_VIEWS_EXPORT TabRendererData { 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Different types of network activity for a tab. The NetworkState of a tab 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // may be used to alter the UI (e.g. show different kinds of loading 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // animations). 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) enum NetworkState { 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NETWORK_STATE_NONE, // no network activity. 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NETWORK_STATE_WAITING, // waiting for a connection. 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NETWORK_STATE_LOADING, // connected, transferring data. 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TabRendererData(); 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ~TabRendererData(); 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // This interprets the crashed status to decide whether or not this 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // render data represents a tab that is "crashed" (i.e. the render 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // process died unexpectedly). 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool IsCrashed() const { 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (crashed_status == base::TERMINATION_STATUS_PROCESS_WAS_KILLED || 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) crashed_status == base::TERMINATION_STATUS_PROCESS_CRASHED || 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) crashed_status == base::TERMINATION_STATUS_ABNORMAL_TERMINATION); 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns true if the TabRendererData is same as given |data|. 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool Equals(const TabRendererData& data); 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gfx::ImageSkia favicon; 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NetworkState network_state; 43a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) base::string16 title; 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url; 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool loading; 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::TerminationStatus crashed_status; 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool incognito; 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool show_icon; 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool mini; 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool blocked; 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool app; 524e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) TabMediaState media_state; 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // CHROME_BROWSER_UI_VIEWS_TABS_TAB_RENDERER_DATA_H_ 56