15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2011 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_EXTENSIONS_BROWSER_ACTION_DRAG_DATA_H_ 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CHROME_BROWSER_UI_VIEWS_EXTENSIONS_BROWSER_ACTION_DRAG_DATA_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string> 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/basictypes.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(TOOLKIT_VIEWS) 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/base/dragdrop/os_exchange_data.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Pickle; 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Profile; 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class BrowserActionDragData { 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BrowserActionDragData(); 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BrowserActionDragData(const std::string& id, int index); 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // These mirror the views::View and views::MenuDelegate methods for dropping, 255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // and return the appropriate results for being able to drop an extension's 265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // BrowserAction view. 275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) static bool GetDropFormats( 285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) std::set<ui::OSExchangeData::CustomFormat>* custom_formats); 295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) static bool AreDropTypesRequired(); 305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) static bool CanDrop(const ui::OSExchangeData& data, const Profile* profile); 315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string& id() const { return id_; } 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) size_t index() const { return index_; } 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns true if this data is from the specified profile. 375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) bool IsFromProfile(const Profile* profile) const; 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(TOOLKIT_VIEWS) 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void Write(Profile* profile, ui::OSExchangeData* data) const; 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Restores this data from the clipboard, returning true on success. 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool Read(const ui::OSExchangeData& data); 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns the Custom Format this class supports (for Browser Actions). 4690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) static const ui::OSExchangeData::CustomFormat& GetBrowserActionCustomFormat(); 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void WriteToPickle(Profile* profile, Pickle* pickle) const; 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool ReadFromPickle(Pickle* pickle); 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The profile we originated from. 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void* profile_; 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The id of the view being dragged. 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string id_; 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The index of the view being dragged. 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) size_t index_; 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(BrowserActionDragData); 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // CHROME_BROWSER_UI_VIEWS_EXTENSIONS_BROWSER_ACTION_DRAG_DATA_H_ 66