Stop nesting ObservedPtr inside Observable.

Now, only the ObservedPtr<> is templated, and a templated
Observable isn't required. Templated Observable<> lead to
templated Obeservable<>::ObserverIface, which made usage of
ObservedPtr<> to subclasses awkward, since the ObserverIfaces
weren't subclasses of each other even if the dependent types
were.

The majority of the change is to fix syntax now that
we no longer have a typename in the classes derived from
Observable.

- Rename Observable::Observer to ObserverIface for clarity.

Change-Id: I59f70915f0a87fa2269d051acff5a7206a3e79e8
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/55951
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Tom Sepez <tsepez@chromium.org>
diff --git a/fpdfsdk/cpdfsdk_interactiveform.cpp b/fpdfsdk/cpdfsdk_interactiveform.cpp
index 30a7528..2fee643 100644
--- a/fpdfsdk/cpdfsdk_interactiveform.cpp
+++ b/fpdfsdk/cpdfsdk_interactiveform.cpp
@@ -169,7 +169,7 @@
 
 void CPDFSDK_InteractiveForm::GetWidgets(
     const WideString& sFieldName,
-    std::vector<CPDFSDK_Annot::ObservedPtr>* widgets) const {
+    std::vector<ObservedPtr<CPDFSDK_Annot>>* widgets) const {
   for (int i = 0, sz = m_pInteractiveForm->CountFields(sFieldName); i < sz;
        ++i) {
     CPDF_FormField* pFormField = m_pInteractiveForm->GetField(i, sFieldName);
@@ -180,7 +180,7 @@
 
 void CPDFSDK_InteractiveForm::GetWidgets(
     CPDF_FormField* pField,
-    std::vector<CPDFSDK_Annot::ObservedPtr>* widgets) const {
+    std::vector<ObservedPtr<CPDFSDK_Annot>>* widgets) const {
   for (int i = 0, sz = pField->CountControls(); i < sz; ++i) {
     CPDF_FormControl* pFormCtrl = pField->GetControl(i);
     ASSERT(pFormCtrl);