Minor improvements to SelectFileDialog API.

Use scoped_ptr for the policy pointer. It was an owning pointer
already but was passed as a raw pointer.

Previously the creation code in SelectFileDialog::Create would fall back on
creating the default one if the factory returned null. This made it difficult
to use unique_ptr with since ownership of the policy object couldn't be
unconditionally passed to the factory. But no implementations of the factory
return null here so this code was changed to unconditionally defer to the
factory for dialog creation if the factory is set.

Replace callers with make_unique.

Minor documentation improvements.

Cq-Include-Trybots: master.tryserver.chromium.win:win10_chromium_x64_rel_ng
Change-Id: I2aea0098db3a6d259ba8e282324f0450490c4eb1
Reviewed-on: https://chromium-review.googlesource.com/619613
Commit-Queue: Brett Wilson <[email protected]>
Reviewed-by: Scott Violet <[email protected]>
Cr-Commit-Position: refs/heads/master@{#495723}
diff --git a/ui/shell_dialogs/select_file_dialog_android.cc b/ui/shell_dialogs/select_file_dialog_android.cc
index 53ffb82..954e19c 100644
--- a/ui/shell_dialogs/select_file_dialog_android.cc
+++ b/ui/shell_dialogs/select_file_dialog_android.cc
@@ -14,6 +14,7 @@
 #include "base/strings/utf_string_conversions.h"
 #include "jni/SelectFileDialog_jni.h"
 #include "ui/android/window_android.h"
+#include "ui/shell_dialogs/select_file_policy.h"
 #include "ui/shell_dialogs/selected_file_info.h"
 
 using base::android::ConvertJavaStringToUTF8;
@@ -23,9 +24,10 @@
 namespace ui {
 
 // static
-SelectFileDialogImpl* SelectFileDialogImpl::Create(Listener* listener,
-                                                   SelectFilePolicy* policy) {
-  return new SelectFileDialogImpl(listener, policy);
+SelectFileDialogImpl* SelectFileDialogImpl::Create(
+    Listener* listener,
+    std::unique_ptr<SelectFilePolicy> policy) {
+  return new SelectFileDialogImpl(listener, std::move(policy));
 }
 
 void SelectFileDialogImpl::OnFileSelected(
@@ -128,9 +130,10 @@
 SelectFileDialogImpl::~SelectFileDialogImpl() {
 }
 
-SelectFileDialogImpl::SelectFileDialogImpl(Listener* listener,
-                                           SelectFilePolicy* policy)
-    : SelectFileDialog(listener, policy) {
+SelectFileDialogImpl::SelectFileDialogImpl(
+    Listener* listener,
+    std::unique_ptr<SelectFilePolicy> policy)
+    : SelectFileDialog(listener, std::move(policy)) {
   JNIEnv* env = base::android::AttachCurrentThread();
   java_object_.Reset(
       Java_SelectFileDialog_create(env, reinterpret_cast<intptr_t>(this)));
@@ -141,9 +144,10 @@
   return false;
 }
 
-SelectFileDialog* CreateSelectFileDialog(SelectFileDialog::Listener* listener,
-                                         SelectFilePolicy* policy) {
-  return SelectFileDialogImpl::Create(listener, policy);
+SelectFileDialog* CreateSelectFileDialog(
+    SelectFileDialog::Listener* listener,
+    std::unique_ptr<SelectFilePolicy> policy) {
+  return SelectFileDialogImpl::Create(listener, std::move(policy));
 }
 
 }  // namespace ui