14a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// Copyright (c) 2010 The Chromium Authors. All rights reserved. 24a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// Use of this source code is governed by a BSD-style license that can be 34a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// found in the LICENSE file. 44a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 54a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#ifndef CHROME_BROWSER_UI_VIEWS_EXTENSIONS_BROWSER_ACTION_DRAG_DATA_H_ 64a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#define CHROME_BROWSER_UI_VIEWS_EXTENSIONS_BROWSER_ACTION_DRAG_DATA_H_ 74a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#pragma once 84a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 94a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#include <string> 104a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 114a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#include "base/basictypes.h" 1221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen#include "chrome/browser/profiles/profile.h" 134a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 144a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#if defined(TOOLKIT_VIEWS) 1572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "ui/base/dragdrop/os_exchange_data.h" 164a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#endif 174a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 184a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochclass BrowserActionButton; 194a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochclass FilePath; 204a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochclass Pickle; 214a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 224a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochclass BrowserActionDragData { 234a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch public: 244a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch BrowserActionDragData(); 254a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch BrowserActionDragData(const std::string& id, int index); 264a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 274a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch const std::string& id() const { return id_; } 284a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 294a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch size_t index() const { return index_; } 304a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 314a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Returns true if this data is from the specified profile. 324a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch bool IsFromProfile(Profile* profile) const; 334a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 344a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#if defined(TOOLKIT_VIEWS) 3572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen void Write(Profile* profile, ui::OSExchangeData* data) const; 364a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 374a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Restores this data from the clipboard, returning true on success. 3872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen bool Read(const ui::OSExchangeData& data); 394a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 404a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Returns the Custom Format this class supports (for Browser Actions). 4172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen static ui::OSExchangeData::CustomFormat GetBrowserActionCustomFormat(); 424a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#endif 434a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 444a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch private: 454a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch void WriteToPickle(Profile* profile, Pickle* pickle) const; 464a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch bool ReadFromPickle(Pickle* pickle); 474a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 484a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // ID of the profile we originated from. 494a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch ProfileId profile_id_; 504a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 514a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // The id of the view being dragged. 524a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch std::string id_; 534a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 544a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // The index of the view being dragged. 554a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch size_t index_; 564a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 574a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // The MIME type for the clipboard format for BrowserActionDragData. 584a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch static const char* kClipboardFormatString; 594a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 604a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch DISALLOW_COPY_AND_ASSIGN(BrowserActionDragData); 614a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch}; 624a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 634a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#endif // CHROME_BROWSER_UI_VIEWS_EXTENSIONS_BROWSER_ACTION_DRAG_DATA_H_ 64