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