Index: chrome/test/automation/automation_handle_tracker.h |
=================================================================== |
--- chrome/test/automation/automation_handle_tracker.h (revision 261647) |
+++ chrome/test/automation/automation_handle_tracker.h (working copy) |
@@ -1,113 +0,0 @@ |
-// Copyright (c) 2011 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. |
- |
-// This file defines a mapping between Automation Proxy objects and |
-// their associated app-side handles. |
- |
-#ifndef CHROME_TEST_AUTOMATION_AUTOMATION_HANDLE_TRACKER_H__ |
-#define CHROME_TEST_AUTOMATION_AUTOMATION_HANDLE_TRACKER_H__ |
- |
-#include <map> |
- |
-#include "base/basictypes.h" |
-#include "base/memory/ref_counted.h" |
-#include "base/synchronization/lock.h" |
-#include "ipc/ipc_channel.h" |
- |
-// This represents a value that the app's AutomationProvider returns |
-// when asked for a resource (like a window or tab). |
-typedef int AutomationHandle; |
- |
-class AutomationHandleTracker; |
-class AutomationMessageSender; |
- |
-class AutomationResourceProxy |
- : public base::RefCountedThreadSafe<AutomationResourceProxy> { |
- public: |
- AutomationResourceProxy(AutomationHandleTracker* tracker, |
- AutomationMessageSender* sender, |
- AutomationHandle handle); |
- |
- // Marks this proxy object as no longer valid; this generally means |
- // that the corresponding resource on the app side is gone. |
- void Invalidate() { |
- is_valid_ = false; |
- tracker_ = NULL; |
- } |
- |
- bool is_valid() const { return is_valid_; } |
- |
- // Returns the handle that the app has generated to refer to this resource. |
- AutomationHandle handle() { return handle_; } |
- |
- protected: |
- friend class AutomationHandleTracker; |
- friend class base::RefCountedThreadSafe<AutomationResourceProxy>; |
- |
- virtual ~AutomationResourceProxy(); |
- |
- AutomationHandle handle_; |
- |
- // Not owned by us, owned by the AutomationProxy object. May be NULL if the |
- // tracker has been destroyed (and hence the object is invalid). |
- AutomationHandleTracker* tracker_; |
- |
- // Not owned by us. |
- AutomationMessageSender* sender_; |
- |
- private: |
- // True if the resource that this object is a proxy for on the app side |
- // still exists. |
- bool is_valid_; |
- |
- DISALLOW_COPY_AND_ASSIGN(AutomationResourceProxy); |
-}; |
- |
-// This class keeps track of the mapping between AutomationHandles and |
-// AutomationResourceProxy objects. This is important because (1) multiple |
-// AutomationResourceProxy objects can be generated for the same handle |
-// (2) handles can be invalidated by the app, and all the associated |
-// proxy objects then need to be invalidated, and (3) when a handle is no |
-// longer being used on this end, we need to tell the app that it can |
-// discard the handle. |
-class AutomationHandleTracker { |
- public: |
- explicit AutomationHandleTracker(); |
- ~AutomationHandleTracker(); |
- |
- // Adds the specified proxy object to the tracker. |
- void Add(AutomationResourceProxy* proxy); |
- |
- // Removes a given proxy object from the mapping, and unregisters the |
- // handle on the app side if this was the last proxy object that was using |
- // that handle. This is a no-op if the proxy object is not currently |
- // in the tracker. |
- void Remove(AutomationResourceProxy* proxy); |
- |
- // Marks all proxy objects related to a given handle invalid. This is |
- // used when a resource (like a window) on the app side is closed, meaning |
- // that no further operations can be completed using the handle that |
- // identified that resource. |
- void InvalidateHandle(AutomationHandle handle); |
- |
- AutomationResourceProxy* GetResource(AutomationHandle handle); |
- |
- void put_channel(IPC::Channel* channel) { |
- channel_ = channel; |
- } |
- |
- private: |
- typedef |
- std::map<AutomationHandle, scoped_refptr<AutomationResourceProxy> > |
- HandleToObjectMap; |
- typedef std::pair<AutomationHandle, AutomationResourceProxy*> MapEntry; |
- |
- HandleToObjectMap handle_to_object_; |
- |
- base::Lock map_lock_; |
- IPC::Channel* channel_; |
- DISALLOW_COPY_AND_ASSIGN(AutomationHandleTracker); |
-}; |
- |
-#endif // CHROME_TEST_AUTOMATION_AUTOMATION_HANDLE_TRACKER_H__ |