1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef CHROME_BROWSER_UI_VIEWS_EXTENSIONS_BROWSER_ACTION_DRAG_DATA_H_ 6 #define CHROME_BROWSER_UI_VIEWS_EXTENSIONS_BROWSER_ACTION_DRAG_DATA_H_ 7 8 #include <string> 9 10 #include "base/basictypes.h" 11 12 #if defined(TOOLKIT_VIEWS) 13 #include "ui/base/dragdrop/os_exchange_data.h" 14 #endif 15 16 class Pickle; 17 class Profile; 18 19 class BrowserActionDragData { 20 public: 21 BrowserActionDragData(); 22 BrowserActionDragData(const std::string& id, int index); 23 id()24 const std::string& id() const { return id_; } 25 index()26 size_t index() const { return index_; } 27 28 // Returns true if this data is from the specified profile. 29 bool IsFromProfile(Profile* profile) const; 30 31 #if defined(TOOLKIT_VIEWS) 32 void Write(Profile* profile, ui::OSExchangeData* data) const; 33 34 // Restores this data from the clipboard, returning true on success. 35 bool Read(const ui::OSExchangeData& data); 36 37 // Returns the Custom Format this class supports (for Browser Actions). 38 static const ui::OSExchangeData::CustomFormat& GetBrowserActionCustomFormat(); 39 #endif 40 41 private: 42 void WriteToPickle(Profile* profile, Pickle* pickle) const; 43 bool ReadFromPickle(Pickle* pickle); 44 45 // The profile we originated from. 46 void* profile_; 47 48 // The id of the view being dragged. 49 std::string id_; 50 51 // The index of the view being dragged. 52 size_t index_; 53 54 // The MIME type for the clipboard format for BrowserActionDragData. 55 static const char* kClipboardFormatString; 56 57 DISALLOW_COPY_AND_ASSIGN(BrowserActionDragData); 58 }; 59 60 #endif // CHROME_BROWSER_UI_VIEWS_EXTENSIONS_BROWSER_ACTION_DRAG_DATA_H_ 61