Lines Matching full:target
54 struct Target : public TargetBase, public SupportsWeakPtr<Target> { struct
55 virtual ~Target() = default;
58 struct DerivedTarget : public Target {};
60 // A class inheriting from Target and defining a nested type called 'Base'.
62 struct DerivedTargetWithNestedBase : public Target {
71 // A class inheriting from Target where Target is not the first base, and where
73 // Target base is not positioned at the beginning of
76 public Target {};
79 WeakPtr<Target> target; member
81 struct TargetWithFactory : public Target {
83 WeakPtrFactory<Target> factory{this};
94 void CreateArrowFromTarget(Arrow** arrow, Target* target) { in CreateArrowFromTarget() argument
99 arrow, target, &completion)); in CreateArrowFromTarget()
112 void DeleteTarget(Target* object) { in DeleteTarget()
148 Target* DeRef(const Arrow* arrow) { in DeRef()
151 Target* result = nullptr; in DeRef()
169 Target* target, in DoCreateArrowFromTarget() argument
172 (*arrow)->target = target->AsWeakPtr(); in DoCreateArrowFromTarget()
177 Target** result, in DoDeRef()
179 *result = arrow->target.get(); in DoDeRef()
183 static void DoDeleteTarget(Target* object, WaitableEvent* completion) { in DoDeleteTarget()
200 WeakPtr<TargetBase> b = object->target; in DoCopyAndAssignArrowBase()
203 c = object->target; in DoCopyAndAssignArrowBase()
303 Target target; in TEST() local
304 WeakPtr<Target> ptr = target.AsWeakPtr(); in TEST()
305 EXPECT_EQ(&target, ptr.get()); in TEST()
309 DerivedTarget target; in TEST() local
310 WeakPtr<DerivedTarget> ptr = AsWeakPtr(&target); in TEST()
311 EXPECT_EQ(&target, ptr.get()); in TEST()
315 DerivedTargetWithNestedBase target; in TEST() local
316 WeakPtr<DerivedTargetWithNestedBase> ptr = AsWeakPtr(&target); in TEST()
317 EXPECT_EQ(&target, ptr.get()); in TEST()
322 Target& target = derived_target; in TEST() local
323 EXPECT_NE(static_cast<void*>(&derived_target), static_cast<void*>(&target)); in TEST()
325 WeakPtr<Target> target_weak_ptr = AsWeakPtr(&target); in TEST()
326 EXPECT_EQ(target_weak_ptr.get(), &target); in TEST()
333 EXPECT_EQ(target_weak_ptr.get(), &target); in TEST()
336 EXPECT_EQ(target_weak_ptr.get(), &target); in TEST()
532 std::unique_ptr<Target> target(OffThreadObjectCreator<Target>::NewObject()); in TEST() local
533 WeakPtr<Target> weak_ptr = target->AsWeakPtr(); in TEST()
534 EXPECT_EQ(target.get(), weak_ptr.get()); in TEST()
542 Target target; in TEST() local
543 arrow->target = target.AsWeakPtr(); in TEST()
544 EXPECT_EQ(&target, arrow->target.get()); in TEST()
554 Target* target = new Target(); in TEST() local
556 WeakPtr<Target> weak_ptr = target->AsWeakPtr(); in TEST()
563 background.CreateArrowFromTarget(&arrow, target); in TEST()
564 EXPECT_EQ(background.DeRef(arrow), target); in TEST()
570 scoped_arrow.target = target->AsWeakPtr(); in TEST()
573 EXPECT_EQ(target, background.DeRef(&scoped_arrow)); in TEST()
576 // Target can only be deleted on background thread. in TEST()
577 background.DeleteTarget(target); in TEST()
587 Target target; in TEST() local
589 background.CreateArrowFromTarget(&arrow, &target); in TEST()
592 EXPECT_EQ(&target, background.DeRef(arrow)); in TEST()
595 arrow->target.reset(); in TEST()
598 arrow->target = target.AsWeakPtr(); in TEST()
601 EXPECT_EQ(&target, arrow->target.get()); in TEST()
603 // And the main thread can now delete the target. in TEST()
614 std::unique_ptr<TargetWithFactory> target(new TargetWithFactory); in TEST() local
617 arrow.target = target->factory.GetWeakPtr(); in TEST()
618 EXPECT_EQ(target.get(), arrow.target.get()); in TEST()
620 target->factory.InvalidateWeakPtrs(); in TEST()
621 EXPECT_EQ(nullptr, arrow.target.get()); in TEST()
623 arrow.target = target->factory.GetWeakPtr(); in TEST()
625 EXPECT_EQ(target.get(), background.DeRef(&arrow)); in TEST()
627 // And the background thread can now delete the target. in TEST()
628 background.DeleteTarget(target.release()); in TEST()
640 Target target; in TEST() local
642 arrow.target = target.AsWeakPtr(); in TEST()
646 EXPECT_EQ(arrow_copy->target.get(), &target); in TEST()
658 Target target; in TEST() local
662 arrow.target = target.AsWeakPtr(); in TEST()
665 EXPECT_EQ(arrow_copy->target.get(), &target); in TEST()
679 Target target; in TEST() local
681 arrow.target = target.AsWeakPtr(); in TEST()
684 EXPECT_EQ(nullptr, arrow_copy->target.get()); in TEST()
689 // Main thread creates a Target object. in TEST()
690 Target target; in TEST() local
691 // Main thread creates an arrow referencing the Target. in TEST()
693 arrow->target = target.AsWeakPtr(); in TEST()
703 // Main thread creates a Target object. in TEST()
704 Target target; in TEST() local
705 // Main thread creates an arrow referencing the Target. in TEST()
707 arrow->target = target.AsWeakPtr(); in TEST()
717 // Main thread creates a Target object. in TEST()
718 Target target; in TEST() local
719 // Main thread creates an arrow referencing the Target. in TEST()
721 arrow->target = target.AsWeakPtr(); in TEST()
730 Target target; in TEST() local
733 WeakPtr<const Target> const_weak_ptr = target.AsWeakPtr(); in TEST()
737 !std::is_constructible_v<WeakPtr<Target>, WeakPtr<const Target>>); in TEST()
782 // Main thread creates a Target object. in TEST()
783 Target target; in TEST() local
784 // Main thread creates an arrow referencing the Target. in TEST()
786 arrow.target = target.AsWeakPtr(); in TEST()
793 EXPECT_EQ(arrow.target.get(), arrow_copy->target.get()); in TEST()
807 // Main thread creates a Target object. in TEST()
808 Target target; in TEST() local
810 // Main thread creates an arrow referencing the Target (so target's in TEST()
813 arrow.target = target.AsWeakPtr(); in TEST()
814 arrow.target.get(); in TEST()
816 // Background thread tries to deref target, which violates thread ownership. in TEST()
827 std::unique_ptr<Target> target(new Target()); in TEST() local
829 // Main thread creates an arrow referencing the Target. in TEST()
831 arrow.target = target->AsWeakPtr(); in TEST()
833 // Background thread tries to deref target, binding it to the thread. in TEST()
838 // Main thread deletes Target, violating thread binding. in TEST()
839 ASSERT_DCHECK_DEATH(target.reset()); in TEST()
841 // |target.reset()| died so |target| still holds the object, so we in TEST()
843 background.DeleteTarget(target.release()); in TEST()
851 std::unique_ptr<Target> target(new Target()); in TEST() local
853 // Main thread creates an arrow referencing the Target, and references it, so in TEST()
856 arrow.target = target->AsWeakPtr(); in TEST()
857 arrow.target.get(); in TEST()
859 // Background thread tries to delete target, volating thread binding. in TEST()
862 ASSERT_DCHECK_DEATH(background.DeleteTarget(target.release())); in TEST()
870 std::unique_ptr<Target> target(new Target()); in TEST() local
872 // Main thread creates an arrow referencing the Target. in TEST()
874 arrow.target = target->AsWeakPtr(); in TEST()
876 // Background thread tries to delete target, binding the object to the thread. in TEST()
879 background.DeleteTarget(target.release()); in TEST()
881 // Main thread attempts to dereference the target, violating thread binding. in TEST()
882 ASSERT_DCHECK_DEATH(arrow.target.get()); in TEST()
890 auto target = std::make_unique<Target>(); in TEST() local
891 WeakPtr<Target> weak = target->AsWeakPtr(); in TEST()
892 target.reset(); in TEST()
901 auto target = std::make_unique<Target>(); in TEST() local
902 WeakPtr<Target> weak = target->AsWeakPtr(); in TEST()
903 target.reset(); in TEST()