15f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 25f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// found in the LICENSE file. 45f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 55f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#ifndef CHROME_BROWSER_UI_COCOA_LOCATION_BAR_MANAGE_PASSWORDS_DECORATION_H_ 65f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#define CHROME_BROWSER_UI_COCOA_LOCATION_BAR_MANAGE_PASSWORDS_DECORATION_H_ 75f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 85f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#import <Cocoa/Cocoa.h> 95f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "base/compiler_specific.h" 115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "base/memory/scoped_ptr.h" 125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "chrome/browser/ui/cocoa/location_bar/image_decoration.h" 135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "chrome/browser/ui/passwords/manage_passwords_icon.h" 145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class CommandUpdater; 161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass LocationBarViewMac; 175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class ManagePasswordsDecoration; 185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// Cocoa implementation of ManagePasswordsIcon that delegates to 205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// ManagePasswordsDecoration. 215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class ManagePasswordsIconCocoa : public ManagePasswordsIcon { 225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) public: 235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ManagePasswordsIconCocoa(ManagePasswordsDecoration* decoration); 245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual ~ManagePasswordsIconCocoa(); 255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual void UpdateVisibleUI() OVERRIDE; 265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) int icon_id() { return icon_id_; } 285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) int tooltip_text_id() { return tooltip_text_id_; } 295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) private: 315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ManagePasswordsDecoration* decoration_; // weak, owns us 325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)}; 335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// Manage passwords icon on the right side of the field. This appears when 355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// password management is available on the current page. 365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class ManagePasswordsDecoration : public ImageDecoration { 375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) public: 381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci explicit ManagePasswordsDecoration(CommandUpdater* command_updater, 391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci LocationBarViewMac* location_bar); 405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual ~ManagePasswordsDecoration(); 415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Implement |LocationBarDecoration| 435f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual bool AcceptsMousePress() OVERRIDE; 445f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual bool OnMousePressed(NSRect frame, NSPoint location) OVERRIDE; 455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual NSString* GetToolTip() OVERRIDE; 465f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual NSPoint GetBubblePointInFrame(NSRect frame) OVERRIDE; 475f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 485f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Updates the decoration according to icon state changes. 495f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) void UpdateVisibleUI(); 505f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 515f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Accessor for the platform-independent interface. 525f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ManagePasswordsIconCocoa* icon() { return icon_.get(); } 535f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 545f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) private: 551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Triggers a redraw after a state change. 561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void OnChange(); 571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Updates child view states. 591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void UpdateUIState(); 601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 615f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Shows the manage passwords bubble. 625f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) CommandUpdater* command_updater_; // Weak, owned by Browser. 635f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Displays all the decorations. 651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci LocationBarViewMac* location_bar_; // Weak, owns us. 661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 675f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // The platform-independent interface. 685f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) scoped_ptr<ManagePasswordsIconCocoa> icon_; 695f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 705f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(ManagePasswordsDecoration); 715f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)}; 725f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 735f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#endif // CHROME_BROWSER_UI_COCOA_LOCATION_BAR_MANAGE_PASSWORDS_DECORATION_H_ 74