// Copyright (c) 2010 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef CHROME_BROWSER_UI_COCOA_VIEW_ID_UTIL_H_
#define CHROME_BROWSER_UI_COCOA_VIEW_ID_UTIL_H_

#import <Cocoa/Cocoa.h>

#include "chrome/browser/ui/view_ids.h"
#include "ui/gfx/native_widget_types.h"

// ViewIDs are a system that indexes important views in the browser window by a
// ViewID identifier (integer). This is a useful compatibility for finding a
// view object in cross-platform tests. See BrowserFocusTest.* for an example
// of how ViewIDs are used.

// For views with fixed ViewIDs, we add a -viewID method to them to return their
// ViewIDs directly. But for views with changeable ViewIDs, as NSView itself
// doesn't provide a facility to store its ViewID, to avoid modifying each
// individual classes for adding ViewID support, we use an internal map to store
// ViewIDs of each view and provide some utility functions for NSView to
// set/unset the ViewID and lookup a view with a specified ViewID.

namespace view_id_util {

// Associates the given ViewID with the view. It shall be called upon the view's
// initialization.
void SetID(NSView* view, ViewID viewID);

// Removes the association between the view and its ViewID. It shall be called
// just before the view's destruction.
void UnsetID(NSView* view);

// Returns the view with a specific ViewID in a window, or nil if no view in the
// window has that ViewID.
NSView* GetView(NSWindow* window, ViewID viewID);

}  // namespace view_id_util


@interface NSView (ViewID)

// Returns the ViewID associated to the receiver. The default implementation
// looks up the view's ViewID in the internal view to ViewID map. A subclass may
// override this method to return its fixed ViewID.
- (ViewID)viewID;

@end

#endif  // CHROME_BROWSER_UI_COCOA_VIEW_ID_UTIL_H_
