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